1/** 2 * html2pdf.js v0.9.2 3 * Copyright (c) 2020 Erik Koopmans 4 * Released under the MIT License. 5 */ 6(function (global, factory) { 7 typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : 8 typeof define === 'function' && define.amd ? define(factory) : 9 (global.html2pdf = factory()); 10}(this, (function () { 'use strict'; 11 12var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; 13 14function commonjsRequire () { 15 throw new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs'); 16} 17 18function unwrapExports (x) { 19 return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; 20} 21 22function createCommonjsModule(fn, module) { 23 return module = { exports: {} }, fn(module, module.exports), module.exports; 24} 25 26var jspdf_min = createCommonjsModule(function (module, exports) { 27!function(t,e){module.exports=e();}(commonjsGlobal,function(){var t,y,e,I,i,o,a,h,C,T,d,p,F,n,r,s,c,P,E,q,g,m,w,l,v,b,x,S,u,k,_,f,A,O,B,R,j,D,M,U,N,z,L,H,W,G,V,Y,X,J,K,Q,Z,vt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},$=function(pt){var gt="1.3",mt={a0:[2383.94,3370.39],a1:[1683.78,2383.94],a2:[1190.55,1683.78],a3:[841.89,1190.55],a4:[595.28,841.89],a5:[419.53,595.28],a6:[297.64,419.53],a7:[209.76,297.64],a8:[147.4,209.76],a9:[104.88,147.4],a10:[73.7,104.88],b0:[2834.65,4008.19],b1:[2004.09,2834.65],b2:[1417.32,2004.09],b3:[1000.63,1417.32],b4:[708.66,1000.63],b5:[498.9,708.66],b6:[354.33,498.9],b7:[249.45,354.33],b8:[175.75,249.45],b9:[124.72,175.75],b10:[87.87,124.72],c0:[2599.37,3676.54],c1:[1836.85,2599.37],c2:[1298.27,1836.85],c3:[918.43,1298.27],c4:[649.13,918.43],c5:[459.21,649.13],c6:[323.15,459.21],c7:[229.61,323.15],c8:[161.57,229.61],c9:[113.39,161.57],c10:[79.37,113.39],dl:[311.81,623.62],letter:[612,792],"government-letter":[576,756],legal:[612,1008],"junior-legal":[576,360],ledger:[1224,792],tabloid:[792,1224],"credit-card":[153,243]};function wt(o){var a={};this.subscribe=function(t,e,n){if("function"!=typeof e)return!1;a.hasOwnProperty(t)||(a[t]={});var r=Math.random().toString(35);return a[t][r]=[e,!!n], r}, this.unsubscribe=function(t){for(var e in a)if(a[e][t])return delete a[e][t], !0;return!1}, this.publish=function(t){if(a.hasOwnProperty(t)){var e=Array.prototype.slice.call(arguments,1),n=[];for(var r in a[t]){var i=a[t][r];try{i[0].apply(o,e);}catch(t){pt.console&&console.error("jsPDF PubSub Error",t.message,t);}i[1]&&n.push(r);}n.length&&n.forEach(this.unsubscribe);}};}function yt(t,e,n,r){var i={};"object"===(void 0===t?"undefined":vt(t))&&(t=(i=t).orientation, e=i.unit||e, n=i.format||n, r=i.compress||i.compressPdf||r), e=e||"mm", n=n||"a4", t=(""+(t||"P")).toLowerCase();(""+n).toLowerCase();var K,w,y,o,u,v,a,s,h,c,l,f=!!r&&"function"==typeof Uint8Array,Q=i.textColor||"0 g",d=i.drawColor||"0 G",Z=i.fontSize||16,$=i.charSpace||0,tt=i.R2L||!1,et=i.lineHeight||1.15,p=i.lineWidth||.200025,g="00000000000000000000000000000000",m=2,b=!1,x=[],nt={},S={},k=0,_=[],A=[],I=[],C=[],T=[],F=0,P=0,E=0,q={title:"",subject:"",author:"",keywords:"",creator:""},O={},rt=new wt(O),B=i.hotfixes||[],R=function(t){var e,n=t.ch1,r=t.ch2,i=t.ch3,o=t.ch4,a=(t.precision, "draw"===t.pdfColorType?["G","RG","K"]:["g","rg","k"]);if("string"==typeof n&&"#"!==n.charAt(0)){var s=new RGBColor(n);s.ok&&(n=s.toHex());}if("string"==typeof n&&/^#[0-9A-Fa-f]{3}$/.test(n)&&(n="#"+n[1]+n[1]+n[2]+n[2]+n[3]+n[3]), "string"==typeof n&&/^#[0-9A-Fa-f]{6}$/.test(n)){var h=parseInt(n.substr(1),16);n=h>>16&255, r=h>>8&255, i=255&h;}if(void 0===r||void 0===o&&n===r&&r===i)if("string"==typeof n)e=n+" "+a[0];else switch(t.precision){case 2:e=N(n/255)+" "+a[0];break;case 3:default:e=z(n/255)+" "+a[0];}else if(void 0===o||"object"===(void 0===o?"undefined":vt(o))){if("string"==typeof n)e=[n,r,i,a[1]].join(" ");else switch(t.precision){case 2:e=[N(n/255),N(r/255),N(i/255),a[1]].join(" ");break;default:case 3:e=[z(n/255),z(r/255),z(i/255),a[1]].join(" ");}o&&0===o.a&&(e=["255","255","255",a[1]].join(" "));}else if("string"==typeof n)e=[n,r,i,o,a[2]].join(" ");else switch(t.precision){case 2:e=[N(n),N(r),N(i),N(o),a[2]].join(" ");break;case 3:default:e=[z(n),z(r),z(i),z(o),a[2]].join(" ");}return e},j=function(t){var e=function(t){return("0"+parseInt(t)).slice(-2)},n=t.getTimezoneOffset(),r=n<0?"+":"-",i=Math.floor(Math.abs(n/60)),o=Math.abs(n%60),a=[r,e(i),"'",e(o),"'"].join("");return["D:",t.getFullYear(),e(t.getMonth()+1),e(t.getDate()),e(t.getHours()),e(t.getMinutes()),e(t.getSeconds()),a].join("")},D=function(t){var e;return void 0===(void 0===t?"undefined":vt(t))&&(t=new Date), e="object"===(void 0===t?"undefined":vt(t))&&"[object Date]"===Object.prototype.toString.call(t)?j(t):/^D:(20[0-2][0-9]|203[0-7]|19[7-9][0-9])(0[0-9]|1[0-2])([0-2][0-9]|3[0-1])(0[0-9]|1[0-9]|2[0-3])(0[0-9]|[1-5][0-9])(0[0-9]|[1-5][0-9])(\+0[0-9]|\+1[0-4]|\-0[0-9]|\-1[0-1])\'(0[0-9]|[1-5][0-9])\'?$/.test(t)?t:j(new Date), c=e},M=function(t){var e=c;return"jsDate"===t&&(e=function(t){var e=parseInt(t.substr(2,4),10),n=parseInt(t.substr(6,2),10)-1,r=parseInt(t.substr(8,2),10),i=parseInt(t.substr(10,2),10),o=parseInt(t.substr(12,2),10),a=parseInt(t.substr(14,2),10);parseInt(t.substr(16,2),10), parseInt(t.substr(20,2),10);return new Date(e,n,r,i,o,a,0)}(c)), e},U=function(t){return t=t||"12345678901234567890123456789012".split("").map(function(){return"ABCDEF0123456789".charAt(Math.floor(16*Math.random()))}).join(""), g=t},N=function(t){return t.toFixed(2)},z=function(t){return t.toFixed(3)},it=function(t){t="string"==typeof t?t:t.toString(), b?_[o].push(t):(E+=t.length+1, C.push(t));}
27,L=function(){return x[++m]=E, it(m+" 0 obj"), m},H=function(t){it("stream"), it(t), it("endstream");},W=function(){for(var t in it("/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]"), it("/Font <<"), nt)nt.hasOwnProperty(t)&&it("/"+t+" "+nt[t].objectNumber+" 0 R");it(">>"), it("/XObject <<"), rt.publish("putXobjectDict"), it(">>");},G=function(){!function(){for(var t in nt)nt.hasOwnProperty(t)&&(e=nt[t], rt.publish("putFont",{font:e,out:it,newObject:L}), !0!==e.isAlreadyPutted&&(e.objectNumber=L(), it("<<"), it("/Type /Font"), it("/BaseFont /"+e.postScriptName), it("/Subtype /Type1"), "string"==typeof e.encoding&&it("/Encoding /"+e.encoding), it("/FirstChar 32"), it("/LastChar 255"), it(">>"), it("endobj")));var e;}(), rt.publish("putResources"), x[2]=E, it("2 0 obj"), it("<<"), W(), it(">>"), it("endobj"), rt.publish("postPutResources");},V=function(t,e,n){S.hasOwnProperty(e)||(S[e]={}), S[e][n]=t;},Y=function(t,e,n,r){var i="F"+(Object.keys(nt).length+1).toString(10),o=nt[i]={id:i,postScriptName:t,fontName:e,fontStyle:n,encoding:r,metadata:{}};return V(i,e,n), rt.publish("addFont",o), i},ot=function(t,e){return function(t,e){var n,r,i,o,a,s,h,c,l;if(i=(e=e||{}).sourceEncoding||"Unicode", a=e.outputEncoding, (e.autoencode||a)&&nt[K].metadata&&nt[K].metadata[i]&&nt[K].metadata[i].encoding&&(o=nt[K].metadata[i].encoding, !a&&nt[K].encoding&&(a=nt[K].encoding), !a&&o.codePages&&(a=o.c
27odePages[0]), "string"==typeof a&&(a=o[a]), a)){for(h=!1, s=[], n=0, r=t.length;n<r;n++)(c=a[t.charCodeAt(n)])?s.push(String.fromCharCode(c)):s.push(t[n]), s[n].charCodeAt(0)>>8&&(h=!0);t=s.join("");}for(n=t.length;void 0===h&&0!==n;)t.charCodeAt(n-1)>>8&&(h=!0), n--;if(!h)return t;for(s=e.noBOM?[]:[254,255], n=0, r=t.length;n<r;n++){if((l=(c=t.charCodeAt(n))>>8)>>8)throw new Error("Character at position "+n+" of string '"+t+"' exceeds 16bits. Cannot be encoded into UCS-2 BE");s.push(l), s.push(c-(l<<8));}return String.fromCharCode.apply(void 0,s)}(t,e).replace(/\\/g,"\\\\").replace(/\(/g,"\\(").replace(/\)/g,"\\)")},X=function(){(function(t,e){var n="string"==typeof e&&e.toLowerCase();if("string"==typeof t){var r=t.toLowerCase();mt.hasOwnProperty(r)&&(t=mt[r][0]/w, e=mt[r][1]/w);}if(Array.isArray(t)&&(e=t[1], t=t[0]), n){switch(n.substr(0,1)){case"l":t<e&&(n="s");break;case"p":e<t&&(n="s");}"s"===n&&(y=t, t=e, e=y);}b=!0, _[++k]=[], I[k]={width:Number(t)||u,height:Number(e)||v}, A[k]={}, J(k);}).apply(this,arguments), it(N(p*w)+" w"), it(d), 0!==F&&it(F+" J"), 0!==P&&it(P+" j"), rt.publish("addPage",{pageNumber:k});},J=function(t){0<t&&t<=k&&(u=I[o=t].width, v=I[t].height);},at=function(t,e,n){var r,i=void 0;return n=n||{}, t=void 0!==t?t:nt[K].fontName, e=void 0!==e?e:nt[K].fontStyle, r=t.toLowerCase(), void 0!==S[r]&&void 0!==S[r][e]?i=S[r][e]:void 0!==S[t]&&void 0!==S[t][e]?i=S[t][e]:!1===n.disableWarning&&console.warn("Unable to look up font label for font '"+t+"', '"+e+"'. Refer to getFontList() for available fonts."), i||n.noFallback||null==(i=S.times[e])&&(i=S.times.normal), i},st=function(){b=!1, m=2, E=0, C=[], x=[], T=[], rt.publish("buildDocument"), it("%PDF-"+gt), it("%ºÃˆ "), function(){var t,e,n,r,i,o,a,s,h,c=[];for(a=pt.adler32cs||yt.API.adler32cs, f&&void 0===a&&(f=!1), t=1;t<=k;t++){if(c.push(L()), s=(u=I[t].width)*w, h=(v=I[t].height)*w, it("<</Type /Page"), it("/Parent 1 0 R"), it("/Resources 2 0 R"), it("/MediaBox [0 0 "+N(s)+" "+N(h)+"]"), rt.publish("putPage",{pageNumber:t,page:_[t]}), it("/Contents "+(m+1)+" 0 R"), it(">>"), it("endobj"), e=_[t].join("\n"), L(), f){for(n=[], r=e.length;r--;)n[r]=e.charCodeAt(r);o=a.from(e), (i=new Deflater(6)).append(new Uint8Array(n)), e=i.flush(), (n=new Uint8Array(e.length+6)).set(new Uint8Array([120,156])), n.set(e,2), n.set(new Uint8Array([255&o,o>>8&255,o>>16&255,o>>24&255]),e.length+2), e=String.fromCharCode.apply(null,n), it("<</Length "+e.length+" /Filter [/FlateDecode]>>");}else it("<</Length "+e.length+">>");H(e), it("endobj");}x[1]=E, it("1 0 obj"), it("<</Type /Pages");var l="/Kids [";for(r=0;r<k;r++)l+=c[r]+" 0 R ";it(l+"]"), it("/Count "+k), it(">>"), it("endobj"), rt.publish("postPutPages");}(), function(){rt.publish("putAdditionalObjects");for(var t=0;t<T.length;t++){var e=T[t];x[e.objId]=E, it(e.objId+" 0 obj"), it(e.content), it("endobj");}m+=T.length, rt.publish("postPutAdditionalObjects");}(), G(), L(), it("<<"), function(){for(var t in it("/Producer (jsPDF "+yt.version+")"), q)q.hasOwnProperty(t)&&q[t]&&it("/"+t.substr(0,1).toUpperCase()+t.substr(1)+" ("+ot(q[t])+")");it("/CreationDate ("+c+")");}(), it(">>"), it("endobj"), L(), it("<<"), function(){switch(it("/Type /Catalog"), it("/Pages 1 0 R"), s||(s="fullwidth"), s){case"fullwidth":it("/OpenAction [3 0 R /FitH null]");break;case"fullheight":it("/OpenAction [3 0 R /FitV null]");break;case"fullpage":it("/OpenAction [3 0 R /Fit]");break;case"original":it("/OpenAction [3 0 R /XYZ null null 1]");break;default:var t=""+s;"%"===t.substr(t.length-1)&&(s=parseInt(s)/100), "number"==typeof s&&it("/OpenAction [3 0 R /XYZ null null "+N(s)+"]");}switch(h||(h="continuous"), h){case"continuous":it("/PageLayout /OneColumn");break;case"single":it("/PageLayout /SinglePage");break;case"two":case"twoleft":it("/PageLayout /TwoColumnLeft");break;case"tworight":it("/PageLayout /TwoColumnRight");}a&&it("/PageMode /"+a), rt.publish("putCatalog");}(), it(">>"), it("endobj");var t,e=E,n="0000000000";for(it("xref"), it("0 "+(m+1)), it(n+" 65535 f "), t=1;t<=m;t++){var r=x[t];it("function"==typeof r?(n+x[t]()).slice(-10)+" 00000 n ":(n+x[t]).slice(-10)+" 00000 n ");}return it("trailer"), it("<<"), it("/Size "+(m+1)), it("/Root "+m+" 0 R"), it("/Info "+(m-1)+" 0 R"), it("/ID [ <"+g+"> <"+g+"> ]"), it(">>
27"), it("startxref"), it(""+e), it("%%EOF"), b=!0, C.join("\n")},ht=function(t){var e="S";return"F"===t?e="f":"FD"===t||"DF"===t?e="B":"f"!==t&&"f*"!==t&&"B"!==t&&"B*"!==t||(e=t), e},ct=function(){for(var t=st(),e=t.length,n=new ArrayBuffer(e),r=new Uint8Array(n);e--;)r[e]=t.charCodeAt(e);return n},lt=function(){return new Blob([ct()],{type:"application/pdf"})},ut=((l=function(t,e){var n="dataur"===(""+t).substr(0,6)?"data:application/pdf;base64,"+btoa(st()):0;switch(t){case void 0:return st();case"save":if("object"===("undefined"==typeof navigator?"undefined":vt(navigator))&&navigator.getUserMedia&&(void 0===pt.URL||void 0===pt.URL.createObjectURL))return O.output("dataurlnewwindow");bt(lt(),e), "function"==typeof bt.unload&&pt.setTimeout&&setTimeout(bt.unload,911);break;case"arraybuffer":return ct();case"blob":return lt();case"bloburi":case"bloburl":return pt.URL&&pt.URL.createObjectURL(lt())||void 0;case"datauristring":case"dataurlstring":return n;case"dataurlnewwindow":var r=pt.open(n);if(r||"undefined"==typeof safari)return r;case"datauri":case"dataurl":return pt.document.location.href=n;default:throw new Error('Output type "'+t+'" is not supported.')}}).foo=function(){try{return l.apply(this,arguments)}catch(t){var e=t.stack||"";~e.indexOf(" at ")&&(e=e.split(" at ")[1]);var n="Error in function "+e.split("\n")[0].split("<")[0]+": "+t.message;if(!pt.console)throw new Error(n);pt.console.error(n,t), pt.alert&&alert(n);}}, (l.foo.bar=l).foo),ft=function(t){return!0===Array.isArray(B)&&-1<B.indexOf(t)};switch(e){case"pt":w=1;break;case"mm":w=72/25.4;break;case"cm":w=72/2.54;break;case"in":w=72;break;case"px":w=1==ft("px_scaling")?.75:96/72;break;case"pc":case"em":w=12;break;case"ex":w=6;break;default:throw"Invalid unit: "+e}for(var dt in D(), U(), O.internal={pdfEscape:ot,getStyle:ht,getFont:function(){return nt[at.apply(O,arguments)]},getFontSize:function(){return Z},getCharSpace:function(){return $},getTextColor:function(){var t=Q.split(" ");if(2===t.length&&"g"===t[1]){var e=parseFloat(t[0]);t=[e,e,e,"r"];}for(var n="#",r=0;r<3;r++)n+=("0"+Math.floor(255*parseFloat(t[r])).toString(16)).slice(-2);return n},getLineHeight:function(){return Z*et},write:function(t){it(1===arguments.length?t:Array.prototype.join.call(arguments," "));},getCoordinateString:function(t){return N(t*w)},getVerticalCoordinateString:function(t){return N((v-t)*w)},collections:{},newObject:L,newAdditionalObject:function(){var t=2*_.length+1,e={objId:t+=T.length,content:""};return T.push(e), e},newObjectDeferred:function(){return x[++m]=function(){return E}, m},newObjectDeferredBegin:function(t){x[t]=E;},putStream:H,events:rt,scaleFactor:w,pageSize:{getWidth:function(){return u},getHeight:function(){return v}},output:function(t,e){return ut(t,e)},getNumberOfPages:function(){return _.length-1},pages:_,out:it,f2:N,getPageInfo:function(t){return{objId:2*(t-1)+3,pageNumber:t,pageContext:A[t]}},getCurrentPageInfo:function(){return{objId:2*(o-1)+3,pageNumber:o,pageContext:A[o]}},getPDFVersion:function(){return gt},hasHotfix:ft}, O.addPage=function(){return X.apply(this,arguments), this}, O.setPage=function(){return J.apply(this,arguments), this}, O.insertPage=function(t){return this.addPage(), this.movePage(o,t), this}, O.movePage=function(t,e){if(e<t){for(var n=_[t],r=I[t],i=A[t],o=t;e<o;o--)_[o]=_[o-1], I[o]=I[o-1], A[o]=A[o-1];_[e]=n, I[e]=r, A[e]=i, this.setPage(e);}else if(t<e){for(n=_[t], r=I[t], i=A[t], o=t;o<e;o++)_[o]=_[o+1], I[o]=I[o+1], A[o]=A[o+1];_[e]=n, I[e]=r, A[e]=i, this.setPage(e);}return this}, O.deletePage=function(){return function(t){0<t&&t<=k&&(_.splice(t,1), I.splice(t,1), --k<o&&(o=k), this.setPage(o));}.apply(this,arguments), this}, O.setCreationDate=function(t){return D(t), this}, O.getCreationDate=function(t){return M(t)}, O.setFileId=function(t){return U(t), this}, O.getFileId=function(){return g}, O.setDisplayMode=function(t,e,n){if(s=t, h=e, -1==[void 0,null,"UseNone","UseOutlines","UseThumbs","FullScreen"].indexOf(a=n))throw new Error('Page mode must be one of UseNone, UseOutlines, UseThumbs, or FullScreen. "'+n+'" is not recognized.');return this}, O.text=function(t,e,n,i){var r,o,a="",s=et,h=this;function c(t){for(var e,n=t.concat(),r=[],i=n.length;i--;
27)"string"==typeof(e=n.shift())?r.push(e):"[object Array]"===Object.prototype.toString.call(t)&&1===e.length?r.push(e[0]):r.push([e[0],e[1],e[2]]);return r}function l(t,e){var n;if("string"==typeof t)n=e(t)[0];else if("[object Array]"===Object.prototype.toString.call(t)){for(var r,i,o=t.concat(),a=[],s=o.length;s--;)"string"==typeof(r=o.shift())?a.push(e(r)[0]):"[object Array]"===Object.prototype.toString.call(r)&&"string"===r[0]&&(i=e(r[0],r[1],r[2]), a.push([i[0],i[1],i[2]]));n=a;}return n}"number"==typeof t&&(o=n, n=e, e=t, t=o);var u=i,f=arguments[4],d=arguments[5];"object"===(void 0===u?"undefined":vt(u))&&null!==u||("string"==typeof f&&(d=f, f=null), "string"==typeof u&&(d=u, u=null), "number"==typeof u&&(f=u, u=null), i={flags:u,angle:f,align:d});var p=!1,g=!0;if("string"==typeof t)p=!0;else if("[object Array]"===Object.prototype.toString.call(t)){for(var m,w=t.concat(),y=[],v=w.length;v--;)("string"!=typeof(m=w.shift())||"[object Array]"===Object.prototype.toString.call(m)&&"string"!=typeof m[0])&&(g=!1);p=g;}if(!1===p)throw new Error('Type of text must be string or Array. "'+t+'" is not recognized.');var b=nt[K].encoding;"WinAnsiEncoding"!==b&&"StandardEncoding"!==b||(t=l(t,function(t,e,n){return[(r=t, r=r.split("\t").join(Array(i.TabLen||9).join(" ")), ot(r,u)),e,n];var r;})), "string"==typeof t&&(t=t.match(/[\r?\n]/)?t.split(/\r\n|\r|\n/g):[t]), 0<(j=i.maxWidth||0)&&("string"==typeof t?t=h.splitTextToSize(t,j):"[object Array]"===Object.prototype.toString.call(t)&&(t=h.splitTextToSize(t.join(" "),j)));var x={text:t,x:e,y:n,options:i,mutex:{pdfEscape:ot,activeFontKey:K,fonts:nt,activeFontSize:Z}};rt.publish("preProcessText",x), t=x.text;f=(i=x.options).angle;var S=h.internal.scaleFactor,k=(h.internal.pageSize.getHeight(), []);if(f){f*=Math.PI/180;var _=Math.cos(f),A=Math.sin(f),I=function(t){return t.toFixed(2)};k=[I(_),I(A),I(-1*A),I(_)];}void 0!==(R=i.charSpace)&&(a+=R+" Tc\n");i.lang;var C=-1,T=i.renderingMode||i.stroke,F=h.internal.getCurrentPageInfo().pageContext;switch(T){case 0:case!1:case"fill":C=0;break;case 1:case!0:case"stroke":C=1;break;case 2:case"fillThenStroke":C=2;break;case 3:case"invisible":C=3;break;case 4:case"fillAndAddForClipping":C=4;break;case 5:case"strokeAndAddPathForClipping":C=5;break;case 6:case"fillThenStrokeAndAddToPathForClipping":C=6;break;case 7:case"addToPathForClipping":C=7;}var P=F.usedRenderingMode||-1;-1!==C?a+=C+" Tr\n":-1!==P&&(a+="0 Tr\n"), -1!==C&&(F.usedRenderingMode=C);d=i.align||"left";var E=Z*s,q=h.internal.pageSize.getHeight(),O=h.internal.pageSize.getWidth(),B=(S=h.internal.scaleFactor, nt[K]),R=i.charSpace||$,j=i.maxWidth||0,D=(u={}, []);if("[object Array]"===Object.prototype.toString.call(t)){var M,U;y=c(t);"left"!==d&&(U=y.map(function(t){return h.getStringUnitWidth(t,{font:B,charSpace:R,fontSize:Z})*Z/S}));var N,z=Math.max.apply(Math,U),L=0;if("right"===d){e-=U[0], t=[];var H=0;for(v=y.length;H<v;H++)z-U[H], 0===H?(N=e*S, M=(q-n)*S):(N=(L-U[H])*S, M=-E), t.push([y[H],N,M]), L=U[H];}else if("center"===d){e-=U[0]/2, t=[];for(H=0, v=y.length;H<v;H++)(z-U[H])/2, 0===H?(N=e*S, M=(q-n)*S):(N=(L-U[H])/2*S, M=-E), t.push([y[H],N,M]), L=U[H];}else if("left"===d){t=[];for(H=0, v=y.length;H<v;H++)M=0===H?(q-n)*S:-E, N=0===H?e*S:0, t.push(y[H]);}else{if("justify"!==d)throw new Error('Unrecognized alignment option, use "left", "center", "right" or "justify".');t=[];for(j=0!==j?j:O, H=0, v=y.length;H<v;H++)M=0===H?(q-n)*S:-E, N=0===H?e*S:0, H<v-1&&D.push(((j-U[H])/(y[H].split(" ").length-1)*S).toFixed(2)), t.push([y[H],N,M]);}}!0===("boolean"==typeof i.R2L?i.R2L:tt)&&(t=l(t,function(t,e,n){return[t.split("").reverse().join(""),e,n]}));x={text:t,x:e,y:n,options:i,mutex:{pdfEscape:ot,activeFontKey:K,fonts:nt,activeFontSize:Z}};rt.publish("postProcessText",x), t=x.text, r=x.mutex.isHex;y=c(t);t=[];var W,G,V,Y=0,X=(v=y.length, "");for(H=0;H<v;H++)X="", "[object Array]"!==Object.prototype.toString.call(y[H])?(W=parseFloat(e*S).toFixed(2), G=parseFloat((q-n)*S).toFixed(2), V=(r?"<":"(")+y[H]+(r?">":")")):"[object Array]"===Object.prototype.toString.call(y[H])&&(W=parseFloat(y[H][1]).toFixed(2), G=parseFloat(y[H][2]).toFixed(2), V=(r?"<":"(")+y[H][0]+(r?">":")"), Y=1), void 0!==D&&void 0!==D[H]&&(X=D[H]+" Tw\n"), 0!==k.length&&0===H?t.push(X+k.join(" ")+" "+W+" "+G+" Tm\n"+V):1===Y||0===Y&&0===H?t.push(X+W+" "+G+" Td\n"+V):t.push(X+V);t=0===Y?t.join(" Tj\nT* "):t.join(" Tj\n"), t+=" Tj\n";var J="BT\n/"+K+" "+Z+" Tf\n"+(Z*s).toFixed(2)+" TL\n"+Q+"\n";return J+=a, J+=t, it(J+="ET"), h}, O.lstext=function(t,e,n,r){console.warn("jsPDF.lstext is deprecated");for(var i=0,o=t.length;i<o;i++, e+=r)this.text(t[i],e,n);return this}, O.line=function(t,e,n,r){return this.lines([[n-t,r-e]],t,e)}
27, O.clip=function(){it("W"), it("S");}, O.clip_fixed=function(t){it("evenodd"===t?"W*":"W"), it("n");}, O.lines=function(t,e,n,r,i,o){var a,s,h,c,l,u,f,d,p,g,m;for("number"==typeof t&&(y=n, n=e, e=t, t=y), r=r||[1,1], it(z(e*w)+" "+z((v-n)*w)+" m "), a=r[0], s=r[1], c=t.length, g=e, m=n, h=0;h<c;h++)2===(l=t[h]).length?(g=l[0]*a+g, m=l[1]*s+m, it(z(g*w)+" "+z((v-m)*w)+" l")):(u=l[0]*a+g, f=l[1]*s+m, d=l[2]*a+g, p=l[3]*s+m, g=l[4]*a+g, m=l[5]*s+m, it(z(u*w)+" "+z((v-f)*w)+" "+z(d*w)+" "+z((v-p)*w)+" "+z(g*w)+" "+z((v-m)*w)+" c"));return o&&it(" h"), null!==i&&it(ht(i)), this}, O.rect=function(t,e,n,r,i){ht(i);return it([N(t*w),N((v-e)*w),N(n*w),N(-r*w),"re"].join(" ")), null!==i&&it(ht(i)), this}, O.triangle=function(t,e,n,r,i,o,a){return this.lines([[n-t,r-e],[i-n,o-r],[t-i,e-o]],t,e,[1,1],a,!0), this}, O.roundedRect=function(t,e,n,r,i,o,a){var s=4/3*(Math.SQRT2-1);return this.lines([[n-2*i,0],[i*s,0,i,o-o*s,i,o],[0,r-2*o],[0,o*s,-i*s,o,-i,o],[2*i-n,0],[-i*s,0,-i,-o*s,-i,-o],[0,2*o-r],[0,-o*s,i*s,-o,i,-o]],t+i,e,[1,1],a), this}, O.ellipse=function(t,e,n,r,i){var o=4/3*(Math.SQRT2-1)*n,a=4/3*(Math.SQRT2-1)*r;return it([N((t+n)*w),N((v-e)*w),"m",N((t+n)*w),N((v-(e-a))*w),N((t+o)*w),N((v-(e-r))*w),N(t*w),N((v-(e-r))*w),"c"].join(" ")), it([N((t-o)*w),N((v-(e-r))*w),N((t-n)*w),N((v-(e-a))*w),N((t-n)*w),N((v-e)*w),"c"].join(" ")), it([N((t-n)*w),N((v-(e+a))*w),N((t-o)*w),N((v-(e+r))*w),N(t*w),N((v-(e+r))*w),"c"].join(" ")), it([N((t+o)*w),N((v-(e+r))*w),N((t+n)*w),N((v-(e+a))*w),N((t+n)*w),N((v-e)*w),"c"].join(" ")), null!==i&&it(ht(i)), this}, O.circle=function(t,e,n,r){return this.ellipse(t,e,n,n,r)}, O.setProperties=function(t){for(var e in q)q.hasOwnProperty(e)&&t[e]&&(q[e]=t[e]);return this}, O.setFontSize=function(t){return Z=t, this}, O.setFont=function(t,e){return K=at(t,e), this}, O.setFontStyle=O.setFontType=function(t){return K=at(void 0,t), this}, O.getFontList=function(){var t,e,n,r={};for(t in S)if(S.hasOwnProperty(t))for(e in r[t]=n=[], S[t])S[t].hasOwnProperty(e)&&n.push(e);return r}, O.addFont=function(t,e,n,r){Y(t,e,n,r=r||"Identity-H");}, O.setLineWidth=function(t){return it((t*w).toFixed(2)+" w"), this}, O.setDrawColor=function(t,e,n,r){return it(R({ch1:t,ch2:e,ch3:n,ch4:r,pdfColorType:"draw",precision:2})), this}, O.setFillColor=function(t,e,n,r){return it(R({ch1:t,ch2:e,ch3:n,ch4:r,pdfColorType:"fill",precision:2})), this}, O.setTextColor=function(t,e,n,r){return Q=R({ch1:t,ch2:e,ch3:n,ch4:r,pdfColorType:"text",precision:3}), this}, O.setCharSpace=function(t){return $=t, this}, O.setR2L=function(t){return tt=t, this}, O.CapJoinStyles={0:0,butt:0,but:0,miter:0,1:1,round:1,rounded:1,circle:1,2:2,projecting:2,project:2,square:2,bevel:2}, O.setLineCap=function(t){var e=this.CapJoinStyles[t];if(void 0===e)throw new Error("Line cap style of '"+t+"' is not recognized. See or extend .CapJoinStyles property for valid styles");return it((F=e)+" J"), this}, O.setLineJoin=function(t){var e=this.CapJoinStyles[t];if(void 0===e)throw new Error("Line join style of '"+t+"' is not recognized. See or extend .CapJoinStyles property for valid styles");return it((P=e)+" j"), this}, O.output=ut, O.save=function(t){O.output("save",t);}, yt.API)yt.API.hasOwnProperty(dt)&&("events"===dt&&yt.API.events.length?function(t,e){var n,r,i;for(i=e.length-1;-1!==i;i--)n=e[i][0], r=e[i][1], t.subscribe.apply(t,[n].concat("function"==typeof r?[r]:r));}(rt,yt.API.events):O[dt]=yt.API[dt]);return function(){for(var t="helvetica",e="times",n="courier",r="normal",i="bold",o="italic",a="bolditalic",s=[["Helvetica",t,r,"WinAnsiEncoding"],["Helvetica-Bold",t,i,"WinAnsiEncoding"],["Helvetica-Oblique",t,o,"WinAnsiEncoding"],["Helvetica-BoldOblique",t,a,"WinAnsiEncoding"],["Courier",n,r,"WinAnsiEncoding"],["Courier-Bold",n,i,"WinAnsiEncoding"],["Courier-Oblique",n,o,"WinAnsiEncoding"],["Courier-BoldOblique",n,a,"WinAnsiEncoding"],["Times-Roman",e,r,"WinAnsiEncoding"],["Times-Bold",e,i,"WinAnsiEncoding"],["Times-Italic",e,o,"WinAnsiEncoding"],["Times-BoldItalic",e,a,"WinAnsiEncoding"],["ZapfDingbats","zapfdingbats",r,null],["Symbol","symbol",r,null]],h=0,c=s.length;h<c;h++){var l=Y(s[h][0],s[h][1],s[h][2],s[h][3]),u=s[h][0].split("-");V(l,u[0],u[1]||"");}rt.publish("addFonts",{fonts:nt,dictionary:S});}(), K="F1", X(n,t), rt.publish("initialized"), O}return yt.API={events:[]}, yt.version="0.0.0", "function"==typeof undefined&&undefined.amd?undefined("jsPDF",function(){return yt}):"undefined"!='object'&&module.exports?(module.exports=yt, module.exports.jsPDF=yt):pt.jsPDF=yt, yt}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||"undefined"!=typeof commonjsGlobal&&commonjsGlobal||Function('return typeof this === "object" && this.content')()||Function("return this")()); 28/** @preserve 29 * jsPDF - PDF Document creation from JavaScript 30 * Version 1.4.1 Built on 2018-06-06T07:49:34.040Z 31 * CommitID 3233f44044 32 * 33 * Copyright (c) 2010-2016 James Hall <[email protected]>, https://github.com/MrRio/jsPDF 34 * 2010 Aaron Spike, https://github.com/acspike 35 * 2012 Willow Systems Corporation, willow-systems.com 36 * 2012 Pablo Hess, https://github.com/pablohess 37 * 2012 Florian Jenett, https://github.com/fjenett 38 * 2013 Warren Weckesser, https://github.com/warrenweckesser 39 * 2013 Youssef Beddad, https://github.com/lifof 40 * 2013 Lee Driscoll, https://github.com/lsdriscoll 41 * 2013 Stefan Slonevskiy, https://github.com/stefslon 42 * 2013 Jeremy Morel, https://github.com/jmorel 43 * 2013 Christoph Hartmann, https://github.com/chris-rock 44 * 2014 Juan Pablo Gaviria, https://github.com/juanpgaviria 45 * 2014 James Makes, https://github.com/dollaruw 46 * 2014 Diego Casorran, https://github.com/diegocr 47 * 2014 Steven Spungin, https://github.com/Flamenco 48 * 2014 Kenneth Glassey, https://github.com/Gavver
48s 49 * 50 * Licensed under the MIT License 51 * 52 * Contributor(s): 53 * siefkenj, ahwolf, rickygu, Midnith, saintclair, eaparango, 54 * kim3er, mfo, alnorth, Flamenco 55 */ 56/** 57 * jsPDF AcroForm Plugin Copyright (c) 2016 Alexander Weidt, 58 * https://github.com/BiggA94 59 * 60 * Licensed under the MIT License. http://opensource.org/licenses/mit-license 61 */ 62!function(n,t){var l,a,e=1,r=function(t,e){t.prototype=Object.create(e.prototype), t.prototype.constructor=t;},s=function(t){return t*(e/1)},h=function(t){var e=new I,n=N.internal.getHeight(t)||0,r=N.internal.getWidth(t)||0;return e.BBox=[0,0,r.toFixed(2),n.toFixed(2)], e},i=function(t,e,n){t=t||0;var r=1;if(r<<=e-1, 1==(n=n||1))t=t|r;else t=t&~r;return t},o=function(t,e,n){n=n||1.3, t=t||0;return 1==e.readOnly&&(t=i(t,1)), 1==e.required&&(t=i(t,2)), 1==e.noExport&&(t=i(t,3)), 1==e.multiline&&(t=i(t,13)), e.password&&(t=i(t,14)), e.noToggleToOff&&(t=i(t,15)), e.radio&&(t=i(t,16)), e.pushbutton&&(t=i(t,17)), e.combo&&(t=i(t,18)), e.edit&&(t=i(t,19)), e.sort&&(t=i(t,20)), e.fileSelect&&1.4<=n&&(t=i(t,21)), e.multiSelect&&1.4<=n&&(t=i(t,22)), e.doNotSpellCheck&&1.4<=n&&(t=i(t,23)), 1==e.doNotScroll&&1.4<=n&&(t=i(t,24)), e.richText&&1.4<=n&&(t=i(t,25)), t},u=function(t){var e=t[0],n=t[1],r=t[2],i=t[3],o={};return Array.isArray(e)?(e[0]=s(e[0]), e[1]=s(e[1]), e[2]=s(e[2]), e[3]=s(e[3])):(e=s(e), n=s(n), r=s(r), i=s(i)), o.lowerLeft_X=e||0, o.lowerLeft_Y=s(a)-n-i||0, o.upperRight_X=e+r||0, o.upperRight_Y=s(a)-n||0, [o.lowerLeft_X.toFixed(2),o.lowerLeft_Y.toFixed(2),o.upperRight_X.toFixed(2),o.upperRight_Y.toFixed(2)]},f=function(t){if(t.appearanceStreamContent)return t.appearanceStreamContent;if(t.V||t.DV){var e=[],n=t.V||t.DV,r=c(t,n);e.push("/Tx BMC"), e.push("q"), e.push("/F1 "+r.fontSize.toFixed(2)+" Tf"), e.push("1 0 0 1 0 0 Tm"), e.push("BT"), e.push(r.text), e.push("ET"), e.push("Q"), e.push("EMC");var i=new h(t);return i.stream=e.join("\n"), i}},c=function(t,e,i,n){n=n||12, i=i||"helvetica";var r={text:"",fontSize:""},o=(e=")"==(e="("==e.substr(0,1)?e.substr(1):e).substr(e.length-1)?e.substr(0,e.length-1):e).split(" "),a=n,s=N.internal.getHeight(t)||0;s=s<0?-s:s;var h=N.internal.getWidth(t)||0;h=h<0?-h:h;var c=function(t,e,n){if(t+1<o.length){var r=e+" "+o[t+1];return A(r,n+"px",i).width<=h-4}return!1};a++;t:for(;;){e="";var l=A("3",--a+"px",i).height,u=t.multiline?s-a:(s-l)/2,f=-2,d=u+=2,p=0,g=0,m=0;if(a<=0){a=12, e="(...) Tj\n", e+="% Width of Text: "+A(e,"1px").width+", FieldWidth:"+h+"\n";break}m=A(o[0]+" ",a+"px",i).width;var w="",y=0;for(var v in o){w=" "==(w+=o[v]+" ").substr(w.length-1)?w.substr(0,w.length-1):w;var b=parseInt(v);m=A(w+" ",a+"px",i).width;var x=c(b,w,a),S=v>=o.length-1;if(!x||S){if(x||S){if(S)g=b;else if(t.multiline&&s<(l+2)*(y+2)+2)continue t}else{if(!t.multiline)continue t;if(s<(l+2)*(y+2)+2)continue t;g=b;}for(var k="",_=p;_<=g;_++)k+=o[_]+" ";switch(k=" "==k.substr(k.length-1)?k.substr(0,k.length-1):k, m=A(k,a+"px",i).width, t.Q){case 2:f=h-m-2;break;case 1:f=(h-m)/2;break;case 0:default:f=2;}e+=f.toFixed(2)+" "+d.toFixed(2)+" Td\n", e+="("+k+") Tj\n", e+=-f.toFixed(2)+" 0 Td\n", d=-(a+2), m=0, p=g+1, y++, w="";}else w+=" ";}break}return r.text=e, r.fontSize=a, r},A=function(t,e,n){n=n||"helvetica";var r=l.internal.getFont(n),i=l.getStringUnitWidth(t,{font:r,fontSize:parseFloat(e),charSpace:0})*parseFloat(e);return{height:l.getStringUnitWidth("3",{font:r,fontSize:parseFloat(e),charSpace:0})*parseFloat(e)*1.5,width:i}},d={fields:[],xForms:[],acroFormDictionaryRoot:null,printedOut:!1,internal:null,isInitialized:!1},p=function(){for(var t in l.internal.acroformPlugin.acroFormDictionaryRoot.Fields){var e=l.internal.acroformPlugin.acroFormDictionaryRoot.Fields[t];e.hasAnnotation&&m.call(l,e);}},g=function(t){l.internal.acroformPlugin.printedOut&&(l.internal.acroformPlugin.printedOut=!1, l.internal.acroformPlugin.acroFormDictionaryRoot=null), l.internal.acroformPlugin.acroFormDictionaryRoot||x.call(l), l.internal.acroformPlugin.acroFormDictionaryRoot.Fields.push(t);},m=function(t){var e={type:"reference",object:t};l.annotationPlugin.annotations[l.internal.getPageInfo(t.page).pageNumber].push(e);},w=function(){void 0!==l.internal.acroformPlugin.acroFormDictionaryRoot?l.internal.write("/AcroForm "+l.internal.acroformPlugin.acroFormDictionaryRoot.objId+" 0 R"):console.log("Root missing...");},y=function(){l.internal.events.unsubscribe(l.internal.acroformPlugin.acroFormDictionaryRoot._eventID), delete l.internal.acroformPlugin.acroFormDictionaryRoot._eventID, l.internal.acroformPlugin.printedOut=!0;},v=function(t){var e=!t;t||(l.internal.newObjectDeferredBegin(l.internal.acroformPlugin.acroFormDictionaryRoot.objId), l.internal.out(l.internal.acroformPlugin.acroFormDictionaryRoot.getString()));t=t||l.internal.acroformPlugin.acroFormDictionaryRoot.Kids;for(var n in t){var r=t[n],i=r.Rect;r.Rect&&(r.Rect=u.call(this,r.Rect)), l.internal.newObjectDeferredBegin(r.objId);var o=r.objId+" 0 obj\n<<\n";if("object"===(void 0===r?"undefined":vt(r))&&"function"==typeof r.getContent&&(o+=r.getContent()), r.Rect=i, r.hasAppearanceStream&&!r.appearanceStreamContent){var a=f.call(this,r);o+="/AP << /N "+a+" >>\n", l.internal.acroformPlugin.xForms.push(a);}if(r.appearanceStreamContent){for(var s in o+="/AP << ", r.appearanceStreamContent){var h=r.appearanceStreamContent[s];if(o+="/"+s+" ", o+="<< ", 1<=Object.keys(h).length||Array.isArray(h))for(var n in h){var c;"function"==typeof(c=h[n])&&(c=c.call(this,r)), o+="/"+n+" "+c+" ", 0<=l.internal.acroformPlugin.xForms.indexOf(c)||l.internal.acroformPlugin.xForms.push(c);}
62else"function"==typeof(c=h)&&(c=c.call(this,r)), o+="/"+n+" "+c+" \n", 0<=l.internal.acroformPlugin.xForms.indexOf(c)||l.internal.acroformPlugin.xForms.push(c);o+=" >>\n";}o+=">>\n";}o+=">>\nendobj\n", l.internal.out(o);}e&&b.call(this,l.internal.acroformPlugin.xForms);},b=function(t){for(var e in t){var n=e,r=t[e];l.internal.newObjectDeferredBegin(r&&r.objId);var i="";"object"===(void 0===r?"undefined":vt(r))&&"function"==typeof r.getString&&(i=r.getString()), l.internal.out(i), delete t[n];}},x=function(){if(void 0!==this.internal&&(void 0===this.internal.acroformPlugin||!1===this.internal.acroformPlugin.isInitialized)){if(l=this, T.FieldNum=0, this.internal.acroformPlugin=JSON.parse(JSON.stringify(d)), this.internal.acroformPlugin.acroFormDictionaryRoot)throw new Error("Exception while creating AcroformDictionary");e=l.internal.scaleFactor, a=l.internal.pageSize.getHeight(), l.internal.acroformPlugin.acroFormDictionaryRoot=new C, l.internal.acroformPlugin.acroFormDictionaryRoot._eventID=l.internal.events.subscribe("postPutResources",y), l.internal.events.subscribe("buildDocument",p), l.internal.events.subscribe("putCatalog",w), l.internal.events.subscribe("postPutPages",v), l.internal.acroformPlugin.isInitialized=!0;}},S=function(t){if(Array.isArray(t)){var e=" [";for(var n in t){e+=t[n].toString(), e+=n<t.length-1?" ":"";}return e+="]"}},k=function(t){return 0!==(t=t||"").indexOf("(")&&(t="("+t), ")"!=t.substring(t.length-1)&&(t+=")"), t},_=function(){var t;Object.defineProperty(this,"objId",{get:function(){return t||(t=l.internal.newObjectDeferred()), t||console.log("Couldn't create Object ID"), t},configurable:!1});};_.prototype.toString=function(){return this.objId+" 0 R"}, _.prototype.getString=function(){var t=this.objId+" 0 obj\n<<";return t+=this.getContent()+">>\n", this.stream&&(t+="stream\n", t+=this.stream, t+="\nendstream\n"), t+="endobj\n"}, _.prototype.getContent=function(){var t="";return t+=function(t){var e="",n=Object.keys(t).filter(function(t){return"content"!=t&&"appearanceStreamContent"!=t&&"_"!=t.substring(0,1)});for(var r in n){var i=n[r],o=t[i];o&&(Array.isArray(o)?e+="/"+i+" "+S(o)+"\n":e+=o instanceof _?"/"+i+" "+o.objId+" 0 R\n":"/"+i+" "+o+"\n");}return e}(this)};var I=function(){var e;_.call(this), this.Type="/XObject", this.Subtype="/Form", this.FormType=1, this.BBox, this.Matrix, this.Resources="2 0 R", this.PieceInfo, Object.defineProperty(this,"Length",{enumerable:!0,get:function(){return void 0!==e?e.length:0}}), Object.defineProperty(this,"stream",{enumerable:!1,set:function(t){e=t.trim();},get:function(){return e||null}});};r(I,_);var C=function(){_.call(this);var t=[];Object.defineProperty(this,"Kids",{enumerable:!1,configurable:!0,get:function(){return 0<t.length?t:void 0}}), Object.defineProperty(this,"Fields",{enumerable:!0,configurable:!0,get:function(){return t}}), this.DA;};r(C,_);var T=function t(){var e;_.call(this), Object.defineProperty(this,"Rect",{enumerable:!0,configurable:!1,get:function(){if(e)return e},set:function(t){e=t;}});var n,r,i,o,a="";Object.defineProperty(this,"FT",{enumerable:!0,set:function(t){a=t;},get:function(){return a}}), Object.defineProperty(this,"T",{enumerable:!0,configurable:!1,set:function(t){n=t;},get:function(){if(!n||n.length<1){if(this instanceof j)return;return"(FieldObject"+t.FieldNum+++")"}return"("==n.substring(0,1)&&n.substring(n.length-1)?n:"("+n+")"}}), Object.defineProperty(this,"DA",{enumerable:!0,get:function(){if(r)return"("+r+")"},set:function(t){r=t;}}), Object.defineProperty(this,"DV",{enumerable:!0,configurable:!0,get:function(){if(i)return i},set:function(t){i=t;}}), Object.defineProperty(this,"V",{enumerable:!0,configurable:!0,get:function(){if(o)return o},set:function(t){o=t;}}), Object.defineProperty(this,"Type",{enumerable:!0,get:function(){return this.hasAnnotation?"/Annot":null}}), Object.defineProperty(this,"Subtype",{enumerable:!0,get:function(){return this.hasAnnotation?"/Widget":null}}), this.BG, Object.defineProperty(this,"hasAnnotation",{enumerable:!1,get:function(){return!!(this.Rect||this.BC||this.BG)}}), Object.defineProperty(this,"hasAppearanceStream",{enumerable:!1,
62configurable:!0,writable:!0}), Object.defineProperty(this,"page",{enumerable:!1,configurable:!0,writable:!0});};r(T,_);var F=function(){T.call(this), this.FT="/Ch", this.Opt=[], this.V="()", this.TI=0;var e=!1;Object.defineProperty(this,"combo",{enumerable:!1,get:function(){return e},set:function(t){e=t;}}), Object.defineProperty(this,"edit",{enumerable:!0,set:function(t){1==t?(this._edit=!0, this.combo=!0):this._edit=!1;},get:function(){return!!this._edit&&this._edit},configurable:!1}), this.hasAppearanceStream=!0;};r(F,T);var P=function(){F.call(this), this.combo=!1;};r(P,F);var E=function(){P.call(this), this.combo=!0;};r(E,P);var q=function(){E.call(this), this.edit=!0;};r(q,E);var O=function(){T.call(this), this.FT="/Btn";};r(O,T);var B=function(){O.call(this);var e=!0;Object.defineProperty(this,"pushbutton",{enumerable:!1,get:function(){return e},set:function(t){e=t;}});};r(B,O);var R=function(){O.call(this);var e=!0;Object.defineProperty(this,"radio",{enumerable:!1,get:function(){return e},set:function(t){e=t;}});var n,t=[];Object.defineProperty(this,"Kids",{enumerable:!0,get:function(){if(0<t.length)return t}}), Object.defineProperty(this,"__Kids",{get:function(){return t}}), Object.defineProperty(this,"noToggleToOff",{enumerable:!1,get:function(){return n},set:function(t){n=t;}});};r(R,O);var j=function(t,e){T.call(this), this.Parent=t, this._AppearanceType=N.RadioButton.Circle, this.appearanceStreamContent=this._AppearanceType.createAppearanceStream(e), this.F=i(this.F,3,1), this.MK=this._AppearanceType.createMK(), this.AS="/Off", this._Name=e;};r(j,T), R.prototype.setAppearance=function(t){if("createAppearanceStream"in t&&"createMK"in t)for(var e in this.__Kids){var n=this.__Kids[e];n.appearanceStreamContent=t.createAppearanceStream(n._Name), n.MK=t.createMK();}else console.log("Couldn't assign Appearance to RadioButton. Appearance was Invalid!");}, R.prototype.createOption=function(t){this.__Kids.length;var e=new j(this,t);return this.__Kids.push(e), n.addField(e), e};var D=function(){O.call(this), this.appearanceStreamContent=N.CheckBox.createAppearanceStream(), this.MK=N.CheckBox.createMK(), this.AS="/On", this.V="/On";};r(D,O);var M=function(){var e,n;T.call(this), this.DA=N.createDefaultAppearanceStream(), this.F=4, Object.defineProperty(this,"V",{get:function(){return e?k(e):e},enumerable:!0,set:function(t){e=t;}}), Object.defineProperty(this,"DV",{get:function(){return n?k(n):n},enumerable:!0,set:function(t){n=t;}});var r=!1;Object.defineProperty(this,"multiline",{enumerable:!1,get:function(){return r},set:function(t){r=t;}});var i=!1;Object.defineProperty(this,"fileSelect",{enumerable:!1,get:function(){return i},set:function(t){i=t;}});var o=!1;Object.defineProperty(this,"doNotSpellCheck",{enumerable:!1,get:function(){return o},set:function(t){o=t;}});var a=!1;Object.defineProperty(this,"doNotScroll",{enumerable:!1,get:function(){return a}
62,set:function(t){a=t;}});var s=!1;Object.defineProperty(this,"MaxLen",{enumerable:!0,get:function(){return s},set:function(t){s=t;}}), Object.defineProperty(this,"hasAppearanceStream",{enumerable:!1,get:function(){return this.V||this.DV}});};r(M,T);var U=function(){M.call(this);var e=!0;Object.defineProperty(this,"password",{enumerable:!1,get:function(){return e},set:function(t){e=t;}});};r(U,M);var N={CheckBox:{createAppearanceStream:function(){return{N:{On:N.CheckBox.YesNormal},D:{On:N.CheckBox.YesPushDown,Off:N.CheckBox.OffPushDown}}},createMK:function(){return"<< /CA (3)>>"},YesPushDown:function(t){var e=h(t),n=[],r=l.internal.getFont("zapfdingbats","normal").id;t.Q=1;var i=c(t,"3","ZapfDingbats",50);return n.push("0.749023 g"), n.push("0 0 "+N.internal.getWidth(t).toFixed(2)+" "+N.internal.getHeight(t).toFixed(2)+" re"), n.push("f"), n.push("BMC"), n.push("q"), n.push("0 0 1 rg"), n.push("/"+r+" "+i.fontSize.toFixed(2)+" Tf 0 g"), n.push("BT"), n.push(i.text), n.push("ET"), n.push("Q"), n.push("EMC"), e.stream=n.join("\n"), e},YesNormal:function(t){var e=h(t),n=l.internal.getFont("zapfdingbats","normal").id,r=[];t.Q=1;var i=N.internal.getHeight(t),o=N.internal.getWidth(t),a=c(t,"3","ZapfDingbats",.9*i);return r.push("1 g"), r.push("0 0 "+o.toFixed(2)+" "+i.toFixed(2)+" re"), r.push("f"), r.push("q"), r.push("0 0 1 rg"), r.push("0 0 "+(o-1).toFixed(2)+" "+(i-1).toFixed(2)+" re"), r.push("W"), r.push("n"), r.push("0 g"), r.push("BT"), r.push("/"+n+" "+a.fontSize.toFixed(2)+" Tf 0 g"), r.push(a.text), r.push("ET"), r.push("Q"), e.stream=r.join("\n"), e},OffPushDown:function(t){var e=h(t),n=[];return n.push("0.749023 g"), n.push("0 0 "+N.internal.getWidth(t).toFixed(2)+" "+N.internal.getHeight(t).toFixed(2)+" re"), n.push("f"), e.stream=n.join("\n"), e}},RadioButton:{Circle:{createAppearanceStream:function(t){var e={D:{Off:N.RadioButton.Circle.OffPushDown},N:{}};return e.N[t]=N.RadioButton.Circle.YesNormal, e.D[t]=N.RadioButton.Circle.YesPushDown, e},createMK:function(){return"<< /CA (l)>>"},YesNormal:function(t){var e=h(t),n=[],r=N.internal.getWidth(t)<=N.internal.getHeight(t)?N.internal.getWidth(t)/4:N.internal.getHeight(t)/4;r*=.9;var i=N.internal.Bezier_C;return n.push("q"), n.push("1 0 0 1 "+N.internal.getWidth(t)/2+" "+N.internal.getHeight(t)/2+" cm"), n.push(r+" 0 m"), n.push(r+" "+r*i+" "+r*i+" "+r+" 0 "+r+" c"), n.push("-"+r*i+" "+r+" -"+r+" "+r*i+" -"+r+" 0 c"), n.push("-"+r+" -"+r*i+" -"+r*i+" -"+r+" 0 -"+r+" c"), n.push(r*i+" -"+r+" "+r+" -"+r*i+" "+r+" 0 c"), n.push("f"), n.push("Q"), e.stream=n.join("\n"), e},YesPushDown:function(t){var e=h(t),n=[],r=N.internal.getWidth(t)<=N.internal.getHeight(t)?N.internal.getWidth(t)/4:N.internal.getHeight(t)/4,i=2*(r*=.9),o=i*N.internal.Bezier_C,a=r*N.internal.Bezier_C;return n.push("0.749023 g"), n.push("q"), n.push("1 0 0 1 "+(N.internal.getWidth(t)/2).toFixed(2)+" "+(N.internal.getHeight(t)/2).toFixed(2)+" cm"), n.push(i+" 0 m"), n.push(i+" "+o+" "+o+" "+i+" 0 "+i+" c"), n.push("-"+o+" "+i+" -"+i+" "+o+" -"+i+" 0 c"), n.push("-"+i+" -"+o+" -"+o+" -"+i+" 0 -"+i+" c"), n.push(o+" -"+i+" "+i+" -"+o+" "+i+" 0 c"), n.push("f"), n.push("Q"), n.push("0 g"), n.push("q"), n.push("1 0 0 1 "+(N.internal.getWidth(t)/2).toFixed(2)+" "+(N.internal.getHeight(t)/2).toFixed(2)+" cm"), n.push(r+" 0 m"), n.push(r+" "+a+" "+a+" "+r+" 0 "+r+" c"), n.push("-"+a+" "+r+" -"+r+" "+a+" -"+r+" 0 c"), n.push("-"+r+" -"+a+" -"+a+" -"+r+" 0 -"+r+" c"), n.push(a+" -"+r+" "+r+" -"+a+" "+r+" 0 c"), n.push("f"), n.push("Q"), e.stream=n.join("\n"), e},OffPushDown:function(t){var e=h(t),n=[],r=N.internal.getWidth(t)<=N.internal.getHeight(t)?N.internal.getWidth(t)/4:N.internal.getHeight(t)/4,i=2*(r*=.9),o=i*N.internal.Bezier_C;return n.push("0.749023 g"), n.push("q"), n.push("1 0 0 1 "+(N.internal.getWidth(t)/2).toFixed(2)+" "+(N.internal.getHeight(t)/2).toFixed(2)+" cm"), n.push(i+" 0 m"), n.push(i+" "+o+" "+o+" "+i+" 0 "+i+" c"), n.push("-"+o+" "+i+" -"+i+" "+o+" -"+i+" 0 c"), n.push("-"+i+" -"+o+" -"+o+" -"+i+" 0 -"+i+" c"), n.push(o+" -"+i+" "+i+" -"+o+" "+i+" 0 c"), n.push("f"), n.push("Q"), e.stream=n.join("\n"), e}},Cross:{createAppearanceStream:function(t){var e={D:{Off:N.RadioButton.Cross.OffPushDown},N:{}}
62;return e.N[t]=N.RadioButton.Cross.YesNormal, e.D[t]=N.RadioButton.Cross.YesPushDown, e},createMK:function(){return"<< /CA (8)>>"},YesNormal:function(t){var e=h(t),n=[],r=N.internal.calculateCross(t);return n.push("q"), n.push("1 1 "+(N.internal.getWidth(t)-2).toFixed(2)+" "+(N.internal.getHeight(t)-2).toFixed(2)+" re"), n.push("W"), n.push("n"), n.push(r.x1.x.toFixed(2)+" "+r.x1.y.toFixed(2)+" m"), n.push(r.x2.x.toFixed(2)+" "+r.x2.y.toFixed(2)+" l"), n.push(r.x4.x.toFixed(2)+" "+r.x4.y.toFixed(2)+" m"), n.push(r.x3.x.toFixed(2)+" "+r.x3.y.toFixed(2)+" l"), n.push("s"), n.push("Q"), e.stream=n.join("\n"), e},YesPushDown:function(t){var e=h(t),n=N.internal.calculateCross(t),r=[];return r.push("0.749023 g"), r.push("0 0 "+N.internal.getWidth(t).toFixed(2)+" "+N.internal.getHeight(t).toFixed(2)+" re"), r.push("f"), r.push("q"), r.push("1 1 "+(N.internal.getWidth(t)-2).toFixed(2)+" "+(N.internal.getHeight(t)-2).toFixed(2)+" re"), r.push("W"), r.push("n"), r.push(n.x1.x.toFixed(2)+" "+n.x1.y.toFixed(2)+" m"), r.push(n.x2.x.toFixed(2)+" "+n.x2.y.toFixed(2)+" l"), r.push(n.x4.x.toFixed(2)+" "+n.x4.y.toFixed(2)+" m"), r.push(n.x3.x.toFixed(2)+" "+n.x3.y.toFixed(2)+" l"), r.push("s"), r.push("Q"), e.stream=r.join("\n"), e},OffPushDown:function(t){var e=h(t),n=[];return n.push("0.749023 g"), n.push("0 0 "+N.internal.getWidth(t).toFixed(2)+" "+N.internal.getHeight(t).toFixed(2)+" re"), n.push("f"), e.stream=n.join("\n"), e}}},createDefaultAppearanceStream:function(t){return"/F1 0 Tf 0 g"}};N.internal={Bezier_C:.551915024494,calculateCross:function(t){var e,n,r=N.internal.getWidth(t),i=N.internal.getHeight(t),o=(n=i)<(e=r)?n:e;return{x1:{x:(r-o)/2,y:(i-o)/2+o},x2:{x:(r-o)/2+o,y:(i-o)/2},x3:{x:(r-o)/2,y:(i-o)/2},x4:{x:(r-o)/2+o,y:(i-o)/2+o}}}}, N.internal.getWidth=function(t){var e=0;return"object"===(void 0===t?"undefined":vt(t))&&(e=s(t.Rect[2])), e}, N.internal.getHeight=function(t){var e=0;return"object"===(void 0===t?"undefined":vt(t))&&(e=s(t.Rect[3])), e}, n.addField=function(t){return x.call(this), t instanceof M?this.addTextField.call(this,t):t instanceof F?this.addChoiceField.call(this,t):t instanceof O?this.addButton.call(this,t):t instanceof j?g.call(this,t):t&&g.call(this,t), t.page=l.internal.getCurrentPageInfo().pageNumber, this}, n.addButton=function(t){x.call(this);var e=t||new T;e.FT="/Btn", e.Ff=o(e.Ff,t,l.internal.getPDFVersion()), g.call(this,e);}, n.addTextField=function(t){x.call(this);var e=t||new T;e.FT="/Tx", e.Ff=o(e.Ff,t,l.internal.getPDFVersion()), g.call(this,e);}, n.addChoiceField=function(t){x.call(this);var e=t||new T;e.FT="/Ch", e.Ff=o(e.Ff,t,l.internal.getPDFVersion()), g.call(this,e);}, "object"==(void 0===t?"undefined":vt(t))&&(t.ChoiceField=F, t.ListBox=P, t.ComboBox=E, t.EditBox=q, t.Button=O, t.PushButton=B, t.RadioButton=R, t.CheckBox=D, t.TextField=M, t.PasswordField=U, t.AcroForm={Appearance:N}), n.AcroFormChoiceField=F, n.AcroFormListBox=P, n.AcroFormComboBox=E, n.AcroFormEditBox=q, n.AcroFormButton=O, n.AcroFormPushButton=B, n.AcroFormRadioButton=R, n.AcroFormCheckBox=D, n.AcroFormTextField=M, n.AcroFormPasswordField=U, n.AcroForm={ChoiceField:F,ListBox:P,ComboBox:E,EditBox:q,Button:O,PushButton:B,RadioButton:R,CheckBox:D,TextField:M,PasswordField:U};}($.API,"undefined"!=typeof window&&window||"undefined"!=typeof commonjsGlobal&&commonjsGlobal), $.API.addHTML=function(t,p,g,s,m){if("undefined"==typeof html2canvas&&"undefined"==typeof rasterizeHTML)throw new Error("You need either https://github.com/niklasvh/html2canvas or https://github.com/cburgmer/rasterizeHTML.js");"number"!=typeof p&&(s=p, m=g), "function"==typeof s&&(m=s, s=null), "function"!=typeof m&&(m=function(){});var e=this.internal,w=e.scaleFactor,y=e.pageSize.getWidth(),v=e.pageSize.getHeight();if((s=s||{}).onrendered=function(h){p=parseInt(p)||0, g=parseInt(g)||0;var t=s.dim||{},c=Object.assign({top:0,right:0,bottom:0,left:0,useFor:"content"},s.margin),e=t.h||Math.min(v,h.height/w),l=t.w||Math.min(y,h.width/w)-p,u=s.format||"JPEG",f=s.imageCompression||"SLOW";if(h.height>v-c.top-c.bottom&&s.pagesplit){var d=function(t,e,n,r,i){var o=document.createElement("canvas");o.height=i, o.width=r;var a=o.getContext("2d");return a.mozImageSmoothingEnabled=!1, a.webkitImageSmoothingEnabled=!1, a.msImageSmoothingEnabled=!1, a.imageSmoothingEnabled=!1, a.fillStyle=s.backgroundColor||"#ffffff", a.fillRect(0,0,r,i), a.drawImage(t,e,n,r,i,0,0,r,i), o},n=function(){for(var t,e,n=0,r=0,i={},o=!1;;){var a;
62if(r=0, i.top=0!==n?c.top:g, i.left=0!==n?c.left:p, o=(y-c.left-c.right)*w<h.width, "content"===c.useFor?0===n?(t=Math.min((y-c.left)*w,h.width), e=Math.min((v-c.top)*w,h.height-n)):(t=Math.min(y*w,h.width), e=Math.min(v*w,h.height-n), i.top=0):(t=Math.min((y-c.left-c.right)*w,h.width), e=Math.min((v-c.bottom-c.top)*w,h.height-n)), o)for(;;){"content"===c.useFor&&(0===r?t=Math.min((y-c.left)*w,h.width):(t=Math.min(y*w,h.width-r), i.left=0));var s=[a=d(h,r,n,t,e),i.left,i.top,a.width/w,a.height/w,u,null,f];if(this.addImage.apply(this,s), (r+=t)>=h.width)break;this.addPage();}else s=[a=d(h,0,n,t,e),i.left,i.top,a.width/w,a.height/w,u,null,f], this.addImage.apply(this,s);if((n+=e)>=h.height)break;this.addPage();}m(l,n,null,s);}.bind(this);if("CANVAS"===h.nodeName){var r=new Image;r.onload=n, r.src=h.toDataURL("image/png"), h=r;}else n();}else{var i=Math.random().toString(35),o=[h,p,g,l,e,u,i,f];this.addImage.apply(this,o), m(l,e,i,o);}}.bind(this), "undefined"!=typeof html2canvas&&!s.rstz)return html2canvas(t,s);if("undefined"!=typeof rasterizeHTML){var n="drawDocument";return"string"==typeof t&&(n=/^http/.test(t)?"drawURL":"drawHTML"), s.width=s.width||y*w, rasterizeHTML[n](t,void 0,s).then(function(t){s.onrendered(t.image);},function(t){m(null,t);})}return null}, function(b){var x="addImage_",h={PNG:[[137,80,78,71]],TIFF:[[77,77,0,42],[73,73,42,0]],JPEG:[[255,216,255,224,void 0,void 0,74,70,73,70,0],[255,216,255,225,void 0,void 0,69,120,105,102,0,0]],JPEG2000:[[0,0,0,12,106,80,32,32]],GIF87a:[[71,73,70,56,55,97]],GIF89a:[[71,73,70,56,57,97]],BMP:[[66,77],[66,65],[67,73],[67,80],[73,67],[80,84]]};b.getImageFileTypeByImageData=function(t,e){var n,r;e=e||"UNKNOWN";var i,o,a,s="UNKNOWN";for(a in h)for(i=h[a], n=0;n<i.length;n+=1){for(o=!0, r=0;r<i[n].length;r+=1)if(void 0!==i[n][r]&&i[n][r]!==t.charCodeAt(r)){o=!1;break}if(!0===o){s=a;break}}return"UNKOWN"===s&&"UNKNOWN"!==e&&(console.warn('FileType of Image not recognized. Processing image as "'+e+'".'), s=e), s};var n=function t(e){var n=this.internal.newObject(),r=this.internal.write,i=this.internal.putStream;if(e.n=n, r("<</Type /XObject"), r("/Subtype /Image"), r("/Width "+e.w), r("/Height "+e.h), e.cs===this.color_spaces.INDEXED?r("/ColorSpace [/Indexed /DeviceRGB "+(e.pal.length/3-1)+" "+("smask"in e?n+2:n+1)+" 0 R]"):(r("/ColorSpace /"+e.cs), e.cs===this.color_spaces.DEVICE_CMYK&&r("/Decode [1 0 1 0 1 0 1 0]")), r("/BitsPerComponent "+e.bpc), "f"in e&&r("/Filter /"+e.f), "dp"in e&&r("/DecodeParms <<"+e.dp+">>"), "trns"in e&&e.trns.constructor==Array){for(var o="",a=0,s=e.trns.length;a<s;a++)o+=e.trns[a]+" "+e.trns[a]+" ";r("/Mask ["+o+"]");}if("smask"in e&&r("/SMask "+(n+1)+" 0 R"), r("/Length "+e.data.length+">>"), i(e.data), r("endobj"), "smask"in e){var h="/Predictor "+e.p+" /Colors 1 /BitsPerComponent "+e.bpc+" /Columns "+e.w,c={w:e.w,h:e.h,cs:"DeviceGray",bpc:e.bpc,dp:h,data:e.smask};"f"in e&&(c.f=e.f), t.call(this,c);}e.cs===this.color_spaces.INDEXED&&(this.internal.newObject(), r("<< /Length "+e.pal.length+">>"), i(this.arrayBufferToBinaryString(new Uint8Array(e.pal))), r("endobj"));},S=function(){var t=this.internal.collections[x+"images"];for(var e in t)n.call(this,t[e]);},k=function(){var t,e=this.internal.collections[x+"images"],n=this.internal.write;for(var r in e)n("/I"+(t=e[r]).i,t.n,"0","R");},_=function(t){return"function"==typeof b["process"+t.toUpperCase()]},A=function(t){return"object"===(void 0===t?"undefined":vt(t))&&1===t.nodeType},I=function(t,e){if("IMG"===t.nodeName&&t.hasAttribute("src")){var n=""+t.getAttribute("src");if(0===n.indexOf("data:image/"))return n;!e&&/\.png(?:[?#].*)?$/i.test(n)&&(e="png");}if("CANVAS"===t.nodeName)var r=t;else{(r=document.createElement("canvas")).width=t.clientWidth||t.width, r.height=t.clientHeight||t.height;var i=r.getContext("2d");if(!i)throw"addImage requires canvas to be supported by browser.";i.drawImage(t,0,0,r.width,r.height);}return r.toDataURL("png"==(""+e).toLowerCase()?"image/png":"image/jpeg")},C=function(t,e){var n;if(e)for(var r in e)if(t===e[r].alias){n=e[r];break}return n};b.color_spaces={DEVICE_RGB:"DeviceRGB",DEVICE_GRAY:"DeviceGray",DEVICE_CMYK:"DeviceCMYK",CAL_GREY:"CalGray",CAL_RGB:"CalRGB",LAB:"Lab",ICC_BASED:"ICCBased",INDEXED:"Indexed",PATTERN:"Pattern",SEPARATION:"Separation",DEVICE_N:"DeviceN"}, b.decode={DCT_DECODE:"DCTDecode",FLATE_DECODE:"FlateDecode",LZW_DECODE:"LZWDecode",JPX_DECODE:"JPXDecode",JBIG2_DECODE:"JBIG2Decode",ASCII85_DECODE:"ASCII85Decode",ASCII_HEX_DECODE:"ASCIIHexDecode",RUN_LENGTH_DECODE:"RunLengthDecode",CCITT_FAX_DECODE:"CCITTFaxDecode"}, b.image_compression={NONE:"NONE",FAST:"FAST",MEDIUM:"MEDIUM",SLOW:"SLOW"}, b.sHashCode=function(t){return t=t||"", Array.prototype.reduce&&t.split("").reduce(function(t,e){return(t=(t<<5)-t+e.charCodeAt(0))&t},0)}, b.isString=function(t){return"string"==typeof t}
62, b.validateStringAsBase64=function(t){var e=!0;return(t=t||"").length%4!=0&&(e=!1), !1===/[A-Za-z0-9\/]+/.test(t.substr(0,t.length-2))&&(e=!1), !1===/[A-Za-z0-9\/][A-Za-z0-9+\/]|[A-Za-z0-9+\/]=|==/.test(t.substr(-2))&&(e=!1), e}, b.extractInfoFromBase64DataURI=function(t){return/^data:([\w]+?\/([\w]+?));base64,(.+)$/g.exec(t)}, b.supportsArrayBuffer=function(){return"undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array}, b.isArrayBuffer=function(t){return!!this.supportsArrayBuffer()&&t instanceof ArrayBuffer}, b.isArrayBufferView=function(t){return!!this.supportsArrayBuffer()&&("undefined"!=typeof Uint32Array&&(t instanceof Int8Array||t instanceof Uint8Array||"undefined"!=typeof Uint8ClampedArray&&t instanceof Uint8ClampedArray||t instanceof Int16Array||t instanceof Uint16Array||t instanceof Int32Array||t instanceof Uint32Array||t instanceof Float32Array||t instanceof Float64Array))}, b.binaryStringToUint8Array=function(t){for(var e=t.length,n=new Uint8Array(e),r=0;r<e;r++)n[r]=t.charCodeAt(r);return n}, b.arrayBufferToBinaryString=function(t){if("function"==typeof atob)return atob(this.arrayBufferToBase64(t));if("function"==typeof TextDecoder){var e=new TextDecoder("ascii");if("ascii"===e.encoding)return e.decode(t)}for(var n=this.isArrayBuffer(t)?t:new Uint8Array(t),r=20480,i="",o=Math.ceil(n.byteLength/r),a=0;a<o;a++)i+=String.fromCharCode.apply(null,n.slice(a*r,a*r+r));return i}, b.arrayBufferToBase64=function(t){for(var e,n="",r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=new Uint8Array(t),o=i.byteLength,a=o%3,s=o-a,h=0;h<s;h+=3)n+=r[(16515072&(e=i[h]<<16|i[h+1]<<8|i[h+2]))>>18]+r[(258048&e)>>12]+r[(4032&e)>>6]+r[63&e];return 1==a?n+=r[(252&(e=i[s]))>>2]+r[(3&e)<<4]+"==":2==a&&(n+=r[(64512&(e=i[s]<<8|i[s+1]))>>10]+r[(1008&e)>>4]+r[(15&e)<<2]+"="), n}, b.createImageInfo=function(t,e,n,r,i,o,a,s,h,c,l,u,f){var d={alias:s,w:e,h:n,cs:r,bpc:i,i:a,data:t};return o&&(d.f=o), h&&(d.dp=h), c&&(d.trns=c), l&&(d.pal=l), u&&(d.smask=u), f&&(d.p=f), d}, b.addImage=function(t,e,n,r,i,o,a,s,h){var c="";if("string"!=typeof e){var l=o;o=i, i=r, r=n, n=e, e=l;}if("object"===(void 0===t?"undefined":vt(t))&&!A(t)&&"imageData"in t){var u=t;t=u.imageData, e=u.format||e, n=u.x||n||0, r=u.y||r||0, i=u.w||i, o=u.h||o, a=u.alias||a, s=u.compression||s, h=u.rotation||u.angle||h;}if(isNaN(n)||isNaN(r))throw console.error("jsPDF.addImage: Invalid coordinates",arguments), new Error("Invalid coordinates passed to jsPDF.addImage");var f,d,p,g,m,w,y,v=function(){var t=this.internal.collections[x+"images"];return t||(this.internal.collections[x+"images"]=t={}, this.internal.events.subscribe("putResources",S), this.internal.events.subscribe("putXobjectDict",k)), t}.call(this);if(!(f=C(t,v))&&(A(t)&&(t=I(t,e)), (null==(y=a)||0===y.length)&&(a="string"==typeof(w=t)&&b.sHashCode(w)), !(f=C(a,v)))){if(this.isString(t)&&(""!==(c=this.convertStringToImageData(t))?t=c:void 0!==(c=this.loadImageFile(t))&&(t=c)), e=this.getImageFileTypeByImageData(t,e), !_(e))throw new Error("addImage does not support files of type '"+e+"', please ensure that a plugin for '"+e+"' support is added.");if(this.supportsArrayBuffer()&&(t instanceof Uint8Array||(d=t, t=this.binaryStringToUint8Array(t))), !(f=this["process"+e.toUpperCase()](t,(m=0, (g=v)&&(m=Object.keys?Object.keys(g).length:function(t){var e=0;for(var n in t)t.hasOwnProperty(n)&&e++;return e}(g)), m),a,((p=s)&&"string"==typeof p&&(p=p.toUpperCase()), p in b.image_compression?p:b.image_compression.NONE),d)))throw new Error("An unkwown error occurred whilst processing the image")}return function(t,e,n,r,i,o,a,s){var h=function(t,e,n){return t||e||(e=t=-96), t<0&&(t=-1*n.w*72/t/this.internal.scaleFactor), e<0&&(e=-1*n.h*72/e/this.internal.scaleFactor), 0===t&&(t=e*n.w/n.h), 0===e&&(e=t*n.h/n.w), [t,e]}.call(this,n,r,i),c=this.internal.getCoordinateString,l=this.internal.getVerticalCoordinateString;if(n=h[0], r=h[1], a[o]=i, s){s*=Math.PI/180;var u=Math.cos(s),f=Math.sin(s),d=function(t){return t.toFixed(4)},p=[d(u),d(f),d(-1*f),d(u),0,0,"cm"];}this.internal.write("q"), s?(this.internal.write([1,"0","0",1,c(t),l(e+r),"cm"].join(" ")), this.internal.write(p.join(" ")), this.internal.write([c(n),"0","0",c(r),"0","0","cm"].join(" "))):this.internal.write([c(n),"0","0",c(r),c(t),l(e+r),"cm"].join(" ")), this.internal.write("/I"+i.i+" Do"), this.internal.write("Q");}.call(this,n,r,i,o,f,f.i,v,h), this}, b.convertStringToImageData=function(t){var e,n="";this.isString(t)&&(null!==(e=this.extractInfoFromBase64DataURI(t))?b.validateStringAs
62Base64(e[3])&&(n=atob(e[3])):b.validateStringAsBase64(t)&&(n=atob(t)));return n};var c=function(t,e){return t.subarray(e,e+5)};b.processJPEG=function(t,e,n,r,i,o){var a,s=this.decode.DCT_DECODE;if(!this.isString(t)&&!this.isArrayBuffer(t)&&!this.isArrayBufferView(t))return null;if(this.isString(t)&&(a=function(t){var e;if(255===!t.charCodeAt(0)||216===!t.charCodeAt(1)||255===!t.charCodeAt(2)||224===!t.charCodeAt(3)||!t.charCodeAt(6)==="J".charCodeAt(0)||!t.charCodeAt(7)==="F".charCodeAt(0)||!t.charCodeAt(8)==="I".charCodeAt(0)||!t.charCodeAt(9)==="F".charCodeAt(0)||0===!t.charCodeAt(10))throw new Error("getJpegSize requires a binary string jpeg file");for(var n=256*t.charCodeAt(4)+t.charCodeAt(5),r=4,i=t.length;r<i;){if(r+=n, 255!==t.charCodeAt(r))throw new Error("getJpegSize could not find the size of the image");if(192===t.charCodeAt(r+1)||193===t.charCodeAt(r+1)||194===t.charCodeAt(r+1)||195===t.charCodeAt(r+1)||196===t.charCodeAt(r+1)||197===t.charCodeAt(r+1)||198===t.charCodeAt(r+1)||199===t.charCodeAt(r+1))return e=256*t.charCodeAt(r+5)+t.charCodeAt(r+6), [256*t.charCodeAt(r+7)+t.charCodeAt(r+8),e,t.charCodeAt(r+9)];r+=2, n=256*t.charCodeAt(r)+t.charCodeAt(r+1);}}(t)), this.isArrayBuffer(t)&&(t=new Uint8Array(t)), this.isArrayBufferView(t)&&(a=function(t){if(65496!=(t[0]<<8|t[1]))throw new Error("Supplied data is not a JPEG");for(var e,n=t.length,r=(t[4]<<8)+t[5],i=4;i<n;){if(r=((e=c(t,i+=r))[2]<<8)+e[3], (192===e[1]||194===e[1])&&255===e[0]&&7<r)return{width:((e=c(t,i+5))[2]<<8)+e[3],height:(e[0]<<8)+e[1],numcomponents:e[4]};i+=2;}throw new Error("getJpegSizeFromBytes could not find the size of the image")}(t), t=i||this.arrayBufferToBinaryString(t)), void 0===o)switch(a.numcomponents){case 1:o=this.color_spaces.DEVICE_GRAY;break;case 4:o=this.color_spaces.DEVICE_CMYK;break;default:case 3:o=this.color_spaces.DEVICE_RGB;}return this.createImageInfo(t,a.width,a.height,o,8,s,e,n)}, b.processJPG=function(){return this.processJPEG.apply(this,arguments)}, b.loadImageFile=function(t,e,n){e=e||!0, n=n||function(){};Object.prototype.toString.call("undefined"!=typeof process?process:0);if(void 0!==("undefined"==typeof window?"undefined":vt(window))&&"object"===("undefined"==typeof location?"undefined":vt(location))&&"http"===location.protocol.substr(0,4))return function(t,e,n){var r=new XMLHttpRequest,i=[],o=0,a=function(t){var e=t.length,n=String.fromCharCode;for(o=0;o<e;o+=1)i.push(n(255&t.charCodeAt(o)));return i.join("")};if(r.open("GET",t,!e), r.overrideMimeType("text/plain; charset=x-user-defined"), !1===e&&(r.onload=function(){return a(this.responseText)}), r.send(null), 200===r.status)return e?a(r.responseText):void 0;console.warn('Unable to load file "'+t+'"');}(t,e)}, b.getImageProperties=function(t){var e,n,r="";if(A(t)&&(t=I(t)), this.isString(t)&&(""!==(r=this.convertStringToImageData(t))?t=r:void 0!==(r=this.loadImageFile(t))&&(t=r)), n=this.getImageFileTypeByImageData(t), !_(n))throw new Error("addImage does not support files of type '"+n+"', please ensure that a plugin for '"+n+"' support is added.");if(this.supportsArrayBuffer()&&(t instanceof Uint8Array||(t=this.binaryStringToUint8Array(t))), !(e=this["process"+n.toUpperCase()](t)))throw new Error("An unkwown error occurred whilst processing the image");return{fileType:n,width:e.w,height:e.h,colorSpace:e.cs,compressionMode:e.f,bitsPerComponent:e.bpc}};}($.API), t=$.API, y={annotations:[],f2:function(t){return t.toFixed(2)},notEmpty:function(t){if(void 0!==t&&""!=t)return!0}}, $.API.annotationPlugin=y, $.API.events.push(["addPage",function(t){this.annotationPlugin.annotations[t.pageNumber]=[];}]), t.events.push(["putPage",function(t){for(var e=this.annotationPlugin.annotations[t.pageNumber],n=!1,r=0;r<e.length&&!n;r++)switch((h=e[r]).type){case"link":if(y.notEmpty(h.options.url)||y.notEmpty(h.options.pageNumber)){n=!0;break}case"reference":case"text":case"freetext":n=!0;}if(0!=n){this.internal.write("/Annots [");var i=this.annotationPlugin.f2,o=this.internal.scaleFactor,a=this.internal.pageSize.getHeight(),s=this.internal.getPageInfo(t.pageNumber);for(r=0;r<e.length;r++){var h;
62switch((h=e[r]).type){case"reference":this.internal.write(" "+h.object.objId+" 0 R ");break;case"text":var c=this.internal.newAdditionalObject(),l=this.internal.newAdditionalObject(),u=h.title||"Note";m="<</Type /Annot /Subtype /Text "+(d="/Rect ["+i(h.bounds.x*o)+" "+i(a-(h.bounds.y+h.bounds.h)*o)+" "+i((h.bounds.x+h.bounds.w)*o)+" "+i((a-h.bounds.y)*o)+"] ")+"/Contents ("+h.contents+")", m+=" /Popup "+l.objId+" 0 R", m+=" /P "+s.objId+" 0 R", m+=" /T ("+u+") >>", c.content=m;var f=c.objId+" 0 R";m="<</Type /Annot /Subtype /Popup "+(d="/Rect ["+i((h.bounds.x+30)*o)+" "+i(a-(h.bounds.y+h.bounds.h)*o)+" "+i((h.bounds.x+h.bounds.w+30)*o)+" "+i((a-h.bounds.y)*o)+"] ")+" /Parent "+f, h.open&&(m+=" /Open true"), m+=" >>", l.content=m, this.internal.write(c.objId,"0 R",l.objId,"0 R");break;case"freetext":var d="/Rect ["+i(h.bounds.x*o)+" "+i((a-h.bounds.y)*o)+" "+i(h.bounds.x+h.bounds.w*o)+" "+i(a-(h.bounds.y+h.bounds.h)*o)+"] ",p=h.color||"#000000";m="<</Type /Annot /Subtype /FreeText "+d+"/Contents ("+h.contents+")", m+=" /DS(font: Helvetica,sans-serif 12.0pt; text-align:left; color:#"+p+")", m+=" /Border [0 0 0]", m+=" >>", this.internal.write(m);break;case"link":if(h.options.name){var g=this.annotations._nameMap[h.options.name];h.options.pageNumber=g.page, h.options.top=g.y;}else h.options.top||(h.options.top=0);d="/Rect ["+i(h.x*o)+" "+i((a-h.y)*o)+" "+i((h.x+h.w)*o)+" "+i((a-(h.y+h.h))*o)+"] ";var m="";if(h.options.url)m="<</Type /Annot /Subtype /Link "+d+"/Border [0 0 0] /A <</S /URI /URI ("+h.options.url+") >>";else if(h.options.pageNumber)switch(m="<</Type /Annot /Subtype /Link "+d+"/Border [0 0 0] /Dest ["+(t=this.internal.getPageInfo(h.options.pageNumber)).objId+" 0 R", h.options.magFactor=h.options.magFactor||"XYZ", h.options.magFactor){case"Fit":m+=" /Fit]";break;case"FitH":m+=" /FitH "+h.options.top+"]";break;case"FitV":h.options.left=h.options.left||0, m+=" /FitV "+h.options.left+"]";break;case"XYZ":default:var w=i((a-h.options.top)*o);h.options.left=h.options.left||0, void 0===h.options.zoom&&(h.options.zoom=0), m+=" /XYZ "+h.options.left+" "+w+" "+h.options.zoom+"]";}""!=m&&(m+=" >>", this.internal.write(m));}}this.internal.write("]");}}]), t.createAnnotation=function(t){switch(t.type){case"link":this.link(t.bounds.x,t.bounds.y,t.bounds.w,t.bounds.h,t);break;case"text":case"freetext":this.annotationPlugin.annotations[this.internal.getCurrentPageInfo().pageNumber].push(t);}}, t.link=function(t,e,n,r,i){this.annotationPlugin.annotations[this.internal.getCurrentPageInfo().pageNumber].push({x:t,y:e,w:n,h:r,options:i,type:"link"});}, t.textWithLink=function(t,e,n,r){var i=this.getTextWidth(t),o=this.internal.getLineHeight()/this.internal.scaleFactor;return this.text(t,e,n), n+=.2*o, this.link(e,n-o,i,o,r), i}, t.getTextWidth=function(t){var e=this.internal.getFontSize();return this.getStringUnitWidth(t)*e/this.internal.scaleFactor}, t.getLineHeight=function(){return this.internal.getLineHeight()}, function(t){var a=Object.keys({ar:"Arabic (Standard)","ar-DZ":"Arabic (Algeria)","ar-BH":"Arabic (Bahrain)","ar-EG":"Arabic (Egypt)","ar-IQ":"Arabic (Iraq)","ar-JO":"Arabic (Jordan)","ar-KW":"Arabic (Kuwait)","ar-LB":"Arabic (Lebanon)","ar-LY":"Arabic (Libya)","ar-MA":"Arabic (Morocco)","ar-OM":"Arabic (Oman)","ar-QA":"Arabic (Qatar)","ar-SA":"Arabic (Saudi Arabia)","ar-SY":"Arabic (Syria)","ar-TN":"Arabic (Tunisia)","ar-AE":"Arabic (U.A.E.)","ar-YE":"Arabic (Yemen)",fa:"Persian","fa-IR":"Persian/Iran",ur:"Urdu"}),u={1569:[65152],1570:[65153,65154,65153,65154],1571:[65155,65156,65155,65156],1572:[65157,65158],1573:[65159,65160,65159,65160],1574:[65161,65162,65163,65164],1575:[65165,65166,65165,65166],1576:[65167,65168,65169,65170],1577:[65171,65172],1578:[65173,65174,65175,65176],1579:[65177,65178,65179,65180],1580:[65181,65182,65183,65184],1581:[65185,65186,65187,65188],1582:[65189,65190,65191,65192],1583:[65193,65194,65193],1584:[65195,65196,65195],1585:[65197,65198,65197],1586:[65199,65200,65199],1587:[65201,65202,65203,65204],1588:[65205,65206,65207,65208],1589:[65209,65210,65211,65212],1590:[65213,65214,65215,65216],1591:[65217,65218,65219,65220],1592:[65221,65222,65223,65224],1593:[65225,65226,65227,65228],1594:[65229,65230,65231,65232],1601:[65233,65234,65235,65236],1602:[65237,65238,65239,65240],1603:[65241,65242,65243,65244],1604:[65245,65246,65247,65248],1605:[65249,65250,65251,65252],1606:[65253,65254,65255,65256],1607:[65257,65258,65259,65260],1608:[65261,65262,65261],1609:[65263,65264,64488,64489],1610:[65265,652
6266,65267,65268],1649:[64336,64337],1655:[64477],1657:[64358,64359,64360,64361],1658:[64350,64351,64352,64353],1659:[64338,64339,64340,64341],1662:[64342,64343,64344,64345],1663:[64354,64355,64356,64357],1664:[64346,64347,64348,64349],1667:[64374,64375,64376,64377],1668:[64370,64371,64372,64373],1670:[64378,64379,64380,64381],1671:[64382,64383,64384,64385],1672:[64392,64393],1676:[64388,64389],1677:[64386,64387],1678:[64390,64391],1681:[64396,64397],1688:[64394,64395,64394],1700:[64362,64363,64364,64365],1702:[64366,64367,64368,64369],1705:[64398,64399,64400,64401],1709:[64467,64468,64469,64470],1711:[64402,64403,64404,64405],1713:[64410,64411,64412,64413],1715:[64406,64407,64408,64409],1722:[64414,64415],1723:[64416,64417,64418,64419],1726:[64426,64427,64428,64429],1728:[64420,64421],1729:[64422,64423,64424,64425],1733:[64480,64481],1734:[64473,64474],1735:[64471,64472],1736:[64475,64476],1737:[64482,64483],1739:[64478,64479],1740:[64508,64509,64510,64511],1744:[64484,64485,64486,64487],1746:[64430,64431],1747:[64432,64433]},f={1570:[65269,65270,65269,65270],1571:[65271,65272,65271,65272],1573:[65273,65274,65273,65274],1575:[65275,65276,65275,65276]},d={1570:[65153,65154,65153,65154],1571:[65155,65156,65155,65156],1573:[65159,65160,65159,65160],1575:[65165,65166,65165,65166]},p={1612:64606,1613:64607,1614:64608,1615:64609,1616:64610},e=[1570,1571,1573,1575],n=[1569,1570,1571,1572,1573,1575,1577,1583,1584,1585,1586,1608,1688],o=0,s=1,h=2,c=3;function g(t){return void 0!==t&&void 0!==u[t.charCodeAt(0)]}function l(t){return void 0!==t&&0<=n.indexOf(t.charCodeAt(0))}function m(t){return void 0!==t&&0<=e.indexOf(t.charCodeAt(0))}function w(t){return g(t)&&2<=u[t.charCodeAt(0)].length}function y(t,e,n,r){return g(t)?(r=r||{}, u=Object.assign(u,r), !w(t)||!g(e)&&!g(n)||!g(n)&&l(e)||l(t)&&!g(e)||l(t)&&m(e)||l(t)&&l(e)?(u=Object.assign(u,d), o):g(i=t)&&4==u[i.charCodeAt(0)].length&&g(e)&&!l(e)&&g(n)&&w(n)?(u=Object.assign(u,d), c):l(t)||!g(n)?(u=Object.assign(u,d), s):(u=Object.assign(u,d), h)):-1;var i;}var v=t.processArabic=function(t,e){t=t||"", e=e||!1;var n,r,i,o="",a=0,s=0,h="",c="",l="";for(a=0;a<t.length;a+=1)h=t[a], c=t[a-1], l=t[a+1], g(h)?void 0!==c&&1604===c.charCodeAt(0)&&m(h)?(s=y(h,t[a-2],t[a+1],f), n=String.fromCharCode(f[h.charCodeAt(0)][s]), o=o.substr(0,o.length-1)+n):void 0!==c&&1617===c.charCodeAt(0)&&(void 0!==(r=h)&&void 0!==p[r.charCodeAt(0)])?(s=y(h,t[a-2],t[a+1],d), n=String.fromCharCode(p[h.charCodeAt(0)][s]), o=o.substr(0,o.length-1)+n):(s=y(h,c,l,d), o+=String.fromCharCode(u[h.charCodeAt(0)][s])):o+=e?{"(":")",")":"("}[i=h]||i:h;return e?o.split("").reverse().join(""):o};t.events.push(["preProcessText",function(t){var e=t.text,n=(t.x, t.y, t.options||{}),r=(t.mutex, n.lang),i=[];if(0<=a.indexOf(r)){if("[object Array]"===Object.prototype.toString.call(e)){var o=0;for(i=[], o=0;o<e.length;o+=1)"[object Array]"===Object.prototype.toString.call(e[o])?i.push([v(e[o][0],!0),e[o][1],e[o][2]]):i.push([v(e[o],!0)]);t.text=i;}else t.text=v(e,!0);void 0===n.charSpace&&(t.options.charSpace=0), !0===n.R2L&&(t.options.R2L=!1);}}]);}($.API), $.API.autoPrint=function(t){var e;switch((t=t||{}).variant=t.variant||"non-conform", t.variant){case"javascript":this.addJS("print({});");break;case"non-conform":default:this.internal.events.subscribe("postPutResources",function(){e=this.internal.newObject(), this.internal.out("<<"), this.internal.out("/S /Named"), this.internal.out("/Type /Action"), this.internal.out("/N /Print"), this.internal.out(">>"), this.internal.out("endobj");}), this.internal.events.subscribe("putCatalog",function(){this.internal.out("/OpenAction "+e+" 0 R");});}return this}, ( 63/** 64 * jsPDF Canvas PlugIn 65 * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) [email protected] 66 * 67 * Licensed under the MIT License. 68 * http://opensource.org/licenses/mit-license 69 */ 70e=$.API).events.push(["initialized",function(){this.canvas.pdf=this;}]), e.canvas={getContext:function(t){return(this.pdf.context2d._canvas=this).pdf.context2d},childNodes:[]}, Object.defineProperty(e.canvas,"width",{get:function(){return this._width}
70,set:function(t){this._width=t, this.getContext("2d").pageWrapX=t+1;}}), Object.defineProperty(e.canvas,"height",{get:function(){return this._height},set:function(t){this._height=t, this.getContext("2d").pageWrapY=t+1;}}), I=$.API, C={x:void 0,y:void 0,w:void 0,h:void 0,ln:void 0}, T=1, d=function(t,e,n,r,i){C={x:t,y:e,w:n,h:r,ln:i};}, p=function(){return C}, F={left:0,top:0,bottom:0}, I.setHeaderFunction=function(t){h=t;}, I.getTextDimensions=function(e){i=this.internal.getFont().fontName, o=this.table_font_size||this.internal.getFontSize(), a=this.internal.getFont().fontStyle;var t,n,r=19.049976/25.4;(n=document.createElement("font")).id="jsPDFCell";try{n.style.fontStyle=a;}catch(t){n.style.fontWeight=a;}n.style.fontSize=o+"pt", n.style.fontFamily=i;try{n.textContent=e;}catch(t){n.innerText=e;}return document.body.appendChild(n), t={w:(n.offsetWidth+1)*r,h:(n.offsetHeight+1)*r}, document.body.removeChild(n), t}, I.cellAddPage=function(){var t=this.margins||F;this.addPage(), d(t.left,t.top,void 0,void 0), T+=1;}, I.cellInitialize=function(){C={x:void 0,y:void 0,w:void 0,h:void 0,ln:void 0}, T=1;}, I.cell=function(t,e,n,r,i,o,a){var s=p(),h=!1;if(void 0!==s.ln)if(s.ln===o)t=s.x+s.w, e=s.y;else{var c=this.margins||F;s.y+s.h+r+13>=this.internal.pageSize.getHeight()-c.bottom&&(this.cellAddPage(), h=!0, this.printHeaders&&this.tableHeaderRow&&this.printHeaderRow(o,!0)), e=p().y+p().h, h&&(e=23);}if(void 0!==i[0])if(this.printingHeaderRow?this.rect(t,e,n,r,"FD"):this.rect(t,e,n,r), "right"===a){i instanceof Array||(i=[i]);for(var l=0;l<i.length;l++){var u=i[l],f=this.getStringUnitWidth(u)*this.internal.getFontSize();this.text(u,t+n-f-3,e+this.internal.getLineHeight()*(l+1));}}else this.text(i,t+3,e+this.internal.getLineHeight());return d(t,e,n,r,o), this}, I.arrayMax=function(t,e){var n,r,i,o=t[0];for(n=0, r=t.length;n<r;n+=1)i=t[n], e?-1===e(o,i)&&(o=i):o<i&&(o=i);return o}, I.table=function(t,e,n,r,i){if(!n)throw"No data for PDF table";var o,a,s,h,c,l,u,f,d,p,g=[],m=[],w={},y={},v=[],b=[],x=!1,S=!0,k=12,_=F;if(_.width=this.internal.pageSize.getWidth(), i&&(!0===i.autoSize&&(x=!0), !1===i.printHeaders&&(S=!1), i.fontSize&&(k=i.fontSize), i.css&&void 0!==i.css["font-size"]&&(k=16*i.css["font-size"]), i.margins&&(_=i.margins)), this.lnMod=0, C={x:void 0,y:void 0,w:void 0,h:void 0,ln:void 0}, T=1, this.printHeaders=S, this.margins=_, this.setFontSize(k), this.table_font_size=k, null==r)g=Object.keys(n[0]);else if(r[0]&&"string"!=typeof r[0])for(a=0, s=r.length;a<s;a+=1)o=r[a], g.push(o.name), m.push(o.prompt), y[o.name]=o.width*(19.049976/25.4);else g=r;if(x)for(p=function(t){return t[o]}, a=0, s=g.length;a<s;a+=1){for(w[o=g[a]]=n.map(p), v.push(this.getTextDimensions(m[a]||o).w), u=0, h=(l=w[o]).length;u<h;u+=1)c=l[u], v.push(this.getTextDimensions(c).w);y[o]=I.arrayMax(v), v=[];}if(S){var A=this.calculateLineHeight(g,y,m.length?m:g);for(a=0, s=g.length;a<s;a+=1)o=g[a], b.push([t,e,y[o],A,String(m.length?m[a]:o)]);this.setTableHeaderRow(b), this.printHeaderRow(1,!1);}for(a=0, s=n.length;a<s;a+=1)for(f=n[a], A=this.calculateLineHeight(g,y,f), u=0, d=g.length;u<d;u+=1)o=g[u], this.cell(t,e,y[o],A,f[o],a+2,o.align);return this.lastCellPos=C, this.table_x=t, this.table_y=e, this}, I.calculateLineHeight=function(t,e,n){for(var r,i=0,o=0;o<t.length;o++){n[r=t[o]]=this.splitTextToSize(String(n[r]),e[r]-3);var a=this.internal.getLineHeight()*n[r].length+3;i<a&&(i=a);}return i}, I.setTableHeaderRow=function(t){this.tableHeaderRow=t;}, I.printHeaderRow=function(t,e){if(!this.tableHeaderRow)throw"Property tableHeaderRow does not exist.";var n,r,i,o;if(this.printingHeaderRow=!0, void 0!==h){var a=h(this,T);d(a[0],a[1],a[2],a[3],-1);}this.setFontStyle("bold");var s=[];for(i=0, o=this.tableHeaderRow.length;i<o;i+=1)this.setFillColor(200,200,200), n=this.tableHeaderRow[i], e&&(this.margins.top=13, n[1]=this.margins&&this.margins.top||0, s.push(n)), r=[].concat(n), this.cell.apply(this,r.concat(t));0<s.length&&this.setTableHeaderRow(s), this.setFontStyle("normal"), this.printingHeaderRow=!1;}, function(t){t.events.push(["initialized",function(){((this.context2d.pdf=this).context2d.internal.pdf=this).context2d.ctx=new e, this.context2d.ctxStack=[], this.context2d.path=[];}]), t.context2d={pageWrapXEnabled:!1,pageWrapYEnabled:!1,pageWrapX:9999999,pageWrapY:9999999,ctx:new e,f2:function(t){return t.toFixed(2)}
70,fillRect:function(t,e,n,r){if(!this._isFillTransparent()){t=this._wrapX(t), e=this._wrapY(e);var i=this._matrix_map_rect(this.ctx._transform,{x:t,y:e,w:n,h:r});this.pdf.rect(i.x,i.y,i.w,i.h,"f");}},strokeRect:function(t,e,n,r){if(!this._isStrokeTransparent()){t=this._wrapX(t), e=this._wrapY(e);var i=this._matrix_map_rect(this.ctx._transform,{x:t,y:e,w:n,h:r});this.pdf.rect(i.x,i.y,i.w,i.h,"s");}},clearRect:function(t,e,n,r){if(!this.ctx.ignoreClearRect){t=this._wrapX(t), e=this._wrapY(e);var i=this._matrix_map_rect(this.ctx._transform,{x:t,y:e,w:n,h:r});this.save(), this.setFillStyle("#ffffff"), this.pdf.rect(i.x,i.y,i.w,i.h,"f"), this.restore();}},save:function(){this.ctx._fontSize=this.pdf.internal.getFontSize();var t=new e;t.copy(this.ctx), this.ctxStack.push(this.ctx), this.ctx=t;},restore:function(){this.ctx=this.ctxStack.pop(), this.setFillStyle(this.ctx.fillStyle), this.setStrokeStyle(this.ctx.strokeStyle), this.setFont(this.ctx.font), this.pdf.setFontSize(this.ctx._fontSize), this.setLineCap(this.ctx.lineCap), this.setLineWidth(this.ctx.lineWidth), this.setLineJoin(this.ctx.lineJoin);},rect:function(t,e,n,r){this.moveTo(t,e), this.lineTo(t+n,e), this.lineTo(t+n,e+r), this.lineTo(t,e+r), this.lineTo(t,e), this.closePath();},beginPath:function(){this.path=[];},closePath:function(){this.path.push({type:"close"});},_getRGBA:function(t){var e,n,r,i,o=new RGBColor(t);if(!t)return{r:0,g:0,b:0,a:0,style:t};if(this.internal.rxTransparent.test(t))i=r=n=e=0;else{var a=this.internal.rxRgb.exec(t);null!=a?(e=parseInt(a[1]), n=parseInt(a[2]), r=parseInt(a[3]), i=1):null!=(a=this.internal.rxRgba.exec(t))?(e=parseInt(a[1]), n=parseInt(a[2]), r=parseInt(a[3]), i=parseFloat(a[4])):(i=1, "#"!=t.charAt(0)&&(t=o.ok?o.toHex():"#000000"), 4===t.length?(e=t.substring(1,2), e+=e, n=t.substring(2,3), n+=n, r=t.substring(3,4), r+=r):(e=t.substring(1,3), n=t.substring(3,5), r=t.substring(5,7)), e=parseInt(e,16), n=parseInt(n,16), r=parseInt(r,16));}return{r:e,g:n,b:r,a:i,style:t}},setFillStyle:function(t){var e=this._getRGBA(t);this.ctx.fillStyle=t, this.ctx._isFillTransparent=0===e.a, this.ctx._fillOpacity=e.a, this.pdf.setFillColor(e.r,e.g,e.b,{a:e.a}), this.pdf.setTextColor(e.r,e.g,e.b,{a:e.a});},setStrokeStyle:function(t){var e=this._getRGBA(t);this.ctx.strokeStyle=e.style, this.ctx._isStrokeTransparent=0===e.a, this.ctx._strokeOpacity=e.a, 0===e.a?this.pdf.setDrawColor(255,255,255):(e.a, this.pdf.setDrawColor(e.r,e.g,e.b));},fillText:function(t,e,n,r){if(!this._isFillTransparent()){e=this._wrapX(e), n=this._wrapY(n);var i=this._matrix_map_point(this.ctx._transform,[e,n]);e=i[0], n=i[1];var o=57.2958*this._matrix_rotation(this.ctx._transform);if(0<this.ctx._clip_path.length){var a;(a=window.outIntercept?"group"===window.outIntercept.type?window.outIntercept.stream:window.outIntercept:this.internal.getCurrentPage()).push("q");var s=this.path;this.path=this.ctx._clip_path, this.ctx._clip_path=[], this._fill(null,!0), this.ctx._clip_path=this.path, this.path=s;}var h=1;try{h=this._matrix_decompose(this._getTransform()).scale[0];}catch(t){console.warn(t);}if(h<.01)this.pdf.text(t,e,this._getBaseline(n),null,o);else{var c=this.pdf.internal.getFontSize();this.pdf.setFontSize(c*h), this.pdf.text(t,e,this._getBaseline(n),null,o), this.pdf.setFontSize(c);}0<this.ctx._clip_path.length&&a.push("Q");}}
70,strokeText:function(t,e,n,r){if(!this._isStrokeTransparent()){e=this._wrapX(e), n=this._wrapY(n);var i=this._matrix_map_point(this.ctx._transform,[e,n]);e=i[0], n=i[1];var o=57.2958*this._matrix_rotation(this.ctx._transform);if(0<this.ctx._clip_path.length){var a;(a=window.outIntercept?"group"===window.outIntercept.type?window.outIntercept.stream:window.outIntercept:this.internal.getCurrentPage()).push("q");var s=this.path;this.path=this.ctx._clip_path, this.ctx._clip_path=[], this._fill(null,!0), this.ctx._clip_path=this.path, this.path=s;}var h=1;try{h=this._matrix_decompose(this._getTransform()).scale[0];}catch(t){console.warn(t);}if(1===h)this.pdf.text(t,e,this._getBaseline(n),{stroke:!0},o);else{var c=this.pdf.internal.getFontSize();this.pdf.setFontSize(c*h), this.pdf.text(t,e,this._getBaseline(n),{stroke:!0},o), this.pdf.setFontSize(c);}0<this.ctx._clip_path.length&&a.push("Q");}},setFont:function(t){if(this.ctx.font=t, null!=(c=/\s*(\w+)\s+(\w+)\s+(\w+)\s+([\d\.]+)(px|pt|em)\s+(.*)?/.exec(t))){var e=c[1],n=(c[2], c[3]),r=c[4],i=c[5],o=c[6];r="px"===i?Math.floor(parseFloat(r)):"em"===i?Math.floor(parseFloat(r)*this.pdf.getFontSize()):Math.floor(parseFloat(r)), this.pdf.setFontSize(r), "bold"===n||"700"===n?this.pdf.setFontStyle("bold"):"italic"===e?this.pdf.setFontStyle("italic"):this.pdf.setFontStyle("normal"), l="bold"===n||"700"===n?"italic"===e?"bolditalic":"bold":"italic"===e?"italic":"normal";for(var a=o.toLowerCase().split(/\s*,\s*/),s="Times",h=0;h<a.length;h++){if(void 0!==this.pdf.internal.getFont(a[h],l,{noFallback:!0,disableWarning:!0})){s=a[h];break}if("bolditalic"===l&&void 0!==this.pdf.internal.getFont(a[h],"bold",{noFallback:!0,disableWarning:!0}))s=a[h], l="bold";else if(void 0!==this.pdf.internal.getFont(a[h],"normal",{noFallback:!0,disableWarning:!0})){s=a[h], l="normal";break}}this.pdf.setFont(s,l);}else{var c=/\s*(\d+)(pt|px|em)\s+([\w "]+)\s*([\w "]+)?/.exec(t);if(null!=c){var l,u=c[1],f=(c[2], c[3]);(l=c[4])||(l="normal"), u="em"===i?Math.floor(parseFloat(r)*this.pdf.getFontSize()):Math.floor(parseFloat(u)), this.pdf.setFontSize(u), this.pdf.setFont(f,l);}}},setTextBaseline:function(t){this.ctx.textBaseline=t;},getTextBaseline:function(){return this.ctx.textBaseline},setTextAlign:function(t){this.ctx.textAlign=t;},getTextAlign:function(){return this.ctx.textAlign},setLineWidth:function(t){this.ctx.lineWidth=t, this.pdf.setLineWidth(t);},setLineCap:function(t){this.ctx.lineCap=t, this.pdf.setLineCap(t);},setLineJoin:function(t){this.ctx.lineJoin=t, this.pdf.setLineJoin(t);},moveTo:function(t,e){t=this._wrapX(t), e=this._wrapY(e);var n=this._matrix_map_point(this.ctx._transform,[t,e]),r={type:"mt",x:t=n[0],y:e=n[1]};this.path.push(r);},_wrapX:function(t){return this.pageWrapXEnabled?t%this.pageWrapX:t},_wrapY:function(t){return this.pageWrapYEnabled?(this._gotoPage(this._page(t)), (t-this.lastBreak)%this.pageWrapY):t},transform:function(t,e,n,r,i,o){this.ctx._transform=this._matrix_multiply(this.ctx._transform,[t,e,n,r,i,o]);},setTransform:function(t,e,n,r,i,o){this.ctx._transform=[t,e,n,r,i,o];},_getTransform:function(){return this.ctx._transform},lastBreak:0,pageBreaks:[],_page:function(t){if(this.pageWrapYEnabled){for(var e=this.lastBreak=0,n=0,r=0;r<this.pageBreaks.length;r++)if(t>=this.pageBreaks[r]){e++, 0===this.lastBreak&&n++;var i=this.pageBreaks[r]-this.lastBreak;this.lastBreak=this.pageBreaks[r], n+=Math.floor(i/this.pageWrapY);}if(0===this.lastBreak)n+=Math.floor(t/this.pageWrapY)+1;return n+e}return this.pdf.internal.getCurrentPageInfo().pageNumber},_gotoPage:function(t){},lineTo:function(t,e){t=this._wrapX(t), e=this._wrapY(e);var n=this._matrix_map_point(this.ctx._transform,[t,e]),r={type:"lt",x:t=n[0],y:e=n[1]};this.path.push(r);},bezierCurveTo:function(t,e,n,r,i,o){var a;t=this._wrapX(t), e=this._wrapY(e), n=this._wrapX(n), r=this._wrapY(r), i=this._wrapX(i), o=this._wrapY(o), i=(a=this._matrix_map_point(this.ctx._transform,[i,o]))[0], o=a[1];var s={type:"bct",x1:t=(a=this._matrix_map_point(this.ctx._transform,[t,e]))[0],y1:e=a[1],x2:n=(a=this._matrix_map_point(this.ctx._transform,[n,r]))[0],y2:r=a[1],x:i,y:o};this.path.push(s);},quadraticCurveTo:function(t,e,n,r){var i;t=this._wrapX(t), e=this._wrapY(e), n=this._wrapX(n), r=this._wrapY(r), n=(i=this._matrix_map_point(this.ctx._transform,[n,r]))[0], r=i[1];var o={type:"qct",x1:t=(i=this._matrix_map_point(this.ctx._transform,[t,e]))[0],y1:e=i[1],x:n,y:r};this.path.push(o);},arc:function(t,e,n,r,i,o){if(t=this._wrapX(t), e=this._wrapY(e), !this._matrix_is_identity(this.ctx._transform)){var a=this._matrix_map_point(this.ctx._transform,[t,e]);t=a[0], e=a[1];var s=this._matrix_map_point(this.ctx._transform,[0,0]),h=this._matrix_map_point(this.ctx._transform,[0,n]);n=Math.sqrt(Math.pow(h[0]-s[0],2)+Math.pow(h[1]-s[1],2));}
70var c={type:"arc",x:t,y:e,radius:n,startAngle:r,endAngle:i,anticlockwise:o};this.path.push(c);},drawImage:function(t,e,n,r,i,o,a,s,h){void 0!==o&&(e=o, n=a, r=s, i=h), e=this._wrapX(e), n=this._wrapY(n);var c,l=this._matrix_map_rect(this.ctx._transform,{x:e,y:n,w:r,h:i}),u=(this._matrix_map_rect(this.ctx._transform,{x:o,y:a,w:s,h:h}), /data:image\/(\w+).*/i.exec(t));c=null!=u?u[1]:"png", this.pdf.addImage(t,c,l.x,l.y,l.w,l.h);},_matrix_multiply:function(t,e){var n=e[0],r=e[1],i=e[2],o=e[3],a=e[4],s=e[5],h=n*t[0]+r*t[2],c=i*t[0]+o*t[2],l=a*t[0]+s*t[2]+t[4];return r=n*t[1]+r*t[3], o=i*t[1]+o*t[3], s=a*t[1]+s*t[3]+t[5], [n=h,r,i=c,o,a=l,s]},_matrix_rotation:function(t){return Math.atan2(t[2],t[0])},_matrix_decompose:function(t){var e=t[0],n=t[1],r=t[2],i=t[3],o=Math.sqrt(e*e+n*n),a=(e/=o)*r+(n/=o)*i;r-=e*a, i-=n*a;var s=Math.sqrt(r*r+i*i);return a/=s, e*(i/=s)<n*(r/=s)&&(e=-e, n=-n, a=-a, o=-o), {scale:[o,0,0,s,0,0],translate:[1,0,0,1,t[4],t[5]],rotate:[e,n,-n,e,0,0],skew:[1,0,a,1,0,0]}},_matrix_map_point:function(t,e){var n=t[0],r=t[1],i=t[2],o=t[3],a=t[4],s=t[5],h=e[0],c=e[1];return[h*n+c*i+a,h*r+c*o+s]},_matrix_map_point_obj:function(t,e){var n=this._matrix_map_point(t,[e.x,e.y]);return{x:n[0],y:n[1]}},_matrix_map_rect:function(t,e){var n=this._matrix_map_point(t,[e.x,e.y]),r=this._matrix_map_point(t,[e.x+e.w,e.y+e.h]);return{x:n[0],y:n[1],w:r[0]-n[0],h:r[1]-n[1]}},_matrix_is_identity:function(t){return 1==t[0]&&(0==t[1]&&(0==t[2]&&(1==t[3]&&(0==t[4]&&0==t[5]))))},rotate:function(t){var e=[Math.cos(t),Math.sin(t),-Math.sin(t),Math.cos(t),0,0];this.ctx._transform=this._matrix_multiply(this.ctx._transform,e);},scale:function(t,e){var n=[t,0,0,e,0,0];this.ctx._transform=this._matrix_multiply(this.ctx._transform,n);},translate:function(t,e){var n=[1,0,0,1,t,e];this.ctx._transform=this._matrix_multiply(this.ctx._transform,n);},stroke:function(){if(0<this.ctx._clip_path.length){var t;(t=window.outIntercept?"group"===window.outIntercept.type?window.outIntercept.stream:window.outIntercept:this.internal.getCurrentPage()).push("q");var e=this.path;this.path=this.ctx._clip_path, this.ctx._clip_path=[], this._stroke(!0), this.ctx._clip_path=this.path, this.path=e, this._stroke(!1), t.push("Q");}else this._stroke(!1);}
70,_stroke:function(t){if(t||!this._isStrokeTransparent()){for(var e=[],n=this.path,r=0;r<n.length;r++){var i=n[r];switch(i.type){case"mt":e.push({start:i,deltas:[],abs:[]});break;case"lt":var o=[i.x-n[r-1].x,i.y-n[r-1].y];e[e.length-1].deltas.push(o), e[e.length-1].abs.push(i);break;case"bct":o=[i.x1-n[r-1].x,i.y1-n[r-1].y,i.x2-n[r-1].x,i.y2-n[r-1].y,i.x-n[r-1].x,i.y-n[r-1].y];e[e.length-1].deltas.push(o);break;case"qct":var a=n[r-1].x+2/3*(i.x1-n[r-1].x),s=n[r-1].y+2/3*(i.y1-n[r-1].y),h=i.x+2/3*(i.x1-i.x),c=i.y+2/3*(i.y1-i.y),l=i.x,u=i.y;o=[a-n[r-1].x,s-n[r-1].y,h-n[r-1].x,c-n[r-1].y,l-n[r-1].x,u-n[r-1].y];e[e.length-1].deltas.push(o);break;case"arc":0==e.length&&e.push({start:{x:0,y:0},deltas:[],abs:[]}), e[e.length-1].arc=!0, Array.isArray(e[e.length-1].abs)&&e[e.length-1].abs.push(i);}}for(r=0;r<e.length;r++){var f;if(f=r==e.length-1?"s":null, e[r].arc)for(var d=e[r].abs,p=0;p<d.length;p++){var g=d[p],m=360*g.startAngle/(2*Math.PI),w=360*g.endAngle/(2*Math.PI),y=g.x,v=g.y;this.internal.arc2(this,y,v,g.radius,m,w,g.anticlockwise,f,t);}else{y=e[r].start.x, v=e[r].start.y;t?(this.pdf.lines(e[r].deltas,y,v,null,null), this.pdf.clip_fixed()):this.pdf.lines(e[r].deltas,y,v,null,f);}}}},_isFillTransparent:function(){return this.ctx._isFillTransparent||0==this.globalAlpha},_isStrokeTransparent:function(){return this.ctx._isStrokeTransparent||0==this.globalAlpha},fill:function(t){if(0<this.ctx._clip_path.length){var e;(e=window.outIntercept?"group"===window.outIntercept.type?window.outIntercept.stream:window.outIntercept:this.internal.getCurrentPage()).push("q");var n=this.path;this.path=this.ctx._clip_path, this.ctx._clip_path=[], this._fill(t,!0), this.ctx._clip_path=this.path, this.path=n, this._fill(t,!1), e.push("Q");}else this._fill(t,!1);},_fill:function(t,e){if(!this._isFillTransparent()){var n,r="function"==typeof this.pdf.internal.newObject2;n=window.outIntercept?"group"===window.outIntercept.type?window.outIntercept.stream:window.outIntercept:this.internal.getCurrentPage();var i=[],o=window.outIntercept;if(r)switch(this.ctx.globalCompositeOperation){case"normal":case"source-over":break;case"destination-in":case"destination-out":var a=this.pdf.internal.newStreamObject(),s=this.pdf.internal.newObject2();s.push("<</Type /ExtGState"), s.push("/SMask <</S /Alpha /G "+a.objId+" 0 R>>"), s.push(">>");var h="MASK"+s.objId;this.pdf.internal.addGraphicsState(h,s.objId);var c="/"+h+" gs";n.splice(0,0,"q"), n.splice(1,0,c), n.push("Q"), window.outIntercept=a;break;default:var l="/"+this.pdf.internal.blendModeMap[this.ctx.globalCompositeOperation.toUpperCase()];l&&this.pdf.internal.out(l+" gs");}var u=this.ctx.globalAlpha;if(this.ctx._fillOpacity<1&&(u=this.ctx._fillOpacity), r){var f=this.pdf.internal.newObject2();f.push("<</Type /ExtGState"), f.push("/CA "+u), f.push("/ca "+u), f.push(">>");h="GS_O_"+f.objId;this.pdf.internal.addGraphicsState(h,f.objId), this.pdf.internal.out("/"+h+" gs");}for(var d=this.path,p=0;p<d.length;p++){var g=d[p];switch(g.type){case"mt":i.push({start:g,deltas:[],abs:[]});break;case"lt":var m=[g.x-d[p-1].x,g.y-d[p-1].y];i[i.length-1].deltas.push(m), i[i.length-1].abs.push(g);break;case"bct":m=[g.x1-d[p-1].x,g.y1-d[p-1].y,g.x2-d[p-1].x,g.y2-d[p-1].y,g.x-d[p-1].x,g.y-d[p-1].y];i[i.length-1].deltas.push(m);break;case"qct":var w=d[p-1].x+2/3*(g.x1-d[p-1].x),y=d[p-1].y+2/3*(g.y1-d[p-1].y),v=g.x+2/3*(g.x1-g.x),b=g.y+2/3*(g.y1-g.y),x=g.x,S=g.y;m=[w-d[p-1].x,y-d[p-1].y,v-d[p-1].x,b-d[p-1].y,x-d[p-1].x,S-d[p-1].y];i[i.length-1].deltas.push(m);break;case"arc":0===i.length&&i.push({deltas:[],abs:[]}), i[i.length-1].arc=!0, Array.isArray(i[i.length-1].abs)&&i[i.length-1].abs.push(g);break;case"close":i.push({close:!0});}}for(p=0;p<i.length;p++){var k;if(p==i.length-1?(k="f", "evenodd"===t&&(k+="*")):k=null, i[p].close)this.pdf.internal.out("h"), k&&this.pdf.internal.out(k);else if(i[p].arc){i[p].start&&this.internal.move2(this,i[p].start.x,i[p].start.y);for(var _=i[p].abs,A=0;A<_.length;A++){var I=_[A];if(void 0!==I.startAngle){var C=360*I.startAngle/(2*Math.PI),T=360*I.endAngle/(2*Math.PI),F=I.x,P=I.y;if(0===A&&this.internal.move2(this,F,P), this.internal.arc2(this,F,P,I.radius,C,T,I.anticlockwise,null,e), A===_.length-1&&i[p].start){F=i[p].start.x, P=i[p].start.y;this.internal.line2(E,F,P);}}else this.internal.line2(E,I.x,I.y);}}else{F=i[p].start.x, P=i[p].start.y;
70e?(this.pdf.lines(i[p].deltas,F,P,null,null), this.pdf.clip_fixed()):this.pdf.lines(i[p].deltas,F,P,null,k);}}window.outIntercept=o;}},pushMask:function(){if("function"==typeof this.pdf.internal.newObject2){var t=this.pdf.internal.newStreamObject(),e=this.pdf.internal.newObject2();e.push("<</Type /ExtGState"), e.push("/SMask <</S /Alpha /G "+t.objId+" 0 R>>"), e.push(">>");var n="MASK"+e.objId;this.pdf.internal.addGraphicsState(n,e.objId);var r="/"+n+" gs";this.pdf.internal.out(r);}else console.log("jsPDF v2 not enabled");},clip:function(){if(0<this.ctx._clip_path.length)for(var t=0;t<this.path.length;t++)this.ctx._clip_path.push(this.path[t]);else this.ctx._clip_path=this.path;this.path=[];},measureText:function(n){var r=this.pdf;return{getWidth:function(){var t=r.internal.getFontSize(),e=r.getStringUnitWidth(n)*t/r.internal.scaleFactor;return e*=1.3333},get width(){return this.getWidth(n)}}},_getBaseline:function(t){var e=parseInt(this.pdf.internal.getFontSize()),n=.25*e;switch(this.ctx.textBaseline){case"bottom":return t-n;case"top":return t+e;case"hanging":return t+e-n;case"middle":return t+e/2-n;case"ideographic":return t;case"alphabetic":default:return t}}};var E=t.context2d;function e(){this._isStrokeTransparent=!1, this._strokeOpacity=1, this.strokeStyle="#000000", this.fillStyle="#000000", this._isFillTransparent=!1, this._fillOpacity=1, this.font="12pt times", this.textBaseline="alphabetic", this.textAlign="start", this.lineWidth=1, this.lineJoin="miter", this.lineCap="butt", this._transform=[1,0,0,1,0,0], this.globalCompositeOperation="normal", this.globalAlpha=1, this._clip_path=[], this.ignoreClearRect=!1, this.copy=function(t){this._isStrokeTransparent=t._isStrokeTransparent, this._strokeOpacity=t._strokeOpacity, this.strokeStyle=t.strokeStyle, this._isFillTransparent=t._isFillTransparent, this._fillOpacity=t._fillOpacity, this.fillStyle=t.fillStyle, this.font=t.font, this.lineWidth=t.lineWidth, this.lineJoin=t.lineJoin, this.lineCap=t.lineCap, this.textBaseline=t.textBaseline, this.textAlign=t.textAlign, this._fontSize=t._fontSize, this._transform=t._transform.slice(0), this.globalCompositeOperation=t.globalCompositeOperation, this.globalAlpha=t.globalAlpha, this._clip_path=t._clip_path.slice(0), this.ignoreClearRect=t.ignoreClearRect;};}Object.defineProperty(E,"fillStyle",{set:function(t){this.setFillStyle(t);},get:function(){return this.ctx.fillStyle}}), Object.defineProperty(E,"strokeStyle",{set:function(t){this.setStrokeStyle(t);},get:function(){return this.ctx.strokeStyle}}), Object.defineProperty(E,"lineWidth",{set:function(t){this.setLineWidth(t);},get:function(){return this.ctx.lineWidth}}), Object.defineProperty(E,"lineCap",{set:function(t){this.setLineCap(t);},get:function(){return this.ctx.lineCap}}), Object.defineProperty(E,"lineJoin",{set:function(t){this.setLineJoin(t);},get:function(){return this.ctx.lineJoin}}), Object.defineProperty(E,"miterLimit",{set:function(t){this.ctx.miterLimit=t;},get:function(){return this.ctx.miterLimit}}), Object.defineProperty(E,"textBaseline",{set:function(t){this.setTextBaseline(t);},get:function(){return this.getTextBaseline()}}), Object.defineProperty(E,"textAlign",{set:function(t){this.setTextAlign(t);},get:function(){return this.getTextAlign()}}), Object.defineProperty(E,"font",{set:function(t){this.setFont(t);},get:function(){return this.ctx.font}}), Object.defineProperty(E,"globalCompositeOperation",{set:function(t){this.ctx.globalCompositeOperation=t;},get:function(){return this.ctx.globalCompositeOperation}}), Object.defineProperty(E,"globalAlpha",{set:function(t){this.ctx.globalAlpha=t;},get:function(){return this.ctx.globalAlpha}}), Object.defineProperty(E,"canvas",{get:function(){return{parentNode:!1,style:!1}}}), Object.defineProperty(E,"ignoreClearRect",{set:function(t){this.ctx.ignoreClearRect=t;},get:function(){return this.ctx.ignoreClearRect}}), E.internal={}, E.internal.rxRgb=/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/, E.internal.rxRgba=/rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([\d\.]+)\s*\)/, E.internal.rxTransparent=/transparent|rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*0+\s*\)/, E.internal.arc=function(t,e,n,r,i,o,a,s){for(var h=this.pdf.internal.scaleFactor,c=this.pdf.internal.pageSize.getHeight(),l=this.pdf.internal.f2,u=i*(Math.PI/180),f=o*(Math.PI/180),d=this.createArc(r,u,f,a),p=0;p<d.length;p++){var g=d[p];0===p?this.pdf.internal.out([l((g.x1+e)*h),l((c-(g.y1+n))*h),"m",l((g.x2+e)*h),l((c-(g.y2+n))*h),l((g.x3+e)*h),l((c-(g.y3+n))*h),l((g.x4+e)*h),l((c-(g.y4
70+n))*h),"c"].join(" ")):this.pdf.internal.out([l((g.x2+e)*h),l((c-(g.y2+n))*h),l((g.x3+e)*h),l((c-(g.y3+n))*h),l((g.x4+e)*h),l((c-(g.y4+n))*h),"c"].join(" ")), t._lastPoint={x:e,y:n};}null!==s&&this.pdf.internal.out(this.pdf.internal.getStyle(s));}, E.internal.arc2=function(t,e,n,r,i,o,a,s,h){var c=e,l=n;h?(this.arc(t,c,l,r,i,o,a,null), this.pdf.clip_fixed()):this.arc(t,c,l,r,i,o,a,s);}, E.internal.move2=function(t,e,n){var r=this.pdf.internal.scaleFactor,i=this.pdf.internal.pageSize.getHeight(),o=this.pdf.internal.f2;this.pdf.internal.out([o(e*r),o((i-n)*r),"m"].join(" ")), t._lastPoint={x:e,y:n};}, E.internal.line2=function(t,e,n){var r=this.pdf.internal.scaleFactor,i=this.pdf.internal.pageSize.getHeight(),o=this.pdf.internal.f2,a={x:e,y:n};this.pdf.internal.out([o(a.x*r),o((i-a.y)*r),"l"].join(" ")), t._lastPoint=a;}, E.internal.createArc=function(t,e,n,r){var i=2*Math.PI,o=Math.PI/2,a=e;for((a<i||i<a)&&(a%=i), a<0&&(a=i+a);n<e;)e-=i;var s=Math.abs(n-e);s<i&&r&&(s=i-s);for(var h=[],c=r?-1:1,l=a;1e-5<s;){var u=l+c*Math.min(s,o);h.push(this.createSmallArc(t,l,u)), s-=Math.abs(u-l), l=u;}return h}, E.internal.getCurrentPage=function(){return this.pdf.internal.pages[this.pdf.internal.getCurrentPageInfo().pageNumber]}, E.internal.createSmallArc=function(t,e,n){var r=(n-e)/2,i=t*Math.cos(r),o=t*Math.sin(r),a=i,s=-o,h=a*a+s*s,c=h+a*i+s*o,l=4/3*(Math.sqrt(2*h*c)-c)/(a*o-s*i),u=a-l*s,f=s+l*a,d=u,p=-f,g=r+e,m=Math.cos(g),w=Math.sin(g);return{x1:t*Math.cos(e),y1:t*Math.sin(e),x2:u*m-f*w,y2:u*w+f*m,x3:d*m-p*w,y3:d*w+p*m,x4:t*Math.cos(n),y4:t*Math.sin(n)}};}($.API,"undefined"!=typeof self&&self||"undefined"!=typeof window&&window||"undefined"!=typeof commonjsGlobal&&commonjsGlobal||Function('return typeof this === "object" && this.content')()||Function("return this")()), function(t){var T,F,i,a,s,h,c,l,P,v,f,u,d,n,E,q,p,g,m,O;T=function(){return function(t){return e.prototype=t, new e};function e(){}}(), v=function(t){var e,n,r,i,o,a,s;for(n=0, r=t.length, e=void 0, a=i=!1;!i&&n!==r;)(e=t[n]=t[n].trimLeft())&&(i=!0), n++;for(n=r-1;r&&!a&&-1!==n;)(e=t[n]=t[n].trimRight())&&(a=!0), n--;for(o=/\s+$/g, s=!0, n=0;n!==r;)"\u2028"!=t[n]&&(e=t[n].replace(/\s+/g," "), s&&(e=e.trimLeft()), e&&(s=o.test(e)), t[n]=e), n++;return t}, u=function(t){var e,n,r;for(e=void 0, n=(r=t.split(",")).shift();!e&&n;)e=i[n.trim().toLowerCase()], n=r.shift();return e}, d=function(t){var e;return-1<(t="auto"===t?"0px":t).indexOf("em")&&!isNaN(Number(t.replace("em","")))&&(t=18.719*Number(t.replace("em",""))+"px"), -1<t.indexOf("pt")&&!isNaN(Number(t.replace("pt","")))&&(t=1.333*Number(t.replace("pt",""))+"px"), (e=n[t])?e:void 0!==(e={"xx-small":9,"x-small":11,small:13,medium:16,large:19,"x-large":23,"xx-large":28,auto:0}[t])?n[t]=e/16:(e=parseFloat(t))?n[t]=e/16:(e=t.match(/([\d\.]+)(px)/), Array.isArray(e)&&3===e.length?n[t]=parseFloat(e[1])/16:n[t]=1)}, P=function(t){var e,n,r,i,o;return o=t, i=document.defaultView&&document.defaultView.getComputedStyle?document.defaultView.getComputedStyle(o,null):o.currentStyle?o.currentStyle:o.style, n=void 0, (e={})["font-family"]=u((r=function(t){return t=t.replace(/-\D/g,function(t){return t.charAt(1).toUpperCase()}), i[t]})("font-family"))||"times", e["font-style"]=a[r("font-style")]||"normal", e["text-align"]=s[r("text-align")]||"left", "bold"===(n=h[r("font-weight")]||"normal")&&("normal"===e["font-style"]?e["font-style"]=n:e["font-style"]=n+e["font-style"]), e["font-size"]=d(r("font-size"))||1, e["line-height"]=d(r("line-height"))||1, e.display="inline"===r("display")?"inline":"block", n="block"===e.display, e["margin-top"]=n&&d(r("margin-top"))||0, e["margin-bottom"]=n&&d(r("margin-bottom"))||0, e["padding-top"]=n&&d(r("padding-top"))||0, e["padding-bottom"]=n&&d(r("padding-bottom"))||0, e["margin-left"]=n&&d(r("margin-left"))||0, e["margin-right"]=n&&d(r("margin-right"))||0, e["padding-left"]=n&&d(r("padding-left"))||0, e["padding-right"]=n&&d(r("padding-right"))||0, e["page-break-before"]=r("page-break-before")||"auto", e.float=c[r("cssFloat")]||"none", e.clear=l[r("clear")]||"none", e.color=r("color"), e}, E=function(t,e,n){var r,i,o,a,s;if(o=!1, a=i=void 0, r=n["#"+t.id])if("function"==typeof r)o=r(t,e);else for(i=0, a=r.length;!o&&i!==a;)o=r[i](t,e), i++;if(r=n[t.nodeName], !o&&r)if("function"==typeof r)o=r(t,e);else for(i=0, a=r.length;!o&&i!==a;)o=r[i](t,e), i++;for(s="string"==typeof t.className?t.className.split(" "):[], i=0;i<s.length;i++)if(r=n["."+s[i]], !o&&r)if("function"==typeof r)o=r(t,e);else for(i=0, a=r.length;!o&&i!==a;)o=r[i](t,e), i++;return o}, O=function(t,e){var n,r,i,o,a,s,h,c,l;
70for(n=[], r=[], i=0, l=t.rows[0].cells.length, h=t.clientWidth;i<l;)c=t.rows[0].cells[i], r[i]={name:c.textContent.toLowerCase().replace(/\s+/g,""),prompt:c.textContent.replace(/\r?\n/g,""),width:c.clientWidth/h*e.pdf.internal.pageSize.getWidth()}, i++;for(i=1;i<t.rows.length;){for(s=t.rows[i], a={}, o=0;o<s.cells.length;)a[r[o].name]=s.cells[o].textContent.replace(/\r?\n/g,""), o++;n.push(a), i++;}return{rows:n,headers:r}};var B={SCRIPT:1,STYLE:1,NOSCRIPT:1,OBJECT:1,EMBED:1,SELECT:1},R=1;F=function(t,i,e){var n,r,o,a,s,h,c,l;for(r=t.childNodes, n=void 0, (s="block"===(o=P(t)).display)&&(i.setBlockBoundary(), i.setBlockStyle(o)), a=0, h=r.length;a<h;){if("object"===(void 0===(n=r[a])?"undefined":vt(n))){if(i.executeWatchFunctions(n), 1===n.nodeType&&"HEADER"===n.nodeName){var u=n,f=i.pdf.margins_doc.top;i.pdf.internal.events.subscribe("addPage",function(t){i.y=f, F(u,i,e), i.pdf.margins_doc.top=i.y+10, i.y+=10;},!1);}if(8===n.nodeType&&"#comment"===n.nodeName)~n.textContent.indexOf("ADD_PAGE")&&(i.pdf.addPage(), i.y=i.pdf.margins_doc.top);else if(1!==n.nodeType||B[n.nodeName])if(3===n.nodeType){var d=n.nodeValue;if(n.nodeValue&&"LI"===n.parentNode.nodeName)if("OL"===n.parentNode.parentNode.nodeName)d=R+++". "+d;else{var p=o["font-size"],g=(3-.75*p)*i.pdf.internal.scaleFactor,m=.75*p*i.pdf.internal.scaleFactor,w=1.74*p/i.pdf.internal.scaleFactor;l=function(t,e){this.pdf.circle(t+g,e+m,w,"FD");};}16&n.ownerDocument.body.compareDocumentPosition(n)&&i.addText(d,o);}else"string"==typeof n&&i.addText(n,o);else{var y;if("IMG"===n.nodeName){var v=n.getAttribute("src");y=q[i.pdf.sHashCode(v)||v];}if(y){i.pdf.internal.pageSize.getHeight()-i.pdf.margins_doc.bottom<i.y+n.height&&i.y>i.pdf.margins_doc.top&&(i.pdf.addPage(), i.y=i.pdf.margins_doc.top, i.executeWatchFunctions(n));var b=P(n),x=i.x,S=12/i.pdf.internal.scaleFactor,k=(b["margin-left"]+b["padding-left"])*S,_=(b["margin-right"]+b["padding-right"])*S,A=(b["margin-top"]+b["padding-top"])*S,I=(b["margin-bottom"]+b["padding-bottom"])*S;void 0!==b.float&&"right"===b.float?x+=i.settings.width-n.width-_:x+=k, i.pdf.addImage(y,x,i.y+A,n.width,n.height), y=void 0, "right"===b.float||"left"===b.float?(i.watchFunctions.push(function(t,e,n,r){return i.y>=e?(i.x+=t, i.settings.width+=n, !0):!!(r&&1===r.nodeType&&!B[r.nodeName]&&i.x+r.width>i.pdf.margins_doc.left+i.pdf.margins_doc.width)&&(i.x+=t, i.y=e, i.settings.width+=n, !0)}.bind(this,"left"===b.float?-n.width-k-_:0,i.y+n.height+A+I,n.width)), i.watchFunctions.push(function(t,e,n){return!(i.y<t&&e===i.pdf.internal.getNumberOfPages())||1===n.nodeType&&"both"===P(n).clear&&(i.y=t, !0)}.bind(this,i.y+n.height,i.pdf.internal.getNumberOfPages())), i.settings.width-=n.width+k+_, "left"===b.float&&(i.x+=n.width+k+_)):i.y+=n.height+A+I;}else if("TABLE"===n.nodeName)c=O(n,i), i.y+=10, i.pdf.table(i.x,i.y,c.rows,c.headers,{autoSize:!1,printHeaders:e.printHeaders,margins:i.pdf.margins_doc,css:P(n)}), i.y=i.pdf.lastCellPos.y+i.pdf.lastCellPos.h+20;else if("OL"===n.nodeName||"UL"===n.nodeName)R=1, E(n,i,e)||F(n,i,e), i.y+=10;else if("LI"===n.nodeName){var C=i.x;i.x+=20/i.pdf.internal.scaleFactor, i.y+=3, E(n,i,e)||F(n,i,e), i.x=C;}else"BR"===n.nodeName?(i.y+=o["font-size"]*i.pdf.internal.scaleFactor, i.addText("\u2028",T(o))):E(n,i,e)||F(n,i,e);}}a++;}if(e.outY=i.y, s)return i.setBlockBoundary(l)}, q={}, p=function(t,o,e,n){var a,r=t.getElementsByTagName("img"),i=r.length,s=0;function h(){o.pdf.internal.events.publish("imagesLoaded"), n(a);}function c(e,n,r){if(e){var i=new Image;a=++s, i.crossOrigin="", i.onerror=i.onload=function(){if(i.complete&&(0===i.src.indexOf("data:image/")&&(i.width=n||i.width||0, i.height=r||i.height||0), i.width+i.height)){var t=o.pdf.sHashCode(e)||e;q[t]=q[t]||i;}--s||h();}, i.src=e;}}for(;i--;)c(r[i].getAttribute("src"),r[i].width,r[i].height);return s||h()}, g=function(t,o,a){var s=t.getElementsByTagName("footer");if(0<s.length){s=s[0];var e=o.pdf.internal.write,n=o.y;o.pdf.internal.write=function(){}, F(s,o,a);var h=Math.ceil(o.y-n)+5;o.y=n, o.pdf.internal.write=e, o.pdf.margins_doc.bottom+=h;for(var r=function(t){var e=void 0!==t?t.pageNumber:1,n=o.y;o.y=o.pdf.internal.pageSize.getHeight()-o.pdf.margins_doc.bottom, o.pdf.margins_doc.bottom-=h;for(var r=s.getElementsByTagName("span"),i=0;i<r.length;++i)-1<(" "+r[i].className+" ").replace(/[\n\t]/g," ").indexOf(" pageCounter ")&&(r[i].innerHTML=e), -1<(" "+r[i].className+" ").replace(/[\n\t]/g," ").indexOf(" totalPages ")&&(r[i].innerHTML="###jsPDFVarTotalPages###");F(s,o,a), o.pdf.margins_doc.bottom+=h, o.y=n;},i=s.getElementsByTagName("span"),c=0;c<i.length;++c)-1<(" "+i[c].className+" ").replace(/[\n\t]/g," ").indexOf(" totalPages ")&&o.pdf.internal.events.subscribe("htmlRenderingFinished",o.pdf.putTotalPages.bind(o.pdf,"###jsPDFVarTotalPages###"),!0);o.pdf.internal.events.subscribe("addPage",r,!1), r(), B.FOOTER=1;}}, m=function(t,e,n,r,i,o){if(!e)return!1;var a,s,h,c;"string"==typeof e||e.parentNode||(e=""+e.innerHTML), "string"==typeof e&&(a=e.replace(/<\/?script[^>]*?>/gi,""), c="jsPDFhtmlText"+Date.now().toString()+(1e3*Math.random()).toFixed(0), (h=document.createElement("div")).style.cssText="position: absolute !important;clip: rect(1px 1px 1px 1px); /* IE6, IE7 */clip: rect(1px, 1px, 1px, 1px);padding:0 !important;border:0 !important;height: 1px !important;width: 1px !important; top:auto;left:-100px;overflow: hidden;", h.innerHTML='<iframe style="height:1px;width:1px" name="'+c+'" />', document.body.appendChild(h), (s=window.frames[c]).document.open(), s.document.writeln(a), s.document.close(), e=s.document.body);var l,u=new f(t,n,r,i);return p.call(this,e,u,i.elementHandlers,function(t){g(e,u,i.elementHandlers), F(e,u,i.elementHandlers), u.pdf.internal.events.publish("htmlRenderingFinished"), l=u.dispose(), "function"==typeof o?o(l):t&&console.error("jsPDF Warning: rendering issues? provide a callback to fromHTML!");}), l||{x:u.x,y:u.y}}, (f=function(t,e,n,r){return this.pdf=t, this.x=e, this.y=n, this.settings=r, this.watchFunctions=[], this.init(), this}).prototype.init=function(){return this.paragraph={text:[],style:[]}, this.pdf.internal.write("q")}, f.prototype.dispose=function(){return this.pdf.internal.write("Q"), {x:this.x,y:this.y,ready:!0}}, f.prototype.executeWatchFunctions=function(t){var e=!1,n=[];if(0<this.watchFunctions.length){for(var r=0;r<this.watchFunctions.length;++r)!0===this.watchFunctions[r](t)?e=!0:n.push(this.watchFunctions[r]);this.watchFunctions=n;}return e}, f.prototype.splitFragmentsIntoLines=function(t,e){var n,r,i,o,a,s,h,c,l,u,f,d,p,g;for(u=this.pdf.internal.scaleFactor, o={}
70, s=h=c=g=a=i=l=r=void 0, d=[f=[]], n=0, p=this.settings.width;t.length;)if(a=t.shift(), g=e.shift(), a)if((i=o[(r=g["font-family"])+(l=g["font-style"])])||(i=this.pdf.internal.getFont(r,l).metadata.Unicode, o[r+l]=i), c={widths:i.widths,kerning:i.kerning,fontSize:12*g["font-size"],textIndent:n}, h=this.pdf.getStringUnitWidth(a,c)*c.fontSize/u, "\u2028"==a)f=[], d.push(f);else if(p<n+h){for(s=this.pdf.splitTextToSize(a,p,c), f.push([s.shift(),g]);s.length;)f=[[s.shift(),g]], d.push(f);n=this.pdf.getStringUnitWidth(f[0][0],c)*c.fontSize/u;}else f.push([a,g]), n+=h;if(void 0!==g["text-align"]&&("center"===g["text-align"]||"right"===g["text-align"]||"justify"===g["text-align"]))for(var m=0;m<d.length;++m){var w=this.pdf.getStringUnitWidth(d[m][0][0],c)*c.fontSize/u;0<m&&(d[m][0][1]=T(d[m][0][1]));var y=p-w;if("right"===g["text-align"])d[m][0][1]["margin-left"]=y;else if("center"===g["text-align"])d[m][0][1]["margin-left"]=y/2;else if("justify"===g["text-align"]){var v=d[m][0][0].split(" ").length-1;d[m][0][1]["word-spacing"]=y/v, m===d.length-1&&(d[m][0][1]["word-spacing"]=0);}}return d}, f.prototype.RenderTextFragment=function(t,e){var n,r;r=0, this.pdf.internal.pageSize.getHeight()-this.pdf.margins_doc.bottom<this.y+this.pdf.internal.getFontSize()&&(this.pdf.internal.write("ET","Q"), this.pdf.addPage(), this.y=this.pdf.margins_doc.top, this.pdf.internal.write("q","BT",this.getPdfColor(e.color),this.pdf.internal.getCoordinateString(this.x),this.pdf.internal.getVerticalCoordinateString(this.y),"Td"), r=Math.max(r,e["line-height"],e["font-size"]), this.pdf.internal.write(0,(-12*r).toFixed(2),"Td")), n=this.pdf.internal.getFont(e["font-family"],e["font-style"]);var i=this.getPdfColor(e.color);i!==this.lastTextColor&&(this.pdf.internal.write(i), this.lastTextColor=i), void 0!==e["word-spacing"]&&0<e["word-spacing"]&&this.pdf.internal.write(e["word-spacing"].toFixed(2),"Tw"), this.pdf.internal.write("/"+n.id,(12*e["font-size"]).toFixed(2),"Tf","("+this.pdf.internal.pdfEscape(t)+") Tj"), void 0!==e["word-spacing"]&&this.pdf.internal.write(0,"Tw");}, f.prototype.getPdfColor=function(t){var e,n,r,i=new RGBColor(t),o=/rgb\s*\(\s*(\d+),\s*(\d+),\s*(\d+\s*)\)/.exec(t);if(null!=o?(e=parseInt(o[1]), n=parseInt(o[2]), r=parseInt(o[3])):("#"!=t.charAt(0)&&(t=i.ok?i.toHex():"#000000"), e=t.substring(1,3), e=parseInt(e,16), n=t.substring(3,5), n=parseInt(n,16), r=t.substring(5,7), r=parseInt(r,16)), "string"==typeof e&&/^#[0-9A-Fa-f]{6}$/.test(e)){var a=parseInt(e.substr(1),16);e=a>>16&255, n=a>>8&255, r=255&a;}var s=this.f3;return 0===e&&0===n&&0===r||void 0===n?s(e/255)+" g":[s(e/255),s(n/255),s(r/255),"rg"].join(" ")}, f.prototype.f3=function(t){return t.toFixed(3)}, f.prototype.renderParagraph=function(t){var e,n,r,i,o,a,s,h,c,l,u,f,d;if(r=v(this.paragraph.text), f=this.paragraph.style, e=this.paragraph.blockstyle, this.paragraph.priorblockstyle||{}, this.paragraph={text:[],style:[],blockstyle:{},priorblockstyle:e}, r.join("").trim()){s=this.splitFragmentsIntoLines(r,f), h=a=void 0, n=12/this.pdf.internal.scaleFactor, this.priorMarginBottom=this.priorMarginBottom||0, u=(Math.max((e["margin-top"]||0)-this.priorMarginBottom,0)+(e["padding-top"]||0))*n, l=((e["margin-bottom"]||0)+(e["padding-bottom"]||0))*n, this.priorMarginBottom=e["margin-bottom"]||0, "always"===e["page-break-before"]&&(this.pdf.addPage(), this.y=0, u=((e["margin-top"]||0)+(e["padding-top"]||0))*n), c=this.pdf.internal.write, o=i=void 0, this.y+=u, c("q","BT 0 g",this.pdf.internal.getCoordinateString(this.x),this.pdf.internal.getVerticalCoordinateString(this.y),"Td");for(var p=0;s.length;){for(i=h=0, o=(a=s.shift()).length;i!==o;)a[i][0].trim()&&(h=Math.max(h,a[i][1]["line-height"],a[i][1]["font-size"]), d=7*a[i][1]["font-size"]), i++;var g=0,m=0;for(void 0!==a[0][1]["margin-left"]&&0<a[0][1]["margin-left"]&&(g=(m=this.pdf.internal.getCoordinateString(a[0][1]["margin-left"]))-p, p=m), c(g+Math.max(e["margin-left"]||0,0)*n,(-12*h).toFixed(2),"Td"), i=0, o=a.length;i!==o;)a[i][0]&&this.RenderTextFragment(a[i][0],a[i][1]), i++;if(this.y+=h*n, this.executeWatchFunctions(a[0][1])&&0<s.length){var w=[],y=[];
70s.forEach(function(t){for(var e=0,n=t.length;e!==n;)t[e][0]&&(w.push(t[e][0]+" "), y.push(t[e][1])), ++e;}), s=this.splitFragmentsIntoLines(v(w),y), c("ET","Q"), c("q","BT 0 g",this.pdf.internal.getCoordinateString(this.x),this.pdf.internal.getVerticalCoordinateString(this.y),"Td");}}return t&&"function"==typeof t&&t.call(this,this.x-9,this.y-d/2), c("ET","Q"), this.y+=l}}, f.prototype.setBlockBoundary=function(t){return this.renderParagraph(t)}, f.prototype.setBlockStyle=function(t){return this.paragraph.blockstyle=t}, f.prototype.addText=function(t,e){return this.paragraph.text.push(t), this.paragraph.style.push(e)}, i={helvetica:"helvetica","sans-serif":"helvetica","times new roman":"times",serif:"times",times:"times",monospace:"courier",courier:"courier"}, h={100:"normal",200:"normal",300:"normal",400:"normal",500:"bold",600:"bold",700:"bold",800:"bold",900:"bold",normal:"normal",bold:"bold",bolder:"bold",lighter:"normal"}, a={normal:"normal",italic:"italic",oblique:"italic"}, s={left:"left",right:"right",center:"center",justify:"justify"}, c={none:"none",right:"right",left:"left"}, l={none:"none",both:"both"}, n={normal:1}, t.fromHTML=function(t,e,n,r,i,o){return this.margins_doc=o||{top:0,bottom:0}, r||(r={}), r.elementHandlers||(r.elementHandlers={}), m(this,t,isNaN(e)?4:e,isNaN(n)?4:n,r,i)};}($.API), $.API.addJS=function(t){return s=t, this.internal.events.subscribe("postPutResources",function(t){n=this.internal.newObject(), this.internal.out("<<"), this.internal.out("/Names [(EmbeddedJS) "+(n+1)+" 0 R]"), this.internal.out(">>"), this.internal.out("endobj"), r=this.internal.newObject(), this.internal.out("<<"), this.internal.out("/S /JavaScript"), this.internal.out("/JS ("+s+")"), this.internal.out(">>"), this.internal.out("endobj");}), this.internal.events.subscribe("putCatalog",function(){void 0!==n&&void 0!==r&&this.internal.out("/Names <</JavaScript "+n+" 0 R>>");}), this}, ( 71/** 72 * jsPDF Outline PlugIn 73 * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) [email protected] 74 * 75 * Licensed under the MIT License. 76 * http://opensource.org/licenses/mit-license 77 */ 78c=$.API).events.push(["postPutResources",function(){var t=this,e=/^(\d+) 0 obj$/;if(0<this.outline.root.children.length)for(var n=t.outline.render().split(/\r\n/),r=0;r<n.length;r++){var i=n[r],o=e.exec(i);if(null!=o){var a=o[1];t.internal.newObjectDeferredBegin(a);}t.internal.write(i);}if(this.outline.createNamedDestinations){var s=this.internal.pages.length,h=[];for(r=0;r<s;r++){var c=t.internal.newObject();h.push(c);var l=t.internal.getPageInfo(r+1);t.internal.write("<< /D["+l.objId+" 0 R /XYZ null null null]>> endobj");}var u=t.internal.newObject();for(t.internal.write("<< /Names [ "), r=0;r<h.length;r++)t.internal.write("(page_"+(r+1)+")"+h[r]+" 0 R");t.internal.write(" ] >>","endobj"), t.internal.newObject(), t.internal.write("<< /Dests "+u+" 0 R"), t.internal.write(">>","endobj");}}]), c.events.push(["putCatalog",function(){0<this.outline.root.children.length&&(this.internal.write("/Outlines",this.outline.makeRef(this.outline.root)), this.outline.createNamedDestinations&&this.internal.write("/Names "+namesOid+" 0 R"));}]), c.events.push(["initialized",function(){var o=this;o.outline={createNamedDestinations:!1,root:{children:[]}}, o.outline.add=function(t,e,n){var r={title:e,options:n,children:[]};return null==t&&(t=this.root), t.children.push(r), r}, o.outline.render=function(){return this.ctx={}, this.ctx.val="", this.ctx.pdf=o, this.genIds_r(this.root), this.renderRoot(this.root), this.renderItems(this.root), this.ctx.val}, o.outline.genIds_r=function(t){t.id=o.internal.newObjectDeferred();for(var e=0;e<t.children.length;e++)this.genIds_r(t.children[e]);}, o.outline.renderRoot=function(t){this.objStart(t), this.line("/Type /Outlines"), 0<t.children.length&&(this.line("/First "+this.makeRef(t.children[0])), this.line("/Last "+this.makeRef(t.children[t.children.length-1]))), this.line("/Count "+this.count_r({count:0},t)), this.objEnd();}, o.outline.renderItems=function(t){for(var e=0;e<t.children.length;e++){var n=t.children[e];this.objStart(n), this.line("/Title "+this.makeString(n.title)), this.line("/Parent "+this.makeRef(t)), 0<e&&this.line("/Prev "+this.makeRef(t.children[e-1])), e<t.children.length-1&&this.line("/Next "+this.makeRef(t.children[e+1])), 0<n.children.length&&(this.line("/First "+this.makeRef(n.children[0])), this.line("/Last "+this.makeRef(n.children[n.children.length-1])));var r=this.count=this.count_r({count:0},n);if(0<r&&this.line("/Count "+r), n.options&&n.options.pageNumber){var i=o.internal.getPageInfo(n.options.pageNumber);this.line("/Dest ["+i.objId+" 0 R /XYZ 0 "+this.ctx.pdf.internal.pageSize.getHeight()*this.ctx.pdf.internal.scaleFactor+" 0]");}this.objEnd();}for(e=0;e<t.children.length;e++)n=t.children[e], this.renderItems(n);}
78, o.outline.line=function(t){this.ctx.val+=t+"\r\n";}, o.outline.makeRef=function(t){return t.id+" 0 R"}, o.outline.makeString=function(t){return"("+o.internal.pdfEscape(t)+")"}, o.outline.objStart=function(t){this.ctx.val+="\r\n"+t.id+" 0 obj\r\n<<\r\n";}, o.outline.objEnd=function(t){this.ctx.val+=">> \r\nendobj\r\n";}, o.outline.count_r=function(t,e){for(var n=0;n<e.children.length;n++)t.count++, this.count_r(t,e.children[n]);return t.count};}]), P=$.API, E=function(){var t="function"==typeof Deflater;if(!t)throw new Error("requires deflate.js for compression");return t}, q=function(t,e,n,r){var i=5,o=b;switch(r){case P.image_compression.FAST:i=3, o=v;break;case P.image_compression.MEDIUM:i=6, o=x;break;case P.image_compression.SLOW:i=9, o=S;}t=w(t,e,n,o);var a=new Uint8Array(g(i)),s=m(t),h=new Deflater(i),c=h.append(t),l=h.flush(),u=a.length+c.length+l.length,f=new Uint8Array(u+4);return f.set(a), f.set(c,a.length), f.set(l,a.length+c.length), f[u++]=s>>>24&255, f[u++]=s>>>16&255, f[u++]=s>>>8&255, f[u++]=255&s, P.arrayBufferToBinaryString(f)}, g=function(t,e){var n=Math.LOG2E*Math.log(32768)-8<<4|8,r=n<<8;return r|=Math.min(3,(e-1&255)>>1)<<6, r|=0, [n,255&(r+=31-r%31)]}, m=function(t,e){for(var n,r=1,i=0,o=t.length,a=0;0<o;){for(o-=n=e<o?e:o;i+=r+=t[a++], --n;);r%=65521, i%=65521;}return(i<<16|r)>>>0}, w=function(t,e,n,r){for(var i,o,a,s=t.length/e,h=new Uint8Array(t.length+s),c=k(),l=0;l<s;l++){if(a=l*e, i=t.subarray(a,a+e), r)h.set(r(i,n,o),a+l);else{for(var u=0,f=c.length,d=[];u<f;u++)d[u]=c[u](i,n,o);var p=_(d.concat());h.set(d[p],a+l);}o=i;}return h}, l=function(t,e,n){var r=Array.apply([],t);return r.unshift(0), r}, v=function(t,e,n){var r,i=[],o=0,a=t.length;for(i[0]=1;o<a;o++)r=t[o-e]||0, i[o+1]=t[o]-r+256&255;return i}, b=function(t,e,n){var r,i=[],o=0,a=t.length;for(i[0]=2;o<a;o++)r=n&&n[o]||0, i[o+1]=t[o]-r+256&255;return i}, x=function(t,e,n){var r,i,o=[],a=0,s=t.length;for(o[0]=3;a<s;a++)r=t[a-e]||0, i=n&&n[a]||0, o[a+1]=t[a]+256-(r+i>>>1)&255;return o}, S=function(t,e,n){var r,i,o,a,s=[],h=0,c=t.length;for(s[0]=4;h<c;h++)r=t[h-e]||0, i=n&&n[h]||0, o=n&&n[h-e]||0, a=u(r,i,o), s[h+1]=t[h]-a+256&255;return s}, u=function(t,e,n){var r=t+e-n,i=Math.abs(r-t),o=Math.abs(r-e),a=Math.abs(r-n);return i<=o&&i<=a?t:o<=a?e:n}, k=function(){return[l,v,b,x,S]}, _=function(t){for(var e,n,r,i=0,o=t.length;i<o;)((e=f(t[i].slice(1)))<n||!n)&&(n=e, r=i), i++;return r}, f=function(t){for(var e=0,n=t.length,r=0;e<n;)r+=Math.abs(t[e++]);return r}, P.processPNG=function(t,e,n,r,i){var o,a,s,h,c,l,u=this.color_spaces.DEVICE_RGB,f=this.decode.FLATE_DECODE,d=8;if(this.isArrayBuffer(t)&&(t=new Uint8Array(t)), this.isArrayBufferView(t)){if("function"!=typeof PNG||"function"!=typeof kt)throw new Error("PNG support requires png.js and zlib.js");if(t=(o=new PNG(t)).imgData, d=o.bits, u=o.colorSpace, h=o.colors, -1!==[4,6].indexOf(o.colorType)){if(8===o.bits)for(var p,g=(I=32==o.pixelBitlength?new Uint32Array(o.decodePixels().buffer):16==o.pixelBitlength?new Uint16Array(o.decodePixels().buffer):new Uint8Array(o.decodePixels().buffer)).length,m=new Uint8Array(g*o.colors),w=new Uint8Array(g),y=o.pixelBitlength-o.bits,v=0,b=0;v<g;v++){for(x=I[v], p=0;p<y;)m[b++]=x>>>p&255, p+=o.bits;w[v]=x>>>p&255;}if(16===o.bits){g=(I=new Uint32Array(o.decodePixels().buffer)).length, m=new Uint8Array(g*(32/o.pixelBitlength)*o.colors), w=new Uint8Array(g*(32/o.pixelBitlength));for(var x,S=1<o.colors,k=b=v=0;v<g;)x=I[v++], m[b++]=x>>>0&255, S&&(m[b++]=x>>>16&255, x=I[v++], m[b++]=x>>>0&255), w[k++]=x>>>16&255;d=8;}r!==P.image_compression.NONE&&E()?(t=q(m,o.width*o.colors,o.colors,r), l=q(w,o.width,1,r)):(t=m, l=w, f=null);}if(3===o.colorType&&(u=this.color_spaces.INDEXED, c=o.palette, o.transparency.indexed)){var _=o.transparency.indexed,A=0;for(v=0, g=_.length;v<g;++v)A+=_[v];if((A/=255)==g-1&&-1!==_.indexOf(0))s=[_.indexOf(0)];else if(A!==g){var I=o.decodePixels();for(w=new Uint8Array(I.length), v=0, g=I.length;v<g;v++)w[v]=_[I[v]];l=q(w,o.width,1);}}var C=function(t){var e;switch(t){case P.image_compression.FAST:e=11;break;case P.image_compression.MEDIUM:e=13;break;case P.image_compression.SLOW:e=14;break;default:e=12;}return e}(r);return a=f===this.decode.FLATE_DECODE?"/Predictor "+C+" /Colors "+h+" /BitsPerComponent "+d+" /Columns "+o.width:"/Colors "+h+" /BitsPerComponent "+d+" /Columns "+o.width, (this.isArrayBuffer(t)||this.isArrayBufferView(t))&&(t=this.arrayBufferToBinaryString(t)), (l&&this.isArrayBuffer(l)||this.isArrayBufferView(l))&&(l=this.arrayBufferToBinaryString(l)), this.createImageInfo(t,o.width,o.height,u,d,f,e,n,a,s,c,l,C)}throw new Error("Unsupported PNG image data, try using JPEG instead.")}, ( 79/** 80 * jsPDF gif Support PlugIn 81 * Copyright (c) 2017 Aras Abbasi 82 * 83 * Licensed under the MIT License. 84 * http://opensource.org/licenses/mit-license 85 */ 86A=$.API).processGIF89A=function(t,e,n,r,i){var o=new mt(t),a=o.width,s=o.height,h=[];o.decodeAndBlitFrameRGBA(0,h);var c={data:h,width:a,height:s},l=new yt(100).encode(c,100);return A.processJPEG.call(this,l,e,n,r)}, A.processGIF87A=A.processGIF89A, ( 87/** 88 * jsPDF bmp Support PlugIn 89 * Copyright (c) 2018 Aras Abbasi 90 * 91 * Licensed under the MIT License. 92 * http://opensource.org/licenses/mit-license 93 */ 94O=$.API).processBMP=function(t,e,n,r,i){var o=new xt(t,!1),a=o.width,s=o.height,h={data:o.getData(),width:a,height:s},c=new yt(100).encode(h,100);return O.processJPEG.call(this,c,e,n,r)}, $.API.setLanguage=function(t){return void 0===this.internal.languageSettings&&(this.internal.languageSettings={}, this.internal.languageSettings.isSubscribed=!1), void 0!=={af:"Afrikaans",sq
94:"Albanian",ar:"Arabic (Standard)","ar-DZ":"Arabic (Algeria)","ar-BH":"Arabic (Bahrain)","ar-EG":"Arabic (Egypt)","ar-IQ":"Arabic (Iraq)","ar-JO":"Arabic (Jordan)","ar-KW":"Arabic (Kuwait)","ar-LB":"Arabic (Lebanon)","ar-LY":"Arabic (Libya)","ar-MA":"Arabic (Morocco)","ar-OM":"Arabic (Oman)","ar-QA":"Arabic (Qatar)","ar-SA":"Arabic (Saudi Arabia)","ar-SY":"Arabic (Syria)","ar-TN":"Arabic (Tunisia)","ar-AE":"Arabic (U.A.E.)","ar-YE":"Arabic (Yemen)",an:"Aragonese",hy:"Armenian",as:"Assamese",ast:"Asturian",az:"Azerbaijani",eu:"Basque",be:"Belarusian",bn:"Bengali",bs:"Bosnian",br:"Breton",bg:"Bulgarian",my:"Burmese",ca:"Catalan",ch:"Chamorro",ce:"Chechen",zh:"Chinese","zh-HK":"Chinese (Hong Kong)","zh-CN":"Chinese (PRC)","zh-SG":"Chinese (Singapore)","zh-TW":"Chinese (Taiwan)",cv:"Chuvash",co:"Corsican",cr:"Cree",hr:"Croatian",cs:"Czech",da:"Danish",nl:"Dutch (Standard)","nl-BE":"Dutch (Belgian)",en:"English","en-AU":"English (Australia)","en-BZ":"English (Belize)","en-CA":"English (Canada)","en-IE":"English (Ireland)","en-JM":"English (Jamaica)","en-NZ":"English (New Zealand)","en-PH":"English (Philippines)","en-ZA":"English (South Africa)","en-TT":"English (Trinidad & Tobago)","en-GB":"English (United Kingdom)","en-US":"English (United States)","en-ZW":"English (Zimbabwe)",eo:"Esperanto",et:"Estonian",fo:"Faeroese",fj:"Fijian",fi:"Finnish",fr:"French (Standard)","fr-BE":"French (Belgium)","fr-CA":"French (Canada)","fr-FR":"French (France)","fr-LU":"French (Luxembourg)","fr-MC":"French (Monaco)","fr-CH":"French (Switzerland)",fy:"Frisian",fur:"Friulian",gd:"Gaelic (Scots)","gd-IE":"Gaelic (Irish)",gl:"Galacian",ka:"Georgian",de:"German (Standard)","de-AT":"German (Austria)","de-DE":"German (Germany)","de-LI":"German (Liechtenstein)","de-LU":"German (Luxembourg)","de-CH":"German (Switzerland)",el:"Greek",gu:"Gujurati",ht:"Haitian",he:"Hebrew",hi:"Hindi",hu:"Hungarian",is:"Icelandic",id:"Indonesian",iu:"Inuktitut",ga:"Irish",it:"Italian (Standard)","it-CH":"Italian (Switzerland)",ja:"Japanese",kn:"Kannada",ks:"Kashmiri",kk:"Kazakh",km:"Khmer",ky:"Kirghiz",tlh:"Klingon",ko:"Korean","ko-KP":"Korean (North Korea)","ko-KR":"Korean (South Korea)",la:"Latin",lv:"Latvian",lt:"Lithuanian",lb:"Luxembourgish",mk:"FYRO Macedonian",ms:"Malay",ml:"Malayalam",mt:"Maltese",mi:"Maori",mr:"Marathi",mo:"Moldavian",nv:"Navajo",ng:"Ndonga",ne:"Nepali",no:"Norwegian",nb:"Norwegian (Bokmal)",nn:"Norwegian (Nynorsk)",oc:"Occitan",or:"Oriya",om:"Oromo",fa:"Persian","fa-IR":"Persian/Iran",pl:"Polish",pt:"Portuguese","pt-BR":"Portuguese (Brazil)",pa:"Punjabi","pa-IN":"Punjabi (India)","pa-PK":"Punjabi (Pakistan)",qu:"Quechua",rm:"Rhaeto-Romanic",ro:"Romanian","ro-MO":"Romanian (Moldavia)",ru:"Russian","ru-MO":"Russian (Moldavia)",sz:"Sami (Lappish)",sg:"Sango",sa:"Sanskrit",sc:"Sardinian",sd:"Sindhi",si:"Singhalese",sr:"Serbian",sk:"Slovak",sl:"Slovenian",so:"Somani",sb:"Sorbian",es:"Spanish","es-AR":"Spanish (Argentina)","es-BO":"Spanish (Bolivia)","es-CL":"Spanish (Chile)","es-CO":"Spanish (Colombia)","es-CR":"Spanish (Costa Rica)","es-DO":"Spanish (Dominican Republic)","es-EC":"Spanish (Ecuador)","es-SV":"Spanish (El Salvador)","es-GT":"Spanish (Guatemala)","es-HN":"Spanish (Honduras)","es-MX":"Spanish (Mexico)","es-NI":"Spanish (Nicaragua)","es-PA":"Spanish (Panama)","es-PY":"Spanish (Paraguay)","es-PE":"Spanish (Peru)","es-PR":"Spanish (Puerto Rico)","es-ES":"Spanish (Spain)","es-UY":"Spanish (Uruguay)","es-VE":"Spanish (Venezuela)",sx:"Sutu",sw:"Swahili",sv:"Swedish","sv-FI":"Swedish (Finland)","sv-SV":"Swedish (Sweden)",ta:"Tamil",tt:"Tatar",te:"Teluga",th:"Thai",tig:"Tigre",ts:"Tsonga",tn:"Tswana",tr:"Turkish",tk:"Turkmen",uk:"Ukrainian",hsb:"Upper Sorbian",ur:"Urdu",ve:"Venda",vi:"Vietnamese",vo:"Volapuk",wa:"Walloon",cy:"Welsh",xh:"Xhosa",ji:"Yiddish",zu:"Zulu"}[t]&&(this.internal.languageSettings.languageCode=t, !1===this.internal.languageSettings.isSubscribed&&(this.internal.events.subscribe("putCatalog",function(){this.internal.write("/Lang ("+this.internal.languageSettings.languageCode+")");}), this.internal.languageSettings.isSubscribed=!0)), this}, B=$.API, R=B.getCharWidthsArray=function(t,e){var n,r,i,o=(e=e||{}).font||this.internal.getFont(),a=e.fontSize||this.internal.getFontSize(),s=e.charSpace||this.internal.getCharSpace(),h=e.widths?e.widths:o.metadata.Unicode.widths,c=h.fof?h.fof:1,l=e.kerning?e.kerning:o.metadata.Unicode.kerning,u=l.fof?l.fof:1,f=0,d=h[0]||c,p=[];for(n=0, r=t.length;n<r;n++)i=t.charCodeAt(n), "function"==typeof o.metadata.widthOfString?p.push((o.metadata.widthOfGlyph(o.metadata.characterToGlyph(i))+s*(1e3/a)||0)/1e3):p.push((h[i]||d)/c+(l[i]&&l[i][f]||0)/u), f=i;return p}, j=B.getArraySum=function(t){for(var e=t.length,n=0;e;)n+=t[--e];return n}, D=B.getStringUnitWidth=function(t,e){var n=(e=e||{}).fontSize||this.internal.getFontSize(),r=e.font||this.internal.getFont(),i=e.charSpace||this.internal.getCharSpace();return"function"==typeof r.metadata.widthOfString?r.metadata.widthOfString(t,n,i)/n:j(R.apply(this,arguments))}, M=function(t,e,n,r){for(var i=[],o=0,a=t.length,s=0;o!==a&&s+e[o]<n;)s+=e[o], o++;i.push(t.slice(0,o));var h=o;for(s=0;o!==a;)s+e[o]>r&&(i.push(t.slice(h,o)), s=0, h=o), s+=e[o], o++;return h!==o&&i.push(t.slice(h,o)), i}, U=function(t,e,n){n||(n={});var r,i,o,a,s,h,c=[],l=[c],u=n.textIndent||0,f=0,d=0,p=t.split(" "),g=R.apply(this,[" ",n])[0];if(h=-1===n.lineIndent?p[0].length+2:n.lineIndent||0){var m=Array(h).join(" "),w=[];p.map(function(t){1<(t=t.split(/\s*\n/)).length?w=w.concat(t.map(function(t,e){return(e&&t.length?"\n":"")+t})):w.push(t[0]);}), p=w, h=D.apply(this,[m,n]);}for(o=0, a=p.length;o<a;o++){var y=0;if(r=p[o], h&&"\n"==r[0]&&(r=r.substr(1), y=1), i=R.apply(this,[r,n]), e<u+f+(d=j(i))||y){if(e<d){for(s=M.apply(this,[r,i,e-(u+f),e]), c.push(s.shift()), c=[s.pop()];s.length;)l.push([s.shift()]);d=j(i.slice(r.length-(c[0]?c[0].length:0)));}else c=[r];l.push(c), u=d+h, f=g;}else c.push(r), u+=f+d, f=g;}if(h)var v=function(t,e){return(e?m:"")+t.join(" ")};else v=function(t){return t.join(" ")};return l.map(v)}, B.splitTextToSize=function(t,e,n){var r,i=(n=n||{}).fontSize||this.internal.getFontSize(),o=function(t){var e={0:1},n={};if(t.widths&&t.kerning)return{widths:t.widths,kerning:t.kerning};var r=this.internal.getFont(t.fontName,t.fontStyle),i="Unicode";return r.metadata[i]?{widths:r.metadata[i].widths||e,kerning:r.metadata[i].kerning||n}:{font:r.metadata,fontSize:this.internal.getFontSize(),charSpace:this.internal.getCharSpace()}}.call(this,n);r=Array.isArray(t)?t:t.split(/\r?\n/);var a=1*this.internal.scaleFactor*e/i;o.textIndent=n.textIndent?1*n.textIndent*this.internal.scaleFactor/i:0, o.lineIndent=n.lineIndent;var s,h,c=[];for(s=0, h=r.length;s<h;s++)c=c.concat(U.apply(this,[r[s],a,o]));return c}, N=$.API, L={codePages:["WinAnsiEncoding"],WinAnsiEncoding:(z=function(t){for(var e="klmnopqrstuvwxyz",n={},r=0;r<e.length;r++)n[e[r]]="0123456789abcdef"[r];var i,o,a,s,h,c={},l=1,u=c,f=[],d="",p="",g=t.length-1;for(r=1;r!=g;)h=t[r], r+=1, "'"==h?o?(s=o.join(""), o=i):o=[]:o?o.push(h):"{"==h?(f.push([u,s]), u={}, s=i):"}"==h?((a=f.pop())[0][a[1]]=u, s=i, u=a[0]):"-"==h?l=-1:s===i?n.hasOwnProperty(h)?(d+=n[h], s=parseInt(d,16)*l, l=1, d=""):d+=h:n.hasOwnProperty(h)?(p+=n[h], u[s]=parseInt(p,16)*l, l=1, s=i, p=""):p+=h;return c})("{19m8n201n9q201o9r201s9l201t9m201u8m201w9n201x9o201y8o202k8q202l8r202m9p202q8p20aw8k203k8t203t8v203u9v2cq8s212m9t15m8w15n9w2dw9s16k8u16l9u17s9z17x8y17y9y}")}, H={Unicode:{Courier:L,"Courier-Bold":L,"Courier-BoldOblique":L,"Courier-Oblique":L,Helvetica:L,"Helvetica-Bold":L,"Helvetica-BoldOblique":L,"Helvetica-Oblique":L,"Times-Roman":L,"Times-Bold":L,"Times-BoldItalic":L,"Times-Italic":L} 95/** 96 Resources: 97 Font metrics data is reprocessed derivative of contents of 98 "Font Metrics for PDF Core 14 Fonts" package, which exhibits the following copyright and license: 99 100 Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. 101
102 This file and the 14 PostScript(R) AFM files it accompanies may be used, 103 copied, and distributed for any purpose and without charge, with or without 104 modification, provided that all copyright notices are retained; that the AFM 105 files are not distributed without this file; that all modifications to this 106 file or any of the AFM files are prominently noted in the modified file(s); 107 and that this paragraph is not modified. Adobe Systems has no responsibility 108 or obligation to support the use of the AFM files. 109 110 */}, W={Unicode:{"Courier-Oblique":z("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),"Times-BoldItalic":z("{'widths'{k3o2q4ycx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2r202m2n2n3m2o3m2p5n202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5n4l4m4m4m4n4m4o4s4p4m4q4m4r4s4s4y4t2r4u3m4v4m4w3x4x5t4y4s4z4s5k3x5l4s5m4m5n3r5o3x5p4s5q4m5r5t5s4m5t3x5u3x5v2l5w1w5x2l5y3t5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q2l6r3m6s3r6t1w6u1w6v3m6w1w6x4y6y3r6z3m7k3m7l3m7m2r7n2r7o1w7p3r7q2w7r4m7s3m7t2w7u2r7v2n7w1q7x2n7y3t202l3mcl4mal2ram3man3mao3map3mar3mas2lat4uau1uav3maw3way4uaz2lbk2sbl3t'fof'6obo2lbp3tbq3mbr1tbs2lbu1ybv3mbz3mck4m202k3mcm4mcn4mco4mcp4mcq5ycr4mcs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz2w203k6o212m6o2dw2l2cq2l3t3m3u2l17s3x19m3m}'kerning'{cl{4qu5kt5qt5rs17ss5ts}201s{201ss}201t{cks4lscmscnscoscpscls2wu2yu201ts}201x{2wu2yu}2k{201ts}2w{4qx5kx5ou5qx5rs17su5tu}2x{17su5tu5ou}2y{4qx5kx5ou5qx5rs17ss5ts}'fof'-6ofn{17sw5tw5ou5qw5rs}7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qs}3v{17su5tu5os5qs}7p{17su5tu}ck{4qu5kt5qt5rs17ss5ts}4l{4qu5kt5qt5rs17ss5ts}cm{4qu5kt5qt5rs17ss5ts}cn{4qu5kt5qt5rs17ss5ts}co{4qu5kt5qt5rs17ss5ts}cp{4qu5kt5qt5rs17ss5ts}6l{4qu5ou5qw5rt17su5tu}5q{ckuclucmucnucoucpu4lu}5r{ckuclucmucnucoucpu4lu}7q{cksclscmscnscoscps4ls}6p{4qu5ou5qw5rt17sw5tw}ek{4qu5ou5qw5rt17su5tu}el{4qu5ou5qw5rt17su5tu}em{4qu5ou5qw5rt17su5tu}en{4qu5ou5qw5rt17su5tu}eo{4qu5ou5qw5rt17su5tu}ep{4qu5ou5qw5rt17su5tu}es{17ss5ts5qs4qu}et{4qu5ou5qw5rt17sw5tw}eu{4qu5ou5qw5rt17ss5ts}ev{17ss5ts5qs4qu}6z{17sw5tw5ou5qw5rs}fm{17sw5tw5ou5qw5rs}7n{201ts}fo{17sw5tw5ou5qw5rs}fp{17sw5tw5ou5qw5rs}fq{17sw5tw5ou5qw5rs}7r{cksclscmscnscoscps4ls}fs{17sw5tw5ou5qw5rs}ft{17su5tu}fu{17su5tu}fv{17su5tu}fw{17su5tu}fz{cksclscmscnscoscps4ls}}}"),"Helvetica-Bold":z("{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4y
110dn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}"),Courier:z("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),"Courier-BoldOblique":z("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),"Times-Bold":z("{'widths'{k3q2q5ncx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2l202m2n2n3m2o3m2p6o202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5x4l4s4m4m4n4s4o4s4p4m4q3x4r4y4s4y4t2r4u3m4v4y4w4m4x5y4y4s4z4y5k3x5l4y5m4s5n3r5o4m5p4s5q4s5r6o5s4s5t4s5u4m5v2l5w1w5x2l5y3u5z3m6k2l6l3m6m3r6n2w6o3r6p2w6q2l6r3m6s3r6t1w6u2l6v3r6w1w6x5n6y3r6z3m7k3r7l3r7m2w7n2r7o2l7p3r7q3m7r4s7s3m7t3m7u2w7v2r7w1q7x2r7y3o202l3mcl4sal2lam3man3mao3map3mar3mas2lat4uau1yav3maw3tay4uaz2lbk2sbl3t'fof'6obo2lbp3rbr1tbs2lbu2lbv3mbz3mck4s202k3mcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3rek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3m3u2l17s4s19m3m}'kerning'{cl{4qt5ks5ot5qy5rw17sv5tv}201t{cks4lscmscnscoscpscls4wv}2k{201ts}2w{4qu5ku7mu5os5qx5ru17su5tu}2x{17su5tu5ou5qs}2y{4qv5kv7mu5ot5qz5ru17su5tu}'fof'-6o7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qu}3v{17su5tu5os5qu}fu{17su5tu5ou5qu}7p{17su5tu5ou5qu}ck{4qt5ks5ot5qy5rw17sv5tv}4l{4qt5ks5ot5qy5rw17sv5tv}cm{4qt5ks5ot5qy5rw17sv5tv}cn{4qt5ks5ot5qy5rw17sv5tv}co{4qt5ks5ot5qy5rw17sv5tv}cp{4qt5ks5ot5qy5rw17sv5tv}6l{17st5tt5ou5qu}17s{ckuclucmucnucoucpu4lu4wu}5o{ckuclucmucnucoucpu4lu4wu}5q{ckzclzcmzcnzcozcpz4lz4wu}5r{ckxclxcmxcnxcoxcpx4lx4wu}5t{ckuclucmucnucoucpu4lu4wu}7q{ckuclucmucnucoucpu4lu}6p{17sw5tw5ou5qu}ek{17st5tt5qu}el{17st5tt5ou5qu}em{17st5tt5qu}en{17st5tt5qu}eo{17st5tt5qu}ep{17st5tt5ou5qu}es{17ss5ts5qu}et{17sw5tw5ou5qu}eu{17sw5tw5ou5qu}ev{17ss5ts5qu}6z{17sw5tw5ou5qu5rs}fm{17sw5tw5ou5qu5rs}fn{17sw5tw5ou5qu5rs}fo{17sw5tw5ou5qu5rs}fp{17sw5tw5ou5qu5rs}fq{17sw5tw5ou5qu5rs}7r{cktcltcmtcntcotcpt4lt5os}fs{17sw5tw5ou5qu5rs}ft{17su5tu5ou5qu}7m{5os}fv{17su5tu5ou5qu}fw{17su5tu5ou5qu}fz{cksclscmscnscoscps4ls}}}"),Symbol:z("{'widths'{k3uaw4r19m3m2k1t2l2l202m2y2n3m2p5n202q6o3k3m2s2l2t2l2v3r2w1t3m3m2y1t2z1wbk2sbl3r'fof'6o3n3m3o3m3p3m3q3m3r3m3s3m3t3m3u1w3v1w3w3r3x3r3y3r3z2wbp3t3l3m5v2l5x2l5z3m2q4yfr3r7v3k7w1o7x3k}'kerning'{'fof'-6o}}"),Helvetica:z("{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4y
110dn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}"),"Helvetica-BoldOblique":z("{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4y
110dn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}"),ZapfDingbats:z("{'widths'{k4u2k1w'fof'6o}'kerning'{'fof'-6o}}"),"Courier-Bold":z("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),"Times-Italic":z("{'widths'{k3n2q4ycx2l201n3m201o5t201s2l201t2l201u2l201w3r201x3r201y3r2k1t2l2l202m2n2n3m2o3m2p5n202q5t2r1p2s2l2t2l2u3m2v4n2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w4n3x4n3y4n3z3m4k5w4l3x4m3x4n4m4o4s4p3x4q3x4r4s4s4s4t2l4u2w4v4m4w3r4x5n4y4m4z4s5k3x5l4s5m3x5n3m5o3r5p4s5q3x5r5n5s3x5t3r5u3r5v2r5w1w5x2r5y2u5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q1w6r3m6s3m6t1w6u1w6v2w6w1w6x4s6y3m6z3m7k3m7l3m7m2r7n2r7o1w7p3m7q2w7r4m7s2w7t2w7u2r7v2s7w1v7x2s7y3q202l3mcl3xal2ram3man3mao3map3mar3mas2lat4wau1vav3maw4nay4waz2lbk2sbl4n'fof'6obo2lbp3mbq3obr1tbs2lbu1zbv3mbz3mck3x202k3mcm3xcn3xco3xcp3xcq5tcr4mcs3xct3xcu3xcv3xcw2l2m2ucy2lcz2ldl4mdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr4nfs3mft3mfu3mfv3mfw3mfz2w203k6o212m6m2dw2l2cq2l3t3m3u2l17s3r19m3m}'kerning'{cl{5kt4qw}201s{201sw}201t{201tw2wy2yy6q-t}201x{2wy2yy}2k{201tw}2w{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}2x{17ss5ts5os}2y{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}'fof'-6o6t{17ss5ts5qs}7t{5os}3v{5qs}7p{17su5tu5qs}ck{5kt4qw}4l{5kt4qw}cm{5kt4qw}cn{5kt4qw}co{5kt4qw}cp{5kt4qw}6l{4qs5ks5ou5qw5ru17su5tu}17s{2ks}5q{ckvclvcmvcnvcovcpv4lv}5r{ckuclucmucnucoucpu4lu}5t{2ks}6p{4qs5ks5ou5qw5ru17su5tu}ek{4qs5ks5ou5qw5ru17su5tu}el{4qs5ks5ou5qw5ru17su5tu}em{4qs5ks5ou5qw5ru17su5tu}en{4qs5ks5ou5qw5ru17su5tu}eo{4qs5ks5ou5qw5ru17su5tu}ep{4qs5ks5ou5qw5ru17su5tu}es{5ks5qs4qs}et{4qs5ks5ou5qw5ru17su5tu}eu{4qs5ks5qw5ru17su5tu}ev{5ks5qs4qs}ex{17ss5ts5qs}6z{4qv5ks5ou5qw5ru17su5tu}fm{4qv5ks5ou5qw5ru17su5tu}fn{4qv5ks5ou5qw5ru17su5tu}fo{4qv5ks5ou5qw5ru17su5tu}fp{4qv5ks5ou5qw5ru17su5tu}fq{4qv5ks5ou5qw5ru17su5tu}7r{5os}fs{4qv5ks5ou5qw5ru17su5tu}ft{17su5tu5qs}fu{17su5tu5qs}
110fv{17su5tu5qs}fw{17su5tu5qs}}}"),"Times-Roman":z("{'widths'{k3n2q4ycx2l201n3m201o6o201s2l201t2l201u2l201w2w201x2w201y2w2k1t2l2l202m2n2n3m2o3m2p5n202q6o2r1m2s2l2t2l2u3m2v3s2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v1w3w3s3x3s3y3s3z2w4k5w4l4s4m4m4n4m4o4s4p3x4q3r4r4s4s4s4t2l4u2r4v4s4w3x4x5t4y4s4z4s5k3r5l4s5m4m5n3r5o3x5p4s5q4s5r5y5s4s5t4s5u3x5v2l5w1w5x2l5y2z5z3m6k2l6l2w6m3m6n2w6o3m6p2w6q2l6r3m6s3m6t1w6u1w6v3m6w1w6x4y6y3m6z3m7k3m7l3m7m2l7n2r7o1w7p3m7q3m7r4s7s3m7t3m7u2w7v3k7w1o7x3k7y3q202l3mcl4sal2lam3man3mao3map3mar3mas2lat4wau1vav3maw3say4waz2lbk2sbl3s'fof'6obo2lbp3mbq2xbr1tbs2lbu1zbv3mbz2wck4s202k3mcm4scn4sco4scp4scq5tcr4mcs3xct3xcu3xcv3xcw2l2m2tcy2lcz2ldl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek2wel2wem2wen2weo2wep2weq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr3sfs3mft3mfu3mfv3mfw3mfz3m203k6o212m6m2dw2l2cq2l3t3m3u1w17s4s19m3m}'kerning'{cl{4qs5ku17sw5ou5qy5rw201ss5tw201ws}201s{201ss}201t{ckw4lwcmwcnwcowcpwclw4wu201ts}2k{201ts}2w{4qs5kw5os5qx5ru17sx5tx}2x{17sw5tw5ou5qu}2y{4qs5kw5os5qx5ru17sx5tx}'fof'-6o7t{ckuclucmucnucoucpu4lu5os5rs}3u{17su5tu5qs}3v{17su5tu5qs}7p{17sw5tw5qs}ck{4qs5ku17sw5ou5qy5rw201ss5tw201ws}4l{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cm{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cn{4qs5ku17sw5ou5qy5rw201ss5tw201ws}co{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cp{4qs5ku17sw5ou5qy5rw201ss5tw201ws}6l{17su5tu5os5qw5rs}17s{2ktclvcmvcnvcovcpv4lv4wuckv}5o{ckwclwcmwcnwcowcpw4lw4wu}5q{ckyclycmycnycoycpy4ly4wu5ms}5r{cktcltcmtcntcotcpt4lt4ws}5t{2ktclvcmvcnvcovcpv4lv4wuckv}7q{cksclscmscnscoscps4ls}6p{17su5tu5qw5rs}ek{5qs5rs}el{17su5tu5os5qw5rs}em{17su5tu5os5qs5rs}en{17su5qs5rs}eo{5qs5rs}ep{17su5tu5os5qw5rs}es{5qs}et{17su5tu5qw5rs}eu{17su5tu5qs5rs}ev{5qs}6z{17sv5tv5os5qx5rs}fm{5os5qt5rs}fn{17sv5tv5os5qx5rs}fo{17sv5tv5os5qx5rs}fp{5os5qt5rs}fq{5os5qt5rs}7r{ckuclucmucnucoucpu4lu5os}fs{17sv5tv5os5qx5rs}ft{17ss5ts5qs}fu{17sw5tw5qs}fv{17sw5tw5qs}fw{17ss5ts5qs}fz{ckuclucmucnucoucpu4lu5os5rs}}}"),"Helvetica-Oblique":z("{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4y
110dn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}")}}, N.events.push(["addFont",function(t){var e,n,r,i="Unicode";(e=W[i][t.postScriptName])&&((n=t.metadata[i]?t.metadata[i]:t.metadata[i]={}).widths=e.widths, n.kerning=e.kerning), (r=H[i][t.postScriptName])&&((n=t.metadata[i]?t.metadata[i]:t.metadata[i]={}).encoding=r).codePages&&r.codePages.length&&(t.encoding=r.codePages[0]);}]), G=$, "undefined"!=typeof self&&self||"undefined"!=typeof commonjsGlobal&&commonjsGlobal||"undefined"!=typeof window&&window||Function("return this")(), G.API.events.push(["addFont",function(t){G.API.existsFileInVFS(t.postScriptName)?(t.metadata=G.API.TTFFont.open(t.postScriptName,t.fontName,G.API.getFileFromVFS(t.postScriptName),t.encoding), t.metadata.Unicode=t.metadata.Unicode||{encoding:{},kerning:{},widths:[]}):14<t.id.slice(1)&&console.error("Font does not exist in FileInVFS, import fonts or remove declaration doc.addFont('"+t.postScriptName+"').");}]), ( 111/** @preserve 112 jsPDF SVG plugin 113 Copyright (c) 2012 Willow Systems Corporation, willow-systems.com 114 */ 115V=$.API).addSvg=function(t,e,n,r,i){if(void 0===e||void 0===n)throw new Error("addSVG needs values for 'x' and 'y'");function o(t){for(var e=parseFloat(t[1]),n=parseFloat(t[2]),r=[],i=3,o=t.length;i<o;)"c"===t[i]?(r.push([parseFloat(t[i+1]),parseFloat(t[i+2]),parseFloat(t[i+3]),parseFloat(t[i+4]),parseFloat(t[i+5]),parseFloat(t[i+6])]), i+=7):"l"===t[i]?(r.push([parseFloat(t[i+1]),parseFloat(t[i+2])]), i+=3):i+=1;return[e,n,r]}var a,s,h,c,l,u,f,d,p=(c=document, d=c.createElement("iframe"), l=".jsPDF_sillysvg_iframe {display:none;position:absolute;}", (f=(u=c).createElement("style")).type="text/css", f.styleSheet?f.styleSheet.cssText=l:f.appendChild(u.createTextNode(l)), u.getElementsByTagName("head")[0].appendChild(f), d.name="childframe", d.setAttribute("width",0), d.setAttribute("height",0), d.setAttribute("frameborder","0"), d.setAttribute("scrolling","no"), d.setAttribute("seamless","seamless"), d.setAttribute("class","jsPDF_sillysvg_iframe"), c.body.appendChild(d), d),g=(a=t, (h=((s=p).contentWindow||s.contentDocument).document).write(a), h.close(), h.getElementsByTagName("svg")[0]),m=[1,1],w=parseFloat(g.getAttribute("width")),y=parseFloat(g.getAttribute("height"));w&&y&&(r&&i?m=[r/w,i/y]:r?m=[r/w,r/w]:i&&(m=[i/y,i/y]));var v,b,x,S,k=g.childNodes;for(v=0, b=k.length;v<b;v++)(x=k[v]).tagName&&"PATH"===x.tagName.toUpperCase()&&((S=o(x.getAttribute("d").split(" ")))[0]=S[0]*m[0]+e, S[1]=S[1]*m[1]+n, this.lines.call(this,S[2],S[0],S[1],m));return this}, V.addSVG=V.addSvg, V.addSvgAsImage=function(t,e,n,r,i,o,a,s){if
115(isNaN(e)||isNaN(n))throw console.error("jsPDF.addSvgAsImage: Invalid coordinates",arguments), new Error("Invalid coordinates passed to jsPDF.addSvgAsImage");if(isNaN(r)||isNaN(i))throw console.error("jsPDF.addSvgAsImage: Invalid measurements",arguments), new Error("Invalid measurements (width and/or height) passed to jsPDF.addSvgAsImage");var h=document.createElement("canvas");h.width=r, h.height=i;var c=h.getContext("2d");return c.fillStyle="#fff", c.fillRect(0,0,h.width,h.height), canvg(h,t,{ignoreMouse:!0,ignoreAnimation:!0,ignoreDimensions:!0,ignoreClear:!0}), this.addImage(h.toDataURL("image/jpeg",1),e,n,r,i,a,s), this}, $.API.putTotalPages=function(t){for(var e=new RegExp(t,"g"),n=1;n<=this.internal.getNumberOfPages();n++)for(var r=0;r<this.internal.pages[n].length;r++)this.internal.pages[n][r]=this.internal.pages[n][r].replace(e,this.internal.getNumberOfPages());return this}, $.API.viewerPreferences=function(t,e){var n;t=t||{}, e=e||!1;var r,i,o={HideToolbar:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},HideMenubar:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},HideWindowUI:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},FitWindow:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},CenterWindow:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},DisplayDocTitle:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.4},NonFullScreenPageMode:{defaultValue:"UseNone",value:"UseNone",type:"name",explicitSet:!1,valueSet:["UseNone","UseOutlines","UseThumbs","UseOC"],pdfVersion:1.3},Direction:{defaultValue:"L2R",value:"L2R",type:"name",explicitSet:!1,valueSet:["L2R","R2L"],pdfVersion:1.3},ViewArea:{defaultValue:"CropBox",value:"CropBox",type:"name",explicitSet:!1,valueSet:["MediaBox","CropBox","TrimBox","BleedBox","ArtBox"],pdfVersion:1.4},ViewClip:{defaultValue:"CropBox",value:"CropBox",type:"name",explicitSet:!1,valueSet:["MediaBox","CropBox","TrimBox","BleedBox","ArtBox"],pdfVersion:1.4},PrintArea:{defaultValue:"CropBox",value:"CropBox",type:"name",explicitSet:!1,valueSet:["MediaBox","CropBox","TrimBox","BleedBox","ArtBox"],pdfVersion:1.4},PrintClip:{defaultValue:"CropBox",value:"CropBox",type:"name",explicitSet:!1,valueSet:["MediaBox","CropBox","TrimBox","BleedBox","ArtBox"],pdfVersion:1.4},PrintScaling:{defaultValue:"AppDefault",value:"AppDefault",type:"name",explicitSet:!1,valueSet:["AppDefault","None"],pdfVersion:1.6},Duplex:{defaultValue:"",value:"none",type:"name",explicitSet:!1,valueSet:["Simplex","DuplexFlipShortEdge","DuplexFlipLongEdge","none"],pdfVersion:1.7},PickTrayByPDFSize:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.7},PrintPageRange:{defaultValue:"",value:"",type:"array",explicitSet:!1,valueSet:null,pdfVersion:1.7},NumCopies:{defaultValue:1,value:1,type:"integer",explicitSet:!1,valueSet:null,pdfVersion:1.7}},a=Object.keys(o),s=[],h=0,c=0,l=0,u=!0;function f(t,e){var n,r=!1;for(n=0;n<t.length;n+=1)t[n]===e&&(r=!0);return r}if(void 0===this.internal.viewerpreferences&&(this.internal.viewerpreferences={}, this.internal.viewerpreferences.configuration=JSON.parse(JSON.stringify(o)), this.internal.viewerpreferences.isSubscribed=!1), n=this.internal.viewerpreferences.configuration, "reset"===t||!0===e){var d=a.length;for(l=0;l<d;l+=1)n[a[l]].value=n[a[l]].defaultValue, n[a[l]].explicitSet=!1;}if("object"===(void 0===t?"undefined":vt(t)))for(r in t)if(i=t[r], f(a,r)&&void 0!==i){if("boolean"===n[r].type&&"boolean"==typeof i)n[r].value=i;else if("name"===n[r].type&&f(n[r].valueSet,i))n[r].value=i;else if("integer"===n[r].type&&Number.isInteger(i))n[r].value=i;else if("array"===n[r].type){for(h=0;h<i.length;h+=1)if(u=!0, 1===i[h].length&&"number"==typeof i[h][0])s.push(String(i[h]));else if(1<i[h].length){for(c=0;c<i[h].length;c+=1)"number"!=typeof i[h][c]&&(u=!1);!0===u&&s.push(String(i[h].join("-")));}n[r].value=String(s);}else n[r].value=n[r].defaultValue;n[r].explicitSet=!0;}return!1===this.internal.viewerpreferences.isSubscribed&&(this.internal.events.subscribe("putCatalog",function(){var t,e=[];for(t in n)!0===n[t].explicitSet&&("name"===n[t].type?e.push("/"+t+" /"+n[t].value):e.push("/"+t+" "+n[t].value));0!==e.length&&this.internal.write("/ViewerPreferences\n<<\n"+e.join("\n")+"\n>>");}), this.internal.viewerpreferences.isSubscribed=!0), this.internal.viewerpreferences.configuration=n, this}, Y=$.API, K=J=X="", Y.addMetadata=function(t,e){return J=e||"http://jspdf.default.namespaceuri/", X=t, this.internal.events.subscribe("postPutResources",function(){if(X){var t='<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><rdf:Description rdf:about="" xmlns:jspdf="'+J+'"><jspdf:metadata>',e=unescape(encodeURIComponent('<x:xmpmeta xmlns:x="adobe:ns:meta/">')),n=unescape(encodeURIComponent(t)),r=unescape(encodeURIComponent(X)),i=unescape(encodeURIComponent("</jspdf:metadata></rdf:Description></rdf:RDF>")),o=unescape(encodeURIComponent("</x:xmpmeta>")),a=n.length+r.length+i.length+e.length+o.length;K=this.internal.newObject(), this.internal.write("<< /Type /Metadata /Subtype /XML /Length "+a+" >>"), this.internal.write("stream"), this.internal.write(e+n+r+i+o), this.internal.write("endstream"), this.internal.write("endobj");}else K="";}), this.internal.events.subscribe("putCatalog",function(){K&&this.internal.write("/Metadata "+K+" 0 R");}), this}, function(l,t){var e=l.API,m=[0];e.events.push(["putFont",function(t){!function(t,e,n){if(t.metadata instanceof l.API.TTFFont&&"Identity-H"===t.encoding){for(var r=t.metadata.Unicode.widths,i=t.metadata.subset.encode(m),o="",a=0;a<i.length;a++)o+=String.fromCharCode(i[a]);var s=n();e("<<"), e("/Length "+o.length), e("/Length1 "+o.length), e(">>"), e("stream"), e(o), e("endstream"), e("endobj");var h=n();e("<<"), e("/Type /FontDescriptor"), e("/FontName /"+t.fontName), e("/FontFile2 "+s+" 0 R"), e("/FontBBox "+l.API.PDFObject.convert(t.metadata.bbox)), e("/Flags "+t.metadata.flags), e("/StemV "+t.metadata.stemV), e("/ItalicAngle "+t.metadata.italicAngle), e("/Asce
115nt "+t.metadata.ascender), e("/Descent "+t.metadata.decender), e("/CapHeight "+t.metadata.capHeight), e(">>"), e("endobj");var c=n();e("<<"), e("/Type /Font"), e("/BaseFont /"+t.fontName), e("/FontDescriptor "+h+" 0 R"), e("/W "+l.API.PDFObject.convert(r)), e("/CIDToGIDMap /Identity"), e("/DW 1000"), e("/Subtype /CIDFontType2"), e("/CIDSystemInfo"), e("<<"), e("/Supplement 0"), e("/Registry (Adobe)"), e("/Ordering ("+t.encoding+")"), e(">>"), e(">>"), e("endobj"), t.objectNumber=n(), e("<<"), e("/Type /Font"), e("/Subtype /Type0"), e("/BaseFont /"+t.fontName), e("/Encoding /"+t.encoding), e("/DescendantFonts ["+c+" 0 R]"), e(">>"), e("endobj"), t.isAlreadyPutted=!0;}}(t.font,t.out,t.newObject);}]);e.events.push(["putFont",function(t){!function(t,e,n){if(t.metadata instanceof l.API.TTFFont&&"WinAnsiEncoding"===t.encoding){t.metadata.Unicode.widths;for(var r=t.metadata.rawData,i="",o=0;o<r.length;o++)i+=String.fromCharCode(r[o]);var a=n();e("<<"), e("/Length "+i.length), e("/Length1 "+i.length), e(">>"), e("stream"), e(i), e("endstream"), e("endobj");var s=n();for(e("<<"), e("/Descent "+t.metadata.decender), e("/CapHeight "+t.metadata.capHeight), e("/StemV "+t.metadata.stemV), e("/Type /FontDescriptor"), e("/FontFile2 "+a+" 0 R"), e("/Flags 96"), e("/FontBBox "+l.API.PDFObject.convert(t.metadata.bbox)), e("/FontName /"+t.fontName), e("/ItalicAngle "+t.metadata.italicAngle), e("/Ascent "+t.metadata.ascender), e(">>"), e("endobj"), t.objectNumber=n(), o=0;o<t.metadata.hmtx.widths.length;o++)t.metadata.hmtx.widths[o]=parseInt(t.metadata.hmtx.widths[o]*(1e3/t.metadata.head.unitsPerEm));e("<</Subtype/TrueType/Type/Font/BaseFont/"+t.fontName+"/FontDescriptor "+s+" 0 R/Encoding/"+t.encoding+" /FirstChar 29 /LastChar 255 /Widths "+l.API.PDFObject.convert(t.metadata.hmtx.widths)+">>"), e("endobj"), t.isAlreadyPutted=!0;}}(t.font,t.out,t.newObject);}]);var c=function(t){var e,n,r=t.text||"",i=t.x,o=t.y,a=t.options||{},s=t.mutex||{},h=s.pdfEscape,c=s.activeFontKey,l=s.fonts,u=(s.activeFontSize, ""),f=0,d="",p=l[n=c].encoding;if("Identity-H"!==l[n].encoding)return{text:r,x:i,y:o,options:a,mutex:s};for(d=r, n=c, "[object Array]"===Object.prototype.toString.call(r)&&(d=r[0]), f=0;f<d.length;f+=1)l[n].metadata.hasOwnProperty("cmap")&&(e=l[n].metadata.cmap.unicode.codeMap[d[f].charCodeAt(0)]), e?u+=d[f]:d[f].charCodeAt(0)<256&&l[n].metadata.hasOwnProperty("Unicode")?u+=d[f]:u+="";var g="";return parseInt(n.slice(1))<14||"WinAnsiEncoding"===p?g=function(t){for(var e="",n=0;n<t.length;n++)e+=""+t.charCodeAt(n).toString(16);return e}(h(u,n)):"Identity-H"===p&&(g=function(t,e){for(var n,r=e.metadata.Unicode.widths,i=["","0","00","000","0000"],o=[""],a=0,s=t.length;a<s;++a){if(n=e.metadata.characterToGlyph(t.charCodeAt(a)), m.push(n), -1==r.indexOf(n)&&(r.push(n), r.push([parseInt(e.metadata.widthOfGlyph(n),10)])), "0"==n)return o.join("");n=n.toString(16), o.push(i[4-n.length],n);}return o.join("")}(u,l[n])), s.isHex=!0, {text:g,x:i,y:o,options:a,mutex:s}};e.events.push(["postProcessText",function(t){var e=t.text||"",n=t.x,r=t.y,i=t.options,o=t.mutex,a=(i.lang, []),s={text:e,x:n,y:r,options:i,mutex:o};if("[object Array]"===Object.prototype.toString.call(e)){var h=0;for(h=0;h<e.length;h+=1)"[object Array]"===Object.prototype.toString.call(e[h])&&3===e[h].length?a.push([c(Object.assign({},s,{text:e[h][0]})).text,e[h][1],e[h][2]]):a.push(c(Object.assign({},s,{text:e[h]})).text);t.text=a;}else t.text=c(Object.assign({},s,{text:e})).text;}]);}($,"undefined"!=typeof self&&self||"undefined"!=typeof commonjsGlobal&&commonjsGlobal||"undefined"!=typeof window&&window||Function("return this")()), Q=$.API, Z={}, Q.existsFileInVFS=function(t){return Z.hasOwnProperty(t)}, Q.addFileToVFS=function(t,e){return Z[t]=e, this}, Q.getFileFromVFS=function(t){return Z.hasOwnProperty(t)?Z[t]:null}, function(t){if(t.URL=t.URL||t.webkitURL, t.Blob&&t.URL)try{return new Blob}catch(t){}var s=t.BlobBuilder||t.WebKitBlobBuilder||t.MozBlobBuilder||function(t){var s=function(t){return Object.prototype.toString.call(t).match(/^\[object\s(.*)\]$/)[1]},e=function(){this.data=[];},h=function(t,e,n){this.data=t, this.size=t.length, this.type=e, this.encoding=n;},n=e.prototype,r=h.prototype,c=t.FileReaderSync,l=function(t){this.co
115de=this[this.name=t];},i="NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR".split(" "),o=i.length,a=t.URL||t.webkitURL||t,u=a.createObjectURL,f=a.revokeObjectURL,d=a,p=t.btoa,g=t.atob,m=t.ArrayBuffer,w=t.Uint8Array,y=/^[\w-]+:\/*\[?[\w\.:-]+\]?(?::[0-9]+)?/;for(h.fake=r.fake=!0;o--;)l.prototype[i[o]]=o+1;return a.createObjectURL||(d=t.URL=function(t){var e,n=document.createElementNS("http://www.w3.org/1999/xhtml","a");return n.href=t, "origin"in n||("data:"===n.protocol.toLowerCase()?n.origin=null:(e=t.match(y), n.origin=e&&e[1])), n}), d.createObjectURL=function(t){var e,n=t.type;return null===n&&(n="application/octet-stream"), t instanceof h?(e="data:"+n, "base64"===t.encoding?e+";base64,"+t.data:"URI"===t.encoding?e+","+decodeURIComponent(t.data):p?e+";base64,"+p(t.data):e+","+encodeURIComponent(t.data)):u?u.call(a,t):void 0}, d.revokeObjectURL=function(t){"data:"!==t.substring(0,5)&&f&&f.call(a,t);}, n.append=function(t){var e=this.data;if(w&&(t instanceof m||t instanceof w)){for(var n="",r=new w(t),i=0,o=r.length;i<o;i++)n+=String.fromCharCode(r[i]);e.push(n);}else if("Blob"===s(t)||"File"===s(t)){if(!c)throw new l("NOT_READABLE_ERR");var a=new c;e.push(a.readAsBinaryString(t));}else t instanceof h?"base64"===t.encoding&&g?e.push(g(t.data)):"URI"===t.encoding?e.push(decodeURIComponent(t.data)):"raw"===t.encoding&&e.push(t.data):("string"!=typeof t&&(t+=""), e.push(unescape(encodeURIComponent(t))));}, n.getBlob=function(t){return arguments.length||(t=null), new h(this.data.join(""),t,"raw")}, n.toString=function(){return"[object BlobBuilder]"}, r.slice=function(t,e,n){var r=arguments.length;return r<3&&(n=null), new h(this.data.slice(t,1<r?e:this.data.length),n,this.encoding)}, r.toString=function(){return"[object Blob]"}, r.close=function(){this.size=0, delete this.data;}, e}(t);t.Blob=function(t,e){var n=e&&e.type||"",r=new s;if(t)for(var i=0,o=t.length;i<o;i++)Uint8Array&&t[i]instanceof Uint8Array?r.append(t[i].buffer):r.append(t[i]);var a=r.getBlob(n);return!a.slice&&a.webkitSlice&&(a.slice=a.webkitSlice), a};var e=Object.getPrototypeOf||function(t){return t.__proto__};t.Blob.prototype=e(new t.Blob);}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||window.content||window);var tt,et,nt,rt,it,ot,at,st,ht,ct,lt,ut,ft,dt,pt,gt,bt=bt||function(s){if(!(void 0===s||"undefined"!=typeof navigator&&/MSIE [1-9]\./.test(navigator.userAgent))){var t=s.document,h=function(){return s.URL||s.webkitURL||s},c=t.createElementNS("http://www.w3.org/1999/xhtml","a"),l="download"in c,u=/constructor/i.test(s.HTMLElement)||s.safari,f=/CriOS\/[\d]+/.test(navigator.userAgent),d=function(t){(s.setImmediate||s.setTimeout)(function(){throw t},0);},p=function(t){setTimeout(function(){"string"==typeof t?h().revokeObjectURL(t):t.remove();},4e4);},g=function(t){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob([String.fromCharCode(65279),t],{type:t.type}):t},r=function(t,n,e){e||(t=g(t));var r,i=this,o="application/octet-stream"===t.type,a=function(){!function(t,e,n){for(var r=(e=[].concat(e)).length;r--;){var i=t["on"+e[r]];if("function"==typeof i)try{i.call(t,n||t);}catch(t){d(t);}}}(i,"writestart progress write writeend".split(" "));};if(i.readyState=i.INIT, l)return r=h().createObjectURL(t), void setTimeout(function(){var t,e;c.href=r, c.download=n, t=c, e=new MouseEvent("click"), t.dispatchEvent(e), a(), p(r), i.readyState=i.DONE;});!function(){if((f||o&&u)&&s.FileReader){var e=new FileReader;return e.onloadend=function(){var t=f?e.result:e.result.replace(/^data:[^;]*;/,"data:attachment/file;");s.open(t,"_blank")||(s.location.href=t), t=void 0, i.readyState=i.DONE, a();}, e.readAsDataURL(t), i.readyState=i.INIT}r||(r=h().createObjectURL(t)), o?s.location.href=r:s.open(r,"_blank")||(s.location.href=r);i.readyState=i.DONE, a(), p(r);}();},e=r.prototype;return"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(t,e,n){return e=e||t.name||"download", n||(t=g(t)), navigator.msSaveOrOpenBlob(t,e)}:(e.abort=function(){}, e.readyState=e.INIT=0, e.WRITING=1, e.DONE=2, e.error=e.onwritestart=e.onprogress=e.onwrite=e.onabort=e.onerror=e.onwriteend=null, function(t,e,n){return new r(t,e||t.name||"download",n)})}}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||window.content);function mt(x){var t=0;if(71!==x[t++]||73!==x[t++]||70!==x[t++]||56!==x[t++]||56!=(x[t++]+1&253)||97!==x[t++])throw"Invalid GIF 87a/89a header.";var S=x[t++]|x[t++]<<8,e=x[t++]|x[t++]<<8,n=x[t++],r=n>>7,i=1<<(7&n)+1;x[t++];x[t++];var o=null;r&&(o=t, t+=3*i);var a=!0,s=[],h=0,c=null,l=0,u=null;for(this.width=S, this.height=e;a&&t<x.length;)switch(x[t++]){case 33:switch(x[t++]){case 255:if(11!==x[t]||78==x[t+1]&&69==x[t+2]&&84==x[t+3]&&83==x[t+4]&&67==x[t+5]&&65==x[t+6]&&80==x[t+7]&&69==x[t+8]&&50==x[t+9]&&46==x[t+10]&&48==x[t+11]&&3==x[t+12]&&1==x[t+13]&&0==x[t+16]
115)t+=14, u=x[t++]|x[t++]<<8, t++;else for(t+=12;;){if(0===(_=x[t++]))break;t+=_;}break;case 249:if(4!==x[t++]||0!==x[t+4])throw"Invalid graphics extension block.";var f=x[t++];h=x[t++]|x[t++]<<8, c=x[t++], 0==(1&f)&&(c=null), l=f>>2&7, t++;break;case 254:for(;;){if(0===(_=x[t++]))break;t+=_;}break;default:throw"Unknown graphic control label: 0x"+x[t-1].toString(16)}break;case 44:var d=x[t++]|x[t++]<<8,p=x[t++]|x[t++]<<8,g=x[t++]|x[t++]<<8,m=x[t++]|x[t++]<<8,w=x[t++],y=w>>6&1,v=o,b=!1;if(w>>7){b=!0;v=t, t+=3*(1<<(7&w)+1);}var k=t;for(t++;;){var _;if(0===(_=x[t++]))break;t+=_;}s.push({x:d,y:p,width:g,height:m,has_local_palette:b,palette_offset:v,data_offset:k,data_length:t-k,transparent_index:c,interlaced:!!y,delay:h,disposal:l});break;case 59:a=!1;break;default:throw"Unknown gif block: 0x"+x[t-1].toString(16)}this.numFrames=function(){return s.length}, this.loopCount=function(){return u}, this.frameInfo=function(t){if(t<0||t>=s.length)throw"Frame index out of range.";return s[t]}, this.decodeAndBlitFrameBGRA=function(t,e){var n=this.frameInfo(t),r=n.width*n.height,i=new Uint8Array(r);wt(x,n.data_offset,i,r);var o=n.palette_offset,a=n.transparent_index;null===a&&(a=256);var s=n.width,h=S-s,c=s,l=4*(n.y*S+n.x),u=4*((n.y+n.height)*S+n.x),f=l,d=4*h;!0===n.interlaced&&(d+=4*(s+h)*7);for(var p=8,g=0,m=i.length;g<m;++g){var w=i[g];if(0===c&&(c=s, u<=(f+=d)&&(d=h+4*(s+h)*(p-1), f=l+(s+h)*(p<<1), p>>=1)), w===a)f+=4;else{var y=x[o+3*w],v=x[o+3*w+1],b=x[o+3*w+2];e[f++]=b, e[f++]=v, e[f++]=y, e[f++]=255;}--c;}}, this.decodeAndBlitFrameRGBA=function(t,e){var n=this.frameInfo(t),r=n.width*n.height,i=new Uint8Array(r);wt(x,n.data_offset,i,r);var o=n.palette_offset,a=n.transparent_index;null===a&&(a=256);var s=n.width,h=S-s,c=s,l=4*(n.y*S+n.x),u=4*((n.y+n.height)*S+n.x),f=l,d=4*h;!0===n.interlaced&&(d+=4*(s+h)*7);for(var p=8,g=0,m=i.length;g<m;++g){var w=i[g];if(0===c&&(c=s, u<=(f+=d)&&(d=h+4*(s+h)*(p-1), f=l+(s+h)*(p<<1), p>>=1)), w===a)f+=4;else{var y=x[o+3*w],v=x[o+3*w+1],b=x[o+3*w+2];e[f++]=y, e[f++]=v, e[f++]=b, e[f++]=255;}--c;}};}function wt(t,e,n,r){for(var i=t[e++],o=1<<i,a=o+1,s=a+1,h=i+1,c=(1<<h)-1,l=0,u=0,f=0,d=t[e++],p=new Int32Array(4096),g=null;;){for(;l<16&&0!==d;)u|=t[e++]<<l, l+=8, 1===d?d=t[e++]:--d;if(l<h)break;var m=u&c;if(u>>=h, l-=h, m!==o){if(m===a)break;for(var w=m<s?m:g,y=0,v=w;o<v;)v=p[v]>>8, ++y;var b=v;if(r<f+y+(w!==m?1:0))return void console.log("Warning, gif stream longer than expected.");n[f++]=b;var x=f+=y;for(w!==m&&(n[f++]=b), v=w;y--;)v=p[v], n[--x]=255&v, v>>=8;null!==g&&s<4096&&(p[s++]=g<<8|b, c+1<=s&&h<12&&(++h, c=c<<1|1)), g=m;}else s=a+1, c=(1<<(h=i+1))-1, g=null;}return f!==r&&console.log("Warning, gif stream shorter than expected."), n}"undefined"!='object'&&module.exports?module.exports.saveAs=bt:"undefined"!=typeof undefined&&null!==undefined&&null!==undefined.amd&&undefined("FileSaver.js",function(){return bt}), $.API.adler32cs=(ot="function"==typeof ArrayBuffer&&"function"==typeof Uint8Array, at=null, st=function(){if(!ot)return function(){return!1};try{var t={};"function"==typeof t.Buffer&&(at=t.Buffer);}catch(t){}return function(t){return t instanceof ArrayBuffer||null!==at&&t instanceof at}}(), ht=null!==at?function(t){return new at(t,"utf8").toString("binary")}:function(t){return unescape(encodeURIComponent(t))}, ct=65521, lt=function(t,e){for(var n=65535&t,r=t>>>16,i=0,o=e.length;i<o;i++)n=(n+(255&e.charCodeAt(i)))%ct, r=(r+n)%ct;return(r<<16|n)>>>0}, ut=function(t,e){for(var n=65535&t,r=t>>>16,i=0,o=e.length;i<o;i++)n=(n+e[i])%ct, r=(r+n)%ct;return(r<<16|n)>>>0}, dt=(ft={}).Adler32=(((it=(rt=function(t){if(!(this instanceof rt))throw new TypeError("Constructor cannot called be as a function.");if(!isFinite(t=null==t?1:+t))throw new Error("First arguments needs to be a finite number.");this.checksum=t>>>0;}).prototype={}).constructor=rt).from=((tt=function(t){if(!(this instanceof rt))throw new TypeError("Constructor cannot called be as a function.");if(null==t)throw new Error("First argument needs to be a string.");this.checksum=lt(1,t.toString());}).prototype=it, tt), rt.fromUtf8=((et=function(t){if(!(this instanceof rt))throw new TypeError("Constructor cannot called be as a function.");
115if(null==t)throw new Error("First argument needs to be a string.");var e=ht(t.toString());this.checksum=lt(1,e);}).prototype=it, et), ot&&(rt.fromBuffer=((nt=function(t){if(!(this instanceof rt))throw new TypeError("Constructor cannot called be as a function.");if(!st(t))throw new Error("First argument needs to be ArrayBuffer.");var e=new Uint8Array(t);return this.checksum=ut(1,e)}).prototype=it, nt)), it.update=function(t){if(null==t)throw new Error("First argument needs to be a string.");return t=t.toString(), this.checksum=lt(this.checksum,t)}, it.updateUtf8=function(t){if(null==t)throw new Error("First argument needs to be a string.");var e=ht(t.toString());return this.checksum=lt(this.checksum,e)}, ot&&(it.updateBuffer=function(t){if(!st(t))throw new Error("First argument needs to be ArrayBuffer.");var e=new Uint8Array(t);return this.checksum=ut(this.checksum,e)}), it.clone=function(){return new dt(this.checksum)}, rt), ft.from=function(t){if(null==t)throw new Error("First argument needs to be a string.");return lt(1,t.toString())}, ft.fromUtf8=function(t){if(null==t)throw new Error("First argument needs to be a string.");var e=ht(t.toString());return lt(1,e)}, ot&&(ft.fromBuffer=function(t){if(!st(t))throw new Error("First argument need to be ArrayBuffer.");var e=new Uint8Array(t);return ut(1,e)}), ft);try{exports.GifWriter=function(w,t,e,n){var y=0,r=void 0===(n=void 0===n?{}:n).loop?null:n.loop,v=void 0===n.palette?null:n.palette;if(t<=0||e<=0||65535<t||65535<e)throw"Width/Height invalid.";function b(t){var e=t.length;if(e<2||256<e||e&e-1)throw"Invalid code/color length, must be power of 2 and 2 .. 256.";return e}w[y++]=71, w[y++]=73, w[y++]=70, w[y++]=56, w[y++]=57, w[y++]=97;var i=0,o=0;if(null!==v){for(var a=b(v);a>>=1;)++i;if(a=1<<i, --i, void 0!==n.background){if(a<=(o=n.background))throw"Background index out of range.";if(0===o)throw"Background index explicitly passed as 0."}}if(w[y++]=255&t, w[y++]=t>>8&255, w[y++]=255&e, w[y++]=e>>8&255, w[y++]=(null!==v?128:0)|i, w[y++]=o, w[y++]=0, null!==v)for(var s=0,h=v.length;s<h;++s){var c=v[s];w[y++]=c>>16&255, w[y++]=c>>8&255, w[y++]=255&c;}if(null!==r){if(r<0||65535<r)throw"Loop count invalid.";w[y++]=33, w[y++]=255, w[y++]=11, w[y++]=78, w[y++]=69, w[y++]=84, w[y++]=83, w[y++]=67, w[y++]=65, w[y++]=80, w[y++]=69, w[y++]=50, w[y++]=46, w[y++]=48, w[y++]=3, w[y++]=1, w[y++]=255&r, w[y++]=r>>8&255, w[y++]=0;}var x=!1;this.addFrame=function(t,e,n,r,i,o){if(!0===x&&(--y, x=!1), o=void 0===o?{}
115:o, t<0||e<0||65535<t||65535<e)throw"x/y invalid.";if(n<=0||r<=0||65535<n||65535<r)throw"Width/Height invalid.";if(i.length<n*r)throw"Not enough pixels for the frame size.";var a=!0,s=o.palette;if(null==s&&(a=!1, s=v), null==s)throw"Must supply either a local or global palette.";for(var h=b(s),c=0;h>>=1;)++c;h=1<<c;var l=void 0===o.delay?0:o.delay,u=void 0===o.disposal?0:o.disposal;if(u<0||3<u)throw"Disposal out of range.";var f=!1,d=0;if(void 0!==o.transparent&&null!==o.transparent&&(f=!0, (d=o.transparent)<0||h<=d))throw"Transparent color index.";if((0!==u||f||0!==l)&&(w[y++]=33, w[y++]=249, w[y++]=4, w[y++]=u<<2|(!0===f?1:0), w[y++]=255&l, w[y++]=l>>8&255, w[y++]=d, w[y++]=0), w[y++]=44, w[y++]=255&t, w[y++]=t>>8&255, w[y++]=255&e, w[y++]=e>>8&255, w[y++]=255&n, w[y++]=n>>8&255, w[y++]=255&r, w[y++]=r>>8&255, w[y++]=!0===a?128|c-1:0, !0===a)for(var p=0,g=s.length;p<g;++p){var m=s[p];w[y++]=m>>16&255, w[y++]=m>>8&255, w[y++]=255&m;}y=function(e,n,t,r){e[n++]=t;var i=n++,o=1<<t,a=o-1,s=o+1,h=s+1,c=t+1,l=0,u=0;function f(t){for(;t<=l;)e[n++]=255&u, u>>=8, l-=8, n===i+256&&(e[i]=255, i=n++);}function d(t){u|=t<<l, l+=c, f(8);}var p=r[0]&a,g={};d(o);for(var m=1,w=r.length;m<w;++m){var y=r[m]&a,v=p<<8|y,b=g[v];if(void 0===b){for(u|=p<<l, l+=c;8<=l;)e[n++]=255&u, u>>=8, l-=8, n===i+256&&(e[i]=255, i=n++);4096===h?(d(o), h=s+1, c=t+1, g={}):(1<<c<=h&&++c, g[v]=h++), p=y;}else p=b;}return d(p), d(s), f(1), i+1===n?e[i]=0:(e[i]=n-i-1, e[n++]=0), n}(w,y,c<2?2:c,i);}, this.end=function(){return!1===x&&(w[y++]=59, x=!0), y};}, exports.GifReader=mt;}catch(t){} 116/* 117 Copyright (c) 2008, Adobe Systems Incorporated 118 All rights reserved. 119 120 Redistribution and use in source and binary forms, with or without 121 modification, are permitted provided that the following conditions are 122 met: 123 124 * Redistributions of source code must retain the above copyright notice, 125 this list of conditions and the following disclaimer. 126 127 * Redistributions in binary form must reproduce the above copyright 128 notice, this list of conditions and the following disclaimer in the 129 documentation and/or other materials provided with the distribution. 130 131 * Neither the name of Adobe Systems Incorporated nor the names of its 132 contributors may be used to endorse or promote products derived from 133 this software without specific prior written permission. 134 135 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 136 IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 137 THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 138 PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 139 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 140 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 141 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 142 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 143 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 144 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 145 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 146 */function yt(t){var S,k,_,A,e,u=Math.floor,I=new Array(64),C=new Array(64),T=new Array(64),F=new Array(64),w=new Array(65535),y=new Array(65535),Q=new Array(64),v=new Array(64),P=[],E=0,q=7,O=new Array(64),B=new Array(64),R=new Array(64),n=new Array(256),j=new Array(2048),b=[0,1,5,6,14,15,27,28,2,4,7,13,16,26,29,42,3,8,12,17,25,30,41,43,9,11,18,24,31,40,44,53,10,19,23,32,39,45,52,54,20,22,33,38,46,51,55,60,21,34,37,47,50,56,59,61,35,36,48,49,57,58,62,63],D=[0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0],M=[0,1,2,3,4,5,6,7,8,9,10,11],U=[0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,125],N=[1,2,3,0,4,17,5,18,33,49,65,6,19,81,97,7,34,113,20,50,129,145,161,8,35,66,177,193,21,82,209,240,36,51,98,114,130,9,10,22,23,24,25,26,37,38,39,40,41,42,52,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,225,226,227,228,229,230,231,232,233,234,241,242,243,244,245,246,247,248,249,250],z=[0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0],L=[0,1,2,3,4,5,6,7,8,9,10,11],H=[0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,119],W=[0,1,2,3,17,4,5,33,49,6,18,65,81,7,97,113,19,34,50,129,8,20,66,145,161,177,193,9,35,51,82,240,21,98,114,209,10,22,36,52,225,37,241,23,24,25,26,38,39,40,41,42,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,130,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,226,227,228,229,230,231,232,233,234,242,243,244,245,246,247,248,249,250];function r(t,e){for(var n=0,r=0,i=new Array,o=1;o<=16;o++){for(var a=1;a<=t[o];a++)i[e[r]]=[], i[e[r]][0]=n, i[e[r]][1]=o, r++, n++;n*=2;}return i}function G(t){for(var e=t[0],n=t[1]-1;0<=n;)e&1<<n&&(E|=1<<q), n--, --q<0&&(255==E?(V(255), V(0)):V(E), q=7, E=0);}function V(t){P.push(t);}function Y(t){V(t>>8&255), V(255&t);}function X(t,e,n,r,i){for(var o,a=i[0],s=i[240],h=function(t,e){var n,r,i,o,a,s,h,c,l,u,f=0;for(l=0;l<8;++l){n=t[f], r=t[f+1], i=t[f+2], o=t[f+3], a=t[f+4], s=t[f+5], h=t[f+6];var d=n+(c=t[f+7]),p=n-c,g=r+h,m=r-h,w=i+s,y=i-s,v=o+a,b=o-a,x=d+v,S=d-v,k=g+w,_=g-w;t[f]=x+k, t[f+4]=x-k;var A=.707106781*(_+S);t[f+2]=S+A, t[f+6]=S-A;var I=.382683433*((x=b+y)-(_=m+p)),C=.5411961*x+I,T=1.306562965*_+I,F=.707106781*(k=y+m),P=p+F,E=p-F;t[f+5]=E+C, t[f+3]=E-C, t[f+1]=P+T, t[f+7]=P-T, f+=8;}for(l=f=0;l<8;++l){n=t[f], r=t[f+8], i=t[f+16], o=t[f+24], a=t[f+32], s=t[f+40], h=t[f+48];var q=n+(c=t[f+56]),O=n-c,B=r+h,R=r-h,j=i+s,D=i-s,M=o+a,U=o-a,N=q+M,z=q-M,L=B+j,H=B-j;t[f]=N+L, t[f+32]=N-L;var W=.707106781*(H+z);t[f+16]=z+W, t[f+48]=z-W;var G=.382683433*((N=U+D)-(H=R+O)),V=.5411961*N+G,Y=1.306562965*H+G,X=.707106781*(L=D+R),J=O+X,K=O-X;t[f+40]=K+V, t[f+24]=K-V, t[f+8]=J+Y, t[f+56]=J-Y, f++;}for(l=0;l<64;++l)u=t[l]*e[l], Q[l]=0<u?u+.5|0:u-.5|0;return Q}(t,e),c=0;c<64;++c)v[b[c]]=h[c];var l=v[0]-n;n=v[0], 0==l?G(r[0]):(G(r[y[o=32767+l]]), G(w[o]));for(var u=63;0<u&&0==v[u];u--);if(0==u)return G(a), n;for(var f,d=1;d<=u;){for(var p=d;0==v[d]&&d<=u;++d);var g=d-p;if(16<=g){f=g>>4;
146for(var m=1;m<=f;++m)G(s);g&=15;}o=32767+v[d], G(i[(g<<4)+y[o]]), G(w[o]), d++;}return 63!=u&&G(a), n}function J(t){if(t<=0&&(t=1), 100<t&&(t=100), e!=t){(function(t){for(var e=[16,11,10,16,24,40,51,61,12,12,14,19,26,58,60,55,14,13,16,24,40,57,69,56,14,17,22,29,51,87,80,62,18,22,37,56,68,109,103,77,24,35,55,64,81,104,113,92,49,64,78,87,103,121,120,101,72,92,95,98,112,100,103,99],n=0;n<64;n++){var r=u((e[n]*t+50)/100);r<1?r=1:255<r&&(r=255), I[b[n]]=r;}for(var i=[17,18,24,47,99,99,99,99,18,21,26,66,99,99,99,99,24,26,56,99,99,99,99,99,47,66,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99],o=0;o<64;o++){var a=u((i[o]*t+50)/100);a<1?a=1:255<a&&(a=255), C[b[o]]=a;}for(var s=[1,1.387039845,1.306562965,1.175875602,1,.785694958,.5411961,.275899379],h=0,c=0;c<8;c++)for(var l=0;l<8;l++)T[h]=1/(I[b[h]]*s[c]*s[l]*8), F[h]=1/(C[b[h]]*s[c]*s[l]*8), h++;})(t<50?Math.floor(5e3/t):Math.floor(200-2*t)), e=t;}}this.encode=function(t,e){var n,r;(new Date).getTime();e&&J(e), P=new Array, E=0, q=7, Y(65496), Y(65504), Y(16), V(74), V(70), V(73), V(70), V(0), V(1), V(1), V(0), Y(1), Y(1), V(0), V(0), function(){Y(65499), Y(132), V(0);for(var t=0;t<64;t++)V(I[t]);V(1);for(var e=0;e<64;e++)V(C[e]);}(), n=t.width, r=t.height, Y(65472), Y(17), V(8), Y(r), Y(n), V(3), V(1), V(17), V(0), V(2), V(17), V(1), V(3), V(17), V(1), function(){Y(65476), Y(418), V(0);for(var t=0;t<16;t++)V(D[t+1]);for(var e=0;e<=11;e++)V(M[e]);V(16);for(var n=0;n<16;n++)V(U[n+1]);for(var r=0;r<=161;r++)V(N[r]);V(1);for(var i=0;i<16;i++)V(z[i+1]);for(var o=0;o<=11;o++)V(L[o]);V(17);for(var a=0;a<16;a++)V(H[a+1]);for(var s=0;s<=161;s++)V(W[s]);}(), Y(65498), Y(12), V(3), V(1), V(0), V(2), V(17), V(3), V(17), V(0), V(63), V(0);var i=0,o=0,a=0;E=0, q=7, this.encode.displayName="_encode_";for(var s,h,c,l,u,f,d,p,g,m=t.data,w=t.width,y=t.height,v=4*w,b=0;b<y;){for(s=0;s<v;){for(f=u=v*b+s, d=-1, g=p=0;g<64;g++)f=u+(p=g>>3)*v+(d=4*(7&g)), y<=b+p&&(f-=v*(b+1+p-y)), v<=s+d&&(f-=s+d-v+4), h=m[f++], c=m[f++], l=m[f++], O[g]=(j[h]+j[c+256>>0]+j[l+512>>0]>>16)-128, B[g]=(j[h+768>>0]+j[c+1024>>0]+j[l+1280>>0]>>16)-128, R[g]=(j[h+1280>>0]+j[c+1536>>0]+j[l+1792>>0]>>16)-128;i=X(O,T,i,S,_), o=X(B,F,o,k,A), a=X(R,F,a,k,A), s+=32;}b+=8;}if(0<=q){var x=[];x[1]=q+1, x[0]=(1<<q+1)-1, G(x);}return Y(65497), new Uint8Array(P)}, function(){(new Date).getTime();t||(t=50), function(){for(var t=String.fromCharCode,e=0;e<256;e++)n[e]=t(e);}(), S=r(D,M), k=r(z,L), _=r(U,N), A=r(H,W), function(){for(var t=1,e=2,n=1;n<=15;n++){for(var r=t;r<e;r++)y[32767+r]=n, w[32767+r]=[], w[32767+r][1]=n, w[32767+r][0]=r;for(var i=-(e-1);i<=-t;i++)y[32767+i]=n, w[32767+i]=[], w[32767+i][1]=n, w[32767+i][0]=e-1+i;t<<=1, e<<=1;}}(), function(){for(var t=0;t<256;t++)j[t]=19595*t, j[t+256>>0]=38470*t, j[t+512>>0]=7471*t+32768, j[t+768>>0]=-11059*t, j[t+1024>>0]=-21709*t, j[t+1280>>0]=32768*t+8421375, j[t+1536>>0]=-27439*t, j[t+1792>>0]=-5329*t;}(), J(t), (new Date).getTime();}();}try{module.exports=yt;}catch(t){}function xt(t,e){if(this.pos=0, this.buffer=t, this.datav=new DataView(t.buffer), this.is_with_alpha=!!e, this.bottom_up=!0, this.flag=String.fromCharCode(this.buffer[0])+String.fromCharCode(this.buffer[1]), this.pos+=2, -1===["BM","BA","CI","CP","IC","PT"].indexOf(this.flag))throw new Error("Invalid BMP File");this.parseHeader(), this.parseBGR();}xt.prototype.parseHeader=function(){if(this.fileSize=this.datav.getUint32(this.pos,!0), this.pos+=4, this.reserved=this.datav.getUint32(this.pos,!0), this.pos+=4, this.offset=this.datav.getUint32(this.pos,!0), this.pos+=4, this.headerSize=this.datav.getUint32(this.pos,!0), this.pos+=4, this.width=this.datav.getUint32(this.pos,!0), this.pos+=4, this.height=this.datav.getInt32(this.pos,!0), this.pos+=4, this.planes=this.datav.getUint16(this.pos,!0), this.pos+=2, this.bitPP=this.datav.getUint16(this.pos,!0), this.pos+=2, this.compress=this.datav.getUint32(this.pos,!0), this.pos+=4, this.rawSize=this.datav.getUint32(this.pos,!0), this.pos+=4, this.hr=this.datav.getUint32(this.pos,!0), this.pos+=4, this.vr=this.datav.getUint32(this.pos,!0), this.pos+=4, this.colors=this.datav.getUint32(this.pos,!0), this.pos+=4, this.importantColors=this.datav.getUint32(this.pos,!0), this.pos+=4, 16===this.bitPP&&this.is_with_alpha&&(this.bitPP=15), this.bitPP<15){var t=0===this.colors?1<<this.bitPP:this.colors;this.palette=new Array(t);for(var e=0;e<t;e++){var n=this.datav.getUint8(this.pos++,!0),r=this.datav.getUint8(this.pos++,!0),i=this.datav.getUint8(this.pos++,!0),o=this.datav.getUint8(this.pos++,!0);this.palette[e]={red:i,green:r,blue:n,quad:o};}}this.height<0&&(this.height*=-1, this.bottom_up=!1);}, xt.prototype.parseBGR=function(){this.pos=this.offset;try{var t="bit"+this.bitPP,e=this.width*this.height*4;this.data=new Uint8Array(e), this[t]();}catch(t){console.log("bit decode error:"+t);}}, xt.prototype.bit1=function(){var t=Math.ceil(this.width/8),e=t%4,n=0<=this.height?this.height-1:-this.height;for(n=this.height-1;0<=n;
146n--){for(var r=this.bottom_up?n:this.height-1-n,i=0;i<t;i++)for(var o=this.datav.getUint8(this.pos++,!0),a=r*this.width*4+8*i*4,s=0;s<8&&8*i+s<this.width;s++){var h=this.palette[o>>7-s&1];this.data[a+4*s]=h.blue, this.data[a+4*s+1]=h.green, this.data[a+4*s+2]=h.red, this.data[a+4*s+3]=255;}0!=e&&(this.pos+=4-e);}}, xt.prototype.bit4=function(){for(var t=Math.ceil(this.width/2),e=t%4,n=this.height-1;0<=n;n--){for(var r=this.bottom_up?n:this.height-1-n,i=0;i<t;i++){var o=this.datav.getUint8(this.pos++,!0),a=r*this.width*4+2*i*4,s=o>>4,h=15&o,c=this.palette[s];if(this.data[a]=c.blue, this.data[a+1]=c.green, this.data[a+2]=c.red, this.data[a+3]=255, 2*i+1>=this.width)break;c=this.palette[h], this.data[a+4]=c.blue, this.data[a+4+1]=c.green, this.data[a+4+2]=c.red, this.data[a+4+3]=255;}0!=e&&(this.pos+=4-e);}}, xt.prototype.bit8=function(){for(var t=this.width%4,e=this.height-1;0<=e;e--){for(var n=this.bottom_up?e:this.height-1-e,r=0;r<this.width;r++){var i=this.datav.getUint8(this.pos++,!0),o=n*this.width*4+4*r;if(i<this.palette.length){var a=this.palette[i];this.data[o]=a.red, this.data[o+1]=a.green, this.data[o+2]=a.blue, this.data[o+3]=255;}else this.data[o]=255, this.data[o+1]=255, this.data[o+2]=255, this.data[o+3]=255;}0!=t&&(this.pos+=4-t);}}, xt.prototype.bit15=function(){for(var t=this.width%3,e=parseInt("11111",2),n=this.height-1;0<=n;n--){for(var r=this.bottom_up?n:this.height-1-n,i=0;i<this.width;i++){var o=this.datav.getUint16(this.pos,!0);this.pos+=2;var a=(o&e)/e*255|0,s=(o>>5&e)/e*255|0,h=(o>>10&e)/e*255|0,c=o>>15?255:0,l=r*this.width*4+4*i;this.data[l]=h, this.data[l+1]=s, this.data[l+2]=a, this.data[l+3]=c;}this.pos+=t;}}, xt.prototype.bit16=function(){for(var t=this.width%3,e=parseInt("11111",2),n=parseInt("111111",2),r=this.height-1;0<=r;r--){for(var i=this.bottom_up?r:this.height-1-r,o=0;o<this.width;o++){var a=this.datav.getUint16(this.pos,!0);this.pos+=2;var s=(a&e)/e*255|0,h=(a>>5&n)/n*255|0,c=(a>>11)/e*255|0,l=i*this.width*4+4*o;this.data[l]=c, this.data[l+1]=h, this.data[l+2]=s, this.data[l+3]=255;}this.pos+=t;}}, xt.prototype.bit24=function(){for(var t=this.height-1;0<=t;t--){for(var e=this.bottom_up?t:this.height-1-t,n=0;n<this.width;n++){var r=this.datav.getUint8(this.pos++,!0),i=this.datav.getUint8(this.pos++,!0),o=this.datav.getUint8(this.pos++,!0),a=e*this.width*4+4*n;this.data[a]=o, this.data[a+1]=i, this.data[a+2]=r, this.data[a+3]=255;}this.pos+=this.width%4;}}, xt.prototype.bit32=function(){for(var t=this.height-1;0<=t;t--)for(var e=this.bottom_up?t:this.height-1-t,n=0;n<this.width;n++){var r=this.datav.getUint8(this.pos++,!0),i=this.datav.getUint8(this.pos++,!0),o=this.datav.getUint8(this.pos++,!0),a=this.datav.getUint8(this.pos++,!0),s=e*this.width*4+4*n;this.data[s]=o, this.data[s+1]=i, this.data[s+2]=r, this.data[s+3]=a;}}, xt.prototype.getData=function(){return this.data};try{module.exports=function(t){var e=new xt(t);return{data:e.getData(),width:e.width,height:e.height}};}catch(t){} 147/* 148 Copyright (c) 2013 Gildas Lormeau. All rights reserved. 149 150 Redistribution and use in source and binary forms, with or without 151 modification, are permitted provided that the following conditions are met: 152 153 1. Redistributions of source code must retain the above copyright notice, 154 this list of conditions and the following disclaimer. 155 156 2. Redistributions in binary form must reproduce the above copyright 157 notice, this list of conditions and the following disclaimer in 158 the documentation and/or other materials provided with the distribution. 159 160 3. The names of the authors may not be used to endorse or promote products 161 derived from this software without specific prior written permission. 162 163 THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, 164 INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 165 FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT, 166 INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, 167 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 168 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 169 OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 170 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 171 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 172 EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 173 */ 174/* 175 Copyright (c) 2013 Gildas Lormeau. All rights reserved. 176 177 Redistribution and use in source and binary forms, with or without 178 modification, are permitted provided that the following conditions are met: 179 180 1. Redistributions of source code must retain the above copyright notice, 181 this list of conditions and the following disclaimer. 182 183 2. Redistributions in binary form must reproduce the above copyright 184 notice, this list of conditions and the following disclaimer in 185 the documentation and/or other materials provided with the distribution. 186 187 3. The names of the authors may not be used to endorse or promote products 188 derived from this software without specific prior written permission. 189 190 THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, 191 INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 192 FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT, 193 INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
194 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 195 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 196 OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 197 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 198 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 199 EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 200 */ 201!function(t){var p=15,g=573,e=[0,1,2,3,4,4,5,5,6,6,6,6,7,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,0,0,16,17,18,18,19,19,20,20,20,20,21,21,21,21,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29];function ut(){var d=this;function h(t,e){for(var n=0;n|=1&t, t>>>=1, n<<=1, 0<--e;);return n>>>1}d.build_tree=function(t){var e,n,r,i=d.dyn_tree,o=d.stat_desc.static_tree,a=d.stat_desc.elems,s=-1;for(t.heap_len=0, t.heap_max=g, e=0;e<a;e++)0!==i[2*e]?(t.heap[++t.heap_len]=s=e, t.depth[e]=0):i[2*e+1]=0;for(;t.heap_len<2;)i[2*(r=t.heap[++t.heap_len]=s<2?++s:0)]=1, t.depth[r]=0, t.opt_len--, o&&(t.static_len-=o[2*r+1]);for(d.max_code=s, e=Math.floor(t.heap_len/2);1<=e;e--)t.pqdownheap(i,e);for(r=a;e=t.heap[1], t.heap[1]=t.heap[t.heap_len--], t.pqdownheap(i,1), n=t.heap[1], t.heap[--t.heap_max]=e, t.heap[--t.heap_max]=n, i[2*r]=i[2*e]+i[2*n], t.depth[r]=Math.max(t.depth[e],t.depth[n])+1, i[2*e+1]=i[2*n+1]=r, t.heap[1]=r++, t.pqdownheap(i,1), 2<=t.heap_len;);t.heap[--t.heap_max]=t.heap[1], function(t){var e,n,r,i,o,a,s=d.dyn_tree,h=d.stat_desc.static_tree,c=d.stat_desc.extra_bits,l=d.stat_desc.extra_base,u=d.stat_desc.max_length,f=0;for(i=0;i<=p;i++)t.bl_count[i]=0;for(s[2*t.heap[t.heap_max]+1]=0, e=t.heap_max+1;e<g;e++)u<(i=s[2*s[2*(n=t.heap[e])+1]+1]+1)&&(i=u, f++), s[2*n+1]=i, n>d.max_code||(t.bl_count[i]++, o=0, l<=n&&(o=c[n-l]), a=s[2*n], t.opt_len+=a*(i+o), h&&(t.static_len+=a*(h[2*n+1]+o)));if(0!==f){do{for(i=u-1;0===t.bl_count[i];)i--;t.bl_count[i]--, t.bl_count[i+1]+=2, t.bl_count[u]--, f-=2;}while(0<f);for(i=u;0!==i;i--)for(n=t.bl_count[i];0!==n;)(r=t.heap[--e])>d.max_code||(s[2*r+1]!=i&&(t.opt_len+=(i-s[2*r+1])*s[2*r], s[2*r+1]=i), n--);}}(t), function(t,e,n){var r,i,o,a=[],s=0;for(r=1;r<=p;r++)a[r]=s=s+n[r-1]<<1;for(i=0;i<=e;i++)0!==(o=t[2*i+1])&&(t[2*i]=h(a[o]++,o));}(i,d.max_code,t.bl_count);};}function ft(t,e,n,r,i){var o=this;o.static_tree=t, o.extra_bits=e, o.extra_base=n, o.elems=r, o.max_length=i;}ut._length_code=[0,1,2,3,4,5,6,7,8,8,9,9,10,10,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,16,16,16,16,17,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,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,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,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,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28], ut.base_length=[0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0], ut.base_dist=[0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576], ut.d_code=function(t){return t<256?e[t]:e[256+(t>>
201>7)]}, ut.extra_lbits=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0], ut.extra_dbits=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13], ut.extra_blbits=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7], ut.bl_order=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15], ft.static_ltree=[12,8,140,8,76,8,204,8,44,8,172,8,108,8,236,8,28,8,156,8,92,8,220,8,60,8,188,8,124,8,252,8,2,8,130,8,66,8,194,8,34,8,162,8,98,8,226,8,18,8,146,8,82,8,210,8,50,8,178,8,114,8,242,8,10,8,138,8,74,8,202,8,42,8,170,8,106,8,234,8,26,8,154,8,90,8,218,8,58,8,186,8,122,8,250,8,6,8,134,8,70,8,198,8,38,8,166,8,102,8,230,8,22,8,150,8,86,8,214,8,54,8,182,8,118,8,246,8,14,8,142,8,78,8,206,8,46,8,174,8,110,8,238,8,30,8,158,8,94,8,222,8,62,8,190,8,126,8,254,8,1,8,129,8,65,8,193,8,33,8,161,8,97,8,225,8,17,8,145,8,81,8,209,8,49,8,177,8,113,8,241,8,9,8,137,8,73,8,201,8,41,8,169,8,105,8,233,8,25,8,153,8,89,8,217,8,57,8,185,8,121,8,249,8,5,8,133,8,69,8,197,8,37,8,165,8,101,8,229,8,21,8,149,8,85,8,213,8,53,8,181,8,117,8,245,8,13,8,141,8,77,8,205,8,45,8,173,8,109,8,237,8,29,8,157,8,93,8,221,8,61,8,189,8,125,8,253,8,19,9,275,9,147,9,403,9,83,9,339,9,211,9,467,9,51,9,307,9,179,9,435,9,115,9,371,9,243,9,499,9,11,9,267,9,139,9,395,9,75,9,331,9,203,9,459,9,43,9,299,9,171,9,427,9,107,9,363,9,235,9,491,9,27,9,283,9,155,9,411,9,91,9,347,9,219,9,475,9,59,9,315,9,187,9,443,9,123,9,379,9,251,9,507,9,7,9,263,9,135,9,391,9,71,9,327,9,199,9,455,9,39,9,295,9,167,9,423,9,103,9,359,9,231,9,487,9,23,9,279,9,151,9,407,9,87,9,343,9,215,9,471,9,55,9,311,9,183,9,439,9,119,9,375,9,247,9,503,9,15,9,271,9,143,9,399,9,79,9,335,9,207,9,463,9,47,9,303,9,175,9,431,9,111,9,367,9,239,9,495,9,31,9,287,9,159,9,415,9,95,9,351,9,223,9,479,9,63,9,319,9,191,9,447,9,127,9,383,9,255,9,511,9,0,7,64,7,32,7,96,7,16,7,80,7,48,7,112,7,8,7,72,7,40,7,104,7,24,7,88,7,56,7,120,7,4,7,68,7,36,7,100,7,20,7,84,7,52,7,116,7,3,8,131,8,67,8,195,8,35,8,163,8,99,8,227,8], ft.static_dtree=[0,5,16,5,8,5,24,5,4,5,20,5,12,5,28,5,2,5,18,5,10,5,26,5,6,5,22,5,14,5,30,5,1,5,17,5,9,5,25,5,5,5,21,5,13,5,29,5,3,5,19,5,11,5,27,5,7,5,23,5], ft.static_l_desc=new ft(ft.static_ltree,ut.extra_lbits,257,286,p), ft.static_d_desc=new ft(ft.static_dtree,ut.extra_dbits,0,30,p), ft.static_bl_desc=new ft(null,ut.extra_blbits,0,19,7);function n(t,e,n,r,i){var o=this;o.good_length=t, o.max_lazy=e, o.nice_length=n, o.max_chain=r, o.func=i;}var dt=[new n(0,0,0,0,0),new n(4,4,8,4,1),new n(4,5,16,8,1),new n(4,6,32,32,1),new n(4,4,16,16,2),new n(8,16,32,32,2),new n(8,16,128,128,2),new n(8,32,128,256,2),new n(32,128,258,1024,2),new n(32,258,258,4096,2)],pt=["need dictionary","stream end","","","stream error","data error","","buffer error","",""],gt=262;function mt(t,e,n,r){var i=t[2*e],o=t[2*n];return i<o||i==o&&r[e]<=r[n]}function r(){var h,c,l,u,f,d,p,g,i,m,w,y,v,a,b,x,S,k,_,A,I,C,T,F,P,E,q,O,B,R,s,j,D,M,U,N,z,o,L,H,W,G=this,V=new ut,Y=new ut,X=new ut;function J(){var t;for(t=0;t<286;t++)s[2*t]=0;for(t=0;t<30;t++)j[2*t]=0;for(t=0;t<19;t++)D[2*t]=0;s[512]=1, G.opt_len=G.static_len=0, N=o=0;}function K(t,e){var n,r,i=-1,o=t[1],a=0,s=7,h=4;for(0===o&&(s=138, h=3), t[2*(e+1)+1]=65535, n=0;n<=e;n++)r=o, o=t[2*(n+1)+1], ++a<s&&r==o||(a<h?D[2*r]+=a:0!==r?(r!=i&&D[2*r]++, D[32]++):a<=10?D[34]++:D[36]++, i=r, (a=0)===o?(s=138, h=3):r==o?(s=6, h=3):(s=7, h=4));}function Q(t){G.pending_buf[G.pending++]=t;}function Z(t){Q(255&t), Q(t>>>8&255);}function $(t,e){var n,r=e;16-r<W?(Z(H|=(n=t)<<W&65535), H=n>>>16-W, W+=r-16):(H|=t<<W&65535, W+=r);}function tt(t,e){var n=2*t;$(65535&e[n],65535&e[n+1]);}function et(t,e){var n,r,i=-1,o=t[1],a=0,s=7,h=4;for(0===o&&(s=138, h=3), n=0;n<=e;n++)if(r=o, o=t[2*(n+1)+1], !(++a<s&&r==o)){if(a<h)for(;tt(r,D), 0!=--a;);else 0!==r?(r!=i&&(tt(r,D), a--), tt(16,D), $(a-3,2)):a<=10?(tt(17,D), $(a-3,3)):(tt(18,D), $(a-11,7));i=r, (a=0)===o?(s=138, h=3):r==o?(s=6, h=3):(s=7, h=4);}}function nt(){16==W?(Z(H), W=H=0):8<=W&&(Q(255&H), H>>>=8, W-=8);}function rt(t,e){var n,r,i;if(G.pending_buf[z+2*N]=t>>>8&255, G.pending_buf[z+2*N+1]=255&t, G.pending_buf[M+N]=255&e, N++, 0===t?s[2*e]++:(o++, t--, s[2*(ut._length_code[e]+256+1)]++, j[2*ut.d_code(t)]++), 0==(8191&N)&&2<q){for(n=8*N, r
201=I-S, i=0;i<30;i++)n+=j[2*i]*(5+ut.extra_dbits[i]);if(n>>>=3, o<Math.floor(N/2)&&n<Math.floor(r/2))return!0}return N==U-1}function it(t,e){var n,r,i,o,a=0;if(0!==N)for(;n=G.pending_buf[z+2*a]<<8&65280|255&G.pending_buf[z+2*a+1], r=255&G.pending_buf[M+a], a++, 0===n?tt(r,t):(tt((i=ut._length_code[r])+256+1,t), 0!==(o=ut.extra_lbits[i])&&$(r-=ut.base_length[i],o), tt(i=ut.d_code(--n),e), 0!==(o=ut.extra_dbits[i])&&$(n-=ut.base_dist[i],o)), a<N;);tt(256,t), L=t[513];}function ot(){8<W?Z(H):0<W&&Q(255&H), W=H=0;}function at(t,e,n){var r,i,o;$(0+(n?1:0),3), r=t, i=e, o=!0, ot(), L=8, o&&(Z(i), Z(~i)), G.pending_buf.set(g.subarray(r,r+i),G.pending), G.pending+=i;}function e(t,e,n){var r,i,o=0;0<q?(V.build_tree(G), Y.build_tree(G), o=function(){var t;for(K(s,V.max_code), K(j,Y.max_code), X.build_tree(G), t=18;3<=t&&0===D[2*ut.bl_order[t]+1];t--);return G.opt_len+=3*(t+1)+5+5+4, t}(), r=G.opt_len+3+7>>>3, (i=G.static_len+3+7>>>3)<=r&&(r=i)):r=i=e+5, e+4<=r&&-1!=t?at(t,e,n):i==r?($(2+(n?1:0),3), it(ft.static_ltree,ft.static_dtree)):($(4+(n?1:0),3), function(t,e,n){var r;for($(t-257,5), $(e-1,5), $(n-4,4), r=0;r<n;r++)$(D[2*ut.bl_order[r]+1],3);et(s,t-1), et(j,e-1);}(V.max_code+1,Y.max_code+1,o+1), it(s,j)), J(), n&&ot();}function st(t){e(0<=S?S:-1,I-S,t), S=I, h.flush_pending();}function ht(){var t,e,n,r;do{if(0===(r=i-T-I)&&0===I&&0===T)r=f;else if(-1==r)r--;else if(f+f-gt<=I){for(g.set(g.subarray(f,f+f),0), C-=f, I-=f, S-=f, n=t=v;e=65535&w[--n], w[n]=f<=e?e-f:0, 0!=--t;);for(n=t=f;e=65535&m[--n], m[n]=f<=e?e-f:0, 0!=--t;);r+=f;}if(0===h.avail_in)return;t=h.read_buf(g,I+T,r), 3<=(T+=t)&&(y=((y=255&g[I])<<x^255&g[I+1])&b);}while(T<gt&&0!==h.avail_in)}function ct(t){var e,n,r=P,i=I,o=F,a=f-gt<I?I-(f-gt):0,s=R,h=p,c=I+258,l=g[i+o-1],u=g[i+o];B<=F&&(r>>=2), T<s&&(s=T);do{if(g[(e=t)+o]==u&&g[e+o-1]==l&&g[e]==g[i]&&g[++e]==g[i+1]){i+=2, e++;do{}while(g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&i<c);if(n=258-(c-i), i=c-258, o<n){if(C=t, s<=(o=n))break;l=g[i+o-1], u=g[i+o];}}}while((t=65535&m[t&h])>a&&0!=--r);return o<=T?o:T}function lt(t){return t.total_in=t.total_out=0, t.msg=null, G.pending=0, G.pending_out=0, c=113, u=0, V.dyn_tree=s, V.stat_desc=ft.static_l_desc, Y.dyn_tree=j, Y.stat_desc=ft.static_d_desc, X.dyn_tree=D, X.stat_desc=ft.static_bl_desc, W=H=0, L=8, J(), function(){var t;for(i=2*f, t=w[v-1]=0;t<v-1;t++)w[t]=0;E=dt[q].max_lazy, B=dt[q].good_length, R=dt[q].nice_length, P=dt[q].max_chain, k=F=2, y=A=T=S=I=0;}(), 0}G.depth=[], G.bl_count=[], G.heap=[], s=[], j=[], D=[], G.pqdownheap=function(t,e){for(var n=G.heap,r=n[e],i=e<<1;i<=G.heap_len&&(i<G.heap_len&&mt(t,n[i+1],n[i],G.depth)&&i++, !mt(t,r,n[i],G.depth));)n[e]=n[i], e=i, i<<=1;n[e]=r;}, G.deflateInit=function(t,e,n,r,i,o){return r||(r=8), i||(i=8), o||(o=0), t.msg=null, -1==e&&(e=6), i<1||9<i||8!=r||n<9||15<n||e<0||9<e||o<0||2<o?-2:(t.dstate=G, p=(f=1<<(d=n))-1, b=(v=1<<(a=i+7))-1, x=Math.floor((a+3-1)/3), g=new Uint8Array(2*f), m=[], w=[], U=1<<i+6, G.pending_buf=new Uint8Array(4*U), l=4*U, z=Math.floor(U/2), M=3*U, q=e, O=o, lt(t))}, G.deflateEnd=function(){return 42!=c&&113!=c&&666!=c?-2:(G.pending_buf=null, g=m=w=null, G.dstate=null, 113==c?-3:0)}, G.deflateParams=function(t,e,n){var r=0;return-1==e&&(e=6), e<0||9<e||n<0||2<n?-2:(dt[q].func!=dt[e].func&&0!==t.total_in&&(r=t.deflate(1)), q!=e&&(E=dt[q=e].max_lazy, B=dt[q].good_length, R=dt[q].nice_length, P=dt[q].max_chain), O=n, r)}, G.deflateSetDictionary=function(t,e,n){var r,i=n,o=0;if(!e||42!=c)return-2;if(i<3)return 0;for(f-gt<i&&(o=n-(i=f-gt)), g.set(e.subarray(o,o+i),0), S=I=i, y=((y=255&g[0])<<x^255&g[1])&b, r=0;r<=i-3;r++)y=(y<<x^255&g[r+2])&b, m[r&p]=w[y], w[y]=r;return 0}, G.deflate=function(t,e){var n,r,i,o,a,s;if(4<e||e<0)return-2;if(!t.next_out||!t.next_in&&0!==t.avail_in||666==c&&4!=e)return t.msg=pt[4], -2;if(0===t.avail_out)return t.msg=pt[7], -5;if(h=t, o=u, u=e, 42==c&&(r=8+(d-8<<4)<<8, 3<(i=(q-1&255)>>1)&&(i=3), r|=i<<6, 0!==I&&(r|=32), c=113, Q((s=r+=31-r%31)>>8&255), Q(255&s)), 0!==G.pending){if(h.flush_pending(), 0===h.avail_out)return u=-1, 0}else if(0===h.avail_in&&e<=o&&4!=e)return h.msg=pt[7], -5;if(666==c&&0!==h.avail_in)return t.msg=pt[7], -5;if(0!==h.avail_in||0!==T||0!=e&&666!=c){switch(a=-1, dt[q].func){case 0:a=function(t){var e,n=65535;for(l-5<n&&(n=l-5);;){if(T<=1){if(ht(), 0===T&&0==t)return 0;if(0===T)break}if(I+=T, e=S+n, ((T=0)===I||e<=I)&&(T=I-e, I=e, st(!1), 0===h.avail_out))return 0;if(f-gt<=I-S&&(st(!1), 0===h.avail_out))return 0}return st(4==t), 0===h.avail_out?4==t?2:0:4==t?3:1}(e);break;case 1:a=function(t){for(var e,n=0;;){if(T<gt){if(ht(), T<gt&&0==t)return 0;if(0===T)break}if(3<=T&&(y=(y<<x^255&g[I+2])&b, n=65535&w[y], m[I&p]=w[y], w[y]=I), 0!==n&&(I-n&65535)<=f-gt&&2!=O&&(k=ct(n)), 3<=k)if(e=rt(I-C,k-3), T-=k, k<=E&&3<=T){for(k--;y=(y<<x^255&g[++I+2])&b, n=65535&w[y], m[I&p]=w[y], w[y]=I, 0!=--k;);I++;}else I+=k, k=0, y=((y=255&g[I])<<x^255&g[I+1])&b;else e=rt(0,255&g[I]), T--, I++;if(e&&(st(!1), 0===h.avail_out))return 0}return st(4==t), 0===h.avail_out?4==t?2:0:4==t?3:1}(e);break;case 2:a=function(t){for(var e,n,r=0;;){if(T<gt){if(ht(), T<gt&&0==t)return 0;if(0===T)break}if(3<=T&&(y=(y<<x^255&g[I+2])&b, r=65535&w[y], m[I&p]=w[y], w[y]=I), F=k, _=C, k=2, 0!==r&&F<E&&(I-r&65535)<=f-gt&&(2!=O&&(k=ct(r)), k<=5&&(1==O||3==k&&4096<I-C)&&(k=2)), 3<=F&&k<=F){for(n=I+T-3, e=rt(I-1-_,F-3), T-=F-1, F-=2;++I<=n&&(y=(y<<x^255&g[I+2])&b, r=65535&w[y], m[I&p]=w[y], w[y]=I), 0!=--F;);if(A=0, k=2, I++, e&&(st(!1), 0===h.avail_out))return 0}else if(0!==A){if((e=rt(0,255&g[I-1]))&&st(!1), I++, T--, 0===h.avail_out)return 0}else A=1, I++, T--;}return 0!==A&&(e=rt(0,255&g[I-1]), A=0), st(4==t), 0===h.avail_out?4==t?2:0:4==t?3:1}(e);}if(2!=a&&3!=a||(c=666), 0==a||2==a)return 0===h.avail_out&&(u=-1), 0;if(1==a){if(1==e)$(2,3), tt(256,ft.static_ltree), nt(), 1+L+10-W<9&&($(2,3), tt(256,ft.static_ltree), nt()), L=7;else if(at(0,0,!1), 3==e)for(n=0;n<v;n++)w[n]=0;if(h.flush_pending(), 0===h.avail_out)return u=-1, 0}}return 4!=e?0:1};}function i(){var t=this;t.next_in_index=0, t.next_out_index=0, t.avail_in=0, t.total_in=0, t.avail_out=0, t.total_out=0;}i.prototype={deflateInit:function(t,e){return this.dstate=new r, e||(e=p), this.dstate.deflateInit(this,t,e)},deflate:function(t){return this.dstate?this.dstate.deflate(this,t):-2},deflateEnd:function(){if(!this.dstate)return-2;var t=this.dstate.deflateEnd();return this.dstate=null, t},deflateParams:function(t,e){return this.dstate?this.dstate.deflateParams(this,t,e):-2},deflateSetDictionary:function(t,e){return this.dstate?this.dstate.deflateSetDictionary(this,t,e):-2},read_buf:function(t,e,n){var r=this,i=r.avail_in;return n<i&&(i=n), 0===i?0:(r.avail_in-=i, t.set(r.next_in.subarray(r.next_in_index,r.next_in_index+i),e), r.next_in_index+=i, r.total_in+=i, i)},flush_pending:function(){var t=this,e=t.dstate.pending;e>t.avail_out&&(e=t.avail_out), 0!==e&&(t.next_out.set(t.dstate.pending_buf.subarray(t.dstate.pending_out,t.dstate.pending_out+e),t.next_out_index), t.next_out_index+=e, t.dstate.pending_out+=e, t.total_out+=e, t.avail_out-=e, t.dstate.pending-=e, 0===t.dstate.pending&&(t.dstate.pending_out=0));}};var o=t.zip||t;o.Deflater=o._jzlib_Deflater=function(t){var s=new i,h=new Uint8Array(512),e=t?t.level:-1;void 0===e&&(e=-1), s.deflateInit(e), s.next_out=h, this.append=function(t,e){var n,r=[],i=0,o=0,a=0;if(t.length){s.next_in_index=0, s.next_in=t, s.avail_in=t.length;do{if(s.next_out_index=0, s.avail_out=512, 0!=s.deflate(0))throw new Error("deflating: "+s.msg);s.next_out_index&&(512==s.next_out_index?r.push(new Uint8Array(h)):r.push(new Uint8Array(h.subarray(0,s.next_out_index)))), a+=s.next_out_index, e&&0<s.next_in_index&&s.next_in_index!=i&&(e(s.next_in_index), i=s.next_in_index);}while(0<s.avail_in||0===s.avail_out);return n=new Uint8Array(a), r.forEach(function(t){n.set(t,o), o+=t.length;}), n}}, this.flush=function(){var t,e,n=[],r=0,i=0;do{if(s.next_out_index=0, s.avail_out=512, 1!=(t=s.deflate(4))&&0!=t)throw new Error("deflating: "+s.msg);0<512-s.avail_out&&n.push(new Uint8Array(h.subarray(0,s.next_out_index))), i+=s.next_out_index;}while(0<s.avail_in||0===s.avail_out);
201return s.deflateEnd(), e=new Uint8Array(i), n.forEach(function(t){e.set(t,r), r+=t.length;}), e};};}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||"undefined"!=typeof commonjsGlobal&&commonjsGlobal||Function('return typeof this === "object" && this.content')()||Function("return this")()), function(t){function f(t){var e;this.ok=!1, "#"==t.charAt(0)&&(t=t.substr(1,6)), t=(t=t.replace(/ /g,"")).toLowerCase();var l={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"00ffff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000000",blanchedalmond:"ffebcd",blue:"0000ff",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"00ffff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dodgerblue:"1e90ff",feldspar:"d19275",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"ff00ff",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgrey:"d3d3d3",lightgreen:"90ee9
2010",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslateblue:"8470ff",lightslategray:"778899",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"00ff00",limegreen:"32cd32",linen:"faf0e6",magenta:"ff00ff",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370d8",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"d87093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",red:"ff0000",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",violetred:"d02090",wheat:"f5deb3",white:"ffffff",whitesmoke:"f5f5f5",yellow:"ffff00",yellowgreen:"9acd32"};for(var n in l)t==n&&(t=l[n]);for(var u=[{re:/^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,example:["rgb(123, 234, 45)","rgb(255,234,245)"],process:function(t){return[parseInt(t[1]),parseInt(t[2]),parseInt(t[3])]}},{re:/^(\w{2})(\w{2})(\w{2})$/,example:["#00ff00","336699"],process:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/^(\w{1})(\w{1})(\w{1})$/,example:["#fb0","f0f"],process:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}}],r=0;r<u.length;r++){var i=u[r].re,o=u[r].process,a=i.exec(t);a&&(e=o(a), this.r=e[0], this.g=e[1], this.b=e[2], this.ok=!0);}this.r=this.r<0||isNaN(this.r)?0:255<this.r?255:this.r, this.g=this.g<0||isNaN(this.g)?0:255<this.g?255:this.g, this.b=this.b<0||isNaN(this.b)?0:255<this.b?255:this.b, this.toRGB=function(){return"rgb("+this.r+", "+this.g+", "+this.b+")"}, this.toHex=function(){var t=this.r.toString(16),e=this.g.toString(16),n=this.b.toString(16);return 1==t.length&&(t="0"+t), 1==e.length&&(e="0"+e), 1==n.length&&(n="0"+n), "#"+t+e+n}, this.getHelpXML=function(){for(var t=new Array,e=0;e<u.length;e++)for(var n=u[e].example,r=0;r<n.length;r++)t[t.length]=n[r];for(var i in l)t[t.length]=i;var o=document.createElement("ul");o.setAttribute("id","rgbcolor-examples");for(e=0;e<t.length;e++)try{var a=document.createElement("li"),s=new f(t[e]),h=document.createElement("div");h.style.cssText="margin: 3px; border: 1px solid black; background:"+s.toHex()+"; color:"+s.toHex(), h.appendChild(document.createTextNode("test"));var c=document.createTextNode(" "+t[e]+" -> "+s.toRGB()+" -> "+s.toHex());a.appendChild(h), a.appendChild(c), o.appendChild(a);}catch(t){}return o};}"undefined"!=typeof undefined&&undefined.amd?undefined("RGBColor",function(){return f}):"undefined"!='object'&&module.exports&&(module.exports=f), t.RGBColor=f;}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||"undefined"!=typeof commonjsGlobal&&commonjsGlobal||Function('return typeof this === "object" && this.content')()||Function("return this")()), function(t){module.exports=t();}(function(){return function o(a,s,h){function c(n,t){if(!s[n]){if(!a[n]){var e="function"==typeof commonjsRequire&&commonjsRequire;if(!t&&e)return e(n,!0);if(l)return l(n,!0);var r=new Error("Cannot find module '"+n+"'");throw r.code="MODULE_NOT_FOUND", r}var i=s[n]={exports:{}};a[n][0].call(i.exports,function(t){var e=a[n][1][t];return c(e||t)},i,i.exports,o,a,s,h);}return s[n].exports}for(var l="function"==typeof commonjsRequire&&commonjsRequire,t=0;t<h.length;t++)c(h[t]);return c}({1:[function(t,q,O){(function(E){!function(t){var e="object"==typeof O&&O,n="object"==typeof q&&q&&q.exports==e&&q,r="object"==typeof E&&E;r.global!==r&&r.window!==r||(t=r);var i,o,w=2147483647,y=36,v=1,b=26,a=38,s=700,x=72,S=128,k="-",h=/^xn--/,c=/[^ -~]/,l=/\x2E|\u3002|\uFF0E|\uFF61/g,u={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >
201= 0x80 (not a basic code point)","invalid-input":"Invalid input"},f=y-v,_=Math.floor,A=String.fromCharCode;function I(t){throw RangeError(u[t])}function d(t,e){for(var n=t.length;n--;)t[n]=e(t[n]);return t}function p(t,e){return d(t.split(l),e).join(".")}function C(t){for(var e,n,r=[],i=0,o=t.length;i<o;)55296<=(e=t.charCodeAt(i++))&&e<=56319&&i<o?56320==(64512&(n=t.charCodeAt(i++)))?r.push(((1023&e)<<10)+(1023&n)+65536):(r.push(e), i--):r.push(e);return r}function T(t){return d(t,function(t){var e="";return 65535<t&&(e+=A((t-=65536)>>>10&1023|55296), t=56320|1023&t), e+=A(t)}).join("")}function F(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function P(t,e,n){var r=0;for(t=n?_(t/s):t>>1, t+=_(t/e);f*b>>1<t;r+=y)t=_(t/f);return _(r+(f+1)*t/(t+a))}function g(t){var e,n,r,i,o,a,s,h,c,l,u,f=[],d=t.length,p=0,g=S,m=x;for((n=t.lastIndexOf(k))<0&&(n=0), r=0;r<n;++r)128<=t.charCodeAt(r)&&I("not-basic"), f.push(t.charCodeAt(r));for(i=0<n?n+1:0;i<d;){for(o=p, a=1, s=y;d<=i&&I("invalid-input"), u=t.charCodeAt(i++), (y<=(h=u-48<10?u-22:u-65<26?u-65:u-97<26?u-97:y)||h>_((w-p)/a))&&I("overflow"), p+=h*a, !(h<(c=s<=m?v:m+b<=s?b:s-m));s+=y)a>_(w/(l=y-c))&&I("overflow"), a*=l;m=P(p-o,e=f.length+1,0==o), _(p/e)>w-g&&I("overflow"), g+=_(p/e), p%=e, f.splice(p++,0,g);}return T(f)}function m(t){var e,n,r,i,o,a,s,h,c,l,u,f,d,p,g,m=[];for(f=(t=C(t)).length, e=S, o=x, a=n=0;a<f;++a)(u=t[a])<128&&m.push(A(u));for(r=i=m.length, i&&m.push(k);r<f;){for(s=w, a=0;a<f;++a)e<=(u=t[a])&&u<s&&(s=u);for(s-e>_((w-n)/(d=r+1))&&I("overflow"), n+=(s-e)*d, e=s, a=0;a<f;++a)if((u=t[a])<e&&++n>w&&I("overflow"), u==e){for(h=n, c=y;!(h<(l=c<=o?v:o+b<=c?b:c-o));c+=y)g=h-l, p=y-l, m.push(A(F(l+g%p,0))), h=_(g/p);m.push(A(F(h,0))), o=P(n,d,r==i), n=0, ++r;}++n, ++e;}return m.join("")}if(i={version:"1.2.4",ucs2:{decode:C,encode:T},decode:g,encode:m,toASCII:function(t){return p(t,function(t){return c.test(t)?"xn--"+m(t):t})},toUnicode:function(t){return p(t,function(t){return h.test(t)?g(t.slice(4).toLowerCase()):t})}}, e&&!e.nodeType)if(n)n.exports=i;else for(o in i)i.hasOwnProperty(o)&&(e[o]=i[o]);else t.punycode=i;}(this);}).call(this,"undefined"!=typeof commonjsGlobal?commonjsGlobal:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{});},{}],2:[function(t,e,n){var i=t("./log");function u(t,e){for(var n=3===t.nodeType?document.createTextNode(t.nodeValue):t.cloneNode(!1),r=t.firstChild;r;)!0!==e&&1===r.nodeType&&"SCRIPT"===r.nodeName||n.appendChild(u(r,e)), r=r.nextSibling;return 1===t.nodeType&&(n._scrollTop=t.scrollTop, n._scrollLeft=t.scrollLeft, "CANVAS"===t.nodeName?function(e,t){try{t&&(t.width=e.width, t.height=e.height, t.getContext("2d").putImageData(e.getContext("2d").getImageData(0,0,e.width,e.height),0,0));}catch(t){i("Unable to copy canvas content from",e,t);}}(t,n):"TEXTAREA"!==t.nodeName&&"SELECT"!==t.nodeName||(n.value=t.value)), n}e.exports=function(o,t,e,n,a,s,h){var c=u(o.documentElement,a.javascriptEnabled),l=t.createElement("iframe");return l.className="html2canvas-container", l.style.visibility="hidden", l.style.position="fixed", l.style.left="-10000px", l.style.top="0px", l.style.border="0", l.width=e, l.height=n, l.scrolling="no", t.body.appendChild(l), new Promise(function(e){var t,n,r,i=l.contentWindow.document;l.contentWindow.onload=l.onload=function(){var t=setInterval(function(){0<i.body.childNodes.length&&(!function t(e){if(1===e.nodeType){e.scrollTop=e._scrollTop, e.scrollLeft=e._scrollLeft;for(var n=e.firstChild;n;)t(n), n=n.nextSibling;}}(i.documentElement), clearInterval(t), "view"===a.type&&(l.contentWindow.scrollTo(s,h), !/(iPad|iPhone|iPod)/g.test(navigator.userAgent)||l.contentWindow.scrollY===h&&l.contentWindow.scrollX===s||(i.documentElement.style.top=-h+"px", i.documentElement.style.left=-s+"px", i.documentElement.style.position="absolute")), e(l));},50);}, i.open(), i.write("<!DOCTYPE html><html></html>"), n=s, r=h, !(t=o).defaultView||n===t.defaultView.pageXOffset&&r===t.defaultView.pageYOffset||t.defaultView.scrollTo(n,r), i.replaceChild(i.adoptNode(c),i.documentElement), i.close();})};},{"./log":13}],3:[function(t,e,n){function r(t){this.r=0, this.g=0, this.b=0, this.a=null;this.fromArray(t)||this.namedColor(t)||this.rgb(t)||this.rgba(t)||this.hex6(t)||this.hex3(t);}r.prototype.darken=function(t){var e=1-t;return new r([Math.round(this.r*e),Math.round(this.g*e),Math.round(this.b*e),this.a])}, r.prototype.isTransparent=function(){return 0===this.a}, r.prototype.isBlack=function(){return 0===this.r&&0===this.g&&0===this.b}, r.prototype.fromArray=function(t){return Array.isArray(t)&&(this.r=Math.min(t[0],255), this.g=Math.min(t[1],255), this.b=Math.min(t[2],255), 3<t.length&&(this.a=t[3])), Array.isArray(t)};var i=/^#([a-f0-9]{3})$/i;r.prototype.hex3=function(t){var e;return null!==(e=t.match(i))&&(this.r=parseInt(e[1][0]+e[1][0],16), this.g=parseInt(e[1][1]+e[1][1],16), this.b=parseInt(e[1][2]+e[1][2],16)), null!==e};var o=/^#([a-f0-9]{6})$/i;r.prototype.hex6=function(t){var e=null;
vendor: 7,431 bytes, line 201
201return null!==(e=t.match(o))&&(this.r=parseInt(e[1].substring(0,2),16), this.g=parseInt(e[1].substring(2,4),16), this.b=parseInt(e[1].substring(4,6),16)), null!==e};var a=/^rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/;r.prototype.rgb=function(t){var e;return null!==(e=t.match(a))&&(this.r=Number(e[1]), this.g=Number(e[2]), this.b=Number(e[3])), null!==e};var s=/^rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d?\.?\d+)\s*\)$/;r.prototype.rgba=function(t){var e;return null!==(e=t.match(s))&&(this.r=Number(e[1]), this.g=Number(e[2]), this.b=Number(e[3]), this.a=Number(e[4])), null!==e}, r.prototype.toString=function(){return null!==this.a&&1!==this.a?"rgba("+[this.r,this.g,this.b,this.a].join(",")+")":"rgb("+[this.r,this.g,this.b].join(",")+")"}, r.prototype.namedColor=function(t){t=t.toLowerCase();var e=h[t];if(e)this.r=e[0], this.g=e[1], this.b=e[2];else if("transparent"===t)return this.r=this.g=this.b=this.a=0, !0;return!!e}, r.prototype.isColor=!0;var h={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};e.exports=r;},{}],4:[function(t,e,n){var p=t("./support"),d=t("./renderers/canvas"),g=t("./imageloader"),m=t("./nodeparser"),r=t("./nodecontainer"),w=t("./log"),i=t("./utils"),y=t("./clone"),v=t("./proxy").loadUrlDocument,b=i.getBounds,x="data-html2canvas-node",S=0;function o(t,e){var n,r,i=S++;if((e=e||{}).logging&&(w.options.logging=!0, w.options.start=Date.now()), e.async=void 0===e.async||e.async, e.allowTaint=void 0!==e.allowTaint&&e.allowTaint, e.removeContainer=void 0===e.removeContainer||e.removeContainer, e.javascriptEnabled=void 0!==e.javascriptEnabled&&e.javascriptEnabled, e.imageTimeout=void 0===e.imageTimeout?1e4:e.imageTimeout, e.renderer="function"==typeof e.renderer?e.renderer:d, e.strict=!!e.strict, "string"==typeof t){if("string"!=typeof e.proxy)return Promise.reject("Proxy must be used when rendering url");var o=null!=e.width?e.width:window.innerWidth,a=null!=e.height?e.height:window.innerHeight;return v((n=t, r=document.createElement("a"), r.href=n, r.href=r.href, r),e.proxy,document,o,a,e).then(function(t){return k(t.contentWindow.document.documentElement,t,e,o,a)})}var s,h,c,l,u,f=(void 0===t?[document.documentElement]:t.length?t:[t])[0];return f.setAttribute(x+i,i), (s=f.ownerDocument, h=e, c=f.ownerDocument.defaultView.innerWidth, l=f.ownerDocument.defaultView.innerHeight, u=i, y(s,s,c,l,h,s.defaultView.pageXOffset,s.defaultView.pageYOffset).then(function(t){w("Document cloned");var e=x+u,n="["+e+"='"+u+"']";s.querySelector(n).removeAttribute(e);var r=t.contentWindow,i=r.document.querySelector(n),o="function"==typeof h.onclone?Promise.resolve(h.onclone(r.document)):Promise.resolve(!0);return o.then(function(){return k(i,t,h,c,l)})})).then(function(t){return"function"==typeof e.onrendered&&(w("options.onrendered is deprecated, html2canvas returns a Promise containing the canvas"), e.onrendered(t)), t})}o.CanvasRenderer=d, o.NodeContainer=r, o.log=w, o.utils=i;var a="undefined"==typeof document||"function"!=typeof Object.create||"function"!=typeof document.createElement("canvas").getContext?function(){return Promise.reject("No canvas support")}:o;function k(n,r,i,t,e){var o,a,s=r.contentWindow,h=new p(s.document),c=new g(i,h),l=b(n),u="view"===i.type?t:(o=s.document, Math.max(Math.max(o.body.scrollWidth,o.documentElement.scrollWidth),Math.max(o.body.offsetWidth,o.documentElement.offsetWidth),Math.max(o.body.clientWidth,o.documentElement.clientWidth))),f="view"===i.type?e:(a=s.document, Math.max(Math.max(a.body.scrollHeight,a.documentElement.scrollHeight),Math.max(a.body.offsetHeight,a.documentElement.offsetHeight),Math.max(a.body.clientHeight,a.documentElement.clientHeight))),d=new i.renderer(u,f,c,i,document);return new m(n,d,h,c,i).ready.then(function(){var t,e;return w("Finished rendering"), t="view"===i.type?_(d.canvas,{width:d.canvas.width,height:d.canvas.height,top:0,left:0,x:0,y:0}):n===s.document.body||n===s.document.documentElement||null!=i.canvas?d.canvas:_(d.canvas,{width:null!=i.width?i.width:l.width,height:null!=i.height?i.height:l.height,top:l.top,left
201:l.left,x:0,y:0}), e=r, i.removeContainer&&(e.parentNode.removeChild(e), w("Cleaned up container")), t})}function _(t,e){var n=document.createElement("canvas"),r=Math.min(t.width-1,Math.max(0,e.left)),i=Math.min(t.width,Math.max(1,e.left+e.width)),o=Math.min(t.height-1,Math.max(0,e.top)),a=Math.min(t.height,Math.max(1,e.top+e.height));n.width=e.width, n.height=e.height;var s=i-r,h=a-o;return w("Cropping canvas at:","left:",e.left,"top:",e.top,"width:",s,"height:",h), w("Resulting crop with width",e.width,"and height",e.height,"with x",r,"and y",o), n.getContext("2d").drawImage(t,r,o,s,h,e.x,e.y,s,h), n}e.exports=a;},{"./clone":2,"./imageloader":11,"./log":13,"./nodecontainer":14,"./nodeparser":15,"./proxy":16,"./renderers/canvas":20,"./support":22,"./utils":26}],5:[function(t,e,n){var r=t("./log"),i=t("./utils").smallImage;e.exports=function t(e){if(this.src=e, r("DummyImageContainer for",e), !this.promise||!this.image){r("Initiating DummyImageContainer"), t.prototype.image=new Image;var n=this.image;t.prototype.promise=new Promise(function(t,e){n.onload=t, n.onerror=e, n.src=i(), !0===n.complete&&t(n);});}};},{"./log":13,"./utils":26}],6:[function(t,e,n){var h=t("./utils").smallImage;e.exports=function(t,e){var n,r,i=document.createElement("div"),o=document.createElement("img"),a=document.createElement("span"),s="Hidden Text";i.style.visibility="hidden", i.style.fontFamily=t, i.style.fontSize=e, i.style.margin=0, i.style.padding=0, document.body.appendChild(i), o.src=h(), o.width=1, o.height=1, o.style.margin=0, o.style.padding=0, o.style.verticalAlign="baseline", a.style.fontFamily=t, a.style.fontSize=e, a.style.margin=0, a.style.padding=0, a.appendChild(document.createTextNode(s)), i.appendChild(a), i.appendChild(o), n=o.offsetTop-a.offsetTop+1, i.removeChild(a), i.appendChild(document.createTextNode(s)), i.style.lineHeight="normal", o.style.verticalAlign="super", r=o.offsetTop-i.offsetTop+1, document.body.removeChild(i), this.baseline=n, this.lineWidth=1, this.middle=r;};},{"./utils":26}],7:[function(t,e,n){var r=t("./font");function i(){this.data={};}i.prototype.getMetrics=function(t,e){return void 0===this.data[t+"-"+e]&&(this.data[t+"-"+e]=new r(t,e)), this.data[t+"-"+e]}, e.exports=i;},{"./font":6}],8:[function(o,t,e){var a=o("./utils").getBounds,i=o("./proxy").loadUrlDocument;function n(e,t,n){this.image=null, this.src=e;var r=this,i=a(e);this.promise=(t?new Promise(function(t){"about:blank"===e.contentWindow.document.URL||null==e.contentWindow.document.documentElement?e.contentWindow.onload=e.onload=function(){t(e);}:t(e);}):this.proxyLoad(n.proxy,i,n)).then(function(t){return o("./core")(t.contentWindow.document.documentElement,{type:"view",width:t.width,height:t.height,proxy:n.proxy,javascriptEnabled:n.javascriptEnabled,removeContainer:n.removeContainer,allowTaint:n.allowTaint,imageTimeout:n.imageTimeout/2})}).then(function(t){return r.image=t});}n.prototype.proxyLoad=function(t,e,n){var r=this.src;return i(r.src,t,r.ownerDocument,e.width,e.height,n)}, t.exports=n;},{"./core":4,"./proxy":16,"./utils":26}],9:[function(t,e,n){function r(t){this.src=t.value, this.colorStops=[], this.type=null, this.x0=.5, this.y0=.5, this.x1=.5, this.y1=.5, this.promise=Promise.resolve(!0);}r.TYPES={LINEAR:1,RADIAL:2}, r.REGEXP_COLORSTOP=/^\s*(rgba?\(\s*\d{1,3},\s*\d{1,3},\s*\d{1,3}(?:,\s*[0-9\.]+)?\s*\)|[a-z]{3,20}|#[a-f0-9]{3,6})(?:\s+(\d{1,3}(?:\.\d+)?)(%|px)?)?(?:\s|$)/i, e.exports=r;},{}],10:[function(t,e,n){e.exports=function(n,r){this.src=n, this.image=new Image;var i=this;this.tainted=null, this.promise=new Promise(function(t,e){i.image.onload=t, i.image.onerror=e, r&&(i.image.crossOrigin="anonymous"), i.image.src=n, !0===i.image.complete&&t(i.image);});};},{}],11:[function(t,e,n){var o=t("./log"),r=t("./imagecontainer"),i=t("./dummyimagecontainer"),a=t("./proxyimagecontainer"),s=t("./framecontainer"),h=t("./svgcontainer"),c=t("./svgnodecontainer"),l=t("./lineargradientcontainer"),u=t("./webkitgradientcontainer"),f=t("./utils").bind;function d(t,e){this.link=null, this.options=t, this.support=e, this.origin=this.getOrigin(window.location.href);}d.prototype.findImages=function(t){var e=[];return t.reduce(function(t,e){switch(e.node.nodeName){case"IMG":return t.concat([{args:[e.node.src],method:"url"}]);case"svg":case"IFRAME":return t.concat([{args:[e.node],method:e.node.nodeName}])}return t}
201,[]).forEach(this.addImage(e,this.loadImage),this), e}, d.prototype.findBackgroundImage=function(t,e){return e.parseBackgroundImages().filter(this.hasImageBackground).forEach(this.addImage(t,this.loadImage),this), t}, d.prototype.addImage=function(n,r){return function(e){e.args.forEach(function(t){this.imageExists(n,t)||(n.splice(0,0,r.call(this,e)), o("Added image #"+n.length,"string"==typeof t?t.substring(0,100):t));},this);}}, d.prototype.hasImageBackground=function(t){return"none"!==t.method}, d.prototype.loadImage=function(t){if("url"===t.method){var e=t.args[0];return!this.isSVG(e)||this.support.svg||this.options.allowTaint?e.match(/data:image\/.*;base64,/i)?new r(e.replace(/url\(['"]{0,}|['"]{0,}\)$/gi,""),!1):this.isSameOrigin(e)||!0===this.options.allowTaint||this.isSVG(e)?new r(e,!1):this.support.cors&&!this.options.allowTaint&&this.options.useCORS?new r(e,!0):this.options.proxy?new a(e,this.options.proxy):new i(e):new h(e)}return"linear-gradient"===t.method?new l(t):"gradient"===t.method?new u(t):"svg"===t.method?new c(t.args[0],this.support.svg):"IFRAME"===t.method?new s(t.args[0],this.isSameOrigin(t.args[0].src),this.options):new i(t)}, d.prototype.isSVG=function(t){return"svg"===t.substring(t.length-3).toLowerCase()||h.prototype.isInline(t)}, d.prototype.imageExists=function(t,e){return t.some(function(t){return t.src===e})}, d.prototype.isSameOrigin=function(t){return this.getOrigin(t)===this.origin}, d.prototype.getOrigin=function(t){var e=this.link||(this.link=document.createElement("a"));return e.href=t, e.href=e.href, e.protocol+e.hostname+e.port}, d.prototype.getPromise=function(e){return this.timeout(e,this.options.imageTimeout).catch(function(){return new i(e.src).promise.then(function(t){e.image=t;})})}, d.prototype.get=function(e){var n=null;return this.images.some(function(t){return(n=t).src===e})?n:null}, d.prototype.fetch=function(t){return this.images=t.reduce(f(this.findBackgroundImage,this),this.findImages(t)), this.images.forEach(function(e,n){e.promise.then(function(){o("Succesfully loaded image #"+(n+1),e);},function(t){o("Failed loading image #"+(n+1),e,t);});}), this.ready=Promise.all(this.images.map(this.getPromise,this)), o("Finished searching images"), this}, d.prototype.timeout=function(n,r){var i,t=Promise.race([n.promise,new Promise(function(t,e){i=setTimeout(function(){o("Timed out loading image",n), e(n);},r);})]).then(function(t){return clearTimeout(i), t});return t.catch(function(){clearTimeout(i);}), t}, e.exports=d;},{"./dummyimagecontainer":5,"./framecontainer":8,"./imagecontainer":10,"./lineargradientcontainer":12,"./log":13,"./proxyimagecontainer":17,"./svgcontainer":23,"./svgnodecontainer":24,"./utils":26,"./webkitgradientcontainer":27}],12:[function(t,e,n){var i=t("./gradientcontainer"),o=t("./color");function r(t){i.apply(this,arguments), this.type=i.TYPES.LINEAR;var e=r.REGEXP_DIRECTION.test(t.args[0])||!i.REGEXP_COLORSTOP.test(t.args[0]);e?t.args[0].split(/\s+/).reverse().forEach(function(t,e){switch(t){case"left":this.x0=0, this.x1=1;break;case"top":this.y0=0, this.y1=1;break;case"right":this.x0=1, this.x1=0;break;case"bottom":this.y0=1, this.y1=0;break;case"to":var n=this.y0,r=this.x0;this.y0=this.y1, this.x0=this.x1, this.x1=r, this.y1=n;break;case"center":break;default:var i=.01*parseFloat(t,10);if(isNaN(i))break;0===e?(this.y0=i, this.y1=1-this.y0):(this.x0=i, this.x1=1-this.x0);}},this):(this.y0=0, this.y1=1), this.colorStops=t.args.slice(e?1:0).map(function(t){var e=t.match(i.REGEXP_COLORSTOP),n=+e[2],r=0===n?"%":e[3];return{color:new o(e[1]),stop:"%"===r?n/100:null}}), null===this.colorStops[0].stop&&(this.colorStops[0].stop=0), null===this.colorStops[this.colorStops.length-1].stop&&(this.colorStops[this.colorStops.length-1].stop=1), this.colorStops.forEach(function(n,r){null===n.stop&&this.colorStops.slice(r).some(function(t,e){return null!==t.stop&&(n.stop=(t.stop-this.colorStops[r-1].stop)/(e+1)+this.colorStops[r-1].stop, !0)},this);},this);}r.prototype=Object.create(i.prototype), r.REGEXP_DIRECTION=/^\s*(?:to|left|right|top|bottom|center|\d{1,3}(?:\.\d+)?%?)(?:\s|$)/i, e.exports=r;},{"./color":3,"./gradientcontainer":9}],13:[function(t,e,n){var r=function(){r.options.logging&&window.console&&window.console.log&&Function.prototype.bind.call(window.console.log,window.console).apply(window.console,[Date.now()-r.options.start+"ms","html2canvas:"].concat([].slice.call(arguments,0)));};r.options={logging:!1}, e.exports=r;},{}],14:[function(t,e,n){var o=t("./color"),r=t("./utils"),i=r.getBounds,a=r.parseBackgroun
201ds,s=r.offsetBounds;function h(t,e){this.node=t, this.parent=e, this.stack=null, this.bounds=null, this.borders=null, this.clip=[], this.backgroundClip=[], this.offsetBounds=null, this.visible=null, this.computedStyles=null, this.colors={}, this.styles={}, this.backgroundImages=null, this.transformData=null, this.transformMatrix=null, this.isPseudoElement=!1, this.opacity=null;}function c(t){return-1!==t.toString().indexOf("%")}function l(t){return t.replace("px","")}function u(t){return parseFloat(t)}h.prototype.cloneTo=function(t){t.visible=this.visible, t.borders=this.borders, t.bounds=this.bounds, t.clip=this.clip, t.backgroundClip=this.backgroundClip, t.computedStyles=this.computedStyles, t.styles=this.styles, t.backgroundImages=this.backgroundImages, t.opacity=this.opacity;}, h.prototype.getOpacity=function(){return null===this.opacity?this.opacity=this.cssFloat("opacity"):this.opacity}, h.prototype.assignStack=function(t){(this.stack=t).children.push(this);}, h.prototype.isElementVisible=function(){return this.node.nodeType===Node.TEXT_NODE?this.parent.visible:"none"!==this.css("display")&&"hidden"!==this.css("visibility")&&!this.node.hasAttribute("data-html2canvas-ignore")&&("INPUT"!==this.node.nodeName||"hidden"!==this.node.getAttribute("type"))}, h.prototype.css=function(t){return this.computedStyles||(this.computedStyles=this.isPseudoElement?this.parent.computedStyle(this.before?":before":":after"):this.computedStyle(null)), this.styles[t]||(this.styles[t]=this.computedStyles[t])}, h.prototype.prefixedCss=function(e){var n=this.css(e);return void 0===n&&["webkit","moz","ms","o"].some(function(t){return void 0!==(n=this.css(t+e.substr(0,1).toUpperCase()+e.substr(1)))},this), void 0===n?null:n}, h.prototype.computedStyle=function(t){return this.node.ownerDocument.defaultView.getComputedStyle(this.node,t)}, h.prototype.cssInt=function(t){var e=parseInt(this.css(t),10);return isNaN(e)?0:e}, h.prototype.color=function(t){return this.colors[t]||(this.colors[t]=new o(this.css(t)))}, h.prototype.cssFloat=function(t){var e=parseFloat(this.css(t));return isNaN(e)?0:e}, h.prototype.fontWeight=function(){var t=this.css("fontWeight");switch(parseInt(t,10)){case 401:t="bold";break;case 400:t="normal";}return t}, h.prototype.parseClip=function(){var t=this.css("clip").match(this.CLIP);return t?{top:parseInt(t[1],10),right:parseInt(t[2],10),bottom:parseInt(t[3],10),left:parseInt(t[4],10)}:null}, h.prototype.parseBackgroundImages=function(){return this.backgroundImages||(this.backgroundImages=a(this.css("backgroundImage")))}, h.prototype.cssList=function(t,e){var n=(this.css(t)||"").split(",");return 1===(n=(n=n[e||0]||n[0]||"auto").trim().split(" ")).length&&(n=[n[0],c(n[0])?"auto":n[0]]), n}, h.prototype.parseBackgroundSize=function(t,e,n){var r,i,o=this.cssList("backgroundSize",n);if(c(o[0]))r=t.width*parseFloat(o[0])/100;else{if(/contain|cover/.test(o[0])){var a=t.width/t.height,s=e.width/e.height;return a<s^"contain"===o[0]?{width:t.height*s,height:t.height}:{width:t.width,height:t.width/s}}r=parseInt(o[0],10);}return i="auto"===o[0]&&"auto"===o[1]?e.height:"auto"===o[1]?r/e.width*e.height:c(o[1])?t.height*parseFloat(o[1])/100:parseInt(o[1],10), "auto"===o[0]&&(r=i/e.height*e.width), {width:r,height:i}}, h.prototype.parseBackgroundPosition=function(t,e,n,r){var i,o,a=this.cssList("backgroundPosition",n);return i=c(a[0])?(t.width-(r||e).width)*(parseFloat(a[0])/100):parseInt(a[0],10), o="auto"===a[1]?i/e.width*e.height:c(a[1])?(t.height-(r||e).height)*parseFloat(a[1])/100:parseInt(a[1],10), "auto"===a[0]&&(i=o/e.height*e.width), {left:i,top:o}}, h.prototype.parseBackgroundRepeat=function(t){return this.cssList("backgroundRepeat",t)[0]}, h.prototype.parseTextShadows=function(){var t=this.css("textShadow"),e=[];if(t&&"none"!==t)for(var n=t.match(this.TEXT_SHADOW_PROPERTY),r=0;n&&r<n.length;r++){var i=n[r].match(this.TEXT_SHADOW_VALUES);e.push({color:new o(i[0]),offsetX:i[1]?parseFloat(i[1].replace("px","")):0,offsetY:i[2]?parseFloat(i[2].replace("px","")):0,blur:i[3]?i[3].replace("px",""):0});}return e}, h.prototype.parseTransform=function(){if(!this.transformData)if(this.hasTransform()){var t=this.parseBounds(),e=this.prefixedCss("transformOrigin").split(" ").map(l).map(u);e[0]+=t.left, e[1]+=t.top, this.transformData={origin:e,matrix:this.parseTransformMatrix()};}else this.transformData={origin:[0,0],matrix:[1,0,0,1,0,0]};return this.transformData}, h.prototype.parseTransformMatrix=function(){if(!this.transformMatrix){var t=this.prefixedCss("transform"),e=t?function(t){{if(t&&"matrix"===t[1])return t[2].split(",").map(function(t){return parseFloat(t.trim())});if(t&&"matrix3d"===t[1]){var e=t[2].split(",").map(function(t){return parseFloat(t.trim())});return[e[0],e[1],e[4],e[5],e[12],e[13]]}}}(t.match(this.MATRIX_PROPERTY)):null;this.transformMatrix=e||[1,0,0,1,0,0];}return this.transformMatrix}, h.prototype.parseBounds=function(){return this.bounds||(this.bounds=this.hasTransform()?s(this.node):i(this.node))}, h.prototype.hasTransform=function(){return"1,0,0,1,0,0"!==this.parseTransformMatrix().join(",")||this.parent&&this.parent.hasTransform()}, h.prototype.getValue=function(){var t,e,n=this.node.value||"";return"SELECT"===this.node.tagName?(t=this.node, n=(e=t.options[t.selectedIndex||0])&&e.text||""):"password"===this.node.type&&(n=Array(n.length+1).join("â¢")), 0===n.length?this.node.placeholder||"":n}, h.prototype.MATRIX_PROPERTY=/(matrix|matrix3d)\((.+)\)/, h.prototype.TEXT_SHADOW_PROPERTY=/((rgba|rgb)\([^\)]+\)(\s-?\d+px){0,})/g, h.prototype.TEXT_SHADOW_VALUES=/(-?\d+px)|(#.+)|(rgb\(.+\))|(rgba\(.+\))/g, h.prototype.CLIP=/^rect\((\d+)px,? (\d+)px,? (\d+)px,? (\d+)px\)$/, e.exports=h;},{"./color":3,"./utils":26}],15:[function(t,e,n){var s=t("./log"),h=t("punycode"),c=t("./nodecontainer"),f=t("./textcontainer"),d=t("./pseudoelementcontainer"),l=t("./fontmetrics"),u=t("./color"),p=t("./stackingcontext"),r=t("./utils"),g=r.bind,a=r.getBounds,m=r.parseBackgroun
201ds,w=r.offsetBounds;function i(t,e,n,r,i){s("Starting NodeParser"), this.renderer=e, this.options=i, this.range=null, this.support=n, this.renderQueue=[], this.stack=new p(!0,1,t.ownerDocument,null);var o=new c(t,null);if(i.background&&e.rectangle(0,0,e.width,e.height,new u(i.background)), t===t.ownerDocument.documentElement){var a=new c(o.color("backgroundColor").isTransparent()?t.ownerDocument.body:t.ownerDocument.documentElement,null);e.rectangle(0,0,e.width,e.height,a.color("backgroundColor"));}o.visibile=o.isElementVisible(), this.createPseudoHideStyles(t.ownerDocument), this.disableAnimations(t.ownerDocument), this.nodes=L([o].concat(this.getChildren(o)).filter(function(t){return t.visible=t.isElementVisible()}).map(this.getPseudoElements,this)), this.fontMetrics=new l, s("Fetched nodes, total:",this.nodes.length), s("Calculate overflow clips"), this.calculateOverflowClips(), s("Start fetching images"), this.images=r.fetch(this.nodes.filter(j)), this.ready=this.images.ready.then(g(function(){return s("Images loaded, starting parsing"), s("Creating stacking contexts"), this.createStackingContexts(), s("Sorting stacking contexts"), this.sortStackingContexts(this.stack), this.parse(this.stack), s("Render queue created with "+this.renderQueue.length+" items"), new Promise(g(function(t){i.async?"function"==typeof i.async?i.async.call(this,this.renderQueue,t):0<this.renderQueue.length?(this.renderIndex=0, this.asyncRenderer(this.renderQueue,t)):t():(this.renderQueue.forEach(this.paint,this), t());},this))},this));}function o(t){return t.parent&&t.parent.clip.length}function y(){}i.prototype.calculateOverflowClips=function(){this.nodes.forEach(function(t){if(j(t)){D(t)&&t.appendToDOM(), t.borders=this.parseBorders(t);var e="hidden"===t.css("overflow")?[t.borders.clip]:[],n=t.parseClip();n&&-1!==["absolute","fixed"].indexOf(t.css("position"))&&e.push([["rect",t.bounds.left+n.left,t.bounds.top+n.top,n.right-n.left,n.bottom-n.top]]), t.clip=o(t)?t.parent.clip.concat(e):e, t.backgroundClip="hidden"!==t.css("overflow")?t.clip.concat([t.borders.clip]):t.clip, D(t)&&t.cleanDOM();}else M(t)&&(t.clip=o(t)?t.parent.clip:[]);D(t)||(t.bounds=null);},this);}, i.prototype.asyncRenderer=function(t,e,n){n=n||Date.now(), this.paint(t[this.renderIndex++]), t.length===this.renderIndex?e():n+20>Date.now()?this.asyncRenderer(t,e,n):setTimeout(g(function(){this.asyncRenderer(t,e);},this),0);}, i.prototype.createPseudoHideStyles=function(t){this.createStyles(t,"."+d.prototype.PSEUDO_HIDE_ELEMENT_CLASS_BEFORE+':before { content: "" !important; display: none !important; }.'+d.prototype.PSEUDO_HIDE_ELEMENT_CLASS_AFTER+':after { content: "" !important; display: none !important; }');}, i.prototype.disableAnimations=function(t){this.createStyles(t,"* { -webkit-animation: none !important; -moz-animation: none !important; -o-animation: none !important; animation: none !important; -webkit-transition: none !important; -moz-transition: none !important; -o-transition: none !important; transition: none !important;}");}, i.prototype.createStyles=function(t,e){var n=t.createElement("style");n.innerHTML=e, t.body.appendChild(n);}, i.prototype.getPseudoElements=function(t){var e=[[t]];if(t.node.nodeType===Node.ELEMENT_NODE){var n=this.getPseudoElement(t,":before"),r=this.getPseudoElement(t,":after");n&&e.push(n), r&&e.push(r);}return L(e)}, i.prototype.getPseudoElement=function(t,e){var n=t.computedStyle(e);if(!n||!n.content||"none"===n.content||"-moz-alt-content"===n.content||"none"===n.display)return null;for(var r,i,o=(r=n.content, (i=r.substr(0,1))===r.substr(r.length-1)&&i.match(/'|"/)?r.substr(1,r.length-2):r),a="url"===o.substr(0,3),s=document.createElement(a?"img":"html2canvaspseudoelement"),h=new d(s,t,e),c=n.length-1;0<=c;c--){var l=n.item(c).replace(/(\-[a-z])/g,function(t){return t.toUpperCase().replace("-","")});s.style[l]=n[l];}if(s.className=d.prototype.PSEUDO_HIDE_ELEMENT_CLASS_BEFORE+" "+d.prototype.PSEUDO_HIDE_ELEMENT_CLASS_AFTER, a)return s.src=m(o)[0].args[0], [h];var u=document.createTextNode(o);return s.appendChild(u), [h,new f(u,h)]}, i.prototype.getChildren=function(n){return L([].filter.call(n.node.childNodes,q).map(function(t){var e=[t.nodeType===Node.TEXT_NODE?new f(t,n):new c(t,n)].filter(z);return t.nodeType===Node.ELEMENT_NODE&&e.length&&"TEXTAREA"!==t.tagName?e[0].isElementVisible()?e.concat(this.getChildren(e[0])):[]:e},this))}, i.prototype.newStackingContext=function(t,e){var n=new p(e,t.getOpacity(),t.node,t.parent);t.cloneTo(n), (e?n.getParentStack(this):n.parent.stack).contexts.push(n), t.stack=n;}, i.prototype.createStackingContexts=function(){this.nodes.forEac
vendor: 11,535 bytes, line 201
201h(function(t){var e,n;j(t)&&(this.isRootElement(t)||t.getOpacity()<1||(n=(e=t).css("position"), "auto"!==(-1!==["absolute","relative","fixed"].indexOf(n)?e.css("zIndex"):"auto"))||this.isBodyWithTransparentRoot(t)||t.hasTransform())?this.newStackingContext(t,!0):j(t)&&(O(t)&&T(t)||-1!==["inline-block","inline-table"].indexOf(t.css("display"))||B(t))?this.newStackingContext(t,!1):t.assignStack(t.parent.stack);},this);}, i.prototype.isBodyWithTransparentRoot=function(t){return"BODY"===t.node.nodeName&&t.parent.color("backgroundColor").isTransparent()}, i.prototype.isRootElement=function(t){return null===t.parent}, i.prototype.sortStackingContexts=function(t){var n;t.contexts.sort((n=t.contexts.slice(0), function(t,e){return t.cssInt("zIndex")+n.indexOf(t)/n.length-(e.cssInt("zIndex")+n.indexOf(e)/n.length)})), t.contexts.forEach(this.sortStackingContexts,this);}, i.prototype.parseTextBounds=function(a){return function(t,e,n){if("none"!==a.parent.css("textDecoration").substr(0,4)||0!==t.trim().length){if(this.support.rangeBounds&&!a.parent.hasTransform()){var r=n.slice(0,e).join("").length;return this.getRangeBounds(a.node,r,t.length)}if(a.node&&"string"==typeof a.node.data){var i=a.node.splitText(t.length),o=this.getWrapperBounds(a.node,a.parent.hasTransform());return a.node=i, o}}else this.support.rangeBounds&&!a.parent.hasTransform()||(a.node=a.node.splitText(t.length));return{}}}, i.prototype.getWrapperBounds=function(t,e){var n=t.ownerDocument.createElement("html2canvaswrapper"),r=t.parentNode,i=t.cloneNode(!0);n.appendChild(t.cloneNode(!0)), r.replaceChild(n,t);var o=e?w(n):a(n);return r.replaceChild(i,n), o}, i.prototype.getRangeBounds=function(t,e,n){var r=this.range||(this.range=t.ownerDocument.createRange());return r.setStart(t,e), r.setEnd(t,e+n), r.getBoundingClientRect()}, i.prototype.parse=function(t){var e=t.contexts.filter(I),n=t.children.filter(j),r=n.filter(R(B)),i=r.filter(R(O)).filter(R(F)),o=n.filter(R(O)).filter(B),a=r.filter(R(O)).filter(F),s=t.contexts.concat(r.filter(O)).filter(T),h=t.children.filter(M).filter(E),c=t.contexts.filter(C);e.concat(i).concat(o).concat(a).concat(s).concat(h).concat(c).forEach(function(t){this.renderQueue.push(t), P(t)&&(this.parse(t), this.renderQueue.push(new y));},this);}, i.prototype.paint=function(t){try{t instanceof y?this.renderer.ctx.restore():M(t)?(D(t.parent)&&t.parent.appendToDOM(), this.paintText(t), D(t.parent)&&t.parent.cleanDOM()):this.paintNode(t);}catch(t){if(s(t), this.options.strict)throw t}}, i.prototype.paintNode=function(t){P(t)&&(this.renderer.setOpacity(t.opacity), this.renderer.ctx.save(), t.hasTransform()&&this.renderer.setTransform(t.parseTransform())), "INPUT"===t.node.nodeName&&"checkbox"===t.node.type?this.paintCheckbox(t):"INPUT"===t.node.nodeName&&"radio"===t.node.type?this.paintRadio(t):this.paintElement(t);}, i.prototype.paintElement=function(n){var r=n.parseBounds();this.renderer.clip(n.backgroundClip,function(){this.renderer.renderBackground(n,r,n.borders.borders.map(N));},this), this.renderer.clip(n.clip,function(){this.renderer.renderBorders(n.borders.borders);},this), this.renderer.clip(n.backgroundClip,function(){switch(n.node.nodeName){case"svg":case"IFRAME":var t=this.images.get(n.node);t?this.renderer.renderImage(n,r,n.borders,t):s("Error loading <"+n.node.nodeName+">",n.node);break;case"IMG":var e=this.images.get(n.node.src);e?this.renderer.renderImage(n,r,n.borders,e):s("Error loading <img>",n.node.src);break;case"CANVAS":this.renderer.renderImage(n,r,n.borders,{image:n.node});break;case"SELECT":case"INPUT":case"TEXTAREA":this.paintFormValue(n);}},this);}, i.prototype.paintCheckbox=function(t){var e=t.parseBounds(),n=Math.min(e.width,e.height),r={width:n-1,height:n-1,top:e.top,left:e.left},i=[3,3],o=[i,i,i,i],a=[1,1,1,1].map(function(t){return{color:new u("#A5A5A5"),width:t}}),s=S(r,o,a);this.renderer.clip(t.backgroundClip,function(){this.renderer.rectangle(r.left+1,r.top+1,r.width-2,r.height-2,new u("#DEDEDE")), this.renderer.renderBorders(b(a,r,s,o)), t.node.checked&&(this.renderer.font(new u("#424242"),"normal","normal","bold",n-3+"px","arial"), this.renderer.text("â",r.left+n/6,r.top+n-1));},this);}, i.prototype.paintRadio=function(t){var e=t.parseBounds(),n=Math.min(e.width,e.height)-2;this.renderer.clip(t.backgroundClip,function(){this.renderer.circleStroke(e.left+1,e.top+1,n,new u("#DEDEDE"),1,new u("#A5A5A5")), t.node.checked&&this.renderer.circle(Math.ceil(e.left+n/4)+1,Math.ceil(e.top+n/4)+1,Math.floor(n/2),new u("#424242"));},this);}, i.prototype.paintFormValue=function(e){var t=e.getValue();if(0<t.length){var n=e.node.ownerDocument,r=n.createElement("html2canvaswrapper");["lineHeight","textAlign","fontFamily","fontWeight","fontSize","color","paddingLeft","paddingTop","paddingRight","paddingBottom","width","height","borderLeftStyle","borderTopStyle","borderLeftWidth","borderTopWidth","boxSizing","whiteSpace","wordWrap"].forEach(function(t){try{r.style[t]=e.css(t);}catch(t){s("html2canvas: Parse: Exception caught in renderFormValue: "+t.message);}});var i=e.parseBounds();r.style.position="fixed", r.style.left=i.left+"px", r.style.top=i.top+"px", r.textContent=t, n.body.appendChild(r), this.paintText(new f(r.firstChild,e)), n.body.removeChild(r);}}, i.prototype.paintText=function(n){n.applyTextTransform();var t,e=h.ucs2.decode(n.node.data),r=this.options.letterRendering&&!/^(normal|none|0px)$/.test(n.parent.css("letterSpacing"))||(t=n.node.data, /[^\u0000-\u00ff]/.test(t))?e.map(function(t){return h.ucs2.encode([t])}):function(t){var e,n=[],r=0,i=!1;for(;t.length;)o=t[r], -1!==[32,13,10,9,45].indexOf(o)===i?((e=t.splice(0,r)).length&&n.push(h.ucs2.encode(e)), i=!i, r=0):r++, r>=t.length&&(e=t.splice(0,r)).length&&n.push(h.ucs2.encode(e));var o;return n}(e),i=n.parent.fontWeight(),o=n.parent.css("fontSize"),a=n.parent.css("fontFamily"),s=n.parent.parseTextShadows();this.renderer.font(n.parent.color("color"),n.parent.css("fontStyle"),n.parent.css("fontVariant"),i,o,a), s.length?this.renderer.fontShadow(s[0].color,s[0].offsetX,s[0].offsetY,s[0].blur):this.renderer.clearShadow(), this.renderer.clip(n.parent.clip,function(){r.map(this.parseTextBounds(n),this).forEach(function(t,e){t&&!1===/^\s*$/.test(r[e])&&(this.renderer.text(r[e],t.left,t.bottom), this.renderTextDecoration(n.parent,t,this.fontMetrics.getMetrics(a,o)));},this);},this);}, i.prototype.renderTextDecoration=function(t,e,n){switch(t.css("textDecoration").split(" ")[0]){case"underline":this.renderer.rectangle(e.left,Math.round(e.top+n.baseline+n.lineWidth),e.width,1,t.color("color"));break;case"overline":this.renderer.rectangle(e.left,Math.round(e.top),e.width,1,t.color("color"));break;case"line-through":this.renderer.rectangle(e.left,Math.ceil(e.top+n.middle+n.lineWidth),e.width,1,t.color("color"));}};var v={inset:[["darken",.6],["darken",.1],["darken",.1],["darken",.6]]};function b(a,s,h,c){return a.map(function(t,e){if(0<t.width){var n=s.left,r=s.top,i=s.width,o=s.height-a[2].width;switch(e){case 0:o=a[0].width, t.args=_({c1:[n,r],c2:[n+i,r],c3:[n+i-a[1].width,r+o],c4:[n+a[3].width,r+o]},c[0],c[1],h.topLeftOuter,h.topLeftInner,h.topRightOuter,h.topRightInner);break;case 1:n=s.left+s.width-a[1].width, i=a[1].width, t.args=_({c1:[n+i,r],c2:[n+i,r+o+a[2].width],c3:[n,r+o],c4:[n,r+a[0].width]},c[1],c[2],h.topRightOuter,h.topRightInner,h.bottomRightOuter,h.bottomRightInner);break;case 2:r=r+s.height-a[2].width, o=a[2].width, t.args=_({c1:[n+i,r+o],c2:[n,r+o],c3:[n+a[3].width,r],c4:[n+i-a[3].width,r]},c[2],c[3],h.bottomRightOuter,h.bottomRightInner,h.bottomLeftOuter,h.bottomLeftInner);break;case 3:i=a[3].width, t.args=_({c1:[n,r+o+a[2].width],c2:[n,r],c3:[n+i,r+a[0].width],c4:[n+i,r+o]},c[3],c[0],h.bottomLeftOuter,h.bottomLeftInner,h.topLeftOuter,h.topLeftInner);}}return t})}function x(t,e,n,r){var i=(Math.sqrt(2)-1)/3*4,o=n*i,a=r*i,s=t+n,h=e+r;return{topLeft:k({x:t,y:h},{x:t,y:h-a},{x:s-o,y:e},{x:s,y:e}),topRight:k({x:t,y:e},{x:t+o,y:e},{x:s,y:h-a},{x:s,y:h}),bottomRight:k({x:s,y:e},{x:s,y:e+a},{x:t+o,y:h},{x:t,y:h}),bottomLeft:k({x:s,y:h},{x:s-o,y:h},{x:t,y:e+a},{x:t,y:e})}}function S(t,e,n){var r=t.left,i=t.top,o=t.width,a=t.height,s=e[0][0]<o/2?e[0][0]:o/2,h=e[0][1]<a/2?e[0][1]:a/2,c=e[1][0]<o/2?e[1][0]:o/2,l=e[1][1]<a/2?e[1][1]:a/2,u=e[2][0]<o/2?e[2][0]:o/2,f=e[2][1]<a/2?e[2][1]:a/2,d=e[3][0]<o/2?e[3][0]:o/2,p=e[3][1]<a/2?e[3][1]:a/2,g=o-c,m=a-f,w=o-u,y=a-p;return{topLeftOuter:x(r,i,s,h).topLeft.subdivide(.5),topLeftInner:x(r+n[3].width,i+n[0].width,Math.max(0,s-n[3].width),Math.max(0,h-n[0].width)).topLeft.subdivide(.5),topRightOuter:x(r+g,i,c,l).topRight.subdivide(.5),topRightInner:x(r+Math.min(g,o+n[3].width),i+n[0].width,g>o+n[3].width?0:c-n[3].width,l-n[0].width).topRight.subdivide(.5),bottomRightOuter:x(r+w,i+m,u,f).bottomRight.subdivide(.5),bottomRightInner:x(r+Math.min(w,o-n[3].width),i+Math.min(m,a+n[0].width),Math.max(0,u-n[1].width),f-n[2].width).bottomRight.subdivide(.5),bottomLeftOuter:x(r,i+y,d,p).bottomLeft.subdivide(.5),bottomLeftInner:x(r+n[3].width,i+y,Math.max(0,d-n[3].width),p-n[2].width).bottomLeft.subdivide(.5)}}function k(s,h,c,l){var u=function(t,e,n){return{x:t.x+(e.x-t.x)*n,y:t.y+(e.y-t.y)*n}};return{start:s,startControl:h,endControl:c,end:l,subdivide:function(t){var e=u(s,h,t),n=u(h,c,t),r=u(c,l,t),i=u(e,n,t),o=u(n,r,t),a=u(i,o,t);return[k(s,e,i,a),k(a,o,r,l)]},curveTo:function(t){t.push(["bezierCurve",h.x,h.y,c.x,c.y,l.x,l.y]);},curveToReversed:function(t){t.push(["bezierCurve",c.x,c.y,h.x,h.y,s.x,s.y]);}}}function _(t,e,n,r,i,o,a){var s=[];return 0<e[0]||0<e[1]?(s.push(["line",r[1].start.x,r[1].start.y]), r[1].curveTo(s)):s.push(["line",t.c1[0],t.c1[1]]), 0<n[0]||0<n[1]?(s.push(["line",o[0].start.x,o[0].start.y]), o[0].curveTo(s), s.push(["line",a[0].end.x,a[0].end.y]), a[0].curveToReversed(s)):(s.push(["line",t.c2[0],t.c2[1]]), s.push(["line",t.c3[0],t.c3[1]])), 0<e[0]||0<e[1]?(s.push(["line",i[1].end.x,i[1].end.y]), i[1].curveToReversed(s)):s.push(["line",t.c4[0],t.c4[1]]), s}function A(t,e,n,r,i,o,a){0<e[0]||0<e[1]?(t.push(["line",r[0].start.x,r[0].start.y]), r[0].curveTo(t), r[1].curveTo(t)):t.push(["line",o,a]), (0<n[0]||0<n[1])&&t.push(["line",i[0].start.x,i[0].start.y]);}function I(t){return t.cssInt("zIndex")<0}function C(t){return 0<t.cssInt("zIndex")}function T(t){return 0===t.cssInt("zIndex")}function F(t){return-1!==["inline","inline-block","inline-table"].indexOf(t.css("display"))}function P(t){return t instanceof p}function E(t){return 0<t.node.data.trim().length}function q(t){return t.nodeType===Node.TEXT_NODE||t.nodeType===Node.ELEMENT_NODE}function O(t){return"static"!==t.css("position")}function B(t){return"none"!==t.css("float")}function R(t){var e=this;return function(){return!t.apply(e,arguments)}}function j(t){return t.node.nodeType===Node.ELEMENT_NODE}function D(t){return!0===t.isPseudoElement}function M(t){return t.node.nodeType===Node.TEXT_NODE}function U(t){return parseInt(t,10)}function N(t){return t.width}function z(t){return t.node.nodeType!==Node.ELEMENT_NODE||-1===["SCRIPT","HEAD","TITLE","OBJECT","BR","OPTION"].indexOf(t.node.nodeName)}function L(t){return[].concat.apply([],t)}i.prototype.parseBorders=function(o){var r,t=o.parseBounds(),e=(r=o, ["TopLeft","TopRight","BottomRight","BottomLeft"].map(function(t){var e=r.css("border"+t+"Radius"),n=e.split(" ");return n.length<=1&&(n[1]=n[0]), n.map(U)})),n=["Top","Right","Bottom","Left"].map(function(t,e){var n=o.css("border"+t+"Style"),r=o.color("border"+t+"Color");"inset"===n&&r.isBlack()&&(r=new u([255,255,255,r.a]));var i=v[n]?v[n][e]:null;
201return{width:o.cssInt("border"+t+"Width"),color:i?r[i[0]](i[1]):r,args:null}}),i=S(t,e,n);return{clip:this.parseBackgroundClip(o,i,n,e,t),borders:b(n,t,i,e)}}, i.prototype.parseBackgroundClip=function(t,e,n,r,i){var o=[];switch(t.css("backgroundClip")){case"content-box":case"padding-box":A(o,r[0],r[1],e.topLeftInner,e.topRightInner,i.left+n[3].width,i.top+n[0].width), A(o,r[1],r[2],e.topRightInner,e.bottomRightInner,i.left+i.width-n[1].width,i.top+n[0].width), A(o,r[2],r[3],e.bottomRightInner,e.bottomLeftInner,i.left+i.width-n[1].width,i.top+i.height-n[2].width), A(o,r[3],r[0],e.bottomLeftInner,e.topLeftInner,i.left+n[3].width,i.top+i.height-n[2].width);break;default:A(o,r[0],r[1],e.topLeftOuter,e.topRightOuter,i.left,i.top), A(o,r[1],r[2],e.topRightOuter,e.bottomRightOuter,i.left+i.width,i.top), A(o,r[2],r[3],e.bottomRightOuter,e.bottomLeftOuter,i.left+i.width,i.top+i.height), A(o,r[3],r[0],e.bottomLeftOuter,e.topLeftOuter,i.left,i.top+i.height);}return o}, e.exports=i;},{"./color":3,"./fontmetrics":7,"./log":13,"./nodecontainer":14,"./pseudoelementcontainer":18,"./stackingcontext":21,"./textcontainer":25,"./utils":26,punycode:1}],16:[function(t,e,n){var a=t("./xhr"),r=t("./utils"),s=t("./log"),h=t("./clone"),c=r.decode64;function l(t,e,n){var r="withCredentials"in new XMLHttpRequest;if(!e)return Promise.reject("No proxy configured");var i=f(r),o=d(e,t,i);return r?a(o):u(n,o,i).then(function(t){return c(t.content)})}var i=0;function u(i,o,a){return new Promise(function(e,n){var t=i.createElement("script"),r=function(){delete window.html2canvas.proxy[a], i.body.removeChild(t);};window.html2canvas.proxy[a]=function(t){r(), e(t);}, t.src=o, t.onerror=function(t){r(), n(t);}, i.body.appendChild(t);})}function f(t){return t?"":"html2canvas_"+Date.now()+"_"+ ++i+"_"+Math.round(1e5*Math.random())}function d(t,e,n){return t+"?url="+encodeURIComponent(e)+(n.length?"&callback=html2canvas.proxy."+n:"")}n.Proxy=l, n.ProxyURL=function(t,e,n){var r="crossOrigin"in new Image,i=f(r),o=d(e,t,i);return r?Promise.resolve(o):u(n,o,i).then(function(t){return"data:"+t.type+";base64,"+t.content})}, n.loadUrlDocument=function(t,e,n,r,i,o){return new l(t,e,window.document).then((a=t, function(e){var n,t=new DOMParser;try{n=t.parseFromString(e,"text/html");}catch(t){s("DOMParser not supported, falling back to createHTMLDocument"), n=document.implementation.createHTMLDocument("");try{n.open(), n.write(e), n.close();}catch(t){s("createHTMLDocument write not supported, falling back to document.body.innerHTML"), n.body.innerHTML=e;}}var r=n.querySelector("base");if(!r||!r.href.host){var i=n.createElement("base");i.href=a, n.head.insertBefore(i,n.head.firstChild);}return n})).then(function(t){return h(t,n,r,i,o,0,0)});var a;};},{"./clone":2,"./log":13,"./utils":26,"./xhr":28}],17:[function(t,e,n){var o=t("./proxy").ProxyURL;e.exports=function(n,r){var t=document.createElement("a");t.href=n, n=t.href, this.src=n, this.image=new Image;var i=this;this.promise=new Promise(function(t,e){i.image.crossOrigin="Anonymous", i.image.onload=t, i.image.onerror=e, new o(n,r,document).then(function(t){i.image.src=t;}).catch(e);});};},{"./proxy":16}],18:[function(t,e,n){var r=t("./nodecontainer");function i(t,e,n){r.call(this,t,e), this.isPseudoElement=!0, this.before=":before"===n;}i.prototype.cloneTo=function(t){i.prototype.cloneTo.call(this,t), t.isPseudoElement=!0, t.before=this.before;}, (i.prototype=Object.create(r.prototype)).appendToDOM=function(){this.before?this.parent.node.insertBefore(this.node,this.parent.node.firstChild):this.parent.node.appendChild(this.node), this.parent.node.className+=" "+this.getHideClass();}, i.prototype.cleanDOM=function(){this.node.parentNode.removeChild(this.node), this.parent.node.className=this.parent.node.className.replace(this.getHideClass(),"");}, i.prototype.getHideClass=function(){return this["PSEUDO_HIDE_ELEMENT_CLASS_"+(this.before?"BEFORE":"AFTER")]}, i.prototype.PSEUDO_HIDE_ELEMENT_CLASS_BEFORE="___html2canvas___pseudoelement_before", i.prototype.PSEUDO_HIDE_ELEMENT_CLASS_AFTER="___html2canvas___pseudoelement_after", e.exports=i;},{"./nodecontainer":14}],19:[function(t,e,n){var h=t("./log");function r(t,e,n,r,i){this.width=t, this.height=e, this.images=n, this.options=r, this.document=i;}r.prototype.renderImage=function(t,e,n,r){var i=t.cssInt("paddingLeft"),o=t.cssInt("paddingTop"),a=t.cssInt("paddingRight"),s=t.cssInt("paddingBottom"),h=n.borders,c=e.width-(h[1].width+h[3].width+i+a),l=e.height-(h[0].width+h[2].width+o+s);this.drawImage(r,0,0,r.image.width||c,r.image.height||l,e.left+i+h[3].width,e.top+o+h[0].width,c,l);}
201, r.prototype.renderBackground=function(t,e,n){0<e.height&&0<e.width&&(this.renderBackgroundColor(t,e), this.renderBackgroundImage(t,e,n));}, r.prototype.renderBackgroundColor=function(t,e){var n=t.color("backgroundColor");n.isTransparent()||this.rectangle(e.left,e.top,e.width,e.height,n);}, r.prototype.renderBorders=function(t){t.forEach(this.renderBorder,this);}, r.prototype.renderBorder=function(t){t.color.isTransparent()||null===t.args||this.drawShape(t.args,t.color);}, r.prototype.renderBackgroundImage=function(o,a,s){o.parseBackgroundImages().reverse().forEach(function(t,e,n){switch(t.method){case"url":var r=this.images.get(t.args[0]);r?this.renderBackgroundRepeating(o,a,r,n.length-(e+1),s):h("Error loading background-image",t.args[0]);break;case"linear-gradient":case"gradient":var i=this.images.get(t.value);i?this.renderBackgroundGradient(i,a,s):h("Error loading background-image",t.args[0]);break;case"none":break;default:h("Unknown background-image type",t.args[0]);}},this);}, r.prototype.renderBackgroundRepeating=function(t,e,n,r,i){var o=t.parseBackgroundSize(e,n.image,r),a=t.parseBackgroundPosition(e,n.image,r,o);switch(t.parseBackgroundRepeat(r)){case"repeat-x":case"repeat no-repeat":this.backgroundRepeatShape(n,a,o,e,e.left+i[3],e.top+a.top+i[0],99999,o.height,i);break;case"repeat-y":case"no-repeat repeat":this.backgroundRepeatShape(n,a,o,e,e.left+a.left+i[3],e.top+i[0],o.width,99999,i);break;case"no-repeat":this.backgroundRepeatShape(n,a,o,e,e.left+a.left+i[3],e.top+a.top+i[0],o.width,o.height,i);break;default:this.renderBackgroundRepeat(n,a,o,{top:e.top,left:e.left},i[3],i[0]);}}, e.exports=r;},{"./log":13}],20:[function(t,e,n){var r=t("../renderer"),i=t("../lineargradientcontainer"),o=t("../log");function a(t,e){r.apply(this,arguments), this.canvas=this.options.canvas||this.document.createElement("canvas"), this.options.canvas||(this.canvas.width=t, this.canvas.height=e), this.ctx=this.canvas.getContext("2d"), this.taintCtx=this.document.createElement("canvas").getContext("2d"), this.ctx.textBaseline="bottom", this.variables={}, o("Initialized CanvasRenderer with size",t,"x",e);}function s(t){return 0<t.length}(a.prototype=Object.create(r.prototype)).setFillStyle=function(t){return this.ctx.fillStyle="object"==typeof t&&t.isColor?t.toString():t, this.ctx}, a.prototype.rectangle=function(t,e,n,r,i){this.setFillStyle(i).fillRect(t,e,n,r);}, a.prototype.circle=function(t,e,n,r){this.setFillStyle(r), this.ctx.beginPath(), this.ctx.arc(t+n/2,e+n/2,n/2,0,2*Math.PI,!0), this.ctx.closePath(), this.ctx.fill();}, a.prototype.circleStroke=function(t,e,n,r,i,o){this.circle(t,e,n,r), this.ctx.strokeStyle=o.toString(), this.ctx.stroke();}, a.prototype.drawShape=function(t,e){this.shape(t), this.setFillStyle(e).fill();}, a.prototype.taints=function(e){if(null===e.tainted){this.taintCtx.drawImage(e.image,0,0);try{this.taintCtx.getImageData(0,0,1,1), e.tainted=!1;}catch(t){this.taintCtx=document.createElement("canvas").getContext("2d"), e.tainted=!0;}}return e.tainted}, a.prototype.drawImage=function(t,e,n,r,i,o,a,s,h){this.taints(t)&&!this.options.allowTaint||this.ctx.drawImage(t.image,e,n,r,i,o,a,s,h);}, a.prototype.clip=function(t,e,n){this.ctx.save(), t.filter(s).forEach(function(t){this.shape(t).clip();},this), e.call(n), this.ctx.restore();}, a.prototype.shape=function(t){return this.ctx.beginPath(), t.forEach(function(t,e){"rect"===t[0]?this.ctx.rect.apply(this.ctx,t.slice(1)):this.ctx[0===e?"moveTo":t[0]+"To"].apply(this.ctx,t.slice(1));},this), this.ctx.closePath(), this.ctx}, a.prototype.font=function(t,e,n,r,i,o){this.setFillStyle(t).font=[e,n,r,i,o].join(" ").split(",")[0];}, a.prototype.fontShadow=function(t,e,n,r){this.setVariable("shadowColor",t.toString()).setVariable("shadowOffsetY",e).setVariable("shadowOffsetX",n).setVariable("shadowBlur",r);}, a.prototype.clearShadow=function(){this.setVariable("shadowColor","rgba(0,0,0,0)");}, a.prototype.setOpacity=function(t){this.ctx.globalAlpha=t;}, a.prototype.setTransform=function(t){this.ctx.translate(t.origin[0],t.origin[1]), this.ctx.transform.apply(this.ctx,t.matrix), this.ctx.translate(-t.origin[0],-t.origin[1]);}, a.prototype.setVariable=function(t,e){return this.variables[t]!==e&&(this.variables[t]=this.ctx[t]=e), this}, a.prototype.text=function(t,e,n){this.ctx.fillText(t,e,n);}, a.prototype.backgroundRepeatShape=function(t,e,n,r,i,o,a,s,h){var c=[["line",Math.round(i),Math.round(o)],["line",Math.round(i+a),Math.round(o)],["line",Math.round(i+a),Math.round(s+o)],["line",Math.round(i),Math.round(s+o)]];
201this.clip([c],function(){this.renderBackgroundRepeat(t,e,n,r,h[3],h[0]);},this);}, a.prototype.renderBackgroundRepeat=function(t,e,n,r,i,o){var a=Math.round(r.left+e.left+i),s=Math.round(r.top+e.top+o);this.setFillStyle(this.ctx.createPattern(this.resizeImage(t,n),"repeat")), this.ctx.translate(a,s), this.ctx.fill(), this.ctx.translate(-a,-s);}, a.prototype.renderBackgroundGradient=function(t,e){if(t instanceof i){var n=this.ctx.createLinearGradient(e.left+e.width*t.x0,e.top+e.height*t.y0,e.left+e.width*t.x1,e.top+e.height*t.y1);t.colorStops.forEach(function(t){n.addColorStop(t.stop,t.color.toString());}), this.rectangle(e.left,e.top,e.width,e.height,n);}}, a.prototype.resizeImage=function(t,e){var n=t.image;if(n.width===e.width&&n.height===e.height)return n;var r=document.createElement("canvas");return r.width=e.width, r.height=e.height, r.getContext("2d").drawImage(n,0,0,n.width,n.height,0,0,e.width,e.height), r}, e.exports=a;},{"../lineargradientcontainer":12,"../log":13,"../renderer":19}],21:[function(t,e,n){var i=t("./nodecontainer");function r(t,e,n,r){i.call(this,n,r), this.ownStacking=t, this.contexts=[], this.children=[], this.opacity=(this.parent?this.parent.stack.opacity:1)*e;}(r.prototype=Object.create(i.prototype)).getParentStack=function(t){var e=this.parent?this.parent.stack:null;return e?e.ownStacking?e:e.getParentStack(t):t.stack}, e.exports=r;},{"./nodecontainer":14}],22:[function(t,e,n){function r(t){this.rangeBounds=this.testRangeBounds(t), this.cors=this.testCORS(), this.svg=this.testSVG();}r.prototype.testRangeBounds=function(t){var e,n,r=!1;return t.createRange&&(e=t.createRange()).getBoundingClientRect&&((n=t.createElement("boundtest")).style.height="123px", n.style.display="block", t.body.appendChild(n), e.selectNode(n), 123===e.getBoundingClientRect().height&&(r=!0), t.body.removeChild(n)), r}, r.prototype.testCORS=function(){return void 0!==(new Image).crossOrigin}, r.prototype.testSVG=function(){var t=new Image,e=document.createElement("canvas"),n=e.getContext("2d");t.src="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>";try{n.drawImage(t,0,0), e.toDataURL();}catch(t){return!1}return!0}, e.exports=r;},{}],23:[function(t,e,n){var r=t("./xhr"),i=t("./utils").decode64;function o(t){this.src=t, this.image=null;var n=this;this.promise=this.hasFabric().then(function(){return n.isInline(t)?Promise.resolve(n.inlineFormatting(t)):r(t)}).then(function(e){return new Promise(function(t){window.html2canvas.svg.fabric.loadSVGFromString(e,n.createCanvas.call(n,t));})});}o.prototype.hasFabric=function(){return window.html2canvas.svg&&window.html2canvas.svg.fabric?Promise.resolve():Promise.reject(new Error("html2canvas.svg.js is not loaded, cannot render svg"))}, o.prototype.inlineFormatting=function(t){return/^data:image\/svg\+xml;base64,/.test(t)?this.decode64(this.removeContentType(t)):this.removeContentType(t)}, o.prototype.removeContentType=function(t){return t.replace(/^data:image\/svg\+xml(;base64)?,/,"")}, o.prototype.isInline=function(t){return/^data:image\/svg\+xml/i.test(t)}, o.prototype.createCanvas=function(r){var i=this;return function(t,e){var n=new window.html2canvas.svg.fabric.StaticCanvas("c");i.image=n.lowerCanvasEl, n.setWidth(e.width).setHeight(e.height).add(window.html2canvas.svg.fabric.util.groupSVGElements(t,e)).renderAll(), r(n.lowerCanvasEl);}}, o.prototype.decode64=function(t){return"function"==typeof window.atob?window.atob(t):i(t)}, e.exports=o;},{"./utils":26,"./xhr":28}],24:[function(t,e,n){var r=t("./svgcontainer");function i(n,t){this.src=n, this.image=null;var r=this;this.promise=t?new Promise(function(t,e){r.image=new Image, r.image.onload=t, r.image.onerror=e, r.image.src="data:image/svg+xml,"+(new XMLSerializer).serializeToString(n), !0===r.image.complete&&t(r.image);}):this.hasFabric().then(function(){return new Promise(function(t){window.html2canvas.svg.fabric.parseSVGDocument(n,r.createCanvas.call(r,t));})});}i.prototype=Object.create(r.prototype), e.exports=i;},{"./svgcontainer":23}],25:[function(t,e,n){var r=t("./nodecontainer");function i(t,e){r.call(this,t,e);}function o(t,e,n){if(0<t.length)return e+n.toUpperCase()}(i.prototype=Object.create(r.prototype)).applyTextTransform=function(){this.node.data=this.transform(this.parent.css("textTransform"));}, i.prototype.transform=function(t){var e=this.node.data;switch(t){case"lowercase":return e.toLowerCase();case"capitalize":return e.replace(/(^|\s|:|-|\(|\))([a-z])/g,o);case"uppercase":return e.toUpperCase();default:return e}}, e.exports=i;},{"./nodecontainer":14}],26:[function(t,e,n){n.smallImage=function(){return"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"}, n.bind=function(t,e){return function(){return t.apply(e,arguments)}}, n.decode64=function(t){var e,n,r,i,o,a,s,h="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
201+/",c=t.length,l="";for(e=0;e<c;e+=4)o=h.indexOf(t[e])<<2|(n=h.indexOf(t[e+1]))>>4, a=(15&n)<<4|(r=h.indexOf(t[e+2]))>>2, s=(3&r)<<6|(i=h.indexOf(t[e+3])), l+=64===r?String.fromCharCode(o):64===i||-1===i?String.fromCharCode(o,a):String.fromCharCode(o,a,s);return l}, n.getBounds=function(t){if(t.getBoundingClientRect){var e=t.getBoundingClientRect(),n=null==t.offsetWidth?e.width:t.offsetWidth;return{top:e.top,bottom:e.bottom||e.top+e.height,right:e.left+n,left:e.left,width:n,height:null==t.offsetHeight?e.height:t.offsetHeight}}return{}}, n.offsetBounds=function(t){var e=t.offsetParent?n.offsetBounds(t.offsetParent):{top:0,left:0};return{top:t.offsetTop+e.top,bottom:t.offsetTop+t.offsetHeight+e.top,right:t.offsetLeft+e.left+t.offsetWidth,left:t.offsetLeft+e.left,width:t.offsetWidth,height:t.offsetHeight}}, n.parseBackgrounds=function(t){var e,n,r,i,o,a,s,h=[],c=0,l=0,u=function(){e&&('"'===n.substr(0,1)&&(n=n.substr(1,n.length-2)), n&&s.push(n), "-"===e.substr(0,1)&&0<(i=e.indexOf("-",1)+1)&&(r=e.substr(0,i), e=e.substr(i)), h.push({prefix:r,method:e.toLowerCase(),value:o,args:s,image:null})), s=[], e=r=n=o="";};return s=[], e=r=n=o="", t.split("").forEach(function(t){if(!(0===c&&-1<" \r\n\t".indexOf(t))){switch(t){case'"':a?a===t&&(a=null):a=t;break;case"(":if(a)break;if(0===c)return c=1, void(o+=t);l++;break;case")":if(a)break;if(1===c){if(0===l)return c=0, o+=t, void u();l--;}break;case",":if(a)break;if(0===c)return void u();if(1===c&&0===l&&!e.match(/^url$/i))return s.push(n), n="", void(o+=t)}o+=t, 0===c?e+=t:n+=t;}}), u(), h};},{}],27:[function(t,e,n){var r=t("./gradientcontainer");function i(t){r.apply(this,arguments), this.type="linear"===t.args[0]?r.TYPES.LINEAR:r.TYPES.RADIAL;}i.prototype=Object.create(r.prototype), e.exports=i;},{"./gradientcontainer":9}],28:[function(t,e,n){e.exports=function(r){return new Promise(function(t,e){var n=new XMLHttpRequest;n.open("GET",r), n.onload=function(){200===n.status?t(n.responseText):e(new Error(n.statusText));}, n.onerror=function(){e(new Error("Network Error"));}, n.send();})};},{}]},{},[4])(4)}), function(t){var n="+".charCodeAt(0),r="/".charCodeAt(0),i="0".charCodeAt(0),o="a".charCodeAt(0),a="A".charCodeAt(0),s="-".charCodeAt(0),h="_".charCodeAt(0),l=function(t){var e=t.charCodeAt(0);return e===n||e===s?62:e===r||e===h?63:e<i?-1:e<i+10?e-i+26+26:e<a+26?e-a:e<o+26?e-o+26:void 0};t.API.TTFFont=function(){function i(t,e,n){var r;if(this.rawData=t, r=this.contents=new X(t), this.contents.pos=4, "ttcf"===r.readString(4)){if(!e)throw new Error("Mu
201st specify a font name for TTC files.");throw new Error("Font "+e+" not found in TTC file.")}r.pos=0, this.parse(), this.subset=new T(this), this.registerTTF();}return i.open=function(t,e,n,r){return new i(function(t){var e,n,r,i,o,a;if(0<t.length%4)throw new Error("Invalid string. Length must be a multiple of 4");var s=t.length;o="="===t.charAt(s-2)?2:"="===t.charAt(s-1)?1:0, a=new Uint8Array(3*t.length/4-o), r=0<o?t.length-4:t.length;var h=0;function c(t){a[h++]=t;}for(n=e=0;e<r;e+=4, n+=3)c((16711680&(i=l(t.charAt(e))<<18|l(t.charAt(e+1))<<12|l(t.charAt(e+2))<<6|l(t.charAt(e+3))))>>16), c((65280&i)>>8), c(255&i);return 2===o?c(255&(i=l(t.charAt(e))<<2|l(t.charAt(e+1))>>4)):1===o&&(c((i=l(t.charAt(e))<<10|l(t.charAt(e+1))<<4|l(t.charAt(e+2))>>2)>>8&255), c(255&i)), a}(n),e,r)}, i.prototype.parse=function(){return this.directory=new e(this.contents), this.head=new d(this), this.name=new b(this), this.cmap=new m(this), this.hhea=new g(this), this.maxp=new x(this), this.hmtx=new S(this), this.post=new y(this), this.os2=new w(this), this.loca=new C(this), this.glyf=new _(this), this.ascender=this.os2.exists&&this.os2.ascender||this.hhea.ascender, this.decender=this.os2.exists&&this.os2.decender||this.hhea.decender, this.lineGap=this.os2.exists&&this.os2.lineGap||this.hhea.lineGap, this.bbox=[this.head.xMin,this.head.yMin,this.head.xMax,this.head.yMax]}, i.prototype.registerTTF=function(){var i,t,e,n,r;if(this.scaleFactor=1e3/this.head.unitsPerEm, this.bbox=function(){var t,e,n,r;for(r=[], t=0, e=(n=this.bbox).length;t<e;t++)i=n[t], r.push(Math.round(i*this.scaleFactor));return r}.call(this), this.stemV=0, this.post.exists?(e=255&(n=this.post.italic_angle), !0&(t=n>>16)&&(t=-(1+(65535^t))), this.italicAngle=+(t+"."+e)):this.italicAngle=0, this.ascender=Math.round(this.ascender*this.scaleFactor), this.decender=Math.round(this.decender*this.scaleFactor), this.lineGap=Math.round(this.lineGap*this.scaleFactor), this.capHeight=this.os2.exists&&this.os2.capHeight||this.ascender, this.xHeight=this.os2.exists&&this.os2.xHeight||0, this.familyClass=(this.os2.exists&&this.os2.familyClass||0)>>8, this.isSerif=1===(r=this.familyClass)||2===r||3===r||4===r||5===r||7===r, this.isScript=10===this.familyClass, this.flags=0, this.post.isFixedPitch&&(this.flags|=1), this.isSerif&&(this.flags|=2), this.isScript&&(this.flags|=8), 0!==this.italicAngle&&(this.flags|=64), this.flags|=32, !this.cmap.unicode)throw new Error("No unicode cmap for font")}, i.prototype.characterToGlyph=function(t){var e;return(null!=(e=this.cmap.unicode)?e.codeMap[t]:void 0)||0}, i.prototype.widthOfGlyph=function(t){var e;return e=1e3/this.head.unitsPerEm, this.hmtx.forGlyph(t).advance*e}, i.prototype.widthOfString=function(t,e,n){var r,i,o,a,s;for(i=a=o=0, s=(t=""+t).length;0<=s?a<s:s<a;i=0<=s?++a:--a)r=t.charCodeAt(i), o+=this.widthOfGlyph(this.characterToGlyph(r))+n*(1e3/e)||0;return o*(e/1e3)}, i.prototype.lineHeight=function(t,e){var n;return null==e&&(e=!1), n=e?this.lineGap:0, (this.ascender+n-this.decender)/1e3*t}, i}();var c,X=function(){function t(t){this.data=null!=t?t:[], this.pos=0, this.length=this.data.length;}return t.prototype.readByte=function(){return this.data[this.pos++]}, t.prototype.writeByte=function(t){return this.data[this.pos++]=t}, t.prototype.readUInt32=function(){return 16777216*this.readByte()+(this.readByte()<<16)+(this.readByte()<<8)+this.readByte()}, t.prototype.writeUInt32=function(t){return this.writeByte(t>>>24&255), this.writeByte(t>>16&255), this.writeByte(t>>8&255), this.writeByte(255&t)}, t.prototype.readInt32=function(){var t;return 2147483648<=(t=this.readUInt32())?t-4294967296:t}, t.prototype.writeInt32=function(t){return t<0&&(t+=4294967296), this.writeUInt32(t)}, t.prototype.readUInt16=function(){return this.readByte()<<8|this.readByte()}, t.prototype.writeUInt16=function(t){return this.writeByte(t>>8&255), this.writeByte(255&t)}, t.prototype.readInt16=function(){var t;return 32768<=(t=this.readUInt16())?t-65536:t}, t.prototype.writeInt16=function(t){return t<0&&(t+=65536), this.writeUInt16(t)}, t.prototype.readString=function(t){var e,n,r;for(n=[], e=r=0;0<=t?r<t:t<r;e=0<=t?++r:--r)n[e]=String.fromCharCode(this.readByte());return n.join("")}, t.prototype.writeString=function(t){var e,n,r,i;for(i=[], e=n=0, r=t.length;0<=r?n<r:r<n;e=0<=r?++n:--n)i.push(this.writeByte(t.charCodeAt(e)));return i}, t.prototype.readShort=function(){return this.readInt16()}, t.prototype.writeShort=function(t){return this.writeInt16(t)}, t.prototype.readLongLong=function(){var t,e,n,r,i,o,a,s;return t=this.readByte(), e=this.readByte(), n=this.readByte(), r=this.readByte(), i=this.readByte(), o=this.readByte(), a=this.readByte(), s=this.readByte(), 128&t?-1*(72057594037927940*(255^t)+281474976710656*(255^e)+1099511627776*(255^n)+4294967296*(255^r)+16777216*(255^i)+65536*(255^o)+256*(255^a)+(255^s)+1):72057594037927940*t+281474976710656*e+1099511627776*n+4294967296*r+16777216*i+65536*o+256*a+s}, t.prototype.readInt=function(){return this.readInt32()}, t.prototype.writeInt=function(t){return this.writeInt32(t)}, t.prototype.read=function(t){var e,n;for(e=[], n=0;0<=t?n<t:t<n;0<=t?++n:--n)e.push(this.readByte());return e}, t.prototype.write=function(t){var e,n,r,i;for(i=[], n=0, r=t.length;n<r;n++)e=t[n], i.push(this.writeByte(e));return i}, t}(),e=function(){var p;function t(t){var e,n,r;for(this.scalarType=t.readInt(), this.tableCount=t.readShort(), this.searchRange=t.readShort(), this.entrySelector=t.readShort(), this.rangeShift=t.readShort(), this.tables={}, n=0, r=this.tableCount;0<=r?n<r:r<n;0<=r?++n:--n)e={tag:t.readString(4),checksum:t.readInt(),offset:t.readInt(),length:t.readInt()}, this.tables[e.tag]=e;}return t.prototype.encode=function(t){var e,n,r,i,o,a,s,h,c,l,u,f,d;for(d in u=Object.keys(t).length, a=Math.log(2), c=16*Math.floor(Math.log(u)/a), i=Math.floor(c/a), h=16*u-c, (n=new X).writeInt(this.scalarType), n.writeShort(u), n.writeShort(c), n.writeShort(i), n.writeShort(h), r=16*u, s=n.pos+r, o=null, f=[], t)for(l=t[d], n.writeString(d), n.writeInt(p(l)), n.writeInt(s), n.writeInt(l.length), f=f.concat(l), "head"===d&&(o=s), s+=l.length;s%4;)f.push(0), s++;return n.write(f), e=2981146554-p(n.data), n.pos=o+8, n.writeUInt32(e), n.data}, p=function(t){var e,n,r,i;for(t=k.call(t);t.length%4;)t.push(0);for(n=new X(t), r=e=0, i=t.length;r<i;r+=4)e+=n.readUInt32();return 4294967295&e}, t}(),u={}.hasOwnProperty,f=function(t,e){for(var n in e)u.call(e,n)&&(t[n]=e[n]);function r(){this.constructor=t;}return r.prototype=e.prototype, t.prototype=new r, t.__super__=e.prototype, t};c=function(){function t(t){var e;this.file=t, e=this.file.directory.tables[this.tag], this.exists=!!e, e&&(this.offset=e.offset, this.length=e.length, this.parse(this.file.contents));}return t.prototype.parse=function(){}, t.prototype.encode=function(){}, t.prototype.raw=function(){return this.exists?(this.file.contents.pos=this.offset, this.file.contents.read(this.length)):null}, t}();var d=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return f(e,c), e.prototype.tag="head", e.prototype.parse=function(t){return t.pos=this.offset, this.version=t.readInt(), this.revision=t.readInt(), this.checkSumAdjustment=t.readInt(), this.magicNumber=t.readInt(), this.flags=t.readShort(), this.unitsPerEm=t.readShort(), this.created=t.readLongLong(), this.modified=t.readLongLong(), this.xMin=t.readShort(), this.yMin=t.readShort(), this.xMax=t.readShort(), this.yMax=t.readShort(), this.macStyle=t.readShort(), this.lowestRecPPEM=t.readShort(), this.fontDirectionHint=t.readShort(), this.indexToLocFormat=t.readShort(), this.glyphDataFormat=t.readShort()}, e}(),p=function(){function t(n,t){var e,r,i,o,a,s,h,c,l,u,f,d,p,g,m,w,y,v;switch(this.platformID=n.readUInt16(), this.encodingID=n.readShort(), this.offset=t+n.readInt(), l=n.pos, n.pos=this.offset, this.format=n.readUInt16(), this.length=n.readUInt16(), this.language=n.readUInt16(), this.isUnicode=3===this.platformID&&1===this.encodingID&&4===this.format||0===this.platformID&&4===this.format, this.codeMap={}, this.format){case 0:for(s=m=0;m<256;s=++m)this.codeMap[s]=n.readByte();break;case 4:for(f=n.readUInt16(), u=f/2, n.pos+=6, i=function(){var t,e;for(e=[], s=t=0;0<=u?t<u:u<t;s=0<=u?++t:--t)e.push(n.readUInt16());return e}(), n.pos+=2, p=function(){var t,e;for(e=[], s=t=0;0<=u?t<u:u<t;s=0<=u?++t:--t)e.push(n.readUInt16());return e}(), h=function(){var t,e;for(e=[], s=t=0;0<=u?t<u:u<t;s=0<=u?++t:--t)e.push(n.readUInt16());return e}(), c=function(){var t,e;for(e=[], s=t=0;0<=u?t<u:u<t;s=0<=u?++t:--t)e.push(n.readUInt16());return e}(), r=(this.length-n.pos+this.offset)/2, a=function(){var t,e;for(e=[], s=t=0;0<=r?t<r:r<t;s=0<=r?++t:--t)e.push(n.readUInt16());return e}(), s=w=0, v=i.length;w<v;s=++w)for(g=i[s], e=y=d=p[s];d<=g?y<=g:g<=y;e=d<=g?++y:--y)0===c[s]?o=e+h[s]:0!==(o=a[c[s]/2+(e-d)-(u-s)]||0)&&(o+=h[s]), this.codeMap[e]=65535&o;}n.pos=l;}return t.encode=function(t,e){var n,r,i,o,a,s,h,c,l,u,f,d,p,g,m,w,y,v,b,x,S,k,_,A,I,C,T,F,P,E,q,O,B,R,j,D,M,U,N,z,L,H,W,G,V,Y;switch(F=new X, o=Object.keys(t).sort(function(t,e){return t-e}), e){case"macroman":for(p=0, g=function(){var t,e;for(e=[], d=t=0;t<256;d=++t)e.push(0);return e}(), w={0:0}, i={}, P=0, B=o.length;P<B;P++)null==w[W=t[r=o[P]]]&&(w[W]=++p), i[r]={old:t[r],new:w[t[r]]}, g[r]=w[t[r]];return F.writeUInt16(1), F.writeUInt16(0), F.writeUInt32(12), F.writeUInt16(0), F.writeUInt16(262), F.writeUInt16(0), F.write(g), {charMap:i,subtable:F.data,maxGlyphID:p+1};case"unicode":for(C=[], l=[], w={}, n={}, m=h=null, E=y=0, R=o.length;E<R;E++)null==w[b=t[r=o[E]]]&&(w[b]=++y), n[r]={old:b,new:w[b]}, a=w[b]-r, null!=m&&a===h||(m&&l.push(m), C.push(r), h=a), m=r;
vendor: 19,289 bytes, lines 201-203
201for(m&&l.push(m), l.push(65535), C.push(65535), A=2*(_=C.length), k=2*Math.pow(Math.log(_)/Math.LN2,2), u=Math.log(k/2)/Math.LN2, S=2*_-k, s=[], x=[], f=[], d=q=0, j=C.length;q<j;d=++q){if(I=C[d], c=l[d], 65535===I){s.push(0), x.push(0);break}if(32768<=I-(T=n[I].new))for(s.push(0), x.push(2*(f.length+_-d)), r=O=I;I<=c?O<=c:c<=O;r=I<=c?++O:--O)f.push(n[r].new);else s.push(T-I), x.push(0);}for(F.writeUInt16(3), F.writeUInt16(1), F.writeUInt32(12), F.writeUInt16(4), F.writeUInt16(16+8*_+2*f.length), F.writeUInt16(0), F.writeUInt16(A), F.writeUInt16(k), F.writeUInt16(u), F.writeUInt16(S), L=0, D=l.length;L<D;L++)r=l[L], F.writeUInt16(r);for(F.writeUInt16(0), H=0, M=C.length;H<M;H++)r=C[H], F.writeUInt16(r);for(G=0, U=s.length;G<U;G++)a=s[G], F.writeUInt16(a);for(V=0, N=x.length;V<N;V++)v=x[V], F.writeUInt16(v);for(Y=0, z=f.length;Y<z;Y++)p=f[Y], F.writeUInt16(p);return{charMap:n,subtable:F.data,maxGlyphID:y+1}}}, t}(),m=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return f(e,c), e.prototype.tag="cmap", e.prototype.parse=function(t){var e,n,r;for(t.pos=this.offset, this.version=t.readUInt16(), n=t.readUInt16(), this.tables=[], this.unicode=null, r=0;0<=n?r<n:n<r;0<=n?++r:--r)e=new p(t,this.offset), this.tables.push(e), e.isUnicode&&null==this.unicode&&(this.unicode=e);return!0}, e.encode=function(t,e){var n,r;return null==e&&(e="macroman"), n=p.encode(t,e), (r=new X).writeUInt16(0), r.writeUInt16(1), n.table=r.data.concat(n.subtable), n}, e}(),g=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return f(e,c), e.prototype.tag="hhea", e.prototype.parse=function(t){return t.pos=this.offset, this.version=t.readInt(), this.ascender=t.readShort(), this.decender=t.readShort(), this.lineGap=t.readShort(), this.advanceWidthMax=t.readShort(), this.minLeftSideBearing=t.readShort(), this.minRightSideBearing=t.readShort(), this.xMaxExtent=t.readShort(), this.caretSlopeRise=t.readShort(), this.caretSlopeRun=t.readShort(), this.caretOffset=t.readShort(), t.pos+=8, this.metricDataFormat=t.readShort(), this.numberOfMetrics=t.readUInt16()}, e}(),w=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return f(e,c), e.prototype.tag="OS/2", e.prototype.parse=function(n){if(n.pos=this.offset, this.version=n.readUInt16(), this.averageCharWidth=n.readShort(), this.weightClass=n.readUInt16(), this.widthClass=n.readUInt16(), this.type=n.readShort(), this.ySubscriptXSize=n.readShort(), this.ySubscriptYSize=n.readShort(), this.ySubscriptXOffset=n.readShort(), this.ySubscriptYOffset=n.readShort(), this.ySuperscriptXSize=n.readShort(), this.ySuperscriptYSize=n.readShort(), this.ySuperscriptXOffset=n.readShort(), this.ySuperscriptYOffset=n.readShort(), this.yStrikeoutSize=n.readShort(), this.yStrikeoutPosition=n.readShort(), this.familyClass=n.readShort(), this.panose=function(){var t,e;for(e=[], t=0;t<10;++t)e.push(n.readByte());return e}(), this.charRange=function(){var t,e;for(e=[], t=0;t<4;++t)e.push(n.readInt());return e}(), this.vendorID=n.readString(4), this.selection=n.readShort(), this.firstCharIndex=n.readShort(), this.lastCharIndex=n.readShort(), 0<this.version&&(this.ascent=n.readShort(), this.descent=n.readShort(), this.lineGap=n.readShort(), this.winAscent=n.readShort(), this.winDescent=n.readShort(), this.codePageRange=function(){var t,e;for(e=[], t=0;t<2;++t)e.push(n.readInt());return e}(), 1<this.version))return this.xHeight=n.readShort(), this.capHeight=n.readShort(), this.defaultChar=n.readShort(), this.breakChar=n.readShort(), this.maxContext=n.readShort()}, e}(),y=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return f(e,c), e.prototype.tag="post", e.prototype.parse=function(r){var t,e,n,i;switch(r.pos=this.offset, this.format=r.readInt(), this.italicAngle=r.readInt(), this.underlinePosition=r.readShort(), this.underlineThickness=r.readShort(), this.isFixedPitch=r.readInt(), this.minMemType42=r.readInt(), this.maxMemType42=r.readInt(), this.minMemType1=r.readInt(), this.maxMemType1=r.readInt(), this.format){case 65536:break;case 131072:for(e=r.readUInt16(), this.glyphNameIndex=[], n=0;0<=e?n<e:e<n;0<=e?++n:--n)this.glyphNameIndex.push(r.readUInt16());for(this.names=[], i=[];r.pos<this.offset+this.length;)t=r.readByte(), i.push(this.names.push(r.readString(t)));return i;case 151552:return e=r.readUInt16(), this.offsets=r.read(e);case 196608:break;case 262144:return this.map=function(){var t,e,n;for(n=[], t=0, e=this.file.maxp.numGlyphs;0<=e?t<e:e<t;0<=e?++t:--t)n.push(r.readUInt32());return n}.call(this)}}, e}(),v=function(t,e){this.raw=t, this.length=t.length, this.platformID=e.platformID, this.encodingID=e.encodingID, this.languageID=e.languageID;},b=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return f(e,c), e.prototype.tag="name", e.prototype.parse=function(t){var e,n,r,i,o,a,s,h,c,l,u,f;for(t.pos=this.offset, t.readShort(), e=t.readShort(), a=t.readShort(), n=[], i=c=0;0<=e?c<e:e<c;i=0<=e?++c:--c)n.push({platformID:t.readShort(),encodingID:t.readShort(),languageID:t.readShort(),nameID:t.readShort(),length:t.readShort(),offset:this.offset+a+t.readShort()});for(s={}, i=l=0, u=n.length;l<u;i=++l)r=n[i], t.pos=r.offset, h=t.readString(r.length), o=new v(h,r), null==s[f=r.nameID]&&(s[f]=[]), s[r.nameID].push(o);return this.strings=s, this.copyright=s[0], this.fontFamily=s[1], this.fontSubfamily=s[2], this.uniqueSubfamily=s[3], this.fontName=s[4], this.version=s[5], this.postscriptName=s[6][0].raw.replace(/[\x00-\x19\x80-\xff]/g,""), this.trademark=s[7], this.manufacturer=s[8], this.designer=s[9], this.description=s[10], this.vendorUrl=s[11], this.designerUrl=s[12], this.license=s[13], this.licenseUrl=s[14], this.preferredFamily=s[15], this.preferredSubfamily=s[17], this.compatibleFull=s[18], this.sampleText=s[19]}, e}(),x=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return f(e,c), e.prototype.tag="maxp", e.prototype.parse=function(t){return t.pos=this.offset, this.version=t.readInt(), this.numGlyphs=t.readUInt16(), this.maxPoints=t.readUInt16(), this.maxContours=t.readUInt16(), this.maxCompositePoints=t.readUInt16(), this.maxComponentContours=t.readUInt16(), this.maxZones=t.readUInt16(), this.maxTwilightPoints=t.readUInt16(), this.maxStorage=t.readUInt16(), this.maxFunctionDefs=t.readUInt16(), this.maxInstructionDefs=t.readUInt16(), this.maxStackElements=t.readUInt16(), this.maxSizeOfInstructions=t.readUInt16(), this.maxComponentElements=t.readUInt16(), this.maxComponentDepth=t.readUInt16()}, e}(),S=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return f(e,c), e.prototype.tag="hmtx", e.prototype.parse=function(n){var t,r,i,e,o,a,s;for(n.pos=this.offset, this.metrics=[], e=0, a=this.file.hhea.numberOfMetrics;0<=a?e<a:a<e;0<=a?++e:--e)this.metrics.push({advance:n.readUInt16(),lsb:n.readInt16()});for(r=this.file.maxp.numGlyphs-this.file.hhea.numberOfMetrics, this.leftSideBearings=function(){var t,e;for(e=[], t=0;0<=r?t<r:r<t;0<=r?++t:--t)e.push(n.readInt16());return e}(), this.widths=function(){var t,e,n,r;for(r=[], t=0, e=(n=this.metrics).length;t<e;t++)i=n[t], r.push(i.advance);return r}.call(this), t=this.widths[this.widths.length-1], s=[], o=0;0<=r?o<r:r<o;0<=r?++o:--o)s.push(this.widths.push(t));return s}, e.prototype.forGlyph=function(t){return t in this.metrics?this.metrics[t]:{advance:this.metrics[this.metrics.length-1].advance,lsb:this.leftSideBearings[t-this.metrics.length]}}, e}(),k=[].slice,_=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return f(e,c), e.prototype.tag="glyf", e.prototype.parse=function(t){return this.cache={}}, e.prototype.glyphFor=function(t){var e,n,r,i,o,a,s,h,c,l;return(t=t)in this.cache?this.cache[t]:(i=this.file.loca, e=this.file.contents, n=i.indexOf(t), 0===(r=i.lengthOf(t))?this.cache[t]=null:(e.pos=this.offset+n, o=(a=new X(e.read(r))).readShort(), h=a.readShort(), l=a.readShort(), s=a.readShort(), c=a.readShort(), this.cache[t]=-1===o?new I(a,h,l,s,c):new A(a,o,h,l,s,c), this.cache[t]))}, e.prototype.encode=function(t,e,n){var r,i,o,a,s;for(o=[], i=[], a=0, s=e.length;a<s;a++)r=t[e[a]], i.push(o.length), r&&(o=o.concat(r.encode(n)));return i.push(o.length), {table:o,offsets:i}}, e}(),A=function(){function t(t,e,n,r,i,o){this.raw=t, this.numberOfContours=e, this.xMin=n, this.yMin=r, this.xMax=i, this.yMax=o, this.compound=!1;}return t.prototype.encode=function(){return this.raw.data}, t}(),I=function(){function t(t,e,n,r,i){var o,a;for(this.raw=t, this.xMin=e, this.yMin=n, this.xMax=r, this.yMax=i, this.compound=!0, this.glyphIDs=[], this.glyphOffsets=[], o=this.raw;a=o.readShort(), this.glyphOffsets.push(o.pos), this.glyphIDs.push(o.readShort()), 32&a;)o.pos+=1&a?4:2, 128&a?o.pos+=8:64&a?o.pos+=4:8&a&&(o.pos+=2);}return t.prototype.encode=function(t){var e,n,r,i,o;for(n=new X(k.call(this.raw.data)), e=r=0, i=(o=this.glyphIDs).length;r<i;e=++r)o[e], n.pos=this.glyphOffsets[e];return n.data}, t}(),C=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return f(e,c), e.prototype.tag="loca", e.prototype.parse=function(r){var t;return r.pos=this.offset, t=this.file.head.indexToLocFormat, this.offsets=0===t?function(){var t,e,n;for(n=[], t=0, e=this.length;t<e;t+=2)n.push(2*r.readUInt16());return n}.call(this):function(){var t,e,n;for(n=[], t=0, e=this.length;t<e;t+=4)n.push(r.readUInt32());return n}.call(this)}, e.prototype.indexOf=function(t){return this.offsets[t]}, e.prototype.lengthOf=function(t){return this.offsets[t+1]-this.offsets[t]}, e.prototype.encode=function(t,e){for(var n=new Uint32Array(this.offsets.length),r=0,i=0,o=0;o<n.length;++o)if(n[o]=r, i<e.length&&e[i]==o){++i, n[o]=r;var a=this.offsets[o],s=this.offsets[o+1]-a;0<s&&(r+=s);}for(var h=new Array(4*n.length),c=0;c<n.length;++c)h[4*c+3]=255&n[c], h[4*c+2]=(65280&n[c])>>8, h[4*c+1]=(16711680&n[c])>>16, h[4*c]=(4278190080&n[c])>>24;return h}, e}(),T=function(){function t(t){this.font=t, this.subset={}, this.unicodes={}, this.next=33;}return t.prototype.generateCmap=function(){var t,e,n,r,i;for(e in r=this.font.cmap.tables[0].codeMap, t={}, i=this.subset)n=i[e], t[e]=r[n];return t}, t.prototype.glyphsFor=function(t){var e,n,r,i,o,a,s;for(r={}, o=0, a=t.length;o<a;o++)r[i=t[o]]=this.font.glyf.glyphFor(i);for(i in e=[], r)(null!=(n=r[i])?n.compound:void 0)&&e.push.apply(e,n.glyphIDs);if(0<e.length)for(i in s=this.glyphsFor(e))n=s[i], r[i]=n;return r}, t.prototype.encode=function(t){var e,n,r,i,o,a,s,h,c,l,u,f,d,p,g;for(n in e=m.encode(this.generateCmap(),"unicode"), i=this.glyphsFor(t), u={0:0}, g=e.charMap)u[(a=g[n]).old]=a.new;for(f in l=e.maxGlyphID, i)f in u||(u[f]=l++);return h=function(t){var e,n;for(e in n={}, t)n[t[e]]=e;return n}(u), c=Object.keys(h).sort(function(t,e){return t-e}), d=function(){var t,e,n;for(n=[], t=0, e=c.length;t<e;t++)o=c[t], n.push(h[o]);return n}(), r=this.font.glyf.encode(i,d,u), s=this.font.loca.encode(r.offsets,d), p={cmap:this.font.cmap.raw(),glyf:r.table,loca:s,hmtx:this.font.hmtx.raw(),hhea:this.font.hhea.raw(),maxp:this.font.maxp.raw(),post:this.font.post.raw(),name:this.font.name.raw(),head:this.font.head.raw()}, this.font.os2.exists&&(p["OS/2"]=this.font.os2.raw()), this.font.directory.encode(p)}, t}();t.API.PDFObject=function(){var o;function a(){}return o=function(t,e){return(Array(e+1).join("0")+t).slice(-e)}, a.convert=function(r){var i,t,e,n;if(Array.isArray(r))return"["+function(){var t,e,n;for(n=[], t=0, e=r.length;t<e;t++)i=r[t], n.push(a.convert(i));return n}().join(" ")+"]";if("string"==typeof r)return"/"+r;if(null!=r?r.isString:void 0)return"("+r+")";if(r instanceof Date)return"(D:"+o(r.getUTCFullYear(),4)+o(r.getUTCMonth(),2)+o(r.getUTCDate(),2)+o(r.getUTCHours(),2)+o(r.getUTCMinutes(),2)+o(r.getUTCSeconds(),2)+"Z)";if("[object Object]"==={}.toString.call(r)){for(t in e=["<<"], r)n=r[t], e.push("/"+t+" "+a.convert(n));return e.push(">>"), e.join("\n")}return""+r}, a}();}($), pt="undefined"!=typeof self&&self||"undefined"!=typeof window&&window||"undefined"!=typeof commonjsGlobal&&commonjsGlobal||Function('return typeof this === "object" && this.content')()||Function("return this")(), gt=function(){var c,n,r;function i(t){var e,n,r,i,o,a,s,h,c,l,u,f,d,p;for(this.data=t, this.pos=8, this.palette=[], this.imgData=[], this.transparency={}, this.animation=null, this.text={}, a=null;;){switch(e=this.readUInt32(), c=function(){var t,e;for(e=[], t=0;t<4;++t)e.push(String.fromCharCode(this.data[this.pos++]));return e}.call(this).join("")){case"IHDR":this.width=this.readUInt32(), this.height=this.readUInt32(), this.bits=this.data[this.pos++], this.colorType=this.data[this.pos++], this.compressionMethod=this.data[this.pos++], this.filterMethod=this.data[this.pos++], this.interlaceMethod=this.data[this.pos++];break;case"acTL":this.animation={numFrames:this.readUInt32(),numPlays:this.readUInt32()||1/0,frames:[]};break;case"PLTE":this.palette=this.read(e);break;case"fcTL":a&&this.animation.frames.push(a), this.pos+=4, a={width:this.readUInt32(),height:this.readUInt32(),xOffset:this.readUInt32(),yOffset:this.readUInt32()}, o=this.readUInt16(), i=this.readUInt16()||100, a.delay=1e3*o/i, a.disposeOp=this.data[this.pos++], a.blendOp=this.data[this.pos++], a.data=[];break;case"IDAT":case"fdAT":for("fdAT"===c&&(this.pos+=4, e-=4), t=(null!=a?a.data:void 0)||this.imgData, f=0;0<=e?f<e:e<f;0<=e?++f:--f)t.push(this.data[this.pos++]);break;case"tRNS":switch(this.transparency={}, this.colorType){case 3:if(r=this.palette.length/3, this.transparency.indexed=this.read(e), this.transparency.indexed.length>r)throw new Error("More transparent colors than palette size");if(0<(l=r-this.transparency.indexed.length))for(d=0;0<=l?d<l:l<d;0<=l?++d:--d)this.transparency.indexed.push(255);break;case 0:this.transparency.grayscale=this.read(e)[0];break;case 2:this.transparency.rgb=this.read(e);}break;case"tEXt":s=(u=this.read(e)).indexOf(0), h=String.fromCharCode.apply(String,u.slice(0,s)), this.text[h]=String.fromCharCode.apply(String,u.slice(s+1));break;case"IEND":return a&&this.animation.frames.push(a), this.colors=function(){switch(this.colorType){case 0:case 3:case 4:return 1;case 2:case 6:return 3}}.call(this), this.hasAlphaChannel=4===(p=this.colorType)||6===p, n=this.colors+(this.hasAlphaChannel?1:0), this.pixelBitlength=this.bits*n, this.colorSpace=function(){switch(this.colors){case 1:return"DeviceGray";case 3:return"DeviceRGB"}}.call(this), void(this.imgData=new Uint8Array(this.imgData));default:this.pos+=e;}if(this.pos+=4, this.pos>this.data.length)throw new Error("Incomplete or corrupt PNG file")}}i.load=function(t,e,n){var r;return"function"==typeof e&&(n=e), (r=new XMLHttpRequest).open("GET",t,!0), r.responseType="arraybuffer", r.onload=function(){var t;return t=new i(new Uint8Array(r.response||r.mozResponseArrayBuffer)), "function"==typeof(null!=e?e.getContext:void 0)&&t.render(e), "function"==typeof n?n(t):void 0}, r.send(null)}, i.prototype.read=function(t){var e,n;for(n=[], e=0;0<=t?e<t:t<e;0<=t?++e:--e)n.push(this.data[this.pos++]);return n}, i.prototype.readUInt32=function(){return this.data[this.pos++]<<24|this.data[this.pos++]<<16|this.data[this.pos++]<<8|this.data[this.pos++]}, i.prototype.readUInt16=function(){return this.data[this.pos++]<<8|this.data[this.pos++]}, i.prototype.decodePixels=function(E){var q=this.pixelBitlength/8,O=new Uint8Array(this.width*this.height*q),B=0,R=this;if(null==E&&(E=this.imgData), 0===E.length)return new Uint8Array(0);function t(t,e,n,r){var i,o,a,s,h,c,l,u,f,d,p,g,m,w,y,v,b,x,S,k,_,A=Math.ceil((R.width-t)/n),I=Math.ceil((R.height-e)/r),C=R.width==A&&R.height==I;for(w=q*A, g=C?O:new Uint8Array(w*I), c=E.length, o=m=0;m<I&&B<c;){switch(E[B++]){case 0:for(s=b=0;b<w;s=b+=1)g[o++]=E[B++];break;case 1:for(s=x=0;x<w;s=x+=1)i=E[B++], h=s<q?0:g[o-q], g[o++]=(i+h)%256;break;case 2:for(s=S=0;S<w;s=S+=1)i=E[B++], a=(s-s%q)/q, y=m&&g[(m-1)*w+a*q+s%q], g[o++]=(y+i)%256;break;case 3:for(s=k=0;k<w;s=k+=1)i=E[B++], a=(s-s%q)/q, h=s<q?0:g[o-q], y=m&&g[(m-1)*w+a*q+s%q], g[o++]=(i+Math.floor((h+y)/2))%256;break;case 4:for(s=_=0;_<w;s=_+=1)i=E[B++], a=(s-s%q)/q, h=s<q?0:g[o-q], 0===m?y=v=0:(y=g[(m-1)*w+a*q+s%q], v=a&&g[(m-1)*w+(a-1)*q+s%q]), l=h+y-v, u=Math.abs(l-h), d=Math.abs(l-y), p=Math.abs(l-v), f=u<=d&&u<=p?h:d<=p?y:v, g[o++]=(i+f)%256;break;default:throw new Error("Invalid filter algorithm: "+E[B-1])}if(!C){var T=((e+m*r)*R.width+t)*q,F=m*w;for(s=0;s<A;s+=1){for(var P=0;P<q;P+=1)O[T++]=g[F++];T+=(n-1)*q;}}m++;}}return E=(E=new kt(E)).getBytes(), 1==R.interlaceMethod?(t(0,0,8,8), t(4,0,8,8), t(0,4,4,8), t(2,0,4,4), t(0,2,2,4), t(1,0,2,2), t(0,1,1,2)):t(0,0,1,1), O}, i.prototype.decodePalette=function(){var t,e,n,r,i,o,a,s,h;for(n=this.palette, o=this.transparency.indexed||[], i=new Uint8Array((o.length||0)+n.length), r=0, n.length, e=a=t=0, s=n.length;a<s;e=a+=3)i[r++]=n[e], i[r++]=n[e+1], i[r++]=n[e+2], i[r++]=null!=(h=o[t++])?h:255;return i}, i.prototype.copyToImageData=function(t,e){var n,r,i,o,a,s,h,c,l,u,f;if(r=this.colors, l=null, n=this.hasAlphaChannel, this.palette.length&&(l=null!=(f=this._decodedPalette)?f:this._decodedPalette=this.decodePalette(), r=4, n=!0), c=(i=t.data||t).length, a=l||e, o=s=0, 1===r)for(;o<c;)h=l?4*e[o/4]:s, u=a[h++], i[o++]=u, i[o++]=u, i[o++]=u, i[o++]=n?a[h++]:255, s=h;else for(;o<c;)h=l?4*e[o/4]:s, i[o++]=a[h++], i[o++]=a[h++], i[o++]=a[h++], i[o++]=n?a[h++]:255, s=h;}, i.prototype.decode=function(){var t;return t=new Uint8Array(this.width*this.height*4), this.copyToImageData(t,this.decodePixels()), t};try{n=pt.document.createElement("canvas"), r=n.getContext("2d");}catch(t){return-1}return c=function(t){var e;return r.width=t.width, r.height=t.height, r.clearRect(0,0,t.width,t.height), r.putImageData(t,0,0), (e=new Image).src=n.toDataURL(), e}, i.prototype.decodeFrames=function(t){var e,n,r,i,o,a,s,h;if(this.animation){for(h=[], n=o=0, a=(s=this.animation.frames).length;o<a;n=++o)e=s[n], r=t.createImageData(e.width,e.height), i=this.decodePixels(new Uint8Array(e.data)), this.copyToImageData(r,i), e.imageData=r, h.push(e.image=c(r));return h}}, i.prototype.renderFrame=function(t,e){var n,r,i;return n=(r=this.animation.frames)[e], i=r[e-1], 0===e&&t.clearRect(0,0,this.width,this.height), 1===(null!=i?i.disposeOp:void 0)?t.clearRect(i.xOffset,i.yOffset,i.width,i.height):2===(null!=i?i.disposeOp:void 0)&&t.putImageData(i.imageData,i.xOffset,i.yOffset), 0===n.blendOp&&t.clearRect(n.xOffset,n.yOffset,n.width,n.height), t.drawImage(n.image,n.xOffset,n.yOffset)}, i.prototype.animate=function(n){var r,i,o,a,s,t,h=this;return i=0, t=this.animation, a=t.numFrames, o=t.frames, s=t.numPlays, (r=function(){var t,e;if(t=i++%a, e=o[t], h.renderFrame(n,t), 1<a&&i/a<s)return h.animation._timeout=setTimeout(r,e.delay)})()}, i.prototype.stopAnimation=function(){var t;return clearTimeout(null!=(t=this.animation)?t._timeout:void 0)}, i.prototype.render=function(t){var e,n;return t._png&&t._png.stopAnimation(), t._png=this, t.width=this.width, t.height=this.height, e=t.getContext("2d"), this.animation?(this.decodeFrames(e), this.animate(e)):(n=e.createImageData(this.width,this.height), this.copyToImageData(n,this.decodePixels()), e.putImageData(n,0,0))}, i}(), pt.PNG=gt; 202/* 203 * Extracted from pdf.js
204 * https://github.com/andreasgal/pdf.js 205 * 206 * Copyright (c) 2011 Mozilla Foundation 207 * 208 * Contributors: Andreas Gal <[email protected]> 209 * Chris G Jones <[email protected]> 210 * Shaon Barman <[email protected]> 211 * Vivien Nicolas <[email protected]> 212 * Justin D'Arcangelo <[email protected]> 213 * Yury Delendik 214 * 215 * 216 */ 217var St=function(){function t(){this.pos=0, this.bufferLength=0, this.eof=!1, this.buffer=null;}return t.prototype={ensureBuffer:function(t){var e=this.buffer,n=e?e.byteLength:0;if(t<n)return e;for(var r=512;r<t;)r<<=1;for(var i=new Uint8Array(r),o=0;o<n;++o)i[o]=e[o];return this.buffer=i},getByte:function(){for(var t=this.pos;this.bufferLength<=t;){if(this.eof)return null;this.readBlock();}return this.buffer[this.pos++]},getBytes:function(t){var e=this.pos;if(t){this.ensureBuffer(e+t);for(var n=e+t;!this.eof&&this.bufferLength<n;)this.readBlock();var r=this.bufferLength;r<n&&(n=r);}else{for(;!this.eof;)this.readBlock();n=this.bufferLength;}return this.pos=n, this.buffer.subarray(e,n)},lookChar:function(){for(var t=this.pos;this.bufferLength<=t;){if(this.eof)return null;this.readBlock();}return String.fromCharCode(this.buffer[this.pos])},getChar:function(){for(var t=this.pos;this.bufferLength<=t;){if(this.eof)return null;this.readBlock();}return String.fromCharCode(this.buffer[this.pos++])},makeSubStream:function(t,e,n){for(var r=t+e;this.bufferLength<=r&&!this.eof;)this.readBlock();return new Stream(this.buffer,t,e,n)},skip:function(t){t||(t=1), this.pos+=t;},reset:function(){this.pos=0;}}, t}(),kt=function(){if("undefined"!=typeof Uint32Array){var F=new Uint32Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),P=new Uint32Array([3,4,5,6,7,8,9,10,65547,65549,65551,65553,131091,131095,131099,131103,196643,196651,196659,196667,262211,262227,262243,262259,327811,327843,327875,327907,258,258,258]),E=new Uint32Array([1,2,3,4,65541,65543,131081,131085,196625,196633,262177,262193,327745,327777,393345,393409,459009,459137,524801,525057,590849,591361,657409,658433,724993,727041,794625,798721,868353,876545]),q=[new Uint32Array([459008,524368,524304,524568,459024,524400,524336,590016,459016,524384,524320,589984,524288,524416,524352,590048,459012,524376,524312,589968,459028,524408,524344,590032,459020,524392,524328,59e4,524296,524424,524360,590064,459010,524372,524308,524572,459026,524404,524340,590024,459018,524388,524324,589992,524292,524420,524356,590056,459014,524380,524316,589976,459030,524412,524348,590040,459022,524396,524332,590008,524300,524428,524364,590072,459009,524370,524306,524570,459025,524402,524338,590020,459017,524386,524322,589988,524290,524418,524354,590052,459013,524378,524314,589972,459029,524410,524346,590036,459021,524394,524330,590004,524298,524426,524362,590068,459011,524374,524310,524574,459027,524406,524342,590028,459019,524390,524326,589996,524294,524422,524358,590060,459015,524382,524318,589980,459031,524414,524350,590044,459023,524398,524334,590012,524302,524430,524366,590076,459008,524369,524305,524569,459024,524401,524337,590018,459016,524385,524321,589986,524289,524417,524353,590050,459012,524377,524313,589970,459028,524409,524345,590034,459020,524393,524329,590002,524297,524425,524361,590066,459010,524373,524309,524573,459026,524405,524341,590026,459018,524389,524325,589994,524293,524421,524357,590058,459014,524381,524317,589978,459030,524413,524349,590042,459022,524397,524333,590010,524301,524429,524365,590074,459009,524371,524307,524571,459025,524403,524339,590022,459017,524387,524323,589990,524291,524419,524355,590054,459013,524379,524315,589974,459029,524411,524347,590038,459021,524395,524331,590006,524299,524427,524363,590070,459011,524375,524311,524575,459027,524407,524343,590030,459019,524391,524327,589998,524295,524423,524359,590062,459015,524383,524319,589982,459031,524415,524351,590046,459023,524399,524335,590014,524303,524431,524367,590078,459008,524368,524304,524568,459024,524400,524336,590017,459016,524384,524320,589985,524288,524416,524352,590049,459012,524376,524312,589969,459028,524408,524344,590033,459020,524392,524328,590001,524296,524424,524360,590065,459010,524372,524308,524572,459026,524404,524340,590025,459018,524388,524324,589993,524292,524420,524356,590057,459014,524380,524316,589977,459030,524412,524348,590041,459022,524396,524332,590009,524300,524428,524364,590073,459009,524370,524306,524570,459025,524402,524338,590021,459017,524386,524322,589989,524290,524418,524354,590053,459013,524378,524314,589973,459029,524410,524346,590037,459021,524394,524330,590005,524298,524426,524362,590069,459011,524374,524310,524574,459027,524406,524342,590029,459019,524390,524326,589997,524294,524422,524358,590061,459015,524382,524318,589981,459031,524414,524350,590045,459023,524398,524334,590013,524302,524430,524366,590077,459008,5243
21769,524305,524569,459024,524401,524337,590019,459016,524385,524321,589987,524289,524417,524353,590051,459012,524377,524313,589971,459028,524409,524345,590035,459020,524393,524329,590003,524297,524425,524361,590067,459010,524373,524309,524573,459026,524405,524341,590027,459018,524389,524325,589995,524293,524421,524357,590059,459014,524381,524317,589979,459030,524413,524349,590043,459022,524397,524333,590011,524301,524429,524365,590075,459009,524371,524307,524571,459025,524403,524339,590023,459017,524387,524323,589991,524291,524419,524355,590055,459013,524379,524315,589975,459029,524411,524347,590039,459021,524395,524331,590007,524299,524427,524363,590071,459011,524375,524311,524575,459027,524407,524343,590031,459019,524391,524327,589999,524295,524423,524359,590063,459015,524383,524319,589983,459031,524415,524351,590047,459023,524399,524335,590015,524303,524431,524367,590079]),9],O=[new Uint32Array([327680,327696,327688,327704,327684,327700,327692,327708,327682,327698,327690,327706,327686,327702,327694,0,327681,327697,327689,327705,327685,327701,327693,327709,327683,327699,327691,327707,327687,327703,327695,0]),5];return(t.prototype=Object.create(St.prototype)).getBits=function(t){for(var e,n=this.codeSize,r=this.codeBuf,i=this.bytes,o=this.bytesPos;n<t;)void 0===(e=i[o++])&&B("Bad encoding in flate stream"), r|=e<<n, n+=8;return e=r&(1<<t)-1, this.codeBuf=r>>t, this.codeSize=n-=t, this.bytesPos=o, e}, t.prototype.getCode=function(t){for(var e=t[0],n=t[1],r=this.codeSize,i=this.codeBuf,o=this.bytes,a=this.bytesPos;r<n;){var s;void 0===(s=o[a++])&&B("Bad encoding in flate stream"), i|=s<<r, r+=8;}var h=e[i&(1<<n)-1],c=h>>16,l=65535&h;return(0==r||r<c||0==c)&&B("Bad encoding in flate stream"), this.codeBuf=i>>c, this.codeSize=r-c, this.bytesPos=a, l}, t.prototype.generateHuffmanTable=function(t){for(var e=t.length,n=0,r=0;r<e;++r)t[r]>n&&(n=t[r]);for(var i=1<<n,o=new Uint32Array(i),a=1,s=0,h=2;a<=n;++a, s<<=1, h<<=1)for(var c=0;c<e;++c)if(t[c]==a){var l=0,u=s;for(r=0;r<a;++r)l=l<<1|1&u, u>>=1;for(r=l;r<i;r+=h)o[r]=a<<16|c;++s;}return[o,n]}, t.prototype.readBlock=function(){function t(t,e,n,r,i){for(var o=t.getBits(n)+r;0<o--;)e[h++]=i;}var e=this.getBits(3);if(1&e&&(this.eof=!0), 0!=(e>>=1)){var n,r;if(1==e)n=q, r=O;else if(2==e){for(var i=this.getBits(5)+257,o=this.getBits(5)+1,a=this.getBits(4)+4,s=Array(F.length),h=0;h<a;)s[F[h++]]=this.getBits(3);for(var c=this.generateHuffmanTable(s),l=0,u=(h=0, i+o),f=new Array(u);h<u;){var d=this.getCode(c);16==d?t(this,f,2,3,l):17==d?t(this,f,3,3,l=0):18==d?t(this,f,7,11,l=0):f[h++]=l=d;}n=this.generateHuffmanTable(f.slice(0,i)), r=this.generateHuffmanTable(f.slice(i,u));}else B("Unknown block type in flate stream");for(var p=(I=this.buffer)?I.length:0,g=this.bufferLength;;){var m=this.getCode(n);if(m<256)p<=g+1&&(p=(I=this.ensureBuffer(g+1)).length), I[g++]=m;else{if(256==m)return void(this.bufferLength=g);var w=(m=P[m-=257])>>16;0<w&&(w=this.getBits(w));l=(65535&m)+w;m=this.getCode(r), 0<(w=(m=E[m])>>16)&&(w=this.getBits(w));var y=(65535&m)+w;p<=g+l&&(p=(I=this.ensureBuffer(g+l)).length);for(var v=0;v<l;++v, ++g)I[g]=I[g-y];}}}else{var b,x=this.bytes,S=this.bytesPos;void 0===(b=x[S++])&&B("Bad block header in flate stream");var k=b;void 0===(b=x[S++])&&B("Bad block header in flate stream"), k|=b<<8, void 0===(b=x[S++])&&B("Bad block header in flate stream");var _=b;void 0===(b=x[S++])&&B("Bad block header in flate stream"), (_|=b<<8)!=(65535&~k)&&B("Bad uncompressed block length in flate stream"), this.codeBuf=0, this.codeSize=0;var A=this.bufferLength,I=this.ensureBuffer(A+k),C=A+k;this.bufferLength=C;for(var T=A;T<C;++T){if(void 0===(b=x[S++])){this.eof=!0;break}I[T]=b;}this.bytesPos=S;}}, t}function B(t){throw new Error(t)}function t(t){var e=0,n=t[e++],r=t[e++];-1!=n&&-1!=r||B("Invalid header in flate stream"), 8!=(15&n)&&B("Unknown compression method in flate stream"), ((n<<8)+r)%31!=0&&B("Bad FCHECK in flate stream"), 32&r&&B("FDICT bit set in flate stream"), this.bytes=t, this.bytesPos=2, this.codeSize=0, this.codeBuf=0, St.call(this);}}();return function(t){if("object"!=typeof t.console){t.console={};for(var e,n,r=t.console,i=function(){},o=["memory"],a="assert,clear,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,markTimeline,profile,profiles,profileEnd,show,table,time,timeEnd,timeline,timelineEnd,timeStamp,trace,warn".split(",");e=o.pop();)r[e]||(r[e]={});for(;n=a.pop();)r[n]||(r[n]=i);}var s,h,c,l,u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
217+/=";void 0===t.btoa&&(t.btoa=function(t){var e,n,r,i,o,a=0,s=0,h="",c=[];if(!t)return t;for(;e=(o=t.charCodeAt(a++)<<16|t.charCodeAt(a++)<<8|t.charCodeAt(a++))>>18&63, n=o>>12&63, r=o>>6&63, i=63&o, c[s++]=u.charAt(e)+u.charAt(n)+u.charAt(r)+u.charAt(i), a<t.length;);h=c.join("");var l=t.length%3;return(l?h.slice(0,l-3):h)+"===".slice(l||3)}), void 0===t.atob&&(t.atob=function(t){var e,n,r,i,o,a,s=0,h=0,c=[];if(!t)return t;for(t+="";e=(a=u.indexOf(t.charAt(s++))<<18|u.indexOf(t.charAt(s++))<<12|(i=u.indexOf(t.charAt(s++)))<<6|(o=u.indexOf(t.charAt(s++))))>>16&255, n=a>>8&255, r=255&a, c[h++]=64==i?String.fromCharCode(e):64==o?String.fromCharCode(e,n):String.fromCharCode(e,n,r), s<t.length;);return c.join("")}), Array.prototype.map||(Array.prototype.map=function(t){if(null==this||"function"!=typeof t)throw new TypeError;for(var e=Object(this),n=e.length>>>0,r=new Array(n),i=1<arguments.length?arguments[1]:void 0,o=0;o<n;o++)o in e&&(r[o]=t.call(i,e[o],o,e));return r}), Array.isArray||(Array.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)}), Array.prototype.forEach||(Array.prototype.forEach=function(t,e){if(null==this||"function"!=typeof t)throw new TypeError;for(var n=Object(this),r=n.length>>>0,i=0;i<r;i++)i in n&&t.call(e,n[i],i,n);}), Object.keys||(Object.keys=(s=Object.prototype.hasOwnProperty, h=!{toString:null}.propertyIsEnumerable("toString"), l=(c=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"]).length, function(t){if("object"!=typeof t&&("function"!=typeof t||null===t))throw new TypeError;var e,n,r=[];for(e in t)s.call(t,e)&&r.push(e);if(h)for(n=0;n<l;n++)s.call(t,c[n])&&r.push(c[n]);return r})), "function"!=typeof Object.assign&&(Object.assign=function(t){if(null==t)throw new TypeError("Cannot convert undefined or null to object");t=Object(t);for(var e=1;e<arguments.length;e++){var n=arguments[e];if(null!=n)for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r]);}return t}), String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")}), String.prototype.trimLeft||(String.prototype.trimLeft=function(){return this.replace(/^\s+/g,"")}), String.prototype.trimRight||(String.prototype.trimRight=function(){return this.replace(/\s+$/g,"")});}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||"undefined"!=typeof commonjsGlobal&&commonjsGlobal||Function('return typeof this === "object" && this.content')()||Function("return this")()), $}); 218}); 219 220var jspdf_min_1 = jspdf_min.jsPDF; 221var jspdf_min_2 = jspdf_min.saveAs; 222var jspdf_min_3 = jspdf_min.GifWriter; 223var jspdf_min_4 = jspdf_min.GifReader; 224 225var Path = createCommonjsModule(function (module, exports) { 226Object.defineProperty(exports, "__esModule", { 227 value: true 228}); 229var PATH = exports.PATH = { 230 VECTOR: 0, 231 BEZIER_CURVE: 1, 232 CIRCLE: 2 233}; 234}); 235 236unwrapExports(Path); 237var Path_1 = Path.PATH; 238 239var Color_1 = createCommonjsModule(function (module, exports) { 240Object.defineProperty(exports, "__esModule", { 241 value: true 242}); 243 244var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); 245 246var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); 247 248function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 249 250var HEX3 = /^#([a-f0-9]{3})$/i; 251var hex3 = function hex3(value) { 252 var match = value.match(HEX3); 253 if (match) { 254 return [parseInt(match[1][0] + match[1][0], 16), parseInt(match[1][1] + match[1][1], 16), parseInt(match[1][2] + match[1][2], 16), null]; 255 } 256 return false; 257}; 258 259var HEX6 = /^#([a-f0-9]{6})$/i; 260var hex6 = function hex6(value) { 261 var match = value.match(HEX6); 262 if (match) { 263 return [parseInt(match[1].substring(0, 2), 16), parseInt(match[1].substring(2, 4), 16), parseInt(match[1].substring(4, 6), 16), null]; 264 } 265 return false; 266}; 267 268var RGB = /^rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/; 269var rgb = function rgb(value) { 270 var match = value.match(RGB); 271 if (match) { 272 return [Number(match[1]), Number(match[2]), Number(match[3]), null]; 273 } 274 return false; 275}; 276 277var RGBA = /^rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d?\.?\d+)\s*\)$/; 278var rgba = function rgba(value) { 279 var match = value.match(RGBA); 280 if (match && match.length > 4) { 281 return [Number(match[1]), Number(match[2]), Number(match[3]), Number(match[4])]; 282 } 283 return false; 284}; 285 286var fromArray = function fromArray(array) { 287 return [Math.min(array[0], 255), Math.min(array[1], 255), Math.min(array[2], 255), array.length > 3 ? array[3] : null]; 288};
289 290var namedColor = function namedColor(name) { 291 var color = NAMED_COLORS[name.toLowerCase()]; 292 return color ? color : false; 293}; 294 295var Color = function () { 296 function Color(value) { 297 _classCallCheck(this, Color); 298 299 var _ref = Array.isArray(value) ? fromArray(value) : hex3(value) || rgb(value) || rgba(value) || namedColor(value) || hex6(value) || [0, 0, 0, null], 300 _ref2 = _slicedToArray(_ref, 4), 301 r = _ref2[0], 302 g = _ref2[1], 303 b = _ref2[2], 304 a = _ref2[3]; 305 306 this.r = r; 307 this.g = g; 308 this.b = b; 309 this.a = a; 310 } 311 312 _createClass(Color, [{ 313 key: 'isTransparent', 314 value: function isTransparent() { 315 return this.a === 0; 316 } 317 }, { 318 key: 'toString', 319 value: function toString() { 320 return this.a !== null && this.a !== 1 ? 'rgba(' + this.r + ',' + this.g + ',' + this.b + ',' + this.a + ')' : 'rgb(' + this.r + ',' + this.g + ',' + this.b + ')'; 321 } 322 }]); 323 324 return Color; 325}(); 326 327exports.default = Color; 328 329 330var NAMED_COLORS = { 331 transparent: [0, 0, 0, 0], 332 aliceblue: [240, 248, 255, null], 333 antiquewhite: [250, 235, 215, null], 334 aqua: [0, 255, 255, null], 335 aquamarine: [127, 255, 212, null], 336 azure: [240, 255, 255, null], 337 beige: [245, 245, 220, null], 338 bisque: [255, 228, 196, null], 339 black: [0, 0, 0, null], 340 blanchedalmond: [255, 235, 205, null], 341 blue: [0, 0, 255, null], 342 blueviolet: [138, 43, 226, null], 343 brown: [165, 42, 42, null], 344 burlywood: [222, 184, 135, null], 345 cadetblue: [95, 158, 160, null], 346 chartreuse: [127, 255, 0, null], 347 chocolate: [210, 105, 30, null], 348 coral: [255, 127, 80, null], 349 cornflowerblue: [100, 149, 237, null], 350 cornsilk: [255, 248, 220, null], 351 crimson: [220, 20, 60, null], 352 cyan: [0, 255, 255, null], 353 darkblue: [0, 0, 139, null], 354 darkcyan: [0, 139, 139, null], 355 darkgoldenrod: [184, 134, 11, null], 356 darkgray: [169, 169, 169, null], 357 darkgreen: [0, 100, 0, null], 358 darkgrey: [169, 169, 169, null], 359 darkkhaki: [189, 183, 107, null], 360 darkmagenta: [139, 0, 139, null], 361 darkolivegreen: [85, 107, 47, null], 362 darkorange: [255, 140, 0, null], 363 darkorchid: [153, 50, 204, null], 364 darkred: [139, 0, 0, null], 365 darksalmon: [233, 150, 122, null], 366 darkseagreen: [143, 188, 143, null], 367 darkslateblue: [72, 61, 139, null], 368 darkslategray: [47, 79, 79, null], 369 darkslategrey: [47, 79, 79, null], 370 darkturquoise: [0, 206, 209, null], 371 darkviolet: [148, 0, 211, null], 372 deeppink: [255, 20, 147, null], 373 deepskyblue: [0, 191, 255, null], 374 dimgray: [105, 105, 105, null], 375 dimgrey: [105, 105, 105, null], 376 dodgerblue: [30, 144, 255, null], 377 firebrick: [178, 34, 34, null], 378 floralwhite: [255, 250, 240, null], 379 forestgreen: [34, 139, 34, null], 380 fuchsia: [255, 0, 255, null], 381 gainsboro: [220, 220, 220, null], 382 ghostwhite: [248, 248, 255, null], 383 gold: [255, 215, 0, null], 384 goldenrod: [218, 165, 32, null], 385 gray: [128, 128, 128, null], 386 green: [0, 128, 0, null], 387 greenyellow: [173, 255, 47, null], 388 grey: [128, 128, 128, null], 389 honeydew: [240, 255, 240, null], 390 hotpink: [255, 105, 180, null], 391 indianred: [205, 92, 92, null], 392 indigo: [75, 0, 130, null], 393 ivory: [255, 255, 240, null], 394 khaki: [240, 230, 140, null], 395 lavender: [230, 230, 250, null], 396 lavenderblush: [255, 240, 245, null], 397 lawngreen: [124, 252, 0, null], 398 lemonchiffon: [255, 250, 205, null], 399 lightblue: [173, 216, 230, null], 400 lightcoral: [240, 128, 128, null], 401 lightcyan: [224, 255, 255, null], 402 lightgoldenrodyellow: [250, 250, 210, null], 403 lightgray: [211, 211, 211, null], 404 lightgreen: [144, 238, 144, null], 405 lightgrey: [211, 211, 211, null], 406 lightpink: [255, 182, 193, null], 407 lightsalmon: [255, 160, 122, null], 408 lightseagreen: [32, 178, 170, null], 409 lightskyblue: [135, 206, 250, null], 410 lightslategray: [119, 136, 153, null], 411 lightslategrey: [119, 136, 153, null], 412 lightsteelblue: [176, 196, 222, null], 413 lightyellow: [255, 255, 224, null], 414 lime: [0, 255, 0, null], 415 limegreen: [50, 205, 50, null], 416 linen: [250, 240, 230, null], 417 magenta: [255, 0, 255, null], 418 maroon: [128, 0, 0, null], 419 mediumaquamarine: [102, 205, 170, null], 420 mediumblue: [0, 0, 205, null], 421 mediumorchid: [186, 85, 211, null], 422 mediumpurple: [147, 112, 219, null], 423 mediumseagreen: [60, 179, 113, null], 424 mediumslateblue: [123, 104, 238, null], 425 mediumspringgreen: [0, 250, 154, null], 426 mediumturquoise: [72, 209, 204, null], 427 mediumvioletred: [199, 21, 133, null], 428 midnightblue: [25, 25, 112, null], 429 mintcream: [245, 255, 250, null], 430 mistyrose: [255, 228, 225, null], 431 moccasin: [255, 228, 181, null], 432 navajowhite: [255, 222, 173, null], 433 navy: [0, 0, 128, null], 434 oldlace: [253, 245, 230, null], 435 olive: [128, 128, 0, null], 436 olivedrab: [107, 142, 35, null], 437 orange: [255, 165, 0, null], 438 orangered: [255, 69, 0, null], 439 orchid: [218, 112, 214, null], 440 palegoldenrod: [238, 232, 170, null], 441 palegreen: [152, 251, 152, null], 442 paleturquoise: [175, 238, 238, null], 443 palevioletred: [219, 112, 147, null], 444 papayawhip: [255, 239, 213, null], 445 peachpuff: [255, 218, 185, null], 446 peru: [205, 133, 63, null], 447 pink: [255, 192, 203, null], 448 plum: [221, 160, 221, null], 449 powderblue: [176, 224, 230, null], 450 purple: [128, 0, 128, null], 451 rebeccapurple: [102, 51, 153, null], 452 red: [255, 0, 0, null], 453 rosybrown: [188, 143, 143, null], 454 royalblue: [65, 105, 225, null], 455 saddlebrown: [139, 69, 19, null], 456 salmon: [250, 128, 114, null], 457 sandybrown: [244, 164, 96, null], 458 seagreen: [46, 139, 87, null], 459 seashell: [255, 245, 238, null], 460 sienna: [160, 82, 45, null], 461 silver: [192, 192, 192, null], 462 skyblue: [135, 206, 235, null], 463 slateblue: [106, 90, 205, null], 464 slategray: [112, 128, 144, null], 465 slategrey: [112, 128, 144, null], 466 snow: [255, 250, 250, null], 467 springgreen: [0, 255, 127, null], 468 steelblue: [70, 130, 180, null], 469 tan: [210, 180, 140, null], 470 teal: [0, 128, 128, null], 471 thistle: [216, 191, 216, null], 472 tomato: [255, 99, 71, null], 473 turquoise: [64, 224, 208, null], 474 violet: [238, 130, 238, null], 475 wheat: [245, 222, 179, null], 476 white: [255, 255, 255, null], 477 whitesmoke: [245, 245, 245, null], 478 yellow: [255, 255, 0, null], 479 yellowgreen: [154, 205, 50, null] 480}; 481 482var TRANSPARENT = exports.TRANSPARENT = new Color([0, 0, 0, 0]); 483}); 484 485unwrapExports(Color_1); 486var Color_2 = Color_1.TRANSPARENT; 487 488var textDecoration = createCommonjsModule(function (module, exports
488) { 489Object.defineProperty(exports, "__esModule", { 490 value: true 491}); 492exports.parseTextDecoration = exports.TEXT_DECORATION_LINE = exports.TEXT_DECORATION = exports.TEXT_DECORATION_STYLE = undefined; 493 494 495 496var _Color2 = _interopRequireDefault(Color_1); 497 498function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 499 500var TEXT_DECORATION_STYLE = exports.TEXT_DECORATION_STYLE = { 501 SOLID: 0, 502 DOUBLE: 1, 503 DOTTED: 2, 504 DASHED: 3, 505 WAVY: 4 506}; 507 508var TEXT_DECORATION = exports.TEXT_DECORATION = { 509 NONE: null 510}; 511 512var TEXT_DECORATION_LINE = exports.TEXT_DECORATION_LINE = { 513 UNDERLINE: 1, 514 OVERLINE: 2, 515 LINE_THROUGH: 3, 516 BLINK: 4 517}; 518 519var parseLine = function parseLine(line) { 520 switch (line) { 521 case 'underline': 522 return TEXT_DECORATION_LINE.UNDERLINE; 523 case 'overline': 524 return TEXT_DECORATION_LINE.OVERLINE; 525 case 'line-through': 526 return TEXT_DECORATION_LINE.LINE_THROUGH; 527 } 528 return TEXT_DECORATION_LINE.BLINK; 529}; 530 531var parseTextDecorationLine = function parseTextDecorationLine(line) { 532 if (line === 'none') { 533 return null; 534 } 535 536 return line.split(' ').map(parseLine); 537}; 538 539var parseTextDecorationStyle = function parseTextDecorationStyle(style) { 540 switch (style) { 541 case 'double': 542 return TEXT_DECORATION_STYLE.DOUBLE; 543 case 'dotted': 544 return TEXT_DECORATION_STYLE.DOTTED; 545 case 'dashed': 546 return TEXT_DECORATION_STYLE.DASHED; 547 case 'wavy': 548 return TEXT_DECORATION_STYLE.WAVY; 549 } 550 return TEXT_DECORATION_STYLE.SOLID; 551}; 552 553var parseTextDecoration = exports.parseTextDecoration = function parseTextDecoration(style) { 554 var textDecorationLine = parseTextDecorationLine(style.textDecorationLine ? style.textDecorationLine : style.textDecoration); 555 if (textDecorationLine === null) { 556 return TEXT_DECORATION.NONE; 557 } 558 559 var textDecorationColor = style.textDecorationColor ? new _Color2.default(style.textDecorationColor) : null; 560 var textDecorationStyle = parseTextDecorationStyle(style.textDecorationStyle); 561 562 return { 563 textDecorationLine: textDecorationLine, 564 textDecorationColor: textDecorationColor, 565 textDecorationStyle: textDecorationStyle 566 }; 567};
568}); 569 570unwrapExports(textDecoration); 571var textDecoration_1 = textDecoration.parseTextDecoration; 572var textDecoration_2 = textDecoration.TEXT_DECORATION_LINE; 573var textDecoration_3 = textDecoration.TEXT_DECORATION; 574var textDecoration_4 = textDecoration.TEXT_DECORATION_STYLE; 575 576var CanvasRenderer_1 = createCommonjsModule(function (module, exports) { 577Object.defineProperty(exports, "__esModule", { 578 value: true 579}); 580 581var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); 582 583 584 585 586 587function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 588 589var addColorStops = function addColorStops(gradient, canvasGradient) { 590 var maxStop = Math.max.apply(null, gradient.colorStops.map(function (colorStop) { 591 return colorStop.stop; 592 })); 593 var f = 1 / Math.max(1, maxStop); 594 gradient.colorStops.forEach(function (colorStop) { 595 canvasGradient.addColorStop(f * colorStop.stop, colorStop.color.toString()); 596 }); 597}; 598 599var CanvasRenderer = function () { 600 function CanvasRenderer(canvas) { 601 _classCallCheck(this, CanvasRenderer); 602 603 this.canvas = canvas ? canvas : document.createElement('canvas'); 604 } 605 606 _createClass(CanvasRenderer, [{ 607 key: 'render', 608 value: function render(options) { 609 this.ctx = this.canvas.getContext('2d'); 610 this.options = options; 611 this.canvas.width = Math.floor(options.width * options.scale); 612 this.canvas.height = Math.floor(options.height * options.scale); 613 this.canvas.style.width = options.width + 'px'; 614 this.canvas.style.height = options.height + 'px'; 615 616 this.ctx.scale(this.options.scale, this.options.scale); 617 this.ctx.translate(-options.x, -options.y); 618 this.ctx.textBaseline = 'bottom'; 619 options.logger.log('Canvas renderer initialized (' + options.width + 'x' + options.height + ' at ' + options.x + ',' + options.y + ') with scale ' + this.options.scale); 620 } 621 }, { 622 key: 'clip', 623 value: function clip(clipPaths, callback) { 624 var _this = this; 625 626 if (clipPaths.length) { 627 this.ctx.save(); 628 clipPaths.forEach(function (path) { 629 _this.path(path); 630 _this.ctx.clip(); 631 }); 632 } 633 634 callback(); 635 636 if (clipPaths.length) { 637 this.ctx.restore(); 638 } 639 } 640 }, { 641 key: 'drawImage', 642 value: function drawImage(image, source, destination) { 643 this.ctx.drawImage(image, source.left, source.top, source.width, source.height, destination.left, destination.top, destination.width, destination.height); 644 } 645 }, { 646 key: 'drawShape', 647 value: function drawShape(path, color) { 648 this.path(path); 649 this.ctx.fillStyle = color.toString(); 650 this.ctx.fill(); 651 } 652 }, { 653 key: 'fill', 654 value: function fill(color) { 655 this.ctx.fillStyle = color.toString(); 656 this.ctx.fill(); 657 } 658 }, { 659 key: 'getTarget', 660 value: function getTarget() { 661 this.canvas.getContext('2d').setTransform(1, 0, 0, 1, 0, 0); 662 return Promise.resolve(this.canvas); 663 } 664 }, { 665 key: 'path', 666 value: function path(_path) { 667 var _this2 = this; 668 669 this.ctx.beginPath(); 670 if (Array.isArray(_path)) { 671 _path.forEach(function (point, index) { 672 var start = point.type === Path.PATH.VECTOR ? point : point.start; 673 if (index === 0) { 674 _this2.ctx.moveTo(start.x, start.y); 675 } else { 676 _this2.ctx.lineTo(start.x, start.y); 677 } 678 679 if (point.type === Path.PATH.BEZIER_CURVE) { 680 _this2.ctx.bezierCurveTo(point.startControl.x, point.startControl.y, point.endControl.x, point.endControl.y, point.end.x, point.end.y); 681 } 682 }); 683 } else { 684 this.ctx.arc(_path.x + _path.radius, _path.y + _path.radius, _path.radius, 0, Math.PI * 2, true); 685 } 686 687 this.ctx.closePath(); 688 } 689 }, { 690 key: 'rectangle', 691 value: function rectangle(x, y, width, height, color) { 692 this.ctx.fillStyle = color.toString(); 693 this.ctx.fillRect(x, y, width, height); 694 } 695 }, { 696 key: 'renderLinearGradient', 697 value: function renderLinearGradient(bounds, gradient) { 698 var linearGradient = this.ctx.createLinearGradient(bounds.left + gradient.direction.x1, bounds.top + gradient.direction.y1, bounds.left + gradient.direction.x0, bounds.top + gradient.direction.y0); 699 700 addColorStops(gradient, linearGradient); 701 this.ctx.fillStyle = linearGradient; 702 this.ctx.fillRect(bounds.left, bounds.top, bounds.width, bounds.height); 703 } 704 }, { 705 key: 'renderRadialGradient', 706 value: function renderRadialGradient(bounds, gradient) { 707 var _this3 = this; 708 709 var x = bounds.left + gradient.center.x; 710 var y = bounds.top + gradient.center.y; 711 712 var radialGradient = this.ctx.createRadialGradient(x, y, 0, x, y, gradient.radius.x); 713 if (!radialGradient) { 714 return; 715 } 716 717 addColorStops(gradient, radialGradient); 718 this.ctx.fillStyle = radialGradient; 719 720 if (gradient.radius.x !== gradient.radius.y) { 721 // transforms for elliptical radial gradient
722 var midX = bounds.left + 0.5 * bounds.width; 723 var midY = bounds.top + 0.5 * bounds.height; 724 var f = gradient.radius.y / gradient.radius.x; 725 var invF = 1 / f; 726 727 this.transform(midX, midY, [1, 0, 0, f, 0, 0], function () { 728 return _this3.ctx.fillRect(bounds.left, invF * (bounds.top - midY) + midY, bounds.width, bounds.height * invF); 729 }); 730 } else { 731 this.ctx.fillRect(bounds.left, bounds.top, bounds.width, bounds.height); 732 } 733 } 734 }, { 735 key: 'renderRepeat', 736 value: function renderRepeat(path, image, imageSize, offsetX, offsetY) { 737 this.path(path); 738 this.ctx.fillStyle = this.ctx.createPattern(this.resizeImage(image, imageSize), 'repeat'); 739 this.ctx.translate(offsetX, offsetY); 740 this.ctx.fill(); 741 this.ctx.translate(-offsetX, -offsetY); 742 } 743 }, { 744 key: 'renderTextNode', 745 value: function renderTextNode(textBounds, color, font, textDecoration$$1, textShadows) { 746 var _this4 = this; 747 748 this.ctx.font = [font.fontStyle, font.fontVariant, font.fontWeight, font.fontSize, font.fontFamily].join(' '); 749 750 textBounds.forEach(function (text) { 751 _this4.ctx.fillStyle = color.toString(); 752 if (textShadows && text.text.trim().length) { 753 textShadows.slice(0).reverse().forEach(function (textShadow) { 754 _this4.ctx.shadowColor = textShadow.color.toString(); 755 _this4.ctx.shadowOffsetX = textShadow.offsetX * _this4.options.scale; 756 _this4.ctx.shadowOffsetY = textShadow.offsetY * _this4.options.scale; 757 _this4.ctx.shadowBlur = textShadow.blur; 758 759 _this4.ctx.fillText(text.text, text.bounds.left, text.bounds.top + text.bounds.height); 760 }); 761 } else { 762 _this4.ctx.fillText(text.text, text.bounds.left, text.bounds.top + text.bounds.height); 763 } 764 765 if (textDecoration$$1 !== null) { 766 var textDecorationColor = textDecoration$$1.textDecorationColor || color; 767 textDecoration$$1.textDecorationLine.forEach(function (textDecorationLine) { 768 switch (textDecorationLine) { 769 case textDecoration.TEXT_DECORATION_LINE.UNDERLINE: 770 // Draws a line at the baseline of the font 771 // TODO As some browsers display the line as more than 1px if the font-size is big, 772 // need to take that into account both in position and size 773 var _options$fontMetrics$ = _this4.options.fontMetrics.getMetrics(font), 774 baseline = _options$fontMetrics$.baseline; 775 776 _this4.rectangle(text.bounds.left, Math.round(text.bounds.top + baseline), text.bounds.width, 1, textDecorationColor); 777 break; 778 case textDecoration.TEXT_DECORATION_LINE.OVERLINE: 779 _this4.rectangle(text.bounds.left, Math.round(text.bounds.top), text.bounds.width, 1, textDecorationColor); 780 break; 781 case textDecoration.TEXT_DECORATION_LINE.LINE_THROUGH: 782 // TODO try and find exact position for line-through 783 var _options$fontMetrics$2 = _this4.options.fontMetrics.getMetrics(font), 784 middle = _options$fontMetrics$2.middle; 785 786 _this4.rectangle(text.bounds.left, Math.ceil(text.bounds.top + middle), text.bounds.width, 1, textDecorationColor); 787 break; 788 } 789 }); 790 } 791 }); 792 } 793 }, { 794 key: 'resizeImage', 795 value: function resizeImage(image, size) { 796 if (image.width === size.width && image.height === size.height) { 797 return image; 798 } 799 800 var canvas = this.canvas.ownerDocument.createElement('canvas'); 801 canvas.width = size.width; 802 canvas.height = size.height; 803 var ctx = canvas.getContext('2d'); 804 ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, size.width, size.height); 805 return canvas; 806 } 807 }, { 808 key: 'setOpacity', 809 value: function setOpacity(opacity) { 810 this.ctx.globalAlpha = opacity; 811 } 812 }, { 813 key: 'transform',
814 value: function transform(offsetX, offsetY, matrix, callback) { 815 this.ctx.save(); 816 this.ctx.translate(offsetX, offsetY); 817 this.ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]); 818 this.ctx.translate(-offsetX, -offsetY); 819 820 callback(); 821 822 this.ctx.restore(); 823 } 824 }]); 825 826 return CanvasRenderer; 827}(); 828 829exports.default = CanvasRenderer; 830}); 831 832unwrapExports(CanvasRenderer_1); 833 834var Logger_1 = createCommonjsModule(function (module, exports) { 835Object.defineProperty(exports, "__esModule", { 836 value: true 837}); 838 839var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); 840 841function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 842 843var Logger = function () { 844 function Logger(enabled, id, start) { 845 _classCallCheck(this, Logger); 846 847 this.enabled = typeof window !== 'undefined' && enabled; 848 this.start = start ? start : Date.now(); 849 this.id = id; 850 } 851 852 _createClass(Logger, [{ 853 key: 'child', 854 value: function child(id) { 855 return new Logger(this.enabled, id, this.start); 856 } 857 858 // eslint-disable-next-line flowtype/no-weak-types 859 860 }, { 861 key: 'log', 862 value: function log() { 863 if (this.enabled && window.console && window.console.log) { 864 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { 865 args[_key] = arguments[_key]; 866 } 867 868 Function.prototype.bind.call(window.console.log, window.console).apply(window.console, [Date.now() - this.start + 'ms', this.id ? 'html2canvas (' + this.id + '):' : 'html2canvas:'].concat([].slice.call(args, 0))); 869 } 870 } 871 872 // eslint-disable-next-line flowtype/no-weak-types 873 874 }, { 875 key: 'error', 876 value: function error() { 877 if (this.enabled && window.console && window.console.error) { 878 for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { 879 args[_key2] = arguments[_key2]; 880 } 881 882 Function.prototype.bind.call(window.console.error, window.console).apply(window.console, [Date.now() - this.start + 'ms', this.id ? 'html2canvas (' + this.id + '):' : 'html2canvas:'].concat([].slice.call(args, 0))); 883 } 884 } 885 }]); 886 887 return Logger; 888}(); 889 890exports.default = Logger; 891}); 892 893unwrapExports(Logger_1); 894 895var Util = createCommonjsModule(function (module, exports) { 896Object.defineProperty(exports, "__esModule", { 897 value: true 898}); 899var contains = exports.contains = function contains(bit, value) { 900 return (bit & value) !== 0; 901}; 902 903var distance = exports.distance = function distance(a, b) { 904 return Math.sqrt(a * a + b * b); 905}; 906 907var copyCSSStyles = exports.copyCSSStyles = function copyCSSStyles(style, target) { 908 // Edge does not provide value for cssText 909 for (var i = style.length - 1; i >= 0; i--) { 910 var property = style.item(i); 911 // Safari shows pseudoelements if content is set 912 if (property !== 'content') { 913 target.style.setProperty(property, style.getPropertyValue(property)); 914 } 915 } 916 return target; 917}; 918 919var SMALL_IMAGE = exports.SMALL_IMAGE = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'; 920}); 921 922unwrapExports(Util); 923var Util_1 = Util.contains; 924var Util_2 = Util.distance; 925var Util_3 = Util.copyCSSStyles; 926var Util_4 = Util.SMALL_IMAGE; 927
928var Length_1 = createCommonjsModule(function (module, exports) { 929Object.defineProperty(exports, "__esModule", { 930 value: true 931}); 932exports.calculateLengthFromValueWithUnit = exports.LENGTH_TYPE = undefined; 933 934var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); 935 936 937 938var _NodeContainer2 = _interopRequireDefault(NodeContainer_1); 939 940function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 941 942function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 943 944var LENGTH_TYPE = exports.LENGTH_TYPE = { 945 PX: 0, 946 PERCENTAGE: 1 947}; 948 949var Length = function () { 950 function Length(value) { 951 _classCallCheck(this, Length); 952 953 this.type = value.substr(value.length - 1) === '%' ? LENGTH_TYPE.PERCENTAGE : LENGTH_TYPE.PX; 954 var parsedValue = parseFloat(value); 955 this.value = isNaN(parsedValue) ? 0 : parsedValue; 956 } 957 958 _createClass(Length, [{ 959 key: 'isPercentage', 960 value: function isPercentage() { 961 return this.type === LENGTH_TYPE.PERCENTAGE; 962 } 963 }, { 964 key: 'getAbsoluteValue', 965 value: function getAbsoluteValue(parentLength) { 966 return this.isPercentage() ? parentLength * (this.value / 100) : this.value; 967 } 968 }], [{ 969 key: 'create', 970 value: function create(v) { 971 return new Length(v); 972 } 973 }]); 974 975 return Length; 976}(); 977 978exports.default = Length; 979 980 981var getRootFontSize = function getRootFontSize(container) { 982 var parent = container.parent; 983 return parent ? getRootFontSize(parent) : parseFloat(container.style.font.fontSize); 984}; 985 986var calculateLengthFromValueWithUnit = exports.calculateLengthFromValueWithUnit = function calculateLengthFromValueWithUnit(container, value, unit) { 987 switch (unit) { 988 case 'px': 989 case '%': 990 return new Length(value + unit); 991 case 'em': 992 case 'rem': 993 var length = new Length(value); 994 length.value *= unit === 'em' ? parseFloat(container.style.font.fontSize) : getRootFontSize(container); 995 return length; 996 default: 997 // TODO: handle correctly if unknown unit is used 998 return new Length('0'); 999 } 1000}; 1001}); 1002 1003unwrapExports(Length_1); 1004var Length_2 = Length_1.calculateLengthFromValueWithUnit; 1005var Length_3 = Length_1.LENGTH_TYPE; 1006 1007var Size_1 = createCommonjsModule(function (module, exports) { 1008Object.defineProperty(exports, "__esModule", { 1009 value: true 1010}); 1011 1012function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 1013 1014var Size = function Size(width, height) { 1015 _classCallCheck(this, Size); 1016 1017 this.width = width; 1018 this.height = height; 1019}; 1020 1021exports.default = Size; 1022}); 1023 1024unwrapExports(Size_1); 1025 1026var Vector_1 = createCommonjsModule(function (module, exports) { 1027Object.defineProperty(exports, "__esModule", { 1028 value: true 1029}); 1030 1031 1032 1033function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 1034 1035var Vector = function Vector(x, y) { 1036 _classCallCheck(this, Vector); 1037 1038 this.type = Path.PATH.VECTOR; 1039 this.x = x; 1040 this.y = y; 1041 1042}; 1043 1044exports.default = Vector; 1045}); 1046 1047unwrapExports(Vector_1); 1048 1049var BezierCurve_1 = createCommonjsModule(function (module, exports) { 1050Object.defineProperty(exports, "__esModule", { 1051 value: true 1052}); 1053 1054var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); 1055 1056 1057 1058 1059 1060var _Vector2 = _interopRequireDefault(Vector_1); 1061 1062function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 1063 1064function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 1065 1066var lerp = function lerp(a, b, t) { 1067 return new _Vector2.default(a.x + (b.x - a.x) * t, a.y + (b.y - a.y) * t); 1068};
1069 1070var BezierCurve = function () { 1071 function BezierCurve(start, startControl, endControl, end) { 1072 _classCallCheck(this, BezierCurve); 1073 1074 this.type = Path.PATH.BEZIER_CURVE; 1075 this.start = start; 1076 this.startControl = startControl; 1077 this.endControl = endControl; 1078 this.end = end; 1079 } 1080 1081 _createClass(BezierCurve, [{ 1082 key: 'subdivide', 1083 value: function subdivide(t, firstHalf) { 1084 var ab = lerp(this.start, this.startControl, t); 1085 var bc = lerp(this.startControl, this.endControl, t); 1086 var cd = lerp(this.endControl, this.end, t); 1087 var abbc = lerp(ab, bc, t); 1088 var bccd = lerp(bc, cd, t); 1089 var dest = lerp(abbc, bccd, t); 1090 return firstHalf ? new BezierCurve(this.start, ab, abbc, dest) : new BezierCurve(dest, bccd, cd, this.end); 1091 } 1092 }, { 1093 key: 'reverse', 1094 value: function reverse() { 1095 return new BezierCurve(this.end, this.endControl, this.startControl, this.start); 1096 } 1097 }]); 1098 1099 return BezierCurve; 1100}(); 1101 1102exports.default = BezierCurve; 1103}); 1104 1105unwrapExports(BezierCurve_1); 1106 1107var Bounds_1 = createCommonjsModule(function (module, exports) { 1108Object.defineProperty(exports, "__esModule", { 1109 value: true 1110}); 1111exports.parseBoundCurves = exports.calculatePaddingBoxPath = exports.calculateBorderBoxPath = exports.parsePathForBorder = exports.parseDocumentSize = exports.calculateContentBox = exports.calculatePaddingBox = exports.parseBounds = exports.Bounds = undefined; 1112 1113var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); 1114 1115 1116 1117var _Vector2 = _interopRequireDefault(Vector_1); 1118 1119 1120 1121var _BezierCurve2 = _interopRequireDefault(BezierCurve_1); 1122 1123function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 1124 1125function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 1126 1127var TOP = 0; 1128var RIGHT = 1; 1129var BOTTOM = 2; 1130var LEFT = 3; 1131 1132var H = 0; 1133var V = 1; 1134 1135var Bounds = exports.Bounds = function () { 1136 function Bounds(x, y, w, h) { 1137 _classCallCheck(this, Bounds); 1138 1139 this.left = x; 1140 this.top = y; 1141 this.width = w; 1142 this.height = h; 1143 } 1144 1145 _createClass(Bounds, null, [{ 1146 key: 'fromClientRect', 1147 value: function fromClientRect(clientRect, scrollX, scrollY) { 1148 return new Bounds(clientRect.left + scrollX, clientRect.top + scrollY, clientRect.width, clientRect.height); 1149 } 1150 }]); 1151 1152 return Bounds; 1153}(); 1154 1155var parseBounds = exports.parseBounds = function parseBounds(node, scrollX, scrollY) { 1156 return Bounds.fromClientRect(node.getBoundingClientRect(), scrollX, scrollY); 1157}; 1158 1159var calculatePaddingBox = exports.calculatePaddingBox = function calculatePaddingBox(bounds, borders) { 1160 return new Bounds(bounds.left + borders[LEFT].borderWidth, bounds.top + borders[TOP].borderWidth, bounds.width - (borders[RIGHT].borderWidth + borders[LEFT].borderWidth), bounds.height - (borders[TOP].borderWidth + borders[BOTTOM].borderWidth)); 1161}; 1162 1163var calculateContentBox = exports.calculateContentBox = function calculateContentBox(bounds, padding, borders) { 1164 // TODO support percentage paddings 1165 var paddingTop = padding[TOP].value; 1166 var paddingRight = padding[RIGHT].value; 1167 var paddingBottom = padding[BOTTOM].value; 1168 var paddingLeft = padding[LEFT].value; 1169 1170 return new Bounds(bounds.left + paddingLeft + borders[LEFT].borderWidth, bounds.top + paddingTop + borders[TOP].borderWidth, bounds.width - (borders[RIGHT].borderWidth + borders[LEFT].borderWidth + paddingLeft + paddingRight), bounds.height - (borders[TOP].borderWidth + borders[BOTTOM].borderWidth + paddingTop + paddingBottom)); 1171}; 1172 1173var parseDocumentSize = exports.parseDocumentSize = function parseDocumentSize(document) { 1174 var body = document.body; 1175 var documentElement = document.documentElement; 1176 1177 if (!body || !documentElement) { 1178 throw new Error(''); 1179 } 1180 var width = Math.max(Math.max(body.scrollWidth, documentElement.scrollWidth), Math.max(body.offsetWidth, documentElement.offsetWidth), Math.max(body.clientWidth, documentElement.clientWidth)); 1181 1182 var height = Math.max(Math.max(body.scrollHeight, documentElement.scrollHeight), Math.max(body.offsetHeight, documentElement.offsetHeight), Math.max(body.clientHeight, documentElement.clientHeight)); 1183 1184 return new Bounds(0, 0, width, height); 1185}; 1186 1187var parsePathForBorder = exports.parsePathForBorder = function parsePathForBorder(curves, borderSide) { 1188 switch (borderSide) { 1189 case TOP: 1190 return createPathFromCurves(curves.topLeftOuter, curves.topLeftInner, curves.topRightOuter, curves.topRightInner); 1191 case RIGHT: 1192 return createPathFromCurves(curves.topRightOuter, curves.topRightInner, curves.bottomRightOuter, curves.bottomRightInner); 1193 case BOTTOM: 1194 return createPathFromCurves(curves.bottomRightOuter, curves.bottomRightInner, curves.bottomLeftOuter, curves.bottomLeftInner); 1195 case LEFT: 1196 default: 1197 return createPathFromCurves(curves.bottomLeftOuter, curves.bottomLeftInner, curves.topLeftOuter, curves.topLeftInner); 1198 } 1199}; 1200 1201var createPathFromCurves = function createPathFromCurves(outer1, inner1, outer2, inner2) { 1202 var path = []; 1203 if (outer1 instanceof _BezierCurve2.default) { 1204 path.push(outer1.subdivide(0.5, false)); 1205 } else { 1206 path.push(outer1); 1207 } 1208 1209 if (outer2 instanceof _BezierCurve2.default) { 1210 path.push(outer2.subdivide(0.5, true)); 1211 } else { 1212 path.push(outer2); 1213 } 1214 1215 if (inner2 instanceof _BezierCurve2.default) { 1216 path.push(inner2.subdivide(0.5, true).reverse()); 1217 } else { 1218 path.push(inner2); 1219 } 1220 1221 if (inner1 instanceof _BezierCurve2.default) { 1222 path.push(inner1.subdivide(0.5, false).reverse()); 1223 } else { 1224 path.push(inner1); 1225 } 1226 1227 return path; 1228};
1229 1230var calculateBorderBoxPath = exports.calculateBorderBoxPath = function calculateBorderBoxPath(curves) { 1231 return [curves.topLeftOuter, curves.topRightOuter, curves.bottomRightOuter, curves.bottomLeftOuter]; 1232}; 1233 1234var calculatePaddingBoxPath = exports.calculatePaddingBoxPath = function calculatePaddingBoxPath(curves) { 1235 return [curves.topLeftInner, curves.topRightInner, curves.bottomRightInner, curves.bottomLeftInner]; 1236}; 1237 1238var parseBoundCurves = exports.parseBoundCurves = function parseBoundCurves(bounds, borders, borderRadius) { 1239 var tlh = borderRadius[CORNER.TOP_LEFT][H].getAbsoluteValue(bounds.width); 1240 var tlv = borderRadius[CORNER.TOP_LEFT][V].getAbsoluteValue(bounds.height); 1241 var trh = borderRadius[CORNER.TOP_RIGHT][H].getAbsoluteValue(bounds.width); 1242 var trv = borderRadius[CORNER.TOP_RIGHT][V].getAbsoluteValue(bounds.height); 1243 var brh = borderRadius[CORNER.BOTTOM_RIGHT][H].getAbsoluteValue(bounds.width); 1244 var brv = borderRadius[CORNER.BOTTOM_RIGHT][V].getAbsoluteValue(bounds.height); 1245 var blh = borderRadius[CORNER.BOTTOM_LEFT][H].getAbsoluteValue(bounds.width); 1246 var blv = borderRadius[CORNER.BOTTOM_LEFT][V].getAbsoluteValue(bounds.height); 1247 1248 var factors = []; 1249 factors.push((tlh + trh) / bounds.width); 1250 factors.push((blh + brh) / bounds.width); 1251 factors.push((tlv + blv) / bounds.height); 1252 factors.push((trv + brv) / bounds.height); 1253 var maxFactor = Math.max.apply(Math, factors); 1254 1255 if (maxFactor > 1) { 1256 tlh /= maxFactor; 1257 tlv /= maxFactor; 1258 trh /= maxFactor; 1259 trv /= maxFactor; 1260 brh /= maxFactor; 1261 brv /= maxFactor; 1262 blh /= maxFactor; 1263 blv /= maxFactor; 1264 } 1265 1266 var topWidth = bounds.width - trh; 1267 var rightHeight = bounds.height - brv; 1268 var bottomWidth = bounds.width - brh; 1269 var leftHeight = bounds.height - blv; 1270 1271 return { 1272 topLeftOuter: tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left, bounds.top, tlh, tlv, CORNER.TOP_LEFT) : new _Vector2.default(bounds.left, bounds.top), 1273 topLeftInner: tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borders[LEFT].borderWidth, bounds.top + borders[TOP].borderWidth, Math.max(0, tlh - borders[LEFT].borderWidth), Math.max(0, tlv - borders[TOP].borderWidth), CORNER.TOP_LEFT) : new _Vector2.default(bounds.left + borders[LEFT].borderWidth, bounds.top + borders[TOP].borderWidth), 1274 topRightOuter: trh > 0 || trv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top, trh, trv, CORNER.TOP_RIGHT) : new _Vector2.default(bounds.left + bounds.width, bounds.top), 1275 topRightInner: trh > 0 || trv > 0 ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width + borders[LEFT].borderWidth), bounds.top + borders[TOP].borderWidth, topWidth > bounds.width + borders[LEFT].borderWidth ? 0 : trh - borders[LEFT].borderWidth, trv - borders[TOP].borderWidth, CORNER.TOP_RIGHT) : new _Vector2.default(bounds.left + bounds.width - borders[RIGHT].borderWidth, bounds.top + borders[TOP].borderWidth), 1276 bottomRightOuter: brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh, brv, CORNER.BOTTOM_RIGHT) : new _Vector2.default(bounds.left + bounds.width, bounds.top + bounds.height), 1277 bottomRightInner: brh > 0 || brv > 0 ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - borders[LEFT].borderWidth), bounds.top + Math.min(rightHeight, bounds.height + borders[TOP].borderWidth), Math.max(0, brh - borders[RIGHT].borderWidth), brv - borders[BOTTOM].borderWidth, CORNER.BOTTOM_RIGHT) : new _Vector2.default(bounds.left + bounds.width - borders[RIGHT].borderWidth, bounds.top + bounds.height - borders[BOTTOM].borderWidth), 1278 bottomLeftOuter: blh > 0 || blv > 0 ? getCurvePoints(bounds.left, bounds.top + leftHeight, blh, blv, CORNER.BOTTOM_LEFT) : new _Vector2.default(bounds.left, bounds.top + bounds.height), 1279 bottomLeftInner: blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borders[LEFT].borderWidth, bounds.top + leftHeight, Math.max(0, blh - borders[LEFT].borderWidth), blv - borders[BOTTOM].borderWidth, CORNER.BOTTOM_LEFT) : new _Vector2.default(bounds.left + borders[LEFT].borderWidth, bounds.top + bounds.height - borders[BOTTOM].borderWidth) 1280 }; 1281};
1282 1283var CORNER = { 1284 TOP_LEFT: 0, 1285 TOP_RIGHT: 1, 1286 BOTTOM_RIGHT: 2, 1287 BOTTOM_LEFT: 3 1288}; 1289 1290var getCurvePoints = function getCurvePoints(x, y, r1, r2, position) { 1291 var kappa = 4 * ((Math.sqrt(2) - 1) / 3); 1292 var ox = r1 * kappa; // control point offset horizontal 1293 var oy = r2 * kappa; // control point offset vertical 1294 var xm = x + r1; // x-middle 1295 var ym = y + r2; // y-middle 1296 1297 switch (position) { 1298 case CORNER.TOP_LEFT: 1299 return new _BezierCurve2.default(new _Vector2.default(x, ym), new _Vector2.default(x, ym - oy), new _Vector2.default(xm - ox, y), new _Vector2.default(xm, y)); 1300 case CORNER.TOP_RIGHT: 1301 return new _BezierCurve2.default(new _Vector2.default(x, y), new _Vector2.default(x + ox, y), new _Vector2.default(xm, ym - oy), new _Vector2.default(xm, ym)); 1302 case CORNER.BOTTOM_RIGHT: 1303 return new _BezierCurve2.default(new _Vector2.default(xm, y), new _Vector2.default(xm, y + oy), new _Vector2.default(x + ox, ym), new _Vector2.default(x, ym)); 1304 case CORNER.BOTTOM_LEFT: 1305 default: 1306 return new _BezierCurve2.default(new _Vector2.default(xm, ym), new _Vector2.default(xm - ox, ym), new _Vector2.default(x, y + oy), new _Vector2.default(x, y)); 1307 } 1308}; 1309}); 1310 1311unwrapExports(Bounds_1); 1312var Bounds_2 = Bounds_1.parseBoundCurves; 1313var Bounds_3 = Bounds_1.calculatePaddingBoxPath; 1314var Bounds_4 = Bounds_1.calculateBorderBoxPath; 1315var Bounds_5 = Bounds_1.parsePathForBorder; 1316var Bounds_6 = Bounds_1.parseDocumentSize; 1317var Bounds_7 = Bounds_1.calculateContentBox; 1318var Bounds_8 = Bounds_1.calculatePaddingBox; 1319var Bounds_9 = Bounds_1.parseBounds; 1320var Bounds_10 = Bounds_1.Bounds; 1321 1322var padding = createCommonjsModule(function (module, exports) { 1323Object.defineProperty(exports, "__esModule", { 1324 value: true 1325}); 1326exports.parsePadding = exports.PADDING_SIDES = undefined; 1327 1328 1329 1330var _Length2 = _interopRequireDefault(Length_1); 1331 1332function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 1333 1334var PADDING_SIDES = exports.PADDING_SIDES = { 1335 TOP: 0, 1336 RIGHT: 1, 1337 BOTTOM: 2, 1338 LEFT: 3 1339}; 1340 1341var SIDES = ['top', 'right', 'bottom', 'left']; 1342 1343var parsePadding = exports.parsePadding = function parsePadding(style) { 1344 return SIDES.map(function (side) { 1345 return new _Length2.default(style.getPropertyValue('padding-' + side)); 1346 }); 1347}; 1348}); 1349 1350unwrapExports(padding); 1351var padding_1 = padding.parsePadding; 1352var padding_2 = padding.PADDING_SIDES; 1353 1354var background = createCommonjsModule(function (module, exports) { 1355Object.defineProperty(exports, "__esModule", { 1356 value: true 1357}); 1358exports.parseBackgroundImage = exports.parseBackground = exports.calculateBackgroundRepeatPath = exports.calculateBackgroundPosition = exports.calculateBackgroungPositioningArea = exports.calculateBackgroungPaintingArea = exports.calculateGradientBackgroundSize = exports.calculateBackgroundSize = exports.BACKGROUND_ORIGIN = exports.BACKGROUND_CLIP = exports.BACKGROUND_SIZE = exports.BACKGROUND_REPEAT = undefined; 1359 1360 1361 1362var _Color2 = _interopRequireDefault(Color_1); 1363 1364 1365 1366var _Length2 = _interopRequireDefault(Length_1); 1367 1368 1369 1370var _Size2 = _interopRequireDefault(Size_1); 1371 1372 1373 1374var _Vector2 = _interopRequireDefault(Vector_1); 1375 1376 1377 1378 1379 1380function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 1381 1382function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 1383 1384var BACKGROUND_REPEAT = exports.BACKGROUND_REPEAT = { 1385 REPEAT: 0, 1386 NO_REPEAT: 1, 1387 REPEAT_X: 2, 1388 REPEAT_Y: 3 1389}; 1390 1391var BACKGROUND_SIZE = exports.BACKGROUND_SIZE = { 1392 AUTO: 0, 1393 CONTAIN: 1, 1394 COVER: 2, 1395 LENGTH: 3 1396}; 1397 1398var BACKGROUND_CLIP = exports.BACKGROUND_CLIP = { 1399 BORDER_BOX: 0, 1400 PADDING_BOX: 1, 1401 CONTENT_BOX: 2 1402}; 1403 1404var BACKGROUND_ORIGIN = exports.BACKGROUND_ORIGIN = BACKGROUND_CLIP; 1405 1406var AUTO = 'auto'; 1407
1408var BackgroundSize = function BackgroundSize(size) { 1409 _classCallCheck(this, BackgroundSize); 1410 1411 switch (size) { 1412 case 'contain': 1413 this.size = BACKGROUND_SIZE.CONTAIN; 1414 break; 1415 case 'cover': 1416 this.size = BACKGROUND_SIZE.COVER; 1417 break; 1418 case 'auto': 1419 this.size = BACKGROUND_SIZE.AUTO; 1420 break; 1421 default: 1422 this.value = new _Length2.default(size); 1423 } 1424}; 1425 1426var calculateBackgroundSize = exports.calculateBackgroundSize = function calculateBackgroundSize(backgroundImage, image, bounds) { 1427 var width = 0; 1428 var height = 0; 1429 var size = backgroundImage.size; 1430 if (size[0].size === BACKGROUND_SIZE.CONTAIN || size[0].size === BACKGROUND_SIZE.COVER) { 1431 var targetRatio = bounds.width / bounds.height; 1432 var currentRatio = image.width / image.height; 1433 return targetRatio < currentRatio !== (size[0].size === BACKGROUND_SIZE.COVER) ? new _Size2.default(bounds.width, bounds.width / currentRatio) : new _Size2.default(bounds.height * currentRatio, bounds.height); 1434 } 1435 1436 if (size[0].value) { 1437 width = size[0].value.getAbsoluteValue(bounds.width); 1438 } 1439 1440 if (size[0].size === BACKGROUND_SIZE.AUTO && size[1].size === BACKGROUND_SIZE.AUTO) { 1441 height = image.height; 1442 } else if (size[1].size === BACKGROUND_SIZE.AUTO) { 1443 height = width / image.width * image.height; 1444 } else if (size[1].value) { 1445 height = size[1].value.getAbsoluteValue(bounds.height); 1446 } 1447 1448 if (size[0].size === BACKGROUND_SIZE.AUTO) { 1449 width = height / image.height * image.width; 1450 } 1451 1452 return new _Size2.default(width, height); 1453}; 1454 1455var calculateGradientBackgroundSize = exports.calculateGradientBackgroundSize = function calculateGradientBackgroundSize(backgroundImage, bounds) { 1456 var size = backgroundImage.size; 1457 var width = size[0].value ? size[0].value.getAbsoluteValue(bounds.width) : bounds.width; 1458 var height = size[1].value ? size[1].value.getAbsoluteValue(bounds.height) : size[0].value ? width : bounds.height; 1459 1460 return new _Size2.default(width, height); 1461}; 1462 1463var AUTO_SIZE = new BackgroundSize(AUTO); 1464 1465var calculateBackgroungPaintingArea = exports.calculateBackgroungPaintingArea = function calculateBackgroungPaintingArea(curves, clip) { 1466 switch (clip) { 1467 case BACKGROUND_CLIP.BORDER_BOX: 1468 return (0, Bounds_1.calculateBorderBoxPath)(curves); 1469 case BACKGROUND_CLIP.PADDING_BOX: 1470 default: 1471 return (0, Bounds_1.calculatePaddingBoxPath)(curves); 1472 } 1473}; 1474 1475var calculateBackgroungPositioningArea = exports.calculateBackgroungPositioningArea = function calculateBackgroungPositioningArea(backgroundOrigin, bounds, padding$$1, border) { 1476 var paddingBox = (0, Bounds_1.calculatePaddingBox)(bounds, border); 1477 1478 switch (backgroundOrigin) { 1479 case BACKGROUND_ORIGIN.BORDER_BOX: 1480 return bounds; 1481 case BACKGROUND_ORIGIN.CONTENT_BOX: 1482 var paddingLeft = padding$$1[padding.PADDING_SIDES.LEFT].getAbsoluteValue(bounds.width); 1483 var paddingRight = padding$$1[padding.PADDING_SIDES.RIGHT].getAbsoluteValue(bounds.width); 1484 var paddingTop = padding$$1[padding.PADDING_SIDES.TOP].getAbsoluteValue(bounds.width); 1485 var paddingBottom = padding$$1[padding.PADDING_SIDES.BOTTOM].getAbsoluteValue(bounds.width); 1486 return new Bounds_1.Bounds(paddingBox.left + paddingLeft, paddingBox.top + paddingTop, paddingBox.width - paddingLeft - paddingRight, paddingBox.height - paddingTop - paddingBottom); 1487 case BACKGROUND_ORIGIN.PADDING_BOX: 1488 default: 1489 return paddingBox; 1490 } 1491}; 1492 1493var calculateBackgroundPosition = exports.calculateBackgroundPosition = function calculateBackgroundPosition(position, size, bounds) { 1494 return new _Vector2.default(position[0].getAbsoluteValue(bounds.width - size.width), position[1].getAbsoluteValue(bounds.height - size.height)); 1495}; 1496
1497var calculateBackgroundRepeatPath = exports.calculateBackgroundRepeatPath = function calculateBackgroundRepeatPath(background, position, size, backgroundPositioningArea, bounds) { 1498 var repeat = background.repeat; 1499 switch (repeat) { 1500 case BACKGROUND_REPEAT.REPEAT_X: 1501 return [new _Vector2.default(Math.round(bounds.left), Math.round(backgroundPositioningArea.top + position.y)), new _Vector2.default(Math.round(bounds.left + bounds.width), Math.round(backgroundPositioningArea.top + position.y)), new _Vector2.default(Math.round(bounds.left + bounds.width), Math.round(size.height + backgroundPositioningArea.top + position.y)), new _Vector2.default(Math.round(bounds.left), Math.round(size.height + backgroundPositioningArea.top + position.y))]; 1502 case BACKGROUND_REPEAT.REPEAT_Y: 1503 return [new _Vector2.default(Math.round(backgroundPositioningArea.left + position.x), Math.round(bounds.top)), new _Vector2.default(Math.round(backgroundPositioningArea.left + position.x + size.width), Math.round(bounds.top)), new _Vector2.default(Math.round(backgroundPositioningArea.left + position.x + size.width), Math.round(bounds.height + bounds.top)), new _Vector2.default(Math.round(backgroundPositioningArea.left + position.x), Math.round(bounds.height + bounds.top))]; 1504 case BACKGROUND_REPEAT.NO_REPEAT: 1505 return [new _Vector2.default(Math.round(backgroundPositioningArea.left + position.x), Math.round(backgroundPositioningArea.top + position.y)), new _Vector2.default(Math.round(backgroundPositioningArea.left + position.x + size.width), Math.round(backgroundPositioningArea.top + position.y)), new _Vector2.default(Math.round(backgroundPositioningArea.left + position.x + size.width), Math.round(backgroundPositioningArea.top + position.y + size.height)), new _Vector2.default(Math.round(backgroundPositioningArea.left + position.x), Math.round(backgroundPositioningArea.top + position.y + size.height))];
1506 default: 1507 return [new _Vector2.default(Math.round(bounds.left), Math.round(bounds.top)), new _Vector2.default(Math.round(bounds.left + bounds.width), Math.round(bounds.top)), new _Vector2.default(Math.round(bounds.left + bounds.width), Math.round(bounds.height + bounds.top)), new _Vector2.default(Math.round(bounds.left), Math.round(bounds.height + bounds.top))]; 1508 } 1509}; 1510 1511var parseBackground = exports.parseBackground = function parseBackground(style, resourceLoader) { 1512 return { 1513 backgroundColor: new _Color2.default(style.backgroundColor), 1514 backgroundImage: parseBackgroundImages(style, resourceLoader), 1515 backgroundClip: parseBackgroundClip(style.backgroundClip), 1516 backgroundOrigin: parseBackgroundOrigin(style.backgroundOrigin) 1517 }; 1518}; 1519 1520var parseBackgroundClip = function parseBackgroundClip(backgroundClip) { 1521 switch (backgroundClip) { 1522 case 'padding-box': 1523 return BACKGROUND_CLIP.PADDING_BOX; 1524 case 'content-box': 1525 return BACKGROUND_CLIP.CONTENT_BOX; 1526 } 1527 return BACKGROUND_CLIP.BORDER_BOX; 1528}; 1529 1530var parseBackgroundOrigin = function parseBackgroundOrigin(backgroundOrigin) { 1531 switch (backgroundOrigin) { 1532 case 'padding-box': 1533 return BACKGROUND_ORIGIN.PADDING_BOX; 1534 case 'content-box': 1535 return BACKGROUND_ORIGIN.CONTENT_BOX; 1536 } 1537 return BACKGROUND_ORIGIN.BORDER_BOX; 1538}; 1539 1540var parseBackgroundRepeat = function parseBackgroundRepeat(backgroundRepeat) { 1541 switch (backgroundRepeat.trim()) { 1542 case 'no-repeat': 1543 return BACKGROUND_REPEAT.NO_REPEAT; 1544 case 'repeat-x': 1545 case 'repeat no-repeat': 1546 return BACKGROUND_REPEAT.REPEAT_X; 1547 case 'repeat-y': 1548 case 'no-repeat repeat': 1549 return BACKGROUND_REPEAT.REPEAT_Y; 1550 case 'repeat': 1551 return BACKGROUND_REPEAT.REPEAT; 1552 } 1553 1554 return BACKGROUND_REPEAT.REPEAT; 1555}; 1556 1557var parseBackgroundImages = function parseBackgroundImages(style, resourceLoader) { 1558 var sources = parseBackgroundImage(style.backgroundImage).map(function (backgroundImage) { 1559 if (backgroundImage.method === 'url') { 1560 var key = resourceLoader.loadImage(backgroundImage.args[0]); 1561 backgroundImage.args = key ? [key] : []; 1562 } 1563 return backgroundImage; 1564 }); 1565 var positions = style.backgroundPosition.split(','); 1566 var repeats = style.backgroundRepeat.split(','); 1567 var sizes = style.backgroundSize.split(','); 1568 1569 return sources.map(function (source, index) { 1570 var size = (sizes[index] || AUTO).trim().split(' ').map(parseBackgroundSize); 1571 var position = (positions[index] || AUTO).trim().split(' ').map(parseBackgoundPosition); 1572 1573 return { 1574 source: source, 1575 repeat: parseBackgroundRepeat(typeof repeats[index] === 'string' ? repeats[index] : repeats[0]), 1576 size: size.length < 2 ? [size[0], AUTO_SIZE] : [size[0], size[1]], 1577 position: position.length < 2 ? [position[0], position[0]] : [position[0], position[1]] 1578 }; 1579 }); 1580}; 1581 1582var parseBackgroundSize = function parseBackgroundSize(size) { 1583 return size === 'auto' ? AUTO_SIZE : new BackgroundSize(size); 1584}; 1585 1586var parseBackgoundPosition = function parseBackgoundPosition(position) { 1587 switch (position) { 1588 case 'bottom': 1589 case 'right': 1590 return new _Length2.default('100%'); 1591 case 'left': 1592 case 'top': 1593 return new _Length2.default('0%'); 1594 case 'auto': 1595 return new _Length2.default('0'); 1596 } 1597 return new _Length2.default(position); 1598}; 1599 1600var parseBackgroundImage = exports.parseBackgroundImage = function parseBackgroundImage(image) { 1601 var whitespace = /^\s$/; 1602 var results = []; 1603 1604 var args = []; 1605 var method = ''; 1606 var quote = null; 1607 var definition = ''; 1608 var mode = 0; 1609 var numParen = 0; 1610
1611 var appendResult = function appendResult() { 1612 var prefix = ''; 1613 if (method) { 1614 if (definition.substr(0, 1) === '"') { 1615 definition = definition.substr(1, definition.length - 2); 1616 } 1617 1618 if (definition) { 1619 args.push(definition.trim()); 1620 } 1621 1622 var prefix_i = method.indexOf('-', 1) + 1; 1623 if (method.substr(0, 1) === '-' && prefix_i > 0) { 1624 prefix = method.substr(0, prefix_i).toLowerCase(); 1625 method = method.substr(prefix_i); 1626 } 1627 method = method.toLowerCase(); 1628 if (method !== 'none') { 1629 results.push({ 1630 prefix: prefix, 1631 method: method, 1632 args: args 1633 }); 1634 } 1635 } 1636 args = []; 1637 method = definition = ''; 1638 }; 1639 1640 image.split('').forEach(function (c) { 1641 if (mode === 0 && whitespace.test(c)) { 1642 return; 1643 } 1644 switch (c) { 1645 case '"': 1646 if (!quote) { 1647 quote = c; 1648 } else if (quote === c) { 1649 quote = null; 1650 } 1651 break; 1652 case '(': 1653 if (quote) { 1654 break; 1655 } else if (mode === 0) { 1656 mode = 1; 1657 return; 1658 } else { 1659 numParen++; 1660 } 1661 break; 1662 case ')': 1663 if (quote) { 1664 break; 1665 } else if (mode === 1) { 1666 if (numParen === 0) { 1667 mode = 0; 1668 appendResult(); 1669 return; 1670 } else { 1671 numParen--; 1672 } 1673 } 1674 break; 1675 1676 case ',': 1677 if (quote) { 1678 break; 1679 } else if (mode === 0) { 1680 appendResult(); 1681 return; 1682 } else if (mode === 1) { 1683 if (numParen === 0 && !method.match(/^url$/i)) { 1684 args.push(definition.trim()); 1685 definition = ''; 1686 return; 1687 } 1688 } 1689 break; 1690 } 1691 1692 if (mode === 0) { 1693 method += c; 1694 } else { 1695 definition += c; 1696 } 1697 }); 1698 1699 appendResult(); 1700 return results; 1701}; 1702}); 1703 1704unwrapExports(background); 1705var background_1 = background.parseBackgroundImage; 1706var background_2 = background.parseBackground; 1707var background_3 = background.calculateBackgroundRepeatPath; 1708var background_4 = background.calculateBackgroundPosition; 1709var background_5 = background.calculateBackgroungPositioningArea; 1710var background_6 = background.calculateBackgroungPaintingArea; 1711var background_7 = background.calculateGradientBackgroundSize; 1712var background_8 = background.calculateBackgroundSize; 1713var background_9 = background.BACKGROUND_ORIGIN; 1714var background_10 = background.BACKGROUND_CLIP; 1715var background_11 = background.BACKGROUND_SIZE; 1716var background_12 = background.BACKGROUND_REPEAT; 1717 1718var border = createCommonjsModule(function (module, exports) { 1719Object.defineProperty(exports, "__esModule", { 1720 value: true 1721}); 1722exports.parseBorder = exports.BORDER_SIDES = exports.BORDER_STYLE = undefined; 1723 1724 1725 1726var _Color2 = _interopRequireDefault(Color_1); 1727 1728function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 1729 1730var BORDER_STYLE = exports.BORDER_STYLE = { 1731 NONE: 0, 1732 SOLID: 1 1733}; 1734 1735var BORDER_SIDES = exports.BORDER_SIDES = { 1736 TOP: 0, 1737 RIGHT: 1, 1738 BOTTOM: 2, 1739 LEFT: 3 1740}; 1741 1742var SIDES = Object.keys(BORDER_SIDES).map(function (s) { 1743 return s.toLowerCase(); 1744}); 1745 1746var parseBorderStyle = function parseBorderStyle(style) { 1747 switch (style) { 1748 case 'none': 1749 return BORDER_STYLE.NONE; 1750 } 1751 return BORDER_STYLE.SOLID; 1752}; 1753 1754var parseBorder = exports.parseBorder = function parseBorder(style) { 1755 return SIDES.map(function (side) { 1756 var borderColor = new _Color2.default(style.getPropertyValue('border-' + side + '-color')); 1757 var borderStyle = parseBorderStyle(style.getPropertyValue('border-' + side + '-style')); 1758 var borderWidth = parseFloat(style.getPropertyValue('border-' + side + '-width')); 1759 return { 1760 borderColor: borderColor, 1761 borderStyle: borderStyle, 1762 borderWidth: isNaN(borderWidth) ? 0 : borderWidth 1763 }; 1764 });
1765}; 1766}); 1767 1768unwrapExports(border); 1769var border_1 = border.parseBorder; 1770var border_2 = border.BORDER_SIDES; 1771var border_3 = border.BORDER_STYLE; 1772 1773var borderRadius = createCommonjsModule(function (module, exports) { 1774Object.defineProperty(exports, "__esModule", { 1775 value: true 1776}); 1777exports.parseBorderRadius = undefined; 1778 1779var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); 1780 1781 1782 1783var _Length2 = _interopRequireDefault(Length_1); 1784 1785function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 1786 1787var SIDES = ['top-left', 'top-right', 'bottom-right', 'bottom-left']; 1788 1789var parseBorderRadius = exports.parseBorderRadius = function parseBorderRadius(style) { 1790 return SIDES.map(function (side) { 1791 var value = style.getPropertyValue('border-' + side + '-radius'); 1792 1793 var _value$split$map = value.split(' ').map(_Length2.default.create), 1794 _value$split$map2 = _slicedToArray(_value$split$map, 2), 1795 horizontal = _value$split$map2[0], 1796 vertical = _value$split$map2[1]; 1797 1798 return typeof vertical === 'undefined' ? [horizontal, horizontal] : [horizontal, vertical]; 1799 }); 1800}; 1801}); 1802 1803unwrapExports(borderRadius); 1804var borderRadius_1 = borderRadius.parseBorderRadius; 1805 1806var display = createCommonjsModule(function (module, exports) { 1807Object.defineProperty(exports, "__esModule", { 1808 value: true 1809}); 1810var DISPLAY = exports.DISPLAY = { 1811 NONE: 1 << 0, 1812 BLOCK: 1 << 1, 1813 INLINE: 1 << 2, 1814 RUN_IN: 1 << 3, 1815 FLOW: 1 << 4, 1816 FLOW_ROOT: 1 << 5, 1817 TABLE: 1 << 6, 1818 FLEX: 1 << 7, 1819 GRID: 1 << 8, 1820 RUBY: 1 << 9, 1821 SUBGRID: 1 << 10, 1822 LIST_ITEM: 1 << 11, 1823 TABLE_ROW_GROUP: 1 << 12, 1824 TABLE_HEADER_GROUP: 1 << 13, 1825 TABLE_FOOTER_GROUP: 1 << 14, 1826 TABLE_ROW: 1 << 15, 1827 TABLE_CELL: 1 << 16, 1828 TABLE_COLUMN_GROUP: 1 << 17, 1829 TABLE_COLUMN: 1 << 18, 1830 TABLE_CAPTION: 1 << 19, 1831 RUBY_BASE: 1 << 20, 1832 RUBY_TEXT: 1 << 21, 1833 RUBY_BASE_CONTAINER: 1 << 22, 1834 RUBY_TEXT_CONTAINER: 1 << 23, 1835 CONTENTS: 1 << 24, 1836 INLINE_BLOCK: 1 << 25, 1837 INLINE_LIST_ITEM: 1 << 26, 1838 INLINE_TABLE: 1 << 27, 1839 INLINE_FLEX: 1 << 28, 1840 INLINE_GRID: 1 << 29 1841}; 1842 1843var parseDisplayValue = function parseDisplayValue(display) { 1844 switch (display) { 1845 case 'block': 1846 return DISPLAY.BLOCK; 1847 case 'inline': 1848 return DISPLAY.INLINE; 1849 case 'run-in': 1850 return DISPLAY.RUN_IN; 1851 case 'flow': 1852 return DISPLAY.FLOW; 1853 case 'flow-root': 1854 return DISPLAY.FLOW_ROOT; 1855 case 'table': 1856 return DISPLAY.TABLE; 1857 case 'flex': 1858 return DISPLAY.FLEX; 1859 case 'grid': 1860 return DISPLAY.GRID; 1861 case 'ruby': 1862 return DISPLAY.RUBY; 1863 case 'subgrid': 1864 return DISPLAY.SUBGRID; 1865 case 'list-item': 1866 return DISPLAY.LIST_ITEM; 1867 case 'table-row-group': 1868 return DISPLAY.TABLE_ROW_GROUP; 1869 case 'table-header-group': 1870 return DISPLAY.TABLE_HEADER_GROUP; 1871 case 'table-footer-group': 1872 return DISPLAY.TABLE_FOOTER_GROUP; 1873 case 'table-row': 1874 return DISPLAY.TABLE_ROW; 1875 case 'table-cell': 1876 return DISPLAY.TABLE_CELL; 1877 case 'table-column-group': 1878 return DISPLAY.TABLE_COLUMN_GROUP; 1879 case 'table-column': 1880 return DISPLAY.TABLE_COLUMN; 1881 case 'table-caption': 1882 return DISPLAY.TABLE_CAPTION; 1883 case 'ruby-base': 1884 return DISPLAY.RUBY_BASE; 1885 case 'ruby-text': 1886 return DISPLAY.RUBY_TEXT; 1887 case 'ruby-base-container': 1888 return DISPLAY.RUBY_BASE_CONTAINER; 1889 case 'ruby-text-container': 1890 return DISPLAY.RUBY_TEXT_CONTAINER; 1891 case 'contents': 1892 return DISPLAY.CONTENTS; 1893 case 'inline-block': 1894 return DISPLAY.INLINE_BLOCK; 1895 case 'inline-list-item': 1896 return DISPLAY.INLINE_LIST_ITEM; 1897 case 'inline-table': 1898 return DISPLAY.INLINE_TABLE; 1899 case 'inline-flex': 1900 return DISPLAY.INLINE_FLEX; 1901 case 'inline-grid': 1902 return DISPLAY.INLINE_GRID; 1903 } 1904 1905 return DISPLAY.NONE; 1906}; 1907 1908var setDisplayBit = function setDisplayBit(bit, display) { 1909 return bit | parseDisplayValue(display); 1910}; 1911 1912var parseDisplay = exports.parseDisplay = function parseDisplay(display) {
1913 return display.split(' ').reduce(setDisplayBit, 0); 1914}; 1915}); 1916 1917unwrapExports(display); 1918var display_1 = display.DISPLAY; 1919var display_2 = display.parseDisplay; 1920 1921var float_1 = createCommonjsModule(function (module, exports) { 1922Object.defineProperty(exports, "__esModule", { 1923 value: true 1924}); 1925var FLOAT = exports.FLOAT = { 1926 NONE: 0, 1927 LEFT: 1, 1928 RIGHT: 2, 1929 INLINE_START: 3, 1930 INLINE_END: 4 1931}; 1932 1933var parseCSSFloat = exports.parseCSSFloat = function parseCSSFloat(float) { 1934 switch (float) { 1935 case 'left': 1936 return FLOAT.LEFT; 1937 case 'right': 1938 return FLOAT.RIGHT; 1939 case 'inline-start': 1940 return FLOAT.INLINE_START; 1941 case 'inline-end': 1942 return FLOAT.INLINE_END; 1943 } 1944 return FLOAT.NONE; 1945}; 1946}); 1947 1948unwrapExports(float_1); 1949var float_2 = float_1.FLOAT; 1950var float_3 = float_1.parseCSSFloat; 1951 1952var font = createCommonjsModule(function (module, exports) { 1953Object.defineProperty(exports, "__esModule", { 1954 value: true 1955}); 1956 1957 1958var parseFontWeight = function parseFontWeight(weight) { 1959 switch (weight) { 1960 case 'normal': 1961 return 400; 1962 case 'bold': 1963 return 700; 1964 } 1965 1966 var value = parseInt(weight, 10); 1967 return isNaN(value) ? 400 : value; 1968}; 1969 1970var parseFont = exports.parseFont = function parseFont(style) { 1971 var fontFamily = style.fontFamily; 1972 var fontSize = style.fontSize; 1973 var fontStyle = style.fontStyle; 1974 var fontVariant = style.fontVariant; 1975 var fontWeight = parseFontWeight(style.fontWeight); 1976 1977 return { 1978 fontFamily: fontFamily, 1979 fontSize: fontSize, 1980 fontStyle: fontStyle, 1981 fontVariant: fontVariant, 1982 fontWeight: fontWeight 1983 }; 1984};
1985}); 1986 1987unwrapExports(font); 1988var font_1 = font.parseFont; 1989 1990var letterSpacing = createCommonjsModule(function (module, exports) { 1991Object.defineProperty(exports, "__esModule", { 1992 value: true 1993}); 1994var parseLetterSpacing = exports.parseLetterSpacing = function parseLetterSpacing(letterSpacing) { 1995 if (letterSpacing === 'normal') { 1996 return 0; 1997 } 1998 var value = parseFloat(letterSpacing); 1999 return isNaN(value) ? 0 : value; 2000}; 2001}); 2002 2003unwrapExports(letterSpacing); 2004var letterSpacing_1 = letterSpacing.parseLetterSpacing; 2005 2006var lineBreak = createCommonjsModule(function (module, exports) { 2007Object.defineProperty(exports, "__esModule", { 2008 value: true 2009}); 2010var LINE_BREAK = exports.LINE_BREAK = { 2011 NORMAL: 'normal', 2012 STRICT: 'strict' 2013}; 2014 2015var parseLineBreak = exports.parseLineBreak = function parseLineBreak(wordBreak) { 2016 switch (wordBreak) { 2017 case 'strict': 2018 return LINE_BREAK.STRICT; 2019 case 'normal': 2020 default: 2021 return LINE_BREAK.NORMAL; 2022 } 2023}; 2024}); 2025 2026unwrapExports(lineBreak); 2027var lineBreak_1 = lineBreak.LINE_BREAK; 2028var lineBreak_2 = lineBreak.parseLineBreak; 2029 2030var listStyle = createCommonjsModule(function (module, exports) { 2031Object.defineProperty(exports, "__esModule", { 2032 value: true 2033}); 2034exports.parseListStyle = exports.parseListStyleType = exports.LIST_STYLE_TYPE = exports.LIST_STYLE_POSITION = undefined; 2035 2036 2037 2038var LIST_STYLE_POSITION = exports.LIST_STYLE_POSITION = { 2039 INSIDE: 0, 2040 OUTSIDE: 1 2041}; 2042 2043var LIST_STYLE_TYPE = exports.LIST_STYLE_TYPE = { 2044 NONE: -1, 2045 DISC: 0, 2046 CIRCLE: 1, 2047 SQUARE: 2, 2048 DECIMAL: 3, 2049 CJK_DECIMAL: 4, 2050 DECIMAL_LEADING_ZERO: 5, 2051 LOWER_ROMAN: 6, 2052 UPPER_ROMAN: 7, 2053 LOWER_GREEK: 8, 2054 LOWER_ALPHA: 9, 2055 UPPER_ALPHA: 10, 2056 ARABIC_INDIC: 11, 2057 ARMENIAN: 12, 2058 BENGALI: 13, 2059 CAMBODIAN: 14, 2060 CJK_EARTHLY_BRANCH: 15, 2061 CJK_HEAVENLY_STEM: 16, 2062 CJK_IDEOGRAPHIC: 17, 2063 DEVANAGARI: 18, 2064 ETHIOPIC_NUMERIC: 19, 2065 GEORGIAN: 20, 2066 GUJARATI: 21, 2067 GURMUKHI: 22, 2068 HEBREW: 22, 2069 HIRAGANA: 23, 2070 HIRAGANA_IROHA: 24, 2071 JAPANESE_FORMAL: 25, 2072 JAPANESE_INFORMAL: 26, 2073 KANNADA: 27, 2074 KATAKANA: 28, 2075 KATAKANA_IROHA: 29, 2076 KHMER: 30, 2077 KOREAN_HANGUL_FORMAL: 31, 2078 KOREAN_HANJA_FORMAL: 32, 2079 KOREAN_HANJA_INFORMAL: 33, 2080 LAO: 34, 2081 LOWER_ARMENIAN: 35, 2082 MALAYALAM: 36, 2083 MONGOLIAN: 37, 2084 MYANMAR: 38, 2085 ORIYA: 39, 2086 PERSIAN: 40, 2087 SIMP_CHINESE_FORMAL: 41, 2088 SIMP_CHINESE_INFORMAL: 42, 2089 TAMIL: 43, 2090 TELUGU: 44, 2091 THAI: 45, 2092 TIBETAN: 46, 2093 TRAD_CHINESE_FORMAL: 47, 2094 TRAD_CHINESE_INFORMAL: 48, 2095 UPPER_ARMENIAN: 49, 2096 DISCLOSURE_OPEN: 50, 2097 DISCLOSURE_CLOSED: 51 2098}; 2099 2100var parseListStyleType = exports.parseListStyleType = function parseListStyleType(type) { 2101 switch (type) { 2102 case 'disc': 2103 return LIST_STYLE_TYPE.DISC; 2104 case 'circle': 2105 return LIST_STYLE_TYPE.CIRCLE; 2106 case 'square': 2107 return LIST_STYLE_TYPE.SQUARE; 2108 case 'decimal': 2109 return LIST_STYLE_TYPE.DECIMAL; 2110 case 'cjk-decimal': 2111 return LIST_STYLE_TYPE.CJK_DECIMAL; 2112 case 'decimal-leading-zero': 2113 return LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO; 2114 case 'lower-roman': 2115 return LIST_STYLE_TYPE.LOWER_ROMAN; 2116 case 'upper-roman': 2117 return LIST_STYLE_TYPE.UPPER_ROMAN; 2118 case 'lower-greek': 2119 return LIST_STYLE_TYPE.LOWER_GREEK; 2120 case 'lower-alpha': 2121 return LIST_STYLE_TYPE.LOWER_ALPHA; 2122 case 'upper-alpha': 2123 return LIST_STYLE_TYPE.UPPER_ALPHA; 2124 case 'arabic-indic': 2125 return LIST_STYLE_TYPE.ARABIC_INDIC; 2126 case 'armenian': 2127 return LIST_STYLE_TYPE.ARMENIAN; 2128 case 'bengali': 2129 return LIST_STYLE_TYPE.BENGALI; 2130 case 'cambodian': 2131 return LIST_STYLE_TYPE.CAMBODIAN; 2132 case 'cjk-earthly-branch': 2133 return LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH; 2134 case 'cjk-heavenly-stem': 2135 return LIST_STYLE_TYPE.CJK_HEAVENLY_STEM; 2136 case 'cjk-ideographic': 2137 return LIST_STYLE_TYPE.CJK_IDEOGRAPHIC; 2138 case 'devanagari': 2139 return LIST_STYLE_TYPE.DEVANAGARI; 2140 case 'ethiopic-numeric': 2141 return LIST_STYLE_TYPE.ETHIOPIC_NUMERIC; 2142 case 'georgian': 2143 return LIST_STYLE_TYPE.GEORGIAN; 2144 case 'gujarati': 2145 return LIST_STYLE_TYPE.GUJARATI; 2146 case 'gurmukhi': 2147 return LIST_STYLE_TYPE.GURMUKHI; 2148 case 'hebrew': 2149 return LIST_STYLE_TYPE.HEBREW; 2150 case 'hiragana': 2151 return LIST_STYLE_TYPE.HIRAGANA; 2152 case 'hiragana-iroha': 2153 return LIST_STYLE_TYPE.HIRAGANA_IROHA; 2154 case 'japanese-formal': 2155 return LIST_STYLE_TYPE.JAPANESE_FORMAL; 2156 case 'japanese-informal': 2157 return LIST_STYLE_TYPE.JAPANESE_INFORMAL; 2158 case 'kannada': 2159 return LIST_STYLE_TYPE.KANNADA; 2160 case 'katakana':
2161 return LIST_STYLE_TYPE.KATAKANA; 2162 case 'katakana-iroha': 2163 return LIST_STYLE_TYPE.KATAKANA_IROHA; 2164 case 'khmer': 2165 return LIST_STYLE_TYPE.KHMER; 2166 case 'korean-hangul-formal': 2167 return LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL; 2168 case 'korean-hanja-formal': 2169 return LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL; 2170 case 'korean-hanja-informal': 2171 return LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL; 2172 case 'lao': 2173 return LIST_STYLE_TYPE.LAO; 2174 case 'lower-armenian': 2175 return LIST_STYLE_TYPE.LOWER_ARMENIAN; 2176 case 'malayalam': 2177 return LIST_STYLE_TYPE.MALAYALAM; 2178 case 'mongolian': 2179 return LIST_STYLE_TYPE.MONGOLIAN; 2180 case 'myanmar': 2181 return LIST_STYLE_TYPE.MYANMAR; 2182 case 'oriya': 2183 return LIST_STYLE_TYPE.ORIYA; 2184 case 'persian': 2185 return LIST_STYLE_TYPE.PERSIAN; 2186 case 'simp-chinese-formal': 2187 return LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL; 2188 case 'simp-chinese-informal': 2189 return LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL; 2190 case 'tamil': 2191 return LIST_STYLE_TYPE.TAMIL; 2192 case 'telugu': 2193 return LIST_STYLE_TYPE.TELUGU; 2194 case 'thai': 2195 return LIST_STYLE_TYPE.THAI; 2196 case 'tibetan': 2197 return LIST_STYLE_TYPE.TIBETAN; 2198 case 'trad-chinese-formal': 2199 return LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL; 2200 case 'trad-chinese-informal': 2201 return LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL; 2202 case 'upper-armenian': 2203 return LIST_STYLE_TYPE.UPPER_ARMENIAN; 2204 case 'disclosure-open': 2205 return LIST_STYLE_TYPE.DISCLOSURE_OPEN; 2206 case 'disclosure-closed': 2207 return LIST_STYLE_TYPE.DISCLOSURE_CLOSED; 2208 case 'none': 2209 default: 2210 return LIST_STYLE_TYPE.NONE; 2211 } 2212}; 2213 2214var parseListStyle = exports.parseListStyle = function parseListStyle(style) { 2215 var listStyleImage = (0, background.parseBackgroundImage)(style.getPropertyValue('list-style-image')); 2216 return { 2217 listStyleType: parseListStyleType(style.getPropertyValue('list-style-type')), 2218 listStyleImage: listStyleImage.length ? listStyleImage[0] : null, 2219 listStylePosition: parseListStylePosition(style.getPropertyValue('list-style-position')) 2220 }; 2221};
2222 2223var parseListStylePosition = function parseListStylePosition(position) { 2224 switch (position) { 2225 case 'inside': 2226 return LIST_STYLE_POSITION.INSIDE; 2227 case 'outside': 2228 default: 2229 return LIST_STYLE_POSITION.OUTSIDE; 2230 } 2231}; 2232}); 2233 2234unwrapExports(listStyle); 2235var listStyle_1 = listStyle.parseListStyle; 2236var listStyle_2 = listStyle.parseListStyleType; 2237var listStyle_3 = listStyle.LIST_STYLE_TYPE; 2238var listStyle_4 = listStyle.LIST_STYLE_POSITION; 2239 2240var margin = createCommonjsModule(function (module, exports) { 2241Object.defineProperty(exports, "__esModule", { 2242 value: true 2243}); 2244exports.parseMargin = undefined; 2245 2246 2247 2248var _Length2 = _interopRequireDefault(Length_1); 2249 2250function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 2251 2252var SIDES = ['top', 'right', 'bottom', 'left']; 2253 2254var parseMargin = exports.parseMargin = function parseMargin(style) { 2255 return SIDES.map(function (side) { 2256 return new _Length2.default(style.getPropertyValue('margin-' + side)); 2257 }); 2258}; 2259}); 2260 2261unwrapExports(margin); 2262var margin_1 = margin.parseMargin; 2263 2264var overflow = createCommonjsModule(function (module, exports) { 2265Object.defineProperty(exports, "__esModule", { 2266 value: true 2267}); 2268var OVERFLOW = exports.OVERFLOW = { 2269 VISIBLE: 0, 2270 HIDDEN: 1, 2271 SCROLL: 2, 2272 AUTO: 3 2273}; 2274 2275var parseOverflow = exports.parseOverflow = function parseOverflow(overflow) { 2276 switch (overflow) { 2277 case 'hidden': 2278 return OVERFLOW.HIDDEN; 2279 case 'scroll': 2280 return OVERFLOW.SCROLL; 2281 case 'auto': 2282 return OVERFLOW.AUTO; 2283 case 'visible': 2284 default: 2285 return OVERFLOW.VISIBLE; 2286 } 2287}; 2288}); 2289 2290unwrapExports(overflow); 2291var overflow_1 = overflow.OVERFLOW; 2292var overflow_2 = overflow.parseOverflow; 2293 2294var overflowWrap = createCommonjsModule(function (module, exports) { 2295Object.defineProperty(exports, "__esModule", { 2296 value: true 2297}); 2298var OVERFLOW_WRAP = exports.OVERFLOW_WRAP = { 2299 NORMAL: 0, 2300 BREAK_WORD: 1 2301}; 2302 2303var parseOverflowWrap = exports.parseOverflowWrap = function parseOverflowWrap(overflow) { 2304 switch (overflow) { 2305 case 'break-word': 2306 return OVERFLOW_WRAP.BREAK_WORD; 2307 case 'normal': 2308 default: 2309 return OVERFLOW_WRAP.NORMAL; 2310 } 2311}; 2312}); 2313 2314unwrapExports(overflowWrap); 2315var overflowWrap_1 = overflowWrap.OVERFLOW_WRAP; 2316var overflowWrap_2 = overflowWrap.parseOverflowWrap; 2317 2318var position = createCommonjsModule(function (module, exports) { 2319Object.defineProperty(exports, "__esModule", { 2320 value: true 2321}); 2322var POSITION = exports.POSITION = { 2323 STATIC: 0, 2324 RELATIVE: 1, 2325 ABSOLUTE: 2, 2326 FIXED: 3, 2327 STICKY: 4 2328}; 2329 2330var parsePosition = exports.parsePosition = function parsePosition(position) { 2331 switch (position) { 2332 case 'relative': 2333 return POSITION.RELATIVE; 2334 case 'absolute': 2335 return POSITION.ABSOLUTE; 2336 case 'fixed': 2337 return POSITION.FIXED; 2338 case 'sticky': 2339 return POSITION.STICKY; 2340 } 2341 2342 return POSITION.STATIC; 2343}; 2344}); 2345 2346unwrapExports(position); 2347var position_1 = position.POSITION; 2348var position_2 = position.parsePosition; 2349 2350var textShadow = createCommonjsModule(function (module, exports) { 2351Object.defineProperty(exports, "__esModule", { 2352 value: true 2353}); 2354exports.parseTextShadow = undefined; 2355 2356 2357 2358var _Color2 = _interopRequireDefault(Color_1); 2359 2360function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 2361 2362var NUMBER = /^([+-]|\d|\.)$/i; 2363 2364var parseTextShadow = exports.parseTextShadow = function parseTextShadow(textShadow) { 2365 if (textShadow === 'none' || typeof textShadow !== 'string') { 2366 return null; 2367 } 2368 2369 var currentValue = ''; 2370 var isLength = false; 2371 var values = []; 2372 var shadows = []; 2373 var numParens = 0; 2374 var color = null; 2375 2376 var appendValue = function appendValue() { 2377 if (currentValue.length) { 2378 if (isLength) { 2379 values.push(parseFloat(currentValue)); 2380 } else { 2381 color = new _Color2.default(currentValue); 2382 } 2383 } 2384 isLength = false; 2385 currentValue = ''; 2386 }; 2387 2388 var appendShadow = function appendShadow() { 2389 if (values.length && color !== null) { 2390 shadows.push({ 2391 color: color, 2392 offsetX: values[0] || 0, 2393 offsetY: values[1] || 0, 2394 blur: values[2] || 0 2395 }); 2396 } 2397 values.splice(0, values.length); 2398 color = null; 2399 }; 2400 2401 for (var i = 0; i < textShadow.length; i++) { 2402 var c = textShadow[i]; 2403 switch (c) { 2404 case '(': 2405 currentValue += c; 2406 numParens++; 2407 break; 2408 case ')': 2409 currentValue += c; 2410 numParens--; 2411 break; 2412 case ',': 2413 if (numParens === 0) { 2414 appendValue(); 2415 appendShadow(); 2416 } else { 2417 currentValue += c; 2418 } 2419 break; 2420 case ' ': 2421 if (numParens === 0) { 2422 appendValue(); 2423 } else { 2424 currentValue += c; 2425 } 2426 break; 2427 default: 2428 if (currentValue.length === 0 && NUMBER.test(c)) { 2429 isLength = true; 2430 } 2431 currentValue += c; 2432 } 2433 } 2434 2435 appendValue(); 2436 appendShadow(); 2437 2438 if (shadows.length === 0) { 2439 return null; 2440 } 2441 2442 return shadows; 2443};
2444}); 2445 2446unwrapExports(textShadow); 2447var textShadow_1 = textShadow.parseTextShadow; 2448 2449var textTransform = createCommonjsModule(function (module, exports) { 2450Object.defineProperty(exports, "__esModule", { 2451 value: true 2452}); 2453var TEXT_TRANSFORM = exports.TEXT_TRANSFORM = { 2454 NONE: 0, 2455 LOWERCASE: 1, 2456 UPPERCASE: 2, 2457 CAPITALIZE: 3 2458}; 2459 2460var parseTextTransform = exports.parseTextTransform = function parseTextTransform(textTransform) { 2461 switch (textTransform) { 2462 case 'uppercase': 2463 return TEXT_TRANSFORM.UPPERCASE; 2464 case 'lowercase': 2465 return TEXT_TRANSFORM.LOWERCASE; 2466 case 'capitalize': 2467 return TEXT_TRANSFORM.CAPITALIZE; 2468 } 2469 2470 return TEXT_TRANSFORM.NONE; 2471}; 2472}); 2473 2474unwrapExports(textTransform); 2475var textTransform_1 = textTransform.TEXT_TRANSFORM; 2476var textTransform_2 = textTransform.parseTextTransform; 2477 2478var transform = createCommonjsModule(function (module, exports) { 2479Object.defineProperty(exports, "__esModule", { 2480 value: true 2481}); 2482exports.parseTransform = undefined; 2483 2484 2485 2486var _Length2 = _interopRequireDefault(Length_1); 2487 2488function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 2489 2490var toFloat = function toFloat(s) { 2491 return parseFloat(s.trim()); 2492}; 2493 2494var MATRIX = /(matrix|matrix3d)\((.+)\)/; 2495 2496var parseTransform = exports.parseTransform = function parseTransform(style) { 2497 var transform = parseTransformMatrix(style.transform || style.webkitTransform || style.mozTransform || 2498 // $FlowFixMe 2499 style.msTransform || 2500 // $FlowFixMe 2501 style.oTransform); 2502 if (transform === null) { 2503 return null; 2504 } 2505 2506 return { 2507 transform: transform, 2508 transformOrigin: parseTransformOrigin(style.transformOrigin || style.webkitTransformOrigin || style.mozTransformOrigin || 2509 // $FlowFixMe 2510 style.msTransformOrigin || 2511 // $FlowFixMe 2512 style.oTransformOrigin) 2513 }; 2514};
2515 2516// $FlowFixMe 2517var parseTransformOrigin = function parseTransformOrigin(origin) { 2518 if (typeof origin !== 'string') { 2519 var v = new _Length2.default('0'); 2520 return [v, v]; 2521 } 2522 var values = origin.split(' ').map(_Length2.default.create); 2523 return [values[0], values[1]]; 2524}; 2525 2526// $FlowFixMe 2527var parseTransformMatrix = function parseTransformMatrix(transform) { 2528 if (transform === 'none' || typeof transform !== 'string') { 2529 return null; 2530 } 2531 2532 var match = transform.match(MATRIX); 2533 if (match) { 2534 if (match[1] === 'matrix') { 2535 var matrix = match[2].split(',').map(toFloat); 2536 return [matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]]; 2537 } else { 2538 var matrix3d = match[2].split(',').map(toFloat); 2539 return [matrix3d[0], matrix3d[1], matrix3d[4], matrix3d[5], matrix3d[12], matrix3d[13]]; 2540 } 2541 } 2542 return null; 2543}; 2544}); 2545 2546unwrapExports(transform); 2547var transform_1 = transform.parseTransform; 2548 2549var visibility = createCommonjsModule(function (module, exports) { 2550Object.defineProperty(exports, "__esModule", { 2551 value: true 2552}); 2553var VISIBILITY = exports.VISIBILITY = { 2554 VISIBLE: 0, 2555 HIDDEN: 1, 2556 COLLAPSE: 2 2557}; 2558
2559var parseVisibility = exports.parseVisibility = function parseVisibility(visibility) { 2560 switch (visibility) { 2561 case 'hidden': 2562 return VISIBILITY.HIDDEN; 2563 case 'collapse': 2564 return VISIBILITY.COLLAPSE; 2565 case 'visible': 2566 default: 2567 return VISIBILITY.VISIBLE; 2568 } 2569}; 2570}); 2571 2572unwrapExports(visibility); 2573var visibility_1 = visibility.VISIBILITY; 2574var visibility_2 = visibility.parseVisibility; 2575 2576var wordBreak = createCommonjsModule(function (module, exports) { 2577Object.defineProperty(exports, "__esModule", { 2578 value: true 2579}); 2580var WORD_BREAK = exports.WORD_BREAK = { 2581 NORMAL: 'normal', 2582 BREAK_ALL: 'break-all', 2583 KEEP_ALL: 'keep-all' 2584}; 2585 2586var parseWordBreak = exports.parseWordBreak = function parseWordBreak(wordBreak) { 2587 switch (wordBreak) { 2588 case 'break-all': 2589 return WORD_BREAK.BREAK_ALL; 2590 case 'keep-all': 2591 return WORD_BREAK.KEEP_ALL; 2592 case 'normal': 2593 default: 2594 return WORD_BREAK.NORMAL; 2595 } 2596}; 2597}); 2598 2599unwrapExports(wordBreak); 2600var wordBreak_1 = wordBreak.WORD_BREAK; 2601var wordBreak_2 = wordBreak.parseWordBreak; 2602 2603var zIndex = createCommonjsModule(function (module, exports) { 2604Object.defineProperty(exports, "__esModule", { 2605 value: true 2606}); 2607var parseZIndex = exports.parseZIndex = function parseZIndex(zIndex) { 2608 var auto = zIndex === 'auto'; 2609 return { 2610 auto: auto, 2611 order: auto ? 0 : parseInt(zIndex, 10) 2612 }; 2613};
2614}); 2615 2616unwrapExports(zIndex); 2617var zIndex_1 = zIndex.parseZIndex; 2618 2619var ForeignObjectRenderer_1 = createCommonjsModule(function (module, exports) { 2620Object.defineProperty(exports, "__esModule", { 2621 value: true 2622}); 2623 2624var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); 2625 2626function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 2627 2628var ForeignObjectRenderer = function () { 2629 function ForeignObjectRenderer(element) { 2630 _classCallCheck(this, ForeignObjectRenderer); 2631 2632 this.element = element; 2633 } 2634 2635 _createClass(ForeignObjectRenderer, [{ 2636 key: 'render', 2637 value: function render(options) { 2638 var _this = this; 2639 2640 this.options = options; 2641 this.canvas = document.createElement('canvas'); 2642 this.ctx = this.canvas.getContext('2d'); 2643 this.canvas.width = Math.floor(options.width) * options.scale; 2644 this.canvas.height = Math.floor(options.height) * options.scale; 2645 this.canvas.style.width = options.width + 'px'; 2646 this.canvas.style.height = options.height + 'px'; 2647 2648 options.logger.log('ForeignObject renderer initialized (' + options.width + 'x' + options.height + ' at ' + options.x + ',' + options.y + ') with scale ' + options.scale); 2649 var svg = createForeignObjectSVG(Math.max(options.windowWidth, options.width) * options.scale, Math.max(options.windowHeight, options.height) * options.scale, options.scrollX * options.scale, options.scrollY * options.scale, this.element); 2650 2651 return loadSerializedSVG(svg).then(function (img) { 2652 if (options.backgroundColor) { 2653 _this.ctx.fillStyle = options.backgroundColor.toString(); 2654 _this.ctx.fillRect(0, 0, options.width * options.scale, options.height * options.scale); 2655 } 2656 2657 _this.ctx.drawImage(img, -options.x * options.scale, -options.y * options.scale); 2658 return _this.canvas; 2659 }); 2660 } 2661 }]); 2662 2663 return ForeignObjectRenderer; 2664}(); 2665 2666exports.default = ForeignObjectRenderer; 2667var createForeignObjectSVG = exports.createForeignObjectSVG = function createForeignObjectSVG(width, height, x, y, node) { 2668 var xmlns = 'http://www.w3.org/2000/svg'; 2669 var svg = document.createElementNS(xmlns, 'svg'); 2670 var foreignObject = document.createElementNS(xmlns, 'foreignObject'); 2671 svg.setAttributeNS(null, 'width', width); 2672 svg.setAttributeNS(null, 'height', height); 2673 2674 foreignObject.setAttributeNS(null, 'width', '100%'); 2675 foreignObject.setAttributeNS(null, 'height', '100%'); 2676 foreignObject.setAttributeNS(null, 'x', x); 2677 foreignObject.setAttributeNS(null, 'y', y); 2678 foreignObject.setAttributeNS(null, 'externalResourcesRequired', 'true'); 2679 svg.appendChild(foreignObject); 2680 2681 foreignObject.appendChild(node); 2682 2683 return svg; 2684}; 2685 2686var loadSerializedSVG = exports.loadSerializedSVG = function loadSerializedSVG(svg) { 2687 return new Promise(function (resolve, reject) { 2688 var img = new Image(); 2689 img.onload = function () { 2690 return resolve(img); 2691 }; 2692 img.onerror = reject; 2693 2694 img.src = 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(new XMLSerializer().serializeToString(svg)); 2695 }); 2696}; 2697}); 2698 2699unwrapExports(ForeignObjectRenderer_1); 2700var ForeignObjectRenderer_2 = ForeignObjectRenderer_1.createForeignObjectSVG; 2701var ForeignObjectRenderer_3 = ForeignObjectRenderer_1.loadSerializedSVG; 2702
2703var Feature = createCommonjsModule(function (module, exports) { 2704Object.defineProperty(exports, "__esModule", { 2705 value: true 2706}); 2707 2708 2709 2710var testRangeBounds = function testRangeBounds(document) { 2711 var TEST_HEIGHT = 123; 2712 2713 if (document.createRange) { 2714 var range = document.createRange(); 2715 if (range.getBoundingClientRect) { 2716 var testElement = document.createElement('boundtest'); 2717 testElement.style.height = TEST_HEIGHT + 'px'; 2718 testElement.style.display = 'block'; 2719 document.body.appendChild(testElement); 2720 2721 range.selectNode(testElement); 2722 var rangeBounds = range.getBoundingClientRect(); 2723 var rangeHeight = Math.round(rangeBounds.height); 2724 document.body.removeChild(testElement); 2725 if (rangeHeight === TEST_HEIGHT) { 2726 return true; 2727 } 2728 } 2729 } 2730 2731 return false; 2732}; 2733 2734// iOS 10.3 taints canvas with base64 images unless crossOrigin = 'anonymous' 2735var testBase64 = function testBase64(document, src) { 2736 var img = new Image(); 2737 var canvas = document.createElement('canvas'); 2738 var ctx = canvas.getContext('2d'); 2739 2740 return new Promise(function (resolve) { 2741 // Single pixel base64 image renders fine on iOS 10.3??? 2742 img.src = src; 2743 2744 var onload = function onload() { 2745 try { 2746 ctx.drawImage(img, 0, 0); 2747 canvas.toDataURL(); 2748 } catch (e) { 2749 return resolve(false); 2750 } 2751 2752 return resolve(true); 2753 }; 2754 2755 img.onload = onload; 2756 img.onerror = function () { 2757 return resolve(false); 2758 }; 2759 2760 if (img.complete === true) { 2761 setTimeout(function () { 2762 onload(); 2763 }, 500); 2764 } 2765 }); 2766}; 2767 2768var testCORS = function testCORS() { 2769 return typeof new Image().crossOrigin !== 'undefined'; 2770}; 2771 2772var testResponseType = function testResponseType() { 2773 return typeof new XMLHttpRequest().responseType === 'string'; 2774}; 2775 2776var testSVG = function testSVG(document) { 2777 var img = new Image(); 2778 var canvas = document.createElement('canvas'); 2779 var ctx = canvas.getContext('2d'); 2780 img.src = 'data:image/svg+xml,<svg xmlns=\'http://www.w3.org/2000/svg\'></svg>'; 2781 2782 try { 2783 ctx.drawImage(img, 0, 0); 2784 canvas.toDataURL(); 2785 } catch (e) { 2786 return false; 2787 } 2788 return true; 2789}; 2790 2791var isGreenPixel = function isGreenPixel(data) { 2792 return data[0] === 0 && data[1] === 255 && data[2] === 0 && data[3] === 255; 2793}; 2794 2795var testForeignObject = function testForeignObject(document) { 2796 var canvas = document.createElement('canvas'); 2797 var size = 100; 2798 canvas.width = size; 2799 canvas.height = size; 2800 var ctx = canvas.getContext('2d'); 2801 ctx.fillStyle = 'rgb(0, 255, 0)'; 2802 ctx.fillRect(0, 0, size, size); 2803 2804 var img = new Image(); 2805 var greenImageSrc = canvas.toDataURL(); 2806 img.src = greenImageSrc; 2807 var svg = (0, ForeignObjectRenderer_1.createForeignObjectSVG)(size, size, 0, 0, img); 2808 ctx.fillStyle = 'red'; 2809 ctx.fillRect(0, 0, size, size); 2810 2811 return (0, ForeignObjectRenderer_1.loadSerializedSVG)(svg).then(function (img) { 2812 ctx.drawImage(img, 0, 0); 2813 var data = ctx.getImageData(0, 0, size, size).data; 2814 ctx.fillStyle = 'red'; 2815 ctx.fillRect(0, 0, size, size); 2816 2817 var node = document.createElement('div'); 2818 node.style.backgroundImage = 'url(' + greenImageSrc + ')'; 2819 node.style.height = size + 'px'; 2820 // Firefox 55 does not render inline <img /> tags 2821 return isGreenPixel(data) ? (0, ForeignObjectRenderer_1.loadSerializedSVG)((0, ForeignObjectRenderer_1.createForeignObjectSVG)(size, size, 0, 0, node)) : Promise.reject(false); 2822 }).then(function (img) { 2823 ctx.drawImage(img, 0, 0); 2824 // Edge does not render background-images 2825 return isGreenPixel(ctx.getImageData(0, 0, size, size).data); 2826 }).catch(function (e) { 2827 return false; 2828 });
2829}; 2830 2831var FEATURES = { 2832 // $FlowFixMe - get/set properties not yet supported 2833 get SUPPORT_RANGE_BOUNDS() { 2834 var value = testRangeBounds(document); 2835 Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', { value: value }); 2836 return value; 2837 }, 2838 // $FlowFixMe - get/set properties not yet supported 2839 get SUPPORT_SVG_DRAWING() { 2840 var value = testSVG(document); 2841 Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', { value: value }); 2842 return value; 2843 }, 2844 // $FlowFixMe - get/set properties not yet supported 2845 get SUPPORT_BASE64_DRAWING() { 2846 return function (src) { 2847 var _value = testBase64(document, src); 2848 Object.defineProperty(FEATURES, 'SUPPORT_BASE64_DRAWING', { value: function value() { 2849 return _value; 2850 } }); 2851 return _value; 2852 }; 2853 }, 2854 // $FlowFixMe - get/set properties not yet supported 2855 get SUPPORT_FOREIGNOBJECT_DRAWING() { 2856 var value = typeof Array.from === 'function' && typeof window.fetch === 'function' ? testForeignObject(document) : Promise.resolve(false); 2857 Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', { value: value }); 2858 return value; 2859 }, 2860 // $FlowFixMe - get/set properties not yet supported 2861 get SUPPORT_CORS_IMAGES() { 2862 var value = testCORS(); 2863 Object.defineProperty(FEATURES, 'SUPPORT_CORS_IMAGES', { value: value }); 2864 return value; 2865 }, 2866 // $FlowFixMe - get/set properties not yet supported 2867 get SUPPORT_RESPONSE_TYPE() { 2868 var value = testResponseType(); 2869 Object.defineProperty(FEATURES, 'SUPPORT_RESPONSE_TYPE', { value: value }); 2870 return value; 2871 }, 2872 // $FlowFixMe - get/set properties not yet supported 2873 get SUPPORT_CORS_XHR() { 2874 var value = 'withCredentials' in new XMLHttpRequest(); 2875 Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', { value: value }); 2876 return value; 2877 } 2878}; 2879 2880exports.default = FEATURES; 2881}); 2882 2883unwrapExports(Feature); 2884 2885var Util$2 = createCommonjsModule(function (module, exports) { 2886Object.defineProperty(exports, "__esModule", { 2887 value: true 2888}); 2889var toCodePoints = exports.toCodePoints = function toCodePoints(str) { 2890 var codePoints = []; 2891 var i = 0; 2892 var length = str.length; 2893 while (i < length) { 2894 var value = str.charCodeAt(i++); 2895 if (value >= 0xd800 && value <= 0xdbff && i < length) { 2896 var extra = str.charCodeAt(i++); 2897 if ((extra & 0xfc00) === 0xdc00) { 2898 codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000); 2899 } else { 2900 codePoints.push(value); 2901 i--; 2902 } 2903 } else { 2904 codePoints.push(value); 2905 } 2906 } 2907 return codePoints; 2908}; 2909 2910var fromCodePoint = exports.fromCodePoint = function fromCodePoint() { 2911 if (String.fromCodePoint) { 2912 return String.fromCodePoint.apply(String, arguments); 2913 } 2914 2915 var length = arguments.length; 2916 if (!length) { 2917 return ''; 2918 } 2919 2920 var codeUnits = []; 2921 2922 var index = -1; 2923 var result = ''; 2924 while (++index < length) { 2925 var codePoint = arguments.length <= index ? undefined : arguments[index]; 2926 if (codePoint <= 0xffff) { 2927 codeUnits.push(codePoint); 2928 } else { 2929 codePoint -= 0x10000; 2930 codeUnits.push((codePoint >> 10) + 0xd800, codePoint % 0x400 + 0xdc00); 2931 } 2932 if (index + 1 === length || codeUnits.length > 0x4000) { 2933 result += String.fromCharCode.apply(String, codeUnits); 2934 codeUnits.length = 0; 2935 } 2936 } 2937 return result; 2938}; 2939 2940var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; 2941 2942// Use a lookup table to find the index. 2943var lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256); 2944for (var i = 0; i < chars.length; i++) { 2945 lookup[chars.charCodeAt(i)] = i; 2946} 2947 2948var decode = exports.decode = function decode(base64) { 2949 var bufferLength = base64.length * 0.75, 2950 len = base64.length, 2951 i = void 0, 2952 p = 0, 2953 encoded1 = void 0, 2954 encoded2 = void 0, 2955 encoded3 = void 0, 2956 encoded4 = void 0; 2957 2958 if (base64[base64.length - 1] === '=') { 2959 bufferLength--; 2960 if (base64[base64.length - 2] === '=') { 2961 bufferLength--; 2962 } 2963 } 2964 2965 var buffer = typeof ArrayBuffer !== 'undefined' && typeof Uint8Array !== 'undefined' && typeof Uint8Array.prototype.slice !== 'undefined' ? new ArrayBuffer(bufferLength) : new Array(bufferLength); 2966 var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer); 2967 2968 for (i = 0; i < len; i += 4) { 2969 encoded1 = lookup[base64.charCodeAt(i)];
2970 encoded2 = lookup[base64.charCodeAt(i + 1)]; 2971 encoded3 = lookup[base64.charCodeAt(i + 2)]; 2972 encoded4 = lookup[base64.charCodeAt(i + 3)]; 2973 2974 bytes[p++] = encoded1 << 2 | encoded2 >> 4; 2975 bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2; 2976 bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63; 2977 } 2978 2979 return buffer; 2980}; 2981 2982var polyUint16Array = exports.polyUint16Array = function polyUint16Array(buffer) { 2983 var length = buffer.length; 2984 var bytes = []; 2985 for (var _i = 0; _i < length; _i += 2) { 2986 bytes.push(buffer[_i + 1] << 8 | buffer[_i]); 2987 } 2988 return bytes; 2989}; 2990 2991var polyUint32Array = exports.polyUint32Array = function polyUint32Array(buffer) { 2992 var length = buffer.length; 2993 var bytes = []; 2994 for (var _i2 = 0; _i2 < length; _i2 += 4) { 2995 bytes.push(buffer[_i2 + 3] << 24 | buffer[_i2 + 2] << 16 | buffer[_i2 + 1] << 8 | buffer[_i2]); 2996 } 2997 return bytes; 2998}; 2999}); 3000 3001unwrapExports(Util$2); 3002var Util_1$1 = Util$2.toCodePoints; 3003var Util_2$1 = Util$2.fromCodePoint; 3004var Util_3$1 = Util$2.decode; 3005var Util_4$1 = Util$2.polyUint16Array; 3006var Util_5 = Util$2.polyUint32Array; 3007 3008var Trie_1 = createCommonjsModule(function (module, exports) { 3009Object.defineProperty(exports, "__esModule", { 3010 value: true 3011}); 3012exports.Trie = exports.createTrieFromBase64 = exports.UTRIE2_INDEX_2_MASK = exports.UTRIE2_INDEX_2_BLOCK_LENGTH = exports.UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = exports.UTRIE2_INDEX_1_OFFSET = exports.UTRIE2_UTF8_2B_INDEX_2_LENGTH = exports.UTRIE2_UTF8_2B_INDEX_2_OFFSET = exports.UTRIE2_INDEX_2_BMP_LENGTH = exports.UTRIE2_LSCP_INDEX_2_LENGTH = exports.UTRIE2_DATA_MASK = exports.UTRIE2_DATA_BLOCK_LENGTH = exports.UTRIE2_LSCP_INDEX_2_OFFSET = exports.UTRIE2_SHIFT_1_2 = exports.UTRIE2_INDEX_SHIFT = exports.UTRIE2_SHIFT_1 = exports.UTRIE2_SHIFT_2 = undefined; 3013 3014var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); 3015 3016 3017 3018function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 3019 3020/** Shift size for getting the index-2 table offset. */ 3021var UTRIE2_SHIFT_2 = exports.UTRIE2_SHIFT_2 = 5; 3022 3023/** Shift size for getting the index-1 table offset. */ 3024var UTRIE2_SHIFT_1 = exports.UTRIE2_SHIFT_1 = 6 + 5; 3025 3026/** 3027 * Shift size for shifting left the index array values. 3028 * Increases possible data size with 16-bit index values at the cost 3029 * of compactability. 3030 * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY. 3031 */ 3032var UTRIE2_INDEX_SHIFT = exports.UTRIE2_INDEX_SHIFT = 2; 3033 3034/** 3035 * Difference between the two shift sizes, 3036 * for getting an index-1 offset from an index-2 offset. 6=11-5 3037 */ 3038var UTRIE2_SHIFT_1_2 = exports.UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2; 3039 3040/** 3041 * The part of the index-2 table for U+D800..U+DBFF stores values for 3042 * lead surrogate code _units_ not code _points_. 3043 * Values for lead surrogate code _points_ are indexed with this portion of the table. 3044 * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.) 3045 */ 3046var UTRIE2_LSCP_INDEX_2_OFFSET = exports.UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2; 3047 3048/** Number of entries in a data block. 32=0x20 */ 3049var UTRIE2_DATA_BLOCK_LENGTH = exports.UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2; 3050/** Mask for getting the lower bits for the in-data-block offset. */ 3051var UTRIE2_DATA_MASK = exports.UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1; 3052 3053var UTRIE2_LSCP_INDEX_2_LENGTH = exports.UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2; 3054/** Count the lengths of both BMP pieces. 2080=0x820 */ 3055var UTRIE2_INDEX_2_BMP_LENGTH = exports.UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH; 3056/** 3057 * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820. 3058 * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2. 3059 */ 3060var UTRIE2_UTF8_2B_INDEX_2_OFFSET = exports.UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH; 3061var UTRIE2_UTF8_2B_INDEX_2_LENGTH = exports.UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */ 3062/** 3063 * The index-1 table, only used for supplementary code points, at offset 2112=0x840. 3064 * Variable length, for code points up to highStart, where the last single-value range starts. 3065 * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1. 3066 * (For 0x100000 supplementary code points U+10000..U+10ffff.) 3067 * 3068 * The part of the index-2 table for supplementary code points starts 3069 * after this index-1 table. 3070 * 3071 * Both the index-1 table and the following part of the index-2 table 3072 * are omitted completely if there is only BMP data. 3073 */ 3074var UTRIE2_INDEX_1_OFFSET = exports.UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH; 3075 3076/** 3077 * Number of index-1 entries for the BMP. 32=0x20 3078 * This part of the index-1 table is omitted from the serialized form. 3079 */ 3080var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = exports.UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1; 3081 3082/** Number of entries in an index-2 block. 64=0x40 */ 3083var UTRIE2_INDEX_2_BLOCK_LENGTH = exports.UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2; 3084/** Mask for getting the lower bits for the in-index-2-block offset. */ 3085var UTRIE2_INDEX_2_MASK = exports.UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1; 3086 3087var createTrieFromBase64 = exports.createTrieFromBase64 = function createTrieFromBase64(base64) { 3088 var buffer = (0, Util$2.decode)(base64); 3089 var view32 = Array.isArray(buffer) ? (0, Util$2.polyUint32Array)(buffer) : new Uint32Array(buffer); 3090 var view16 = Array.isArray(buffer) ? (0, Util$2.polyUint16Array)(buffer) : new Uint16Array(buffer); 3091 var headerLength = 24; 3092 3093 var index = view16.slice(headerLength / 2, view32[4] / 2); 3094 var data = view32[5] === 2 ? view16.slice((headerLength + view32[4]) / 2) : view32.slice(Math.ceil((headerLength + view32[4]) / 4)); 3095 3096 return new Trie(view32[0], view32[1], view32[2], view32[3], index, data); 3097}; 3098 3099var Trie = exports.Trie = function () {
3100 function Trie(initialValue, errorValue, highStart, highValueIndex, index, data) { 3101 _classCallCheck(this, Trie); 3102 3103 this.initialValue = initialValue; 3104 this.errorValue = errorValue; 3105 this.highStart = highStart; 3106 this.highValueIndex = highValueIndex; 3107 this.index = index; 3108 this.data = data; 3109 } 3110 3111 /** 3112 * Get the value for a code point as stored in the Trie. 3113 * 3114 * @param codePoint the code point 3115 * @return the value 3116 */ 3117 3118 3119 _createClass(Trie, [{ 3120 key: 'get', 3121 value: function get(codePoint) { 3122 var ix = void 0; 3123 if (codePoint >= 0) { 3124 if (codePoint < 0x0d800 || codePoint > 0x0dbff && codePoint <= 0x0ffff) { 3125 // Ordinary BMP code point, excluding leading surrogates. 3126 // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index. 3127 // 16 bit data is stored in the index array itself. 3128 ix = this.index[codePoint >> UTRIE2_SHIFT_2]; 3129 ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK); 3130 return this.data[ix]; 3131 } 3132 3133 if (codePoint <= 0xffff) { 3134 // Lead Surrogate Code Point. A Separate index section is stored for 3135 // lead surrogate code units and code points. 3136 // The main index has the code unit data. 3137 // For this function, we need the code point data. 3138 // Note: this expression could be refactored for slightly improved efficiency, but 3139 // surrogate code points will be so rare in practice that it's not worth it. 3140 ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + (codePoint - 0xd800 >> UTRIE2_SHIFT_2)]; 3141 ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK); 3142 return this.data[ix]; 3143 } 3144 3145 if (codePoint < this.highStart) { 3146 // Supplemental code point, use two-level lookup. 3147 ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1); 3148 ix = this.index[ix]; 3149 ix += codePoint >> UTRIE2_SHIFT_2 & UTRIE2_INDEX_2_MASK; 3150 ix = this.index[ix]; 3151 ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK); 3152 return this.data[ix]; 3153 } 3154 if (codePoint <= 0x10ffff) { 3155 return this.data[this.highValueIndex]; 3156 } 3157 } 3158 3159 // Fall through. The code point is outside of the legal range of 0..0x10ffff. 3160 return this.errorValue; 3161 } 3162 }]); 3163 3164 return Trie; 3165}(); 3166}); 3167 3168unwrapExports(Trie_1); 3169var Trie_2 = Trie_1.Trie; 3170var Trie_3 = Trie_1.createTrieFromBase64; 3171var Trie_4 = Trie_1.UTRIE2_INDEX_2_MASK; 3172var Trie_5 = Trie_1.UTRIE2_INDEX_2_BLOCK_LENGTH; 3173var Trie_6 = Trie_1.UTRIE2_OMITTED_BMP_INDEX_1_LENGTH; 3174var Trie_7 = Trie_1.UTRIE2_INDEX_1_OFFSET; 3175var Trie_8 = Trie_1.UTRIE2_UTF8_2B_INDEX_2_LENGTH; 3176var Trie_9 = Trie_1.UTRIE2_UTF8_2B_INDEX_2_OFFSET; 3177var Trie_10 = Trie_1.UTRIE2_INDEX_2_BMP_LENGTH; 3178var Trie_11 = Trie_1.UTRIE2_LSCP_INDEX_2_LENGTH; 3179var Trie_12 = Trie_1.UTRIE2_DATA_MASK; 3180var Trie_13 = Trie_1.UTRIE2_DATA_BLOCK_LENGTH; 3181var Trie_14 = Trie_1.UTRIE2_LSCP_INDEX_2_OFFSET; 3182var Trie_15 = Trie_1.UTRIE2_SHIFT_1_2; 3183var Trie_16 = Trie_1.UTRIE2_INDEX_SHIFT; 3184var Trie_17 = Trie_1.UTRIE2_SHIFT_1; 3185var Trie_18 = Trie_1.UTRIE2_SHIFT_2; 3186 3187var linebreakTrie = 'KwAAAAAAAAAACA4AIDoAAPAfAAACAAAAAAAIABAAGABAAEgAUABYAF4AZgBeAGYAYABoAHAAeABeAGYAfACEAIAAiACQAJgAoACoAK0AtQC9AMUAXgBmAF4AZgBeAGYAzQDVAF4AZgDRANkA3gDmAOwA9AD8AAQBDAEUARoBIgGAAIgAJwEvATcBPwFFAU0BTAFUAVwBZAFsAXMBewGDATAAiwGTAZsBogGkAawBtAG8AcIBygHSAdoB4AHoAfAB+AH+AQYCDgIWAv4BHgImAi4CNgI+AkUCTQJTAlsCYwJrAnECeQKBAk0CiQKRApkCoQKoArACuALAAsQCzAIwANQC3ALkAjAA7AL0AvwCAQMJAxADGAMwACADJgMuAzYDPgOAAEYDSgNSA1IDUgNaA1oDYANiA2IDgACAAGoDgAByA3YDfgOAAIQDgACKA5IDmgOAAIAAogOqA4AAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAK8DtwOAAIAAvwPHA88D1wPfAyAD5wPsA/QD/AOAAIAABAQMBBIEgAAWBB4EJgQuBDMEIAM7BEEEXgBJBCADUQRZBGEEaQQwADAAcQQ+AXkEgQSJBJEEgACYBIAAoASoBK8EtwQwAL8ExQSAAIAAgACAAIAAgACgAM0EXgBeAF4AXgBeAF4AXgBeANUEXgDZBOEEXgDpBPEE+QQBBQkFEQUZBSEFKQUxBTUFPQVFBUwFVAVcBV4AYwVeAGsFcwV7BYMFiwWSBV4AmgWgBacFXgBeAF4AXgBeAKsFXgCyBbEFugW7BcIFwgXIBcIFwgXQBdQF3AXkBesF8wX7BQMGCwYTBhsGIwYrBjMGOwZeAD8GRwZNBl4AVAZbBl4AXgBeAF4AXgBeAF4AXgBeAF4AXgBeAGMGXgBqBnEGXgBeAF4AXgBeAF4AXgBeAF4AXgB5BoAG4wSGBo4GkwaAAIADHgR5AF4AXgBeAJsGgABGA4AAowarBrMGswagALsGwwbLBjAA0wbaBtoG3QbaBtoG2gbaBtoG2gblBusG8wb7BgMHCwcTBxsHCwcjBysHMAc1BzUHOgdCB9oGSgdSB1oHYAfaBloHaAfaBlIH2gbaBtoG2gbaBtoG2gbaBjUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHbQdeAF4ANQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQd1B30HNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B4MH2gaKB68EgACAAIAAgACAAIAAgACAAI8HlwdeAJ8HpweAAIAArwe3B14AXgC/B8UHygcwANAH2AfgB4AA6AfwBz4B+AcACFwBCAgPCBcIogEYAR8IJwiAAC8INwg/CCADRwhPCFcIXwhnCEoDGgSAAIAAgABvCHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIhAiLCI4IMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAANQc1BzUHNQc1BzUHNQc1BzUHNQc1B54INQc1B6II2gaqCLIIugiAAIAAvgjGCIAAgACAAIAAgACAAIAAgACAAIAAywiHAYAA0wiAANkI3QjlCO0I9Aj8CIAAgACAAAIJCgkSCRoJIgknCTYHLwk3CZYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiAAIAAAAFAA
3187XgBeAGAAcABeAHwAQACQAKAArQC9AJ4AXgBeAE0A3gBRAN4A7AD8AMwBGgEAAKcBNwEFAUwBXAF4QkhCmEKnArcCgAHHAsABz4LAAcABwAHAAd+C6ABoAG+C/4LAAcABwAHAAc+DF4MAAcAB54M3gweDV4Nng3eDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEeDqABVg6WDqABoQ6gAaABoAHXDvcONw/3DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DncPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB7cPPwlGCU4JMACAAIAAgABWCV4JYQmAAGkJcAl4CXwJgAkwADAAMAAwAIgJgACLCZMJgACZCZ8JowmrCYAAswkwAF4AXgB8AIAAuwkABMMJyQmAAM4JgADVCTAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAqwYWBNkIMAAwADAAMADdCeAJ6AnuCR4E9gkwAP4JBQoNCjAAMACAABUK0wiAAB0KJAosCjQKgAAwADwKQwqAAEsKvQmdCVMKWwowADAAgACAALcEMACAAGMKgABrCjAAMAAwADAAMAAwADAAMAAwADAAMAAeBDAAMAAwADAAMAAwADAAMAAwADAAMAAwAIkEPQFzCnoKiQSCCooKkAqJBJgKoAqkCokEGAGsCrQKvArBCjAAMADJCtEKFQHZCuEK/gHpCvEKMAAwADAAMACAAIwE+QowAIAAPwEBCzAAMAAwADAAMACAAAkLEQswAIAAPwEZCyELgAAOCCkLMAAxCzkLMAAwADAAMAAwADAAXgBeAEELMAAwADAAMAAwADAAMAAwAEkLTQtVC4AAXAtkC4AAiQkwADAAMAAwADAAMAAwADAAbAtxC3kLgAuFC4sLMAAwAJMLlwufCzAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAApwswADAAMACAAIAAgACvC4AAgACAAIAAgACAALcLMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAvwuAAMcLgACAAIAAgACAAIAAyguAAIAAgACAAIAA0QswADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAANkLgACAAIAA4AswADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACJCR4E6AswADAAhwHwC4AA+AsADAgMEAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMACAAIAAGAwdDCUMMAAwAC0MNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQw1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHPQwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADUHNQc1BzUHNQc1BzUHNQc2BzAAMAA5DDUHNQc1BzUHNQc1BzUHNQc1BzUHNQdFDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAATQxSDFoMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAF4AXgBeAF4AXgBeAF4AYgxeAGoMXgBxDHkMfwxeAIUMXgBeAI0MMAAwADAAMAAwAF4AXgCVDJ0MMAAwADAAMABeAF4ApQxeAKsMswy7DF4Awgy9DMoMXgBeAF4AXgBeAF4AXgBeAF4AXgDRDNkMeQBqCeAM3Ax8AOYM7Az0DPgMXgBeAF4AXgBeAF4AXgBeAF4AXgBeAF4AXgBeAF4AXgCgAAANoAAHDQ4NFg0wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAeDSYNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAC4NMABeAF4ANg0wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAD4NRg1ODVYNXg1mDTAAbQ0wADAAMAAwADAAMAAwADAA2gbaBtoG2gbaBtoG2gbaBnUNeg3CBYANwgWFDdoGjA3aBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gaUDZwNpA2oDdoG2gawDbcNvw3HDdoG2gbPDdYN3A3fDeYN2gbsDfMN2gbaBvoN/g3aBgYODg7aBl4AXgBeABYOXgBeACUG2gYeDl4AJA5eACwO2w3aBtoGMQ45DtoG2gbaBtoGQQ7aBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gZJDjUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B1EO2gY1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQdZDjUHNQc1BzUHNQc1B2EONQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHaA41BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B3AO2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gY1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B2EO2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gZJDtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBkkOeA6gAKAAoAAwADAAMAAwA
3187KAAoACgAKAAoACgAKAAgA4wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAD//wQABAAEAAQABAAEAAQABAAEAA0AAwABAAEAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAKABMAFwAeABsAGgAeABcAFgASAB4AGwAYAA8AGAAcAEsASwBLAEsASwBLAEsASwBLAEsAGAAYAB4AHgAeABMAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAFgAbABIAHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYADQARAB4ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkAFgAaABsAGwAbAB4AHQAdAB4ATwAXAB4ADQAeAB4AGgAbAE8ATwAOAFAAHQAdAB0ATwBPABcATwBPAE8AFgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwArAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAAQABAANAA0ASwBLAEsASwBLAEsASwBLAEsASwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUAArACsABABQAAQABAAEAAQABAAEAAQAKwArAAQABAArACsABAAEAAQAUAArACsAKwArACsAKwArACsABAArACsAKwArAFAAUAArAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAGgAaAFAAUABQAFAAUABMAB4AGwBQAB4AKwArACsABAAEAAQAKwBQAFAAUABQAFAAUAArACsAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUAArAFAAUAArACsABAArAAQABAAEAAQABAArACsAKwArAAQABAArACsABAAEAAQAKwArACsABAArACsAKwArACsAKwArAFAAUABQAFAAKwBQACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwAEAAQAUABQAFAABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUAArACsABABQAAQABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQAKwArAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwAeABsAKwArACsAKwArACsAKwBQAAQABAAEAAQABAAEACsABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwArAAQABAArACsABAAEAAQAKwArACsAKwArACsAKwArAAQABAArACsAKwArAFAAUAArAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwAeAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwAEAFAAKwBQAFAAUABQAFAAUAArACsAKwBQAFAAUAArAFAAUABQAFAAKwArACsAUABQACsAUAArAFAAUAArACsAKwBQAFAAKwArACsAUABQAFAAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQAKwArACsABAAEAAQAKwAEAAQABAAEACsAKwBQACsAKwArACsAKwArAAQAKwArACsAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAB4AHgAeAB4AHgAeABsAHgArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABAArACsAKwArACsAKwArAAQABAArAFAAUABQACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAB4AUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABAArACsAKwArACsAKwArAAQABAArACsAKwArACsAKwArAFAAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwArAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAKwBcAFwAKwBcACsAKwBcACsAKwArACsAKwArAFwAXABcAFwAKwBcAFwAXABcAFwAXABcACsAXABcAFwAKwBcACsAXAArACsAXABcACsAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgArACoAKgBcACsAKwBcAFwAXABcAFwAKwBcACsAKgAqACoAKgAqACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAFwAXABcAFwAUAAOAA4ADgAOAB4ADgAOAAkADgAOAA0ACQATABMAEwATABMACQAeABMAHgAeAB4ABAAEAB4AHgAeAB4AHgAeAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUAANAAQAHgAEAB4ABAAWABEAFgARAAQABABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAAQABAAEAAQABAANAAQABABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsADQANAB4AHgAeAB4AHgAeAAQAHgAeAB4AHgAeAB4AKwAeAB4ADgAOAA0ADgAeAB4AHgAeAB4ACQAJACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgAeAB4AHgBcAFwAXABcAFwAXAAqACoAKgAqAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAKgAqACoAKgAqACoAKgBcAFwAXAAqACoAKgAqAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAXAAqAEsASwBLAEsASwBLAEsASwBLAEsAKgAqACoAKgAqACoAUABQAFAAUABQAFAAKwBQACsAKwArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQACsAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwAEAAQABAAeAA0AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAEQArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAADQANAA0AUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAA0ADQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoADQANABUAXAANAB4ADQAbAFwAKgArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAB4AHgATABMADQANAA4AHgATABMAHgAEAAQABAAJACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAUABQAFAAUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwAeACsAKwArABMAEwBLAEsASwBLAEsASwBLAEsASwBLAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwBcAFwAXABcAFwAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcACsAKwArACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwAeAB4AXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgArACsABABLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKgAqACoAKgAqACoAKgBcACoAKgAqACoAKgAqACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAUABQAFAAUABQAFAAUAArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4ADQANAA0ADQAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAHgAeAB4AHgBQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwANAA0ADQANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwBQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsABAAEAAQAHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAABABQAFAAUABQAAQABAAEAFAAUAAEAAQABAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAKwBQACsAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAKwArAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAKwAeAB4AHgAeAB4AHgAeAA4AHgArAA0ADQANAA0ADQANAA0ACQANAA0ADQAIAAQACwAEAAQADQAJAA0ADQAMAB0AHQAeABcAFwAWABcAFwAXABYAFwAdAB0AHgAeABQAFAAUAA0AAQABAAQABAAEAAQABAAJABoAGgAaABoAGgAaABoAGgAeABcAFwAdABUAFQAeAB4AHgAeAB4AHgAYABYAEQAVABUAFQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgANAB4ADQANAA0ADQAeAA0ADQANAAcAHgAeAB4AHgArAAQABAAEAAQABAAEAAQABAAEAAQAUABQACsAKwBPAFAAUABQAFAAUAAeAB4AHgAWABEATwBQAE8ATwBPAE8AUABQAFAAUABQAB4AHgAeABYAEQArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAGwAbABsAGwAbABsAGwAaABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAaABsAGwAbABsAGgAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgBQABoAHgAdAB4AUAAeABoAHgAeAB4AHgAeAB4AHgAeAB4ATwAeAFAAGwAeAB4AUABQAFAAUABQAB4AHgAeAB0AH
3187QAeAFAAHgBQAB4AUAAeAFAATwBQAFAAHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AUABQAFAAUABPAE8AUABQAFAAUABQAE8AUABQAE8AUABPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAE8ATwBPAE8ATwBPAE8ATwBPAE8AUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAATwAeAB4AKwArACsAKwAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB0AHQAeAB4AHgAdAB0AHgAeAB0AHgAeAB4AHQAeAB0AGwAbAB4AHQAeAB4AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB0AHgAdAB4AHQAdAB0AHQAdAB0AHgAdAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAdAB0AHQAdAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAlACUAHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQBPAE8ATw
3187BPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBQAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB0AHQAeAB4AHgAeAB0AHQAdAB4AHgAdAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB0AHQAeAB4AHQAeAB4AHgAeAB0AHQAeAB4AHgAeACUAJQAdAB0AJQAeACUAJQAlACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAHgAeAB4AHgAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHQAdAB0AHgAdACUAHQAdAB4AHQAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHQAdAB0AHQAlAB4AJQAlACUAHQAlACUAHQAdAB0AJQAlAB0AHQAlAB0AHQAlACUAJQAeAB0AHgAeAB4AHgAdAB0AJQAdAB0AHQAdAB0AHQAlACUAJQAlACUAHQAlACUAIAAlAB0AHQAlACUAJQAlACUAJQAlACUAHgAeAB4AJQAlACAAIAAgACAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeABcAFwAXABcAFwAXAB4AEwATACUAHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwArACUAJQBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAKwArACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAE8ATw
3187BPAE8ATwBPAE8ATwAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeACsAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUAArACsAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQBQAFAAUABQACsAKwArACsAUABQAFAAUABQAFAAUABQAA0AUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQACsAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgBQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAABAAEAAQAKwAEAAQAKwArACsAKwArAAQABAAEAAQAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsABAAEAAQAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsADQANAA0ADQANAA0ADQANAB4AKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AUABQAFAAUABQAFAAUABQAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAUABQAFAAUABQAA0ADQANAA0ADQANABQAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwANAA0ADQANAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAeAAQABAAEAB4AKwArAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLACsADQArAB4AKwArAAQABAAEAAQAUABQAB4AUAArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwAEAAQABAAEAAQABAAEAAQABAAOAA0ADQATABMAHgAeAB4ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0AUABQAFAAUAAEAAQAKwArAAQADQANAB4AUAArACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXABcAA0ADQANACoASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUAArACsAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANACsADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEcARwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQACsAKwAeAAQABAANAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAEAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUAArACsAUAArACsAUABQACsAKwBQAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AKwArAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAeAB4ADQANAA0ADQAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAArAAQABAArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAEAAQABAAEAAQABAAEACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAFgAWAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAKwBQACsAKwArACsAKwArAFAAKwArACsAKwBQACsAUAArAFAAKwBQAFAAUAArAFAAUAArAFAAKwArAFAAKwBQACsAUAArAFAAKwBQACsAUABQACsAUAArACsAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAUABQAFAAUAArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUA
vendor: 4,711 bytes, lines 3187-3197
3187BQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUAArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAlACUAJQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeACUAJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeACUAJQAlACUAJQAeACUAJQAlACUAJQAgACAAIAAlACUAIAAlACUAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIQAhACEAIQAhACUAJQAgACAAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACAAIAAlACUAJQAlACAAJQAgACAAIAAgACAAIAAgACAAIAAlACUAJQAgACUAJQAlACUAIAAgACAAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeACUAHgAlAB4AJQAlACUAJQAlACAAJQAlACUAJQAeACUAHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAIAAgACAAJQAlACUAIAAgACAAIAAgAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFwAXABcAFQAVABUAHgAeAB4AHgAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACAAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAlACAAIAAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsA'; 3188 3189var LineBreak = createCommonjsModule(function (module, exports) { 3190Object.defineProperty(exports, "__esModule", { 3191 value: true 3192}); 3193exports.LineBreaker = exports.inlineBreakOpportunities = exports.lineBreakAtIndex = exports.codePointsToCharacterClasses = exports.UnicodeTrie = exports.BREAK_ALLOWED = exports.BREAK_NOT_ALLOWED = exports.BREAK_MANDATORY = exports.classes = exports.LETTER_NUMBER_MODIFIER = undefined; 3194 3195var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); 3196 3197var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); }
3197 else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); 3198 3199 3200 3201 3202 3203var _linebreakTrie2 = _interopRequireDefault(linebreakTrie); 3204 3205 3206 3207function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 3208 3209function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } 3210 3211function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 3212 3213var LETTER_NUMBER_MODIFIER = exports.LETTER_NUMBER_MODIFIER = 50; 3214 3215// Non-tailorable Line Breaking Classes 3216var BK = 1; // Cause a line break (after) 3217var CR = 2; // Cause a line break (after), except between CR and LF 3218var LF = 3; // Cause a line break (after) 3219var CM = 4; // Prohibit a line break between the character and the preceding character 3220var NL = 5; // Cause a line break (after) 3221var SG = 6; // Do not occur in well-formed text 3222var WJ = 7; // Prohibit line breaks before and after 3223var ZW = 8; // Provide a break opportunity 3224var GL = 9; // Prohibit line breaks before and after 3225var SP = 10; // Enable indirect line breaks 3226var ZWJ = 11; // Prohibit line breaks within joiner sequences 3227// Break Opportunities 3228var B2 = 12; // Provide a line break opportunity before and after the character 3229var BA = 13; // Generally provide a line break opportunity after the character 3230var BB = 14; // Generally provide a line break opportunity before the character 3231var HY = 15; // Provide a line break opportunity after the character, except in numeric context 3232var CB = 16; // Provide a line break opportunity contingent on additional information 3233// Characters Prohibiting Certain Breaks 3234var CL = 17; // Prohibit line breaks before 3235var CP = 18; // Prohibit line breaks before 3236var EX = 19; // Prohibit line breaks before 3237var IN = 20; // Allow only indirect line breaks between pairs 3238var NS = 21; // Allow only indirect line breaks before 3239var OP = 22; // Prohibit line breaks after 3240var QU = 23; // Act like they are both opening and closing 3241// Numeric Context 3242var IS = 24; // Prevent breaks after any and before numeric 3243var NU = 25; // Form numeric expressions for line breaking purposes 3244var PO = 26; // Do not break following a numeric expression 3245var PR = 27; // Do not break in front of a numeric expression 3246var SY = 28; // Prevent a break before; and allow a break after 3247// Other Characters 3248var AI = 29; // Act like AL when the resolvedEAW is N; otherwise; act as ID 3249var AL = 30; // Are alphabetic characters or symbols that are used with alphabetic characters 3250var CJ = 31; // Treat as NS or ID for strict or normal breaking. 3251var EB = 32; // Do not break from following Emoji Modifier 3252var EM = 33; // Do not break from preceding Emoji Base 3253var H2 = 34; // Form Korean syllable blocks 3254var H3 = 35; // Form Korean syllable blocks 3255var HL = 36; // Do not break around a following hyphen; otherwise act as Alphabetic 3256var ID = 37; // Break before or after; except in some numeric context 3257var JL = 38; // Form Korean syllable blocks 3258var JV = 39; // Form Korean syllable blocks 3259var JT = 40; // Form Korean syllable blocks 3260var RI = 41; // Keep pairs together. For pairs; break before and after other classes 3261var SA = 42; // Provide a line break opportunity contingent on additional, language-specific context analysis 3262var XX = 43; // Have as yet unknown line breaking behavior or unassigned code positions 3263 3264var classes = exports.classes = { 3265 BK: BK, 3266 CR: CR, 3267 LF: LF, 3268 CM: CM, 3269 NL: NL, 3270 SG: SG, 3271 WJ: WJ, 3272 ZW: ZW, 3273 GL: GL, 3274 SP: SP, 3275 ZWJ: ZWJ, 3276 B2: B2, 3277 BA: BA, 3278 BB: BB, 3279 HY: HY, 3280 CB: CB, 3281 CL: CL, 3282 CP: CP, 3283 EX: EX, 3284 IN: IN, 3285 NS: NS, 3286 OP: OP, 3287 QU: QU, 3288 IS: IS, 3289 NU: NU, 3290 PO: PO, 3291 PR: PR, 3292 SY: SY, 3293 AI: AI, 3294 AL: AL, 3295 CJ: CJ, 3296 EB: EB, 3297 EM: EM, 3298 H2: H2, 3299 H3: H3, 3300 HL: HL, 3301 ID: ID, 3302 JL: JL, 3303 JV: JV, 3304 JT: JT, 3305 RI: RI, 3306 SA: SA, 3307 XX: XX 3308}; 3309 3310var BREAK_MANDATORY = exports.BREAK_MANDATORY = '!'; 3311var BREAK_NOT_ALLOWED = exports.BREAK_NOT_ALLOWED = 'Ã'; 3312var BREAK_ALLOWED = exports.BREAK_ALLOWED = '÷'; 3313var UnicodeTrie = exports.UnicodeTrie = (0, Trie_1.createTrieFromBase64)(_linebreakTrie2.default); 3314 3315var ALPHABETICS = [AL, HL]; 3316var HARD_LINE_BREAKS = [BK, CR, LF, NL]; 3317var SPACE = [SP, ZW]; 3318var PREFIX_POSTFIX = [PR, PO]; 3319var LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE); 3320var KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3]; 3321var HYPHEN = [HY, BA]; 3322 3323var codePointsToCharacterClasses = exports.codePointsToCharacterClasses = function codePointsToCharacterClasses(codePoints) { 3324 var lineBreak = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'strict'; 3325 3326 var types = []; 3327 var indicies = []; 3328 var categories = [];
vendor: 4,993 bytes, lines 3329-3488
3329 codePoints.forEach(function (codePoint, index) { 3330 var classType = UnicodeTrie.get(codePoint); 3331 if (classType > LETTER_NUMBER_MODIFIER) { 3332 categories.push(true); 3333 classType -= LETTER_NUMBER_MODIFIER; 3334 } else { 3335 categories.push(false); 3336 } 3337 3338 if (['normal', 'auto', 'loose'].indexOf(lineBreak) !== -1) { 3339 // U+2010, â U+2013, ã U+301C, ã U+30A0 3340 if ([0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1) { 3341 indicies.push(index); 3342 return types.push(CB); 3343 } 3344 } 3345 3346 if (classType === CM || classType === ZWJ) { 3347 // LB10 Treat any remaining combining mark or ZWJ as AL. 3348 if (index === 0) { 3349 indicies.push(index); 3350 return types.push(AL); 3351 } 3352 3353 // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of 3354 // the base character in all of the following rules. Treat ZWJ as if it were CM. 3355 var prev = types[index - 1]; 3356 if (LINE_BREAKS.indexOf(prev) === -1) { 3357 indicies.push(indicies[index - 1]); 3358 return types.push(prev); 3359 } 3360 indicies.push(index); 3361 return types.push(AL); 3362 } 3363 3364 indicies.push(index); 3365 3366 if (classType === CJ) { 3367 return types.push(lineBreak === 'strict' ? NS : ID); 3368 } 3369 3370 if (classType === SA) { 3371 return types.push(AL); 3372 } 3373 3374 if (classType === AI) { 3375 return types.push(AL); 3376 } 3377 3378 // For supplementary characters, a useful default is to treat characters in the range 10000..1FFFD as AL 3379 // and characters in the ranges 20000..2FFFD and 30000..3FFFD as ID, until the implementation can be revised 3380 // to take into account the actual line breaking properties for these characters. 3381 if (classType === XX) { 3382 if (codePoint >= 0x20000 && codePoint <= 0x2fffd || codePoint >= 0x30000 && codePoint <= 0x3fffd) { 3383 return types.push(ID); 3384 } else { 3385 return types.push(AL); 3386 } 3387 } 3388 3389 types.push(classType); 3390 }); 3391 3392 return [indicies, types, categories]; 3393}; 3394 3395var isAdjacentWithSpaceIgnored = function isAdjacentWithSpaceIgnored(a, b, currentIndex, classTypes) { 3396 var current = classTypes[currentIndex]; 3397 if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) { 3398 var i = currentIndex; 3399 while (i <= classTypes.length) { 3400 i++; 3401 var next = classTypes[i]; 3402 3403 if (next === b) { 3404 return true; 3405 } 3406 3407 if (next !== SP) { 3408 break; 3409 } 3410 } 3411 } 3412 3413 if (current === SP) { 3414 var _i = currentIndex; 3415 3416 while (_i > 0) { 3417 _i--; 3418 var prev = classTypes[_i]; 3419 3420 if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) { 3421 var n = currentIndex; 3422 while (n <= classTypes.length) { 3423 n++; 3424 var _next = classTypes[n]; 3425 3426 if (_next === b) { 3427 return true; 3428 } 3429 3430 if (_next !== SP) { 3431 break; 3432 } 3433 } 3434 } 3435 3436 if (prev !== SP) { 3437 break; 3438 } 3439 } 3440 } 3441 return false; 3442}; 3443 3444var previousNonSpaceClassType = function previousNonSpaceClassType(currentIndex, classTypes) { 3445 var i = currentIndex; 3446 while (i >= 0) { 3447 var type = classTypes[i]; 3448 if (type === SP) { 3449 i--; 3450 } else { 3451 return type; 3452 } 3453 } 3454 return 0; 3455}; 3456 3457var _lineBreakAtIndex = function _lineBreakAtIndex(codePoints, classTypes, indicies, index, forbiddenBreaks) { 3458 if (indicies[index] === 0) { 3459 return BREAK_NOT_ALLOWED; 3460 } 3461 3462 var currentIndex = index - 1; 3463 if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) { 3464 return BREAK_NOT_ALLOWED; 3465 } 3466 3467 var beforeIndex = currentIndex - 1; 3468 var afterIndex = currentIndex + 1; 3469 var current = classTypes[currentIndex]; 3470 3471 // LB4 Always break after hard line breaks. 3472 // LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks. 3473 var before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0; 3474 var next = classTypes[afterIndex]; 3475 3476 if (current === CR && next === LF) { 3477 return BREAK_NOT_ALLOWED; 3478 } 3479 3480 if (HARD_LINE_BREAKS.indexOf(current) !== -1) { 3481 return BREAK_MANDATORY; 3482 } 3483 3484 // LB6 Do not break before hard line breaks. 3485 if (HARD_LINE_BREAKS.indexOf(next) !== -1) { 3486 return BREAK_NOT_ALLOWED; 3487 } 3488
3489 // LB7 Do not break before spaces or zero width space. 3490 if (SPACE.indexOf(next) !== -1) { 3491 return BREAK_NOT_ALLOWED; 3492 } 3493 3494 // LB8 Break before any character following a zero-width space, even if one or more spaces intervene. 3495 if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) { 3496 return BREAK_ALLOWED; 3497 } 3498 3499 // LB8a Do not break between a zero width joiner and an ideograph, emoji base or emoji modifier. 3500 if (UnicodeTrie.get(codePoints[currentIndex]) === ZWJ && (next === ID || next === EB || next === EM)) { 3501 return BREAK_NOT_ALLOWED; 3502 } 3503 3504 // LB11 Do not break before or after Word joiner and related characters. 3505 if (current === WJ || next === WJ) { 3506 return BREAK_NOT_ALLOWED; 3507 } 3508 3509 // LB12 Do not break after NBSP and related characters. 3510 if (current === GL) { 3511 return BREAK_NOT_ALLOWED; 3512 } 3513 3514 // LB12a Do not break before NBSP and related characters, except after spaces and hyphens. 3515 if ([SP, BA, HY].indexOf(current) === -1 && next === GL) { 3516 return BREAK_NOT_ALLOWED; 3517 } 3518 3519 // LB13 Do not break before â]â or â!â or â;â or â/â, even after spaces. 3520 if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) { 3521 return BREAK_NOT_ALLOWED; 3522 } 3523 3524 // LB14 Do not break after â[â, even after spaces. 3525 if (previousNonSpaceClassType(currentIndex, classTypes) === OP) { 3526 return BREAK_NOT_ALLOWED; 3527 } 3528 3529 // LB15 Do not break within ââ[â, even with intervening spaces. 3530 if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) { 3531 return BREAK_NOT_ALLOWED; 3532 } 3533 3534 // LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces. 3535 if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) { 3536 return BREAK_NOT_ALLOWED; 3537 } 3538 3539 // LB17 Do not break within ââââ, even with intervening spaces. 3540 if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) { 3541 return BREAK_NOT_ALLOWED; 3542 } 3543 3544 // LB18 Break after spaces. 3545 if (current === SP) { 3546 return BREAK_ALLOWED; 3547 } 3548 3549 // LB19 Do not break before or after quotation marks, such as â â â. 3550 if (current === QU || next === QU) { 3551 return BREAK_NOT_ALLOWED; 3552 } 3553 3554 // LB20 Break before and after unresolved CB. 3555 if (next === CB || current === CB) { 3556 return BREAK_ALLOWED; 3557 } 3558 3559 // LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents. 3560 if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) { 3561 return BREAK_NOT_ALLOWED; 3562 } 3563 3564 // LB21a Don't break after Hebrew + Hyphen. 3565 if (before === HL && HYPHEN.indexOf(current) !== -1) { 3566 return BREAK_NOT_ALLOWED; 3567 } 3568 3569 // LB21b Donât break between Solidus and Hebrew letters. 3570 if (current === SY && next === HL) { 3571 return BREAK_NOT_ALLOWED; 3572 } 3573 3574 // LB22 Do not break between two ellipses, or between letters, numbers or exclamations and ellipsis. 3575 if (next === IN && ALPHABETICS.concat(IN, EX, NU, ID, EB, EM).indexOf(current) !== -1) { 3576 return BREAK_NOT_ALLOWED; 3577 } 3578 3579 // LB23 Do not break between digits and letters. 3580 if (ALPHABETICS.indexOf(next) !== -1 && current === NU || ALPHABETICS.indexOf(current) !== -1 && next === NU) { 3581 return BREAK_NOT_ALLOWED; 3582 } 3583 3584 // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes. 3585 if (current === PR && [ID, EB, EM].indexOf(next) !== -1 || [ID, EB, EM].indexOf(current) !== -1 && next === PO) { 3586 return BREAK_NOT_ALLOWED; 3587 } 3588 3589 // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix. 3590 if (ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1 || PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) { 3591 return BREAK_NOT_ALLOWED; 3592 } 3593 3594 // LB25 Do not break between the following pairs of classes relevant to numbers: 3595 if ( 3596 // (PR | PO) Ã ( OP | HY )? NU 3597 [PR, PO].indexOf(current) !== -1 && (next === NU || [OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU) || 3598 // ( OP | HY ) Ã NU 3599 [OP, HY].indexOf(current) !== -1 && next === NU || 3600 // NU Ã (NU | SY | IS) 3601 current === NU && [NU, SY, IS].indexOf(next) !== -1) { 3602 return BREAK_NOT_ALLOWED; 3603 } 3604 3605 // NU (NU | SY | IS)* Ã (NU | SY | IS | CL | CP) 3606 if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) { 3607 var prevIndex = currentIndex; 3608 while (prevIndex >= 0) { 3609 var type = classTypes[prevIndex]; 3610 if (type === NU) { 3611 return BREAK_NOT_ALLOWED; 3612 } else if ([SY, IS].indexOf(type) !== -1) { 3613 prevIndex--; 3614 } else { 3615 break; 3616 } 3617 } 3618 } 3619 3620 // NU (NU | SY | IS)* (CL | CP)? Ã (PO | PR)) 3621 if ([PR, PO].indexOf(next) !== -1) { 3622 var _prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex; 3623 while (_prevIndex >= 0) { 3624 var _type = classTypes[_prevIndex]; 3625 if (_type === NU) { 3626 return BREAK_NOT_ALLOWED; 3627 } else if ([SY, IS].indexOf(_type) !== -1) { 3628 _prevIndex--; 3629 } else { 3630 break; 3631 } 3632 } 3633 } 3634 3635 // LB26 Do not break a Korean syllable. 3636 if (JL === current && [JL, JV, H2, H3].indexOf(next) !== -1 || [JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1 || [JT, H3].indexOf(current) !== -1 && next === JT) { 3637 return BREAK_NOT_ALLOWED; 3638 } 3639 3640 // LB27 Treat a Korean Syllable Block the same as ID. 3641 if (KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1 || KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR) { 3642 return BREAK_NOT_ALLOWED; 3643 } 3644 3645 // LB28 Do not break between alphabetics (âatâ). 3646 if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) { 3647 return BREAK_NOT_ALLOWED; 3648 } 3649 3650 // LB29 Do not break between numeric punctuation and alphabetics (âe.g.â). 3651 if (current === IS && ALPHABETICS.indexOf(next) !== -1) { 3652 return BREAK_NOT_ALLOWED; 3653 } 3654
3655 // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses. 3656 if (ALPHABETICS.concat(NU).indexOf(current) !== -1 && next === OP || ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP) { 3657 return BREAK_NOT_ALLOWED; 3658 } 3659 3660 // LB30a Break between two regional indicator symbols if and only if there are an even number of regional 3661 // indicators preceding the position of the break. 3662 if (current === RI && next === RI) { 3663 var i = indicies[currentIndex]; 3664 var count = 1; 3665 while (i > 0) { 3666 i--; 3667 if (classTypes[i] === RI) { 3668 count++; 3669 } else { 3670 break; 3671 } 3672 } 3673 if (count % 2 !== 0) { 3674 return BREAK_NOT_ALLOWED; 3675 } 3676 } 3677 3678 // LB30b Do not break between an emoji base and an emoji modifier. 3679 if (current === EB && next === EM) { 3680 return BREAK_NOT_ALLOWED; 3681 } 3682 3683 return BREAK_ALLOWED; 3684}; 3685 3686var lineBreakAtIndex = exports.lineBreakAtIndex = function lineBreakAtIndex(codePoints, index) { 3687 // LB2 Never break at the start of text. 3688 if (index === 0) { 3689 return BREAK_NOT_ALLOWED; 3690 } 3691 3692 // LB3 Always break at the end of text. 3693 if (index >= codePoints.length) { 3694 return BREAK_MANDATORY; 3695 } 3696 3697 var _codePointsToCharacte = codePointsToCharacterClasses(codePoints), 3698 _codePointsToCharacte2 = _slicedToArray(_codePointsToCharacte, 2), 3699 indicies = _codePointsToCharacte2[0], 3700 classTypes = _codePointsToCharacte2[1]; 3701 3702 return _lineBreakAtIndex(codePoints, classTypes, indicies, index); 3703}; 3704 3705var cssFormattedClasses = function cssFormattedClasses(codePoints, options) { 3706 if (!options) { 3707 options = { lineBreak: 'normal', wordBreak: 'normal' }; 3708 } 3709 3710 var _codePointsToCharacte3 = codePointsToCharacterClasses(codePoints, options.lineBreak), 3711 _codePointsToCharacte4 = _slicedToArray(_codePointsToCharacte3, 3), 3712 indicies = _codePointsToCharacte4[0], 3713 classTypes = _codePointsToCharacte4[1], 3714 isLetterNumber = _codePointsToCharacte4[2]; 3715 3716 if (options.wordBreak === 'break-all' || options.wordBreak === 'break-word') { 3717 classTypes = classTypes.map(function (type) { 3718 return [NU, AL, SA].indexOf(type) !== -1 ? ID : type; 3719 }); 3720 } 3721 3722 var forbiddenBreakpoints = options.wordBreak === 'keep-all' ? isLetterNumber.map(function (isLetterNumber, i) { 3723 return isLetterNumber && codePoints[i] >= 0x4e00 && codePoints[i] <= 0x9fff; 3724 }) : null; 3725 3726 return [indicies, classTypes, forbiddenBreakpoints]; 3727}; 3728 3729var inlineBreakOpportunities = exports.inlineBreakOpportunities = function inlineBreakOpportunities(str, options) { 3730 var codePoints = (0, Util$2.toCodePoints)(str); 3731 var output = BREAK_NOT_ALLOWED; 3732 3733 var _cssFormattedClasses = cssFormattedClasses(codePoints, options), 3734 _cssFormattedClasses2 = _slicedToArray(_cssFormattedClasses, 3), 3735 indicies = _cssFormattedClasses2[0], 3736 classTypes = _cssFormattedClasses2[1], 3737 forbiddenBreakpoints = _cssFormattedClasses2[2]; 3738 3739 codePoints.forEach(function (codePoint, i) { 3740 output += (0, Util$2.fromCodePoint)(codePoint) + (i >= codePoints.length - 1 ? BREAK_MANDATORY : _lineBreakAtIndex(codePoints, classTypes, indicies, i + 1, forbiddenBreakpoints)); 3741 }); 3742 3743 return output; 3744}; 3745 3746var Break = function () { 3747 function Break(codePoints, lineBreak, start, end) { 3748 _classCallCheck(this, Break); 3749 3750 this._codePoints = codePoints; 3751 this.required = lineBreak === BREAK_MANDATORY; 3752 this.start = start; 3753 this.end = end; 3754 } 3755 3756 _createClass(Break, [{ 3757 key: 'slice', 3758 value: function slice() { 3759 return Util$2.fromCodePoint.apply(undefined, _toConsumableArray(this._codePoints.slice(this.start, this.end))); 3760 } 3761 }]); 3762 3763 return Break; 3764}(); 3765 3766var LineBreaker = exports.LineBreaker = function LineBreaker(str, options) { 3767 var codePoints = (0, Util$2.toCodePoints)(str); 3768 3769 var _cssFormattedClasses3 = cssFormattedClasses(codePoints, options), 3770 _cssFormattedClasses4 = _slicedToArray(_cssFormattedClasses3, 3), 3771 indicies = _cssFormattedClasses4[0],
3772 classTypes = _cssFormattedClasses4[1], 3773 forbiddenBreakpoints = _cssFormattedClasses4[2]; 3774 3775 var length = codePoints.length; 3776 var lastEnd = 0; 3777 var nextIndex = 0; 3778 3779 return { 3780 next: function next() { 3781 if (nextIndex >= length) { 3782 return { done: true }; 3783 } 3784 var lineBreak = BREAK_NOT_ALLOWED; 3785 while (nextIndex < length && (lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) === BREAK_NOT_ALLOWED) {} 3786 3787 if (lineBreak !== BREAK_NOT_ALLOWED || nextIndex === length) { 3788 var value = new Break(codePoints, lineBreak, lastEnd, nextIndex); 3789 lastEnd = nextIndex; 3790 return { value: value, done: false }; 3791 } 3792 3793 return { done: true }; 3794 } 3795 }; 3796}; 3797}); 3798 3799unwrapExports(LineBreak); 3800var LineBreak_1 = LineBreak.LineBreaker; 3801var LineBreak_2 = LineBreak.inlineBreakOpportunities; 3802var LineBreak_3 = LineBreak.lineBreakAtIndex; 3803var LineBreak_4 = LineBreak.codePointsToCharacterClasses; 3804var LineBreak_5 = LineBreak.UnicodeTrie; 3805var LineBreak_6 = LineBreak.BREAK_ALLOWED; 3806var LineBreak_7 = LineBreak.BREAK_NOT_ALLOWED; 3807var LineBreak_8 = LineBreak.BREAK_MANDATORY; 3808var LineBreak_9 = LineBreak.classes; 3809var LineBreak_10 = LineBreak.LETTER_NUMBER_MODIFIER; 3810 3811var dist = createCommonjsModule(function (module, exports) { 3812Object.defineProperty(exports, "__esModule", { 3813 value: true 3814}); 3815 3816 3817 3818Object.defineProperty(exports, 'toCodePoints', { 3819 enumerable: true, 3820 get: function get() { 3821 return Util$2.toCodePoints; 3822 } 3823}); 3824Object.defineProperty(exports, 'fromCodePoint', { 3825 enumerable: true, 3826 get: function get() { 3827 return Util$2.fromCodePoint; 3828 } 3829}); 3830 3831 3832 3833Object.defineProperty(exports, 'LineBreaker', { 3834 enumerable: true, 3835 get: function get() { 3836 return LineBreak.LineBreaker; 3837 } 3838}); 3839}); 3840 3841unwrapExports(dist); 3842 3843var Unicode = createCommonjsModule(function (module, exports) { 3844Object.defineProperty(exports, "__esModule", { 3845 value: true 3846}); 3847exports.breakWords = exports.fromCodePoint = exports.toCodePoints = undefined; 3848 3849 3850 3851Object.defineProperty(exports, 'toCodePoints', { 3852 enumerable: true, 3853 get: function get() { 3854 return dist.toCodePoints; 3855 } 3856}); 3857Object.defineProperty(exports, 'fromCodePoint', { 3858 enumerable: true, 3859 get: function get() { 3860 return dist.fromCodePoint; 3861 } 3862}); 3863 3864 3865 3866var _NodeContainer2 = _interopRequireDefault(NodeContainer_1); 3867 3868 3869 3870function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 3871 3872var breakWords = exports.breakWords = function breakWords(str, parent) { 3873 var breaker = (0, dist.LineBreaker)(str, { 3874 lineBreak: parent.style.lineBreak, 3875 wordBreak: parent.style.overflowWrap === overflowWrap.OVERFLOW_WRAP.BREAK_WORD ? 'break-word' : parent.style.wordBreak 3876 }); 3877 3878 var words = []; 3879 var bk = void 0; 3880 3881 while (!(bk = breaker.next()).done) { 3882 words.push(bk.value.slice()); 3883 } 3884 3885 return words; 3886}; 3887}); 3888 3889unwrapExports(Unicode); 3890var Unicode_1 = Unicode.breakWords; 3891var Unicode_2 = Unicode.fromCodePoint; 3892var Unicode_3 = Unicode.toCodePoints; 3893 3894var TextBounds_1 = createCommonjsModule(function (module, exports) { 3895Object.defineProperty(exports, "__esModule", { 3896 value: true 3897}); 3898exports.parseTextBounds = exports.TextBounds = undefined; 3899 3900 3901 3902 3903 3904 3905 3906var _Feature2 = _interopRequireDefault(Feature); 3907 3908 3909 3910function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 3911 3912function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 3913 3914var TextBounds = exports.TextBounds = function TextBounds(text, bounds) { 3915 _classCallCheck(this, TextBounds); 3916 3917 this.text = text; 3918 this.bounds = bounds; 3919}; 3920 3921var parseTextBounds = exports.parseTextBounds = function parseTextBounds(value, parent, node) { 3922 var letterRendering = parent.style.letterSpacing !== 0; 3923 var textList = letterRendering ? (0, Unicode.toCodePoints)(value).map(function (i) { 3924 return (0, Unicode.fromCodePoint)(i); 3925 }) : (0, Unicode.breakWords)(value, parent); 3926 var length = textList.length; 3927 var defaultView = node.parentNode ? node.parentNode.ownerDocument.defaultView : null; 3928 var scrollX = defaultView ? defaultView.pageXOffset : 0; 3929 var scrollY = defaultView ? defaultView.pageYOffset : 0; 3930 var textBounds = []; 3931 var offset = 0; 3932 for (var i = 0; i < length; i++) { 3933 var text = textList[i]; 3934 if (parent.style.textDecoration !== textDecoration.TEXT_DECORATION.NONE || text.trim().length > 0) { 3935 if (_Feature2.default.SUPPORT_RANGE_BOUNDS) { 3936 textBounds.push(new TextBounds(text, getRangeBounds(node, offset, text.length, scrollX, scrollY))); 3937 } else { 3938 var replacementNode = node.splitText(text.length); 3939 textBounds.push(new TextBounds(text, getWrapperBounds(node, scrollX, scrollY))); 3940 node = replacementNode; 3941 } 3942 } else if (!_Feature2.default.SUPPORT_RANGE_BOUNDS) { 3943 node = node.splitText(text.length); 3944 } 3945 offset += text.length; 3946 } 3947 return textBounds; 3948}; 3949 3950var getWrapperBounds = function getWrapperBounds(node, scrollX, scrollY) { 3951 var wrapper = node.ownerDocument.createElement('html2canvaswrapper'); 3952 wrapper.appendChild(node.cloneNode(true)); 3953 var parentNode = node.parentNode; 3954 if (parentNode) { 3955 parentNode.replaceChild(wrapper, node); 3956 var bounds = (0, Bounds_1.parseBounds)(wrapper, scrollX, scrollY); 3957 if (wrapper.firstChild) { 3958 parentNode.replaceChild(wrapper.firstChild, wrapper); 3959 } 3960 return bounds; 3961 } 3962 return new Bounds_1.Bounds(0, 0, 0, 0); 3963}; 3964 3965var getRangeBounds = function getRangeBounds(node, offset, length, scrollX, scrollY) { 3966 var range = node.ownerDocument.createRange(); 3967 range.setStart(node, offset); 3968 range.setEnd(node, offset + length); 3969 return Bounds_1.Bounds.fromClientRect(range.getBoundingClientRect(), scrollX, scrollY); 3970}; 3971}); 3972 3973unwrapExports(TextBounds_1); 3974var TextBounds_2 = TextBounds_1.parseTextBounds; 3975var TextBounds_3 = TextBounds_1.TextBounds; 3976 3977var TextContainer_1 = createCommonjsModule(function (module, exports
3977) { 3978Object.defineProperty(exports, "__esModule", { 3979 value: true 3980}); 3981 3982var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); 3983 3984 3985 3986 3987 3988function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 3989 3990var TextContainer = function () { 3991 function TextContainer(text, parent, bounds) { 3992 _classCallCheck(this, TextContainer); 3993 3994 this.text = text; 3995 this.parent = parent; 3996 this.bounds = bounds; 3997 } 3998 3999 _createClass(TextContainer, null, [{ 4000 key: 'fromTextNode', 4001 value: function fromTextNode(node, parent) { 4002 var text = transform(node.data, parent.style.textTransform); 4003 return new TextContainer(text, parent, (0, TextBounds_1.parseTextBounds)(text, parent, node)); 4004 } 4005 }]); 4006 4007 return TextContainer; 4008}(); 4009 4010exports.default = TextContainer; 4011 4012 4013var CAPITALIZE = /(^|\s|:|-|\(|\))([a-z])/g; 4014 4015var transform = function transform(text, _transform) { 4016 switch (_transform) { 4017 case textTransform.TEXT_TRANSFORM.LOWERCASE: 4018 return text.toLowerCase(); 4019 case textTransform.TEXT_TRANSFORM.CAPITALIZE: 4020 return text.replace(CAPITALIZE, capitalize); 4021 case textTransform.TEXT_TRANSFORM.UPPERCASE: 4022 return text.toUpperCase(); 4023 default: 4024 return text; 4025 } 4026}; 4027 4028function capitalize(m, p1, p2) { 4029 if (m.length > 0) { 4030 return p1 + p2.toUpperCase(); 4031 } 4032 4033 return m; 4034} 4035}); 4036 4037unwrapExports(TextContainer_1); 4038 4039var Circle_1 = createCommonjsModule(function (module, exports) { 4040Object.defineProperty(exports, "__esModule", { 4041 value: true 4042}); 4043 4044 4045 4046function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 4047 4048var Circle = function Circle(x, y, radius) { 4049 _classCallCheck(this, Circle); 4050 4051 this.type = Path.PATH.CIRCLE; 4052 this.x = x; 4053 this.y = y; 4054 this.radius = radius; 4055 4056}; 4057 4058exports.default = Circle; 4059}); 4060 4061unwrapExports(Circle_1); 4062 4063var Input = createCommonjsModule(function (module, exports) { 4064Object.defineProperty(exports, "__esModule", { 4065 value: true 4066}); 4067exports.reformatInputBounds = exports.inlineSelectElement = exports.inlineTextAreaElement = exports.inlineInputElement = exports.getInputBorderRadius = exports.INPUT_BACKGROUND = exp
4067orts.INPUT_BORDERS = exports.INPUT_COLOR = undefined; 4068 4069 4070 4071var _TextContainer2 = _interopRequireDefault(TextContainer_1); 4072 4073 4074 4075 4076 4077 4078 4079var _Circle2 = _interopRequireDefault(Circle_1); 4080 4081 4082 4083var _Vector2 = _interopRequireDefault(Vector_1); 4084 4085 4086 4087var _Color2 = _interopRequireDefault(Color_1); 4088 4089 4090 4091var _Length2 = _interopRequireDefault(Length_1); 4092 4093 4094 4095 4096 4097 4098 4099function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 4100 4101var INPUT_COLOR = exports.INPUT_COLOR = new _Color2.default([42, 42, 42]); 4102var INPUT_BORDER_COLOR = new _Color2.default([165, 165, 165]); 4103var INPUT_BACKGROUND_COLOR = new _Color2.default([222, 222, 222]); 4104var INPUT_BORDER = { 4105 borderWidth: 1, 4106 borderColor: INPUT_BORDER_COLOR, 4107 borderStyle: border.BORDER_STYLE.SOLID 4108}; 4109var INPUT_BORDERS = exports.INPUT_BORDERS = [INPUT_BORDER, INPUT_BORDER, INPUT_BORDER, INPUT_BORDER]; 4110var INPUT_BACKGROUND = exports.INPUT_BACKGROUND = { 4111 backgroundColor: INPUT_BACKGROUND_COLOR, 4112 backgroundImage: [], 4113 backgroundClip: background.BACKGROUND_CLIP.PADDING_BOX, 4114 backgroundOrigin: background.BACKGROUND_ORIGIN.PADDING_BOX 4115}; 4116 4117var RADIO_BORDER_RADIUS = new _Length2.default('50%'); 4118var RADIO_BORDER_RADIUS_TUPLE = [RADIO_BORDER_RADIUS, RADIO_BORDER_RADIUS]; 4119var INPUT_RADIO_BORDER_RADIUS = [RADIO_BORDER_RADIUS_TUPLE, RADIO_BORDER_RADIUS_TUPLE, RADIO_BORDER_RADIUS_TUPLE, RADIO_BORDER_RADIUS_TUPLE]; 4120 4121var CHECKBOX_BORDER_RADIUS = new _Length2.default('3px'); 4122var CHECKBOX_BORDER_RADIUS_TUPLE = [CHECKBOX_BORDER_RADIUS, CHECKBOX_BORDER_RADIUS]; 4123var INPUT_CHECKBOX_BORDER_RADIUS = [CHECKBOX_BORDER_RADIUS_TUPLE, CHECKBOX_BORDER_RADIUS_TUPLE, CHECKBOX_BORDER_RADIUS_TUPLE, CHECKBOX_BORDER_RADIUS_TUPLE]; 4124 4125var getInputBorderRadius = exports.getInputBorderRadius = function getInputBorderRadius(node) { 4126 return node.type === 'radio' ? INPUT_RADIO_BORDER_RADIUS : INPUT_CHECKBOX_BORDER_RADIUS; 4127}; 4128 4129var inlineInputElement = exports.inlineInputElement = function inlineInputElement(node, container) { 4130 if (node.type === 'radio' || node.type === 'checkbox') { 4131 if (node.checked) { 4132 var size = Math.min(container.bounds.width, container.bounds.height); 4133 container.childNodes.push(node.type === 'checkbox' ? [new _Vector2.default(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79), new _Vector2.default(container.bounds.left + size * 0.16, container.bounds.top + size * 0.5549), new _Vector2.default(container.bounds.left + size * 0.27347, container.bounds.top + size * 0.44071), new _Vector2.default(container.bounds.left + size * 0.39694, container.bounds.top + size * 0.5649), new _Vector2.default(container.bounds.left + size * 0.72983, container.bounds.top + size * 0.23), new _Vector2.default(container.bounds.left + size * 0.84, container.bounds.top + size * 0.34085), new _Vector2.default(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79)] : new _Circle2.default(container.bounds.left + size / 4, container.bounds.top + size / 4, size / 4)); 4134 } 4135 } else { 4136 inlineFormElement(getInputValue(node), node, container, false); 4137 } 4138}; 4139 4140var inlineTextAreaElement = exports.inlineTextAreaElement = function inlineTextAreaElement(node, container) { 4141 inlineFormElement(node.value, node, container, true); 4142}; 4143 4144var inlineSelectElement = exports.inlineSelectElement = function inlineSelectElement(node, container) { 4145 var option = node.options[node.selectedIndex || 0]; 4146 inlineFormElement(option ? option.text || '' : '', node, container, false); 4147}; 4148 4149var reformatInputBounds = exports.reformatInputBounds = function reformatInputBounds(bounds) { 4150 if (bounds.width > bounds.height) { 4151 bounds.left += (bounds.width - bounds.height) / 2; 4152 bounds.width = bounds.height; 4153 } else if (bounds.width < bounds.height) { 4154 bounds.top += (bounds.height - bounds.width) / 2; 4155 bounds.height = bounds.width; 4156 } 4157 return bounds; 4158}; 4159 4160var inlineFormElement = function inlineFormElement(value, node, container, allowLinebreak) { 4161 var body = node.ownerDocument.body; 4162 if (value.length > 0 && body) { 4163 var wrapper = node.ownerDocument.createElement('html2canvaswrapper'); 4164 (0, Util.copyCSSStyles)(node.ownerDocument.defaultView.getComputedStyle(node, null), wrapper); 4165 wrapper.style.position = 'absolute'; 4166 wrapper.style.left = container.bounds.left + 'px'; 4167 wrapper.style.top = container.bounds.top + 'px'; 4168 if (!allowLinebreak) { 4169 wrapper.style.whiteSpace = 'nowrap'; 4170 } 4171 var text = node.ownerDocument.createTextNode(value); 4172 wrapper.appendChild(text); 4173 body.appendChild(wrapper); 4174 container.childNodes.push(_TextContainer2.default.fromTextNode(text, container));
4175 body.removeChild(wrapper); 4176 } 4177}; 4178 4179var getInputValue = function getInputValue(node) { 4180 var value = node.type === 'password' ? new Array(node.value.length + 1).join('\u2022') : node.value; 4181 4182 return value.length === 0 ? node.placeholder || '' : value; 4183}; 4184}); 4185 4186unwrapExports(Input); 4187var Input_1 = Input.reformatInputBounds; 4188var Input_2 = Input.inlineSelectElement; 4189var Input_3 = Input.inlineTextAreaElement; 4190var Input_4 = Input.inlineInputElement; 4191var Input_5 = Input.getInputBorderRadius; 4192var Input_6 = Input.INPUT_BACKGROUND; 4193var Input_7 = Input.INPUT_BORDERS; 4194var Input_8 = Input.INPUT_COLOR; 4195 4196var ListItem = createCommonjsModule(function (module, exports) { 4197Object.defineProperty(exports, "__esModule", { 4198 value: true 4199}); 4200exports.createCounterText = exports.inlineListItemElement = exports.getListOwner = undefined; 4201 4202 4203 4204 4205 4206var _NodeContainer2 = _interopRequireDefault(NodeContainer_1); 4207 4208 4209 4210var _TextContainer2 = _interopRequireDefault(TextContainer_1); 4211 4212 4213 4214 4215 4216function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 4217 4218// Margin between the enumeration and the list item content 4219var MARGIN_RIGHT = 7; 4220 4221var ancestorTypes = ['OL', 'UL', 'MENU']; 4222 4223var getListOwner = exports.getListOwner = function getListOwner(container) { 4224 var parent = container.parent; 4225 if (!parent) { 4226 return null; 4227 } 4228 4229 do { 4230 var isAncestor = ancestorTypes.indexOf(parent.tagName) !== -1; 4231 if (isAncestor) { 4232 return parent; 4233 } 4234 parent = parent.parent; 4235 } while (parent); 4236 4237 return container.parent; 4238}; 4239 4240var inlineListItemElement = exports.inlineListItemElement = function inlineListItemElement(node, container, resourceLoader) { 4241 var listStyle$$1 = container.style.listStyle; 4242 4243 if (!listStyle$$1) { 4244 return; 4245 } 4246 4247 var style = node.ownerDocument.defaultView.getComputedStyle(node, null); 4248 var wrapper = node.ownerDocument.createElement('html2canvaswrapper'); 4249 (0, Util.copyCSSStyles)(style, wrapper); 4250 4251 wrapper.style.position = 'absolute'; 4252 wrapper.style.bottom = 'auto'; 4253 wrapper.style.display = 'block'; 4254 wrapper.style.letterSpacing = 'normal'; 4255 4256 switch (listStyle$$1.listStylePosition) { 4257 case listStyle.LIST_STYLE_POSITION.OUTSIDE: 4258 wrapper.style.left = 'auto'; 4259 wrapper.style.right = node.ownerDocument.defaultView.innerWidth - container.bounds.left - container.style.margin[1].getAbsoluteValue(container.bounds.width) + MARGIN_RIGHT + 'px'; 4260 wrapper.style.textAlign = 'right'; 4261 break; 4262 case listStyle.LIST_STYLE_POSITION.INSIDE: 4263 wrapper.style.left = container.bounds.left - container.style.margin[3].getAbsoluteValue(container.bounds.width) + 'px'; 4264 wrapper.style.right = 'auto'; 4265 wrapper.style.textAlign = 'left'; 4266 break; 4267 } 4268 4269 var text = void 0; 4270 var MARGIN_TOP = container.style.margin[0].getAbsoluteValue(container.bounds.width); 4271 var styleImage = listStyle$$1.listStyleImage; 4272 if (styleImage) { 4273 if (styleImage.method === 'url') { 4274 var image = node.ownerDocument.createElement('img'); 4275 image.src = styleImage.args[0]; 4276 wrapper.style.top = container.bounds.top - MARGIN_TOP + 'px'; 4277 wrapper.style.width = 'auto'; 4278 wrapper.style.height = 'auto'; 4279 wrapper.appendChild(image); 4280 } else { 4281 var size = parseFloat(container.style.font.fontSize) * 0.5; 4282 wrapper.style.top = container.bounds.top - MARGIN_TOP + container.bounds.height - 1.5 * size + 'px'; 4283 wrapper.style.width = size + 'px'; 4284 wrapper.style.height = size + 'px'; 4285 wrapper.style.backgroundImage = style.listStyleImage; 4286 } 4287 } else if (typeof container.listIndex === 'number') { 4288 text = node.ownerDocument.createTextNode(createCounterText(container.listIndex, listStyle$$1.listStyleType, true)); 4289 wrapper.appendChild(text); 4290 wrapper.style.top = container.bounds.top - MARGIN_TOP + 'px'; 4291 } 4292 4293 // $FlowFixMe 4294 var body = node.ownerDocument.body; 4295 body.appendChild(wrapper); 4296 4297 if (text) { 4298 container.childNodes.push(_TextContainer2.default.fromTextNode(text, container));
4299 body.removeChild(wrapper); 4300 } else { 4301 // $FlowFixMe 4302 container.childNodes.push(new _NodeContainer2.default(wrapper, container, resourceLoader, 0)); 4303 } 4304}; 4305 4306var ROMAN_UPPER = { 4307 integers: [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1], 4308 values: ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I'] 4309}; 4310 4311var ARMENIAN = { 4312 integers: [9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1], 4313 values: ['Õ', 'Õ', 'Õ', 'Õ', 'Õ', 'Õ', 'Õ', 'Õ', 'Õ', 'Õ', 'Õ', 'Õ', 'Õ', 'Õ', 'Õ', 'Õ ', 'Õ', 'Õ', 'Õ', 'Õ', 'Õ', 'Ô¿', 'Ô¾', 'Ô½', 'Ô¼', 'Ô»', 'Ôº', 'Ô¹', 'Ô¸', 'Ô·', 'Ô¶', 'Ôµ', 'Ô´', 'Ô³', 'Ô²', 'Ô±'] 4314}; 4315 4316var HEBREW = { 4317 integers: [10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 19, 18, 17, 16, 15, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1], 4318 values: ['×׳', '×׳', '×׳', '×׳', '×׳', '×׳', '×׳', '×׳', '×׳', '×׳', 'ת', 'ש', 'ר', '×§', 'צ', 'פ', '×¢', 'ס', '× ', '×', '×', '×', '××', '××', '××', '××', '××', '×', '×', '×', '×', '×', '×', '×', '×', '×', '×'] 4319}; 4320 4321var GEORGIAN = { 4322 integers: [10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1], 4323 values: ['áµ', 'á°', 'á¯', 'á´', 'á®', 'á', 'á¬', 'á«', 'áª', 'á©', 'á¨', 'á§', 'á¦', 'á¥', 'á¤', 'á³', 'á¢', 'á¡', 'á ', 'á', 'á', 'á', 'á²', 'á', 'á', 'á', 'á', 'á', 'á', 'á±', 'á', 'á', 'á', 'á', 'á', 'á', 'á'] 4324}; 4325 4326var createAdditiveCounter = function createAdditiveCounter(value, min, max, symbols, fallback, suffix) { 4327 if (value < min || value > max) { 4328 return createCounterText(value, fallback, suffix.length > 0); 4329 } 4330 4331 return symbols.integers.reduce(function (string, integer, index) { 4332 while (value >= integer) { 4333 value -= integer; 4334 string += symbols.values[index]; 4335 } 4336 return string; 4337 }, '') + suffix; 4338}; 4339 4340var createCounterStyleWithSymbolResolver = function createCounterStyleWithSymbolResolver(value, codePointRangeLength, isNumeric, resolver) { 4341 var string = ''; 4342 4343 do { 4344 if (!isNumeric) { 4345 value--; 4346 } 4347 string = resolver(value) + string; 4348 value /= codePointRangeLength; 4349 } while (value * codePointRangeLength >= codePointRangeLength); 4350 4351 return string; 4352}; 4353 4354var createCounterStyleFromRange = function createCounterStyleFromRange(value, codePointRangeStart, codePointRangeEnd, isNumeric, suffix) { 4355 var codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1; 4356 4357 return (value < 0 ? '-' : '') + (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, function (codePoint) { 4358 return (0, Unicode.fromCodePoint)(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart); 4359 }) + suffix); 4360}; 4361 4362var createCounterStyleFromSymbols = function createCounterStyleFromSymbols(value, symbols) { 4363 var suffix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '. '; 4364 4365 var codePointRangeLength = symbols.length; 4366 return createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, false, function (codePoint) { 4367 return symbols[Math.floor(codePoint % codePointRangeLength)]; 4368 }) + suffix; 4369}; 4370 4371var CJK_ZEROS = 1 << 0; 4372var CJK_TEN_COEFFICIENTS = 1 << 1; 4373var CJK_TEN_HIGH_COEFFICIENTS = 1 << 2; 4374var CJK_HUNDRED_COEFFICIENTS = 1 << 3; 4375 4376var createCJKCounter = function createCJKCounter(value, numbers, multipliers, negativeSign, suffix, flags) { 4377 if (value < -9999 || value > 9999) { 4378 return createCounterText(value, listStyle.LIST_STYLE_TYPE.CJK_DECIMAL, suffix.length > 0); 4379 } 4380 var tmp = Math.abs(value); 4381 var string = suffix; 4382 4383 if (tmp === 0) {
4384 return numbers[0] + string; 4385 } 4386 4387 for (var digit = 0; tmp > 0 && digit <= 4; digit++) { 4388 var coefficient = tmp % 10; 4389 4390 if (coefficient === 0 && (0, Util.contains)(flags, CJK_ZEROS) && string !== '') { 4391 string = numbers[coefficient] + string; 4392 } else if (coefficient > 1 || coefficient === 1 && digit === 0 || coefficient === 1 && digit === 1 && (0, Util.contains)(flags, CJK_TEN_COEFFICIENTS) || coefficient === 1 && digit === 1 && (0, Util.contains)(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100 || coefficient === 1 && digit > 1 && (0, Util.contains)(flags, CJK_HUNDRED_COEFFICIENTS)) { 4393 string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : '') + string; 4394 } else if (coefficient === 1 && digit > 0) { 4395 string = multipliers[digit - 1] + string; 4396 } 4397 tmp = Math.floor(tmp / 10); 4398 } 4399 4400 return (value < 0 ? negativeSign : '') + string; 4401}; 4402 4403var CHINESE_INFORMAL_MULTIPLIERS = 'åç¾åè¬'; 4404var CHINESE_FORMAL_MULTIPLIERS = 'æ¾ä½°ä»è¬'; 4405var JAPANESE_NEGATIVE = 'ãã¤ãã¹'; 4406var KOREAN_NEGATIVE = 'ë§ì´ëì¤ '; 4407 4408var createCounterText = exports.createCounterText = function createCounterText(value, type, appendSuffix) { 4409 var defaultSuffix = appendSuffix ? '. ' : ''; 4410 var cjkSuffix = appendSuffix ? 'ã' : ''; 4411 var koreanSuffix = appendSuffix ? ', ' : ''; 4412 switch (type) { 4413 case listStyle.LIST_STYLE_TYPE.DISC: 4414 return 'â¢'; 4415 case listStyle.LIST_STYLE_TYPE.CIRCLE: 4416 return 'â¦'; 4417 case listStyle.LIST_STYLE_TYPE.SQUARE: 4418 return 'â¾'; 4419 case listStyle.LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO: 4420 var string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix); 4421 return string.length < 4 ? '0' + string : string; 4422 case listStyle.LIST_STYLE_TYPE.CJK_DECIMAL: 4423 return createCounterStyleFromSymbols(value, 'ãä¸äºä¸åäºå ä¸å «ä¹', cjkSuffix); 4424 case listStyle.LIST_STYLE_TYPE.LOWER_ROMAN: 4425 return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, listStyle.LIST_STYLE_TYPE.DECIMAL, defaultSuffix).toLowerCase(); 4426 case listStyle.LIST_STYLE_TYPE.UPPER_ROMAN: 4427 return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, listStyle.LIST_STYLE_TYPE.DECIMAL, defaultSuffix); 4428 case listStyle.LIST_STYLE_TYPE.LOWER_GREEK: 4429 return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix); 4430 case listStyle.LIST_STYLE_TYPE.LOWER_ALPHA: 4431 return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix); 4432 case listStyle.LIST_STYLE_TYPE.UPPER_ALPHA: 4433 return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix); 4434 case listStyle.LIST_STYLE_TYPE.ARABIC_INDIC: 4435 return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix); 4436 case listStyle.LIST_STYLE_TYPE.ARMENIAN: 4437 case listStyle.LIST_STYLE_TYPE.UPPER_ARMENIAN: 4438 return createAdditiveCounter(value, 1, 9999, ARMENIAN, listStyle.LIST_STYLE_TYPE.DECIMAL, defaultSuffix); 4439 case listStyle.LIST_STYLE_TYPE.LOWER_ARMENIAN: 4440 return createAdditiveCounter(value, 1, 9999, ARMENIAN, listStyle.LIST_STYLE_TYPE.DECIMAL, defaultSuffix).toLowerCase(); 4441 case listStyle.LIST_STYLE_TYPE.BENGALI: 4442 return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix); 4443 case listStyle.LIST_STYLE_TYPE.CAMBODIAN: 4444 case listStyle.LIST_STYLE_TYPE.KHMER: 4445 return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix); 4446 case listStyle.LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH: 4447 return createCounterStyleFromSymbols(value, 'åä¸å¯ å¯è¾°å·³åæªç³é æäº¥', cjkSuffix); 4448 case listStyle.LIST_STYLE_TYPE.CJK_HEAVENLY_STEM: 4449 return createCounterStyleFromSymbols(value, 'ç²ä¹ä¸ä¸æå·±åºè¾å£¬ç¸', cjkSuffix); 4450 case listStyle.LIST_STYLE_TYPE.CJK_IDEOGRAPHIC: 4451 case listStyle.LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL: 4452 return createCJKCounter(value, 'é¶ä¸äºä¸åäºå ä¸å «ä¹', CHINESE_INFORMAL_MULTIPLIERS, 'è² ', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS); 4453 case listStyle.LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL: 4454 return createCJKCounter(value, 'é¶å£¹è²³åèä¼é¸ææç', CHINESE_FORMAL_MULTIPLIERS, 'è² ', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS); 4455 case listStyle.LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL: 4456 return createCJKCounter(value, 'é¶ä¸äºä¸åäºå ä¸å «ä¹', CHINESE_INFORMAL_MULTIPLIERS, 'è´', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS); 4457 case listStyle.LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL: 4458 return createCJKCounter(value, 'é¶å£¹è´°åèä¼éææç', CHINESE_FORMAL_MULTIPLIERS, 'è´', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS); 4459 case listStyle.LIST_STYLE_TYPE.JAPANESE_INFORMAL: 4460 return createCJKCounter(value, 'ãä¸äºä¸åäºå ä¸å «ä¹', 'åç¾åä¸', JAPANESE_NEGATIVE, cjkSuffix, 0); 4461 case listStyle.LIST_STYLE_TYPE.JAPANESE_FORMAL: 4462 return createCJKCounter(value, 'é¶å£±å¼ååä¼å ä¸å «ä¹', 'æ¾ç¾åä¸', JAPANESE_NEGATIVE, cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS); 4463 case listStyle.LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL: 4464 return createCJKCounter(value, 'ìì¼ì´ì¼ì¬ì¤ì¡ì¹ í구', 'ìë°±ì²ë§', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS); 4465 case listStyle.LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL: 4466 return createCJKCounter(value, 'é¶ä¸äºä¸åäºå ä¸å «ä¹', 'åç¾åè¬', KOREAN_NEGATIVE, koreanSuffix, 0); 4467 case listStyle.LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL: 4468 return createCJKCounter(value, 'é¶å£¹è²³ååäºå ä¸å «ä¹', 'æ¾ç¾å', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS); 4469 case listStyle.LIST_STYLE_TYPE.DEVANAGARI: 4470 return createCounterStyleFromRange(value, 0x966, 0x96f, true, defaultSuffix); 4471 case listStyle.LIST_STYLE_TYPE.GEORGIAN: 4472 return createAdditiveCounter(value, 1, 19999, GEORGIAN, listStyle.LIST_STYLE_TYPE.DECIMAL, defaultSuffix); 4473 case listStyle.LIST_STYLE_TYPE.GUJARATI: 4474 return createCounterStyleFromRange(value, 0xae6, 0xaef, true, defaultSuffix); 4475 case listStyle.LIST_STYLE_TYPE.GURMUKHI: 4476 return createCounterStyleFromRange(value, 0xa66, 0xa6f, true, defaultSuffix); 4477 case listStyle.LIST_STYLE_TYPE.HEBREW: 4478 return createAdditiveCounter(value, 1, 10999, HEBREW, listStyle.LIST_STYLE_TYPE.DECIMAL, defaultSuffix); 4479 case listStyle.LIST_STYLE_TYPE.HIRAGANA: 4480 return createCounterStyleFromSymbols(value, 'ããããããããããããããããã¡ã¤ã¦ã¨ãªã«ã¬ãã®ã¯ã²ãµã¸ã»ã¾ã¿ãããããããããããããããã'); 4481 case listStyle.LIST_STYLE_TYPE.HIRAGANA_IROHA: 4482 return createCounterStyleFromSymbols(value, 'ããã¯ã«ã»ã¸ã¨ã¡ãã¬ããããããããã¤ããªããããã®ãããã¾ããµããã¦ãããããã¿ããã²ããã'); 4483 case listStyle.LIST_STYLE_TYPE.KANNADA: 4484 return createCounterStyleFromRange(value, 0xce6, 0xcef, true, defaultSuffix);
4485 case listStyle.LIST_STYLE_TYPE.KATAKANA: 4486 return createCounterStyleFromSymbols(value, 'ã¢ã¤ã¦ã¨ãªã«ãã¯ã±ã³ãµã·ã¹ã»ã½ã¿ããããããããããããããããã ã¡ã¢ã¤ã¦ã¨ã©ãªã«ã¬ãã¯ã°ã±ã²ã³', cjkSuffix); 4487 case listStyle.LIST_STYLE_TYPE.KATAKANA_IROHA: 4488 return createCounterStyleFromSymbols(value, 'ã¤ããããããããªãã«ã²ã¯ã«ã¨ã¿ã¬ã½ãããã©ã ã¦ã°ããªã¯ã¤ãã±ãã³ã¨ãã¢ãµãã¦ã¡ãã·ã±ãã¢ã»ã¹', cjkSuffix); 4489 case listStyle.LIST_STYLE_TYPE.LAO: 4490 return createCounterStyleFromRange(value, 0xed0, 0xed9, true, defaultSuffix); 4491 case listStyle.LIST_STYLE_TYPE.MONGOLIAN: 4492 return createCounterStyleFromRange(value, 0x1810, 0x1819, true, defaultSuffix); 4493 case listStyle.LIST_STYLE_TYPE.MYANMAR: 4494 return createCounterStyleFromRange(value, 0x1040, 0x1049, true, defaultSuffix); 4495 case listStyle.LIST_STYLE_TYPE.ORIYA: 4496 return createCounterStyleFromRange(value, 0xb66, 0xb6f, true, defaultSuffix); 4497 case listStyle.LIST_STYLE_TYPE.PERSIAN: 4498 return createCounterStyleFromRange(value, 0x6f0, 0x6f9, true, defaultSuffix); 4499 case listStyle.LIST_STYLE_TYPE.TAMIL: 4500 return createCounterStyleFromRange(value, 0xbe6, 0xbef, true, defaultSuffix); 4501 case listStyle.LIST_STYLE_TYPE.TELUGU: 4502 return createCounterStyleFromRange(value, 0xc66, 0xc6f, true, defaultSuffix); 4503 case listStyle.LIST_STYLE_TYPE.THAI: 4504 return createCounterStyleFromRange(value, 0xe50, 0xe59, true, defaultSuffix); 4505 case listStyle.LIST_STYLE_TYPE.TIBETAN: 4506 return createCounterStyleFromRange(value, 0xf20, 0xf29, true, defaultSuffix); 4507 case listStyle.LIST_STYLE_TYPE.DECIMAL: 4508 default: 4509 return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix); 4510 } 4511}; 4512}); 4513 4514unwrapExports(ListItem); 4515var ListItem_1 = ListItem.createCounterText; 4516var ListItem_2 = ListItem.inlineListItemElement; 4517var ListItem_3 = ListItem.getListOwner; 4518 4519var NodeContainer_1 = createCommonjsModule(function (module, exports) { 4520Object.defineProperty(exports, "__esModule", { 4521 value: true 4522}); 4523 4524var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); 4525 4526 4527 4528var _Color2 = _interopRequireDefault(Color_1); 4529 4530 4531 4532 4533 4534 4535 4536 4537 4538 4539 4540 4541 4542 4543 4544 4545 4546 4547 4548 4549 4550 4551 4552 4553 4554 4555 4556 4557 4558 4559 4560 4561 4562 4563 4564 4565 4566 4567 4568 4569 4570 4571 4572 4573 4574 4575 4576 4577 4578 4579 4580function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 4581 4582function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 4583 4584var INPUT_TAGS = ['INPUT', 'TEXTAREA', 'SELECT']; 4585 4586var NodeContainer = function () { 4587 function NodeContainer(node, parent, resourceLoader, index) { 4588 var _this = this; 4589 4590 _classCallCheck(this, NodeContainer); 4591 4592 this.parent = parent; 4593 this.tagName = node.tagName; 4594 this.index = index; 4595 this.childNodes = []; 4596 this.listItems = []; 4597 if (typeof node.start === 'number') { 4598 this.listStart = node.start; 4599 } 4600 var defaultView = node.ownerDocument.defaultView; 4601 var scrollX = defaultView.pageXOffset; 4602 var scrollY = defaultView.pageYOffset; 4603 var style = defaultView.getComputedStyle(node, null); 4604 var display$$1 = (0, display.parseDisplay)(style.display); 4605 4606 var IS_INPUT = node.type === 'radio' || node.type === 'checkbox'; 4607 4608 var position$$1 = (0, position.parsePosition)(style.position); 4609 4610 this.style = { 4611 background: IS_INPUT ? Input.INPUT_BACKGROUND : (0, background.parseBackgroun
4611d)(style, resourceLoader), 4612 border: IS_INPUT ? Input.INPUT_BORDERS : (0, border.parseBorder)(style), 4613 borderRadius: (node instanceof defaultView.HTMLInputElement || node instanceof HTMLInputElement) && IS_INPUT ? (0, Input.getInputBorderRadius)(node) : (0, borderRadius.parseBorderRadius)(style), 4614 color: IS_INPUT ? Input.INPUT_COLOR : new _Color2.default(style.color), 4615 display: display$$1, 4616 float: (0, float_1.parseCSSFloat)(style.float), 4617 font: (0, font.parseFont)(style), 4618 letterSpacing: (0, letterSpacing.parseLetterSpacing)(style.letterSpacing), 4619 listStyle: display$$1 === display.DISPLAY.LIST_ITEM ? (0, listStyle.parseListStyle)(style) : null, 4620 lineBreak: (0, lineBreak.parseLineBreak)(style.lineBreak), 4621 margin: (0, margin.parseMargin)(style), 4622 opacity: parseFloat(style.opacity), 4623 overflow: INPUT_TAGS.indexOf(node.tagName) === -1 ? (0, overflow.parseOverflow)(style.overflow) : overflow.OVERFLOW.HIDDEN, 4624 overflowWrap: (0, overflowWrap.parseOverflowWrap)(style.overflowWrap ? style.overflowWrap : style.wordWrap), 4625 padding: (0, padding.parsePadding)(style), 4626 position: position$$1, 4627 textDecoration: (0, textDecoration.parseTextDecoration)(style), 4628 textShadow: (0, textShadow.parseTextShadow)(style.textShadow), 4629 textTransform: (0, textTransform.parseTextTransform)(style.textTransform), 4630 transform: (0, transform.parseTransform)(style), 4631 visibility: (0, visibility.parseVisibility)(style.visibility), 4632 wordBreak: (0, wordBreak.parseWordBreak)(style.wordBreak), 4633 zIndex: (0, zIndex.parseZIndex)(position$$1 !== position.POSITION.STATIC ? style.zIndex : 'auto') 4634 }; 4635 4636 if (this.isTransformed()) { 4637 // getBoundingClientRect provides values post-transform, we want them without the transformation 4638 node.style.transform = 'matrix(1,0,0,1,0,0)'; 4639 } 4640 4641 if (display$$1 === display.DISPLAY.LIST_ITEM) { 4642 var listOwner = (0, ListItem.getListOwner)(this); 4643 if (listOwner) { 4644 var listIndex = listOwner.listItems.length; 4645 listOwner.listItems.push(this); 4646 this.listIndex = node.hasAttribute('value') && typeof node.value === 'number' ? node.value : listIndex === 0 ? typeof listOwner.listStart === 'number' ? listOwner.listStart : 1 : listOwner.listItems[listIndex - 1].listIndex + 1; 4647 } 4648 } 4649 4650 // TODO move bound retrieval for all nodes to a later stage? 4651 if (node.tagName === 'IMG') { 4652 node.addEventListener('load', function () { 4653 _this.bounds = (0, Bounds_1.parseBounds)(node, scrollX, scrollY); 4654 _this.curvedBounds = (0, Bounds_1.parseBoundCurves)(_this.bounds, _this.style.border, _this.style.borderRadius); 4655 }); 4656 } 4657 this.image = getImage(node, resourceLoader); 4658 this.bounds = IS_INPUT ? (0, Input.reformatInputBounds)((0, Bounds_1.parseBounds)(node, scrollX, scrollY)) : (0, Bounds_1.parseBounds)(node, scrollX, scrollY); 4659 this.curvedBounds = (0, Bounds_1.parseBoundCurves)(this.bounds, this.style.border, this.style.borderRadius); 4660 4661 4662 } 4663 4664 _createClass(NodeContainer, [{ 4665 key: 'getClipPaths', 4666 value: function getClipPaths() { 4667 var parentClips = this.parent ? this.parent.getClipPaths() : []; 4668 var isClipped = this.style.overflow !== overflow.OVERFLOW.VISIBLE; 4669 4670 return isClipped ? parentClips.concat([(0, Bounds_1.calculatePaddingBoxPath)(this.curvedBounds)]) : parentClips; 4671 } 4672 }, { 4673 key: 'isInFlow', 4674 value: function isInFlow() { 4675 return this.isRootElement() && !this.isFloating() && !this.isAbsolutelyPositioned(); 4676 } 4677 }, { 4678 key: 'isVisible', 4679 value: function isVisible() { 4680 return !(0, Util.contains)(this.style.display, display.DISPLAY.NONE) && this.style.opacity >
4680 0 && this.style.visibility === visibility.VISIBILITY.VISIBLE; 4681 } 4682 }, { 4683 key: 'isAbsolutelyPositioned', 4684 value: function isAbsolutelyPositioned() { 4685 return this.style.position !== position.POSITION.STATIC && this.style.position !== position.POSITION.RELATIVE; 4686 } 4687 }, { 4688 key: 'isPositioned', 4689 value: function isPositioned() { 4690 return this.style.position !== position.POSITION.STATIC; 4691 } 4692 }, { 4693 key: 'isFloating', 4694 value: function isFloating() { 4695 return this.style.float !== float_1.FLOAT.NONE; 4696 } 4697 }, { 4698 key: 'isRootElement', 4699 value: function isRootElement() { 4700 return this.parent === null; 4701 } 4702 }, { 4703 key: 'isTransformed', 4704 value: function isTransformed() { 4705 return this.style.transform !== null; 4706 } 4707 }, { 4708 key: 'isPositionedWithZIndex', 4709 value: function isPositionedWithZIndex() { 4710 return this.isPositioned() && !this.style.zIndex.auto; 4711 } 4712 }, { 4713 key: 'isInlineLevel', 4714 value: function isInlineLevel() { 4715 return (0, Util.contains)(this.style.display, display.DISPLAY.INLINE) || (0, Util.contains)(this.style.display, display.DISPLAY.INLINE_BLOCK) || (0, Util.contains)(this.style.display, display.DISPLAY.INLINE_FLEX) || (0, Util.contains)(this.style.display, display.DISPLAY.INLINE_GRID) || (0, Util.contains)(this.style.display, display.DISPLAY.INLINE_LIST_ITEM) || (0, Util.contains)(this.style.display, display.DISPLAY.INLINE_TABLE); 4716 } 4717 }, { 4718 key: 'isInlineBlockOrInlineTable', 4719 value: function isInlineBlockOrInlineTable() { 4720 return (0, Util.contains)(this.style.display, display.DISPLAY.INLINE_BLOCK) || (0, Util.contains)(this.style.display, display.DISPLAY.INLINE_TABLE); 4721 } 4722 }]); 4723 4724 return NodeContainer; 4725}(); 4726 4727exports.default = NodeContainer; 4728 4729 4730var getImage = function getImage(node, resourceLoader) { 4731 if (node instanceof node.ownerDocument.defaultView.SVGSVGElement || node instanceof SVGSVGElement) { 4732 var s = new XMLSerializer(); 4733 return resourceLoader.loadImage('data:image/svg+xml,' + encodeURIComponent(s.serializeToString(node))); 4734 } 4735 switch (node.tagName) { 4736 case 'IMG': 4737 // $FlowFixMe 4738 var img = node; 4739 return resourceLoader.loadImage(img.currentSrc || img.src); 4740 case 'CANVAS': 4741 // $FlowFixMe 4742 var canvas = node; 4743 return resourceLoader.loadCanvas(canvas); 4744 case 'IFRAME': 4745 var iframeKey = node.getAttribute('data-html2canvas-internal-iframe-key'); 4746 if (iframeKey) { 4747 return iframeKey; 4748 } 4749 break; 4750 } 4751 4752 return null; 4753}; 4754}); 4755 4756unwrapExports(NodeContainer_1); 4757 4758var StackingContext_1 = createCommonjsModule(function (module, exports) { 4759Object.defineProperty(exports, "__esModule", { 4760 value: true 4761}); 4762 4763var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); 4764 4765 4766 4767var _NodeContainer2 = _interopRequireDefault(NodeContainer_1); 4768 4769 4770 4771function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 4772 4773function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 4774 4775var StackingContext = function () { 4776 function StackingContext(container, parent, treatAsRealStackingContext) { 4777 _classCallCheck(this, StackingContext); 4778 4779 this.container = container; 4780 this.parent = parent; 4781 this.contexts = []; 4782 this.children = []; 4783 this.treatAsRealStackingContext = treatAsRealStackingContext; 4784 } 4785 4786 _createClass(StackingContext, [{ 4787 key: 'getOpacity', 4788 value: function getOpacity() { 4789 return this.parent ? this.container.style.opacity * this.parent.getOpacity() : this.container.style.opacity; 4790 } 4791 }, { 4792 key: 'getRealParentStackingContext', 4793 value: function getRealParentStackingContext() { 4794 return !this.parent || this.treatAsRealStackingContext ? this : this.parent.getRealParentStackingContext(); 4795 } 4796 }]); 4797 4798 return StackingContext; 4799}();
4800 4801exports.default = StackingContext; 4802}); 4803 4804unwrapExports(StackingContext_1); 4805 4806var NodeParser_1 = createCommonjsModule(function (module, exports) { 4807Object.defineProperty(exports, "__esModule", { 4808 value: true 4809}); 4810exports.NodeParser = undefined; 4811 4812 4813 4814var _StackingContext2 = _interopRequireDefault(StackingContext_1); 4815 4816 4817 4818var _NodeContainer2 = _interopRequireDefault(NodeContainer_1); 4819 4820 4821 4822var _TextContainer2 = _interopRequireDefault(TextContainer_1); 4823 4824 4825 4826 4827 4828 4829 4830function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 4831 4832var NodeParser = exports.NodeParser = function NodeParser(node, resourceLoader, logger) { 4833 var index = 0; 4834 4835 var container = new _NodeContainer2.default(node, null, resourceLoader, index++); 4836 var stack = new _StackingContext2.default(container, null, true); 4837 4838 parseNodeTree(node, container, stack, resourceLoader, index); 4839 4840 return stack; 4841}; 4842 4843var IGNORED_NODE_NAMES = ['SCRIPT', 'HEAD', 'TITLE', 'OBJECT', 'BR', 'OPTION']; 4844 4845var parseNodeTree = function parseNodeTree(node, parent, stack, resourceLoader, index) { 4846 for (var childNode = node.firstChild, nextNode; childNode; childNode = nextNode) { 4847 nextNode = childNode.nextSibling; 4848 var defaultView = childNode.ownerDocument.defaultView; 4849 if (childNode instanceof defaultView.Text || childNode instanceof Text || defaultView.parent && childNode instanceof defaultView.parent.Text) { 4850 if (childNode.data.trim().length > 0) { 4851 parent.childNodes.push(_TextContainer2.default.fromTextNode(childNode, parent)); 4852 } 4853 } else if (childNode instanceof defaultView.HTMLElement || childNode instanceof HTMLElement || defaultView.parent && childNode instanceof defaultView.parent.HTMLElement) { 4854 if (IGNORED_NODE_NAMES.indexOf(childNode.nodeName) === -1) { 4855 var container = new _NodeContainer2.default(childNode, parent, resourceLoader, index++); 4856 if (container.isVisible()) { 4857 if (childNode.tagName === 'INPUT') { 4858 // $FlowFixMe 4859 (0, Input.inlineInputElement)(childNode, container); 4860 } else if (childNode.tagName === 'TEXTAREA') { 4861 // $FlowFixMe 4862 (0, Input.inlineTextAreaElement)(childNode, container); 4863 } else if (childNode.tagName === 'SELECT') { 4864 // $FlowFixMe 4865 (0, Input.inlineSelectElement)(childNode, container); 4866 } else if (container.style.listStyle && container.style.listStyle.listStyleType !== listStyle.LIST_STYLE_TYPE.NONE) { 4867 (0, ListItem.inlineListItemElement)(childNode, container, resourceLoader); 4868 } 4869 4870 var SHOULD_TRAVERSE_CHILDREN = childNode.tagName !== 'TEXTAREA'; 4871 var treatAsRealStackingContext = createsRealStackingContext(container, childNode); 4872 if (treatAsRealStackingContext || createsStackingContext(container)) { 4873 // for treatAsRealStackingContext:false, any positioned descendants and descendants 4874 // which actually create a new stacking context should be considered part of the parent stacking context 4875 var parentStack = treatAsRealStackingContext || container.isPositioned() ? stack.getRealParentStackingContext() : stack; 4876 var childStack = new _StackingContext2.default(container, parentStack, treatAsRealStackingContext); 4877 parentStack.contexts.push(childStack); 4878 if (SHOULD_TRAVERSE_CHILDREN) { 4879 parseNodeTree(childNode, container, childStack, resourceLoader, index); 4880 } 4881 } else { 4882 stack.children.push(container); 4883 if (SHOULD_TRAVERSE_CHILDREN) { 4884 parseNodeTree(childNode, container, stack, resourceLoader, index); 4885 } 4886 } 4887 } 4888 } 4889 } else if (childNode instanceof defaultView.SVGSVGElement || childNode instanceof SVGSVGElement || defaultView.parent && childNode instanceof defaultView.parent.SVGSVGElement) { 4890 var _container = new _NodeContainer2.default(childNode, parent, resourceLoader, index++); 4891 var _treatAsRealStackingContext = createsRealStackingContext(_container, childNode); 4892 if (_treatAsRealStackingContext || createsStackingContext(_container)) { 4893 // for treatAsRealStackingContext:false, any positioned descendants and desce
4893ndants 4894 // which actually create a new stacking context should be considered part of the parent stacking context 4895 var _parentStack = _treatAsRealStackingContext || _container.isPositioned() ? stack.getRealParentStackingContext() : stack; 4896 var _childStack = new _StackingContext2.default(_container, _parentStack, _treatAsRealStackingContext); 4897 _parentStack.contexts.push(_childStack); 4898 } else { 4899 stack.children.push(_container); 4900 } 4901 } 4902 } 4903}; 4904 4905var createsRealStackingContext = function createsRealStackingContext(container, node) { 4906 return container.isRootElement() || container.isPositionedWithZIndex() || container.style.opacity < 1 || container.isTransformed() || isBodyWithTransparentRoot(container, node); 4907}; 4908 4909var createsStackingContext = function createsStackingContext(container) { 4910 return container.isPositioned() || container.isFloating(); 4911}; 4912 4913var isBodyWithTransparentRoot = function isBodyWithTransparentRoot(container, node) { 4914 return node.nodeName === 'BODY' && container.parent instanceof _NodeContainer2.default && container.parent.style.background.backgroundColor.isTransparent(); 4915}; 4916}); 4917 4918unwrapExports(NodeParser_1); 4919var NodeParser_2 = NodeParser_1.NodeParser; 4920 4921var Font = createCommonjsModule(function (module, exports) { 4922Object.defineProperty(exports, "__esModule", { 4923 value: true 4924}); 4925exports.FontMetrics = undefined; 4926 4927var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); 4928 4929 4930 4931function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 4932 4933var SAMPLE_TEXT = 'Hidden Text'; 4934 4935var FontMetrics = exports.FontMetrics = function () { 4936 function FontMetrics(document) { 4937 _classCallCheck(this, FontMetrics); 4938 4939 this._data = {}; 4940 this._document = document; 4941 } 4942 4943 _createClass(FontMetrics, [{ 4944 key: '_parseMetrics', 4945 value: function _parseMetrics(font) { 4946 var container = this._document.createElement('div'); 4947 var img = this._document.createElement('img'); 4948 var span = this._document.createElement('span'); 4949 4950 var body = this._document.body; 4951 if (!body) { 4952 throw new Error(''); 4953 } 4954 4955 container.style.visibility = 'hidden'; 4956 container.style.fontFamily = font.fontFamily; 4957 container.style.fontSize = font.fontSize; 4958 container.style.margin = '0'; 4959 container.style.padding = '0'; 4960 4961 body.appendChild(container); 4962 4963 img.src = Util.SMALL_IMAGE; 4964 img.width = 1; 4965 img.height = 1; 4966 4967 img.style.margin = '0'; 4968 img.style.padding = '0'; 4969 img.style.verticalAlign = 'baseline'; 4970 4971 span.style.fontFamily = font.fontFamily; 4972 span.style.fontSize = font.fontSize; 4973 span.style.margin = '0'; 4974 span.style.padding = '0'; 4975 4976 span.appendChild(this._document.createTextNode(SAMPLE_TEXT)); 4977 container.appendChild(span); 4978 container.appendChild(img); 4979 var baseline = img.offsetTop - span.offsetTop + 2; 4980 4981 container.removeChild(span); 4982 container.appendChild(this._document.createTextNode(SAMPLE_TEXT)); 4983 4984 container.style.lineHeight = 'normal'; 4985 img.style.verticalAlign = 'super'; 4986 4987 var middle = img.offsetTop - container.offsetTop + 2; 4988 4989 body.removeChild(container); 4990 4991 return { baseline: baseline, middle: middle }; 4992 } 4993 }, { 4994 key: 'getMetrics', 4995 value: function getMetrics(font) { 4996 var key = font.fontFamily + ' ' + font.fontSize; 4997 if (this._data[key] === undefined) { 4998 this._data[key] = this._parseMetrics(font); 4999 } 5000 5001 return this._data[key]; 5002 } 5003 }]); 5004 5005 return FontMetrics; 5006}(); 5007}); 5008 5009unwrapExports(Font); 5010var Font_1 = Font.FontMetrics; 5011
5012var Angle = createCommonjsModule(function (module, exports) { 5013Object.defineProperty(exports, "__esModule", { 5014 value: true 5015}); 5016var ANGLE = /([+-]?\d*\.?\d+)(deg|grad|rad|turn)/i; 5017 5018var parseAngle = exports.parseAngle = function parseAngle(angle) { 5019 var match = angle.match(ANGLE); 5020 5021 if (match) { 5022 var value = parseFloat(match[1]); 5023 switch (match[2].toLowerCase()) { 5024 case 'deg': 5025 return Math.PI * value / 180; 5026 case 'grad': 5027 return Math.PI / 200 * value; 5028 case 'rad': 5029 return value; 5030 case 'turn': 5031 return Math.PI * 2 * value; 5032 } 5033 } 5034 5035 return null; 5036}; 5037}); 5038 5039unwrapExports(Angle); 5040var Angle_1 = Angle.parseAngle; 5041 5042var Gradient = createCommonjsModule(function (module, exports) { 5043Object.defineProperty(exports, "__esModule", { 5044 value: true 5045}); 5046exports.transformWebkitRadialGradientArgs = exports.parseGradient = exports.RadialGradient = exports.LinearGradient = exports.RADIAL_GRADIENT_SHAPE = exports.GRADIENT_TYPE = undefined; 5047 5048var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); 5049 5050 5051 5052var _NodeContainer2 = _interopRequireDefault(NodeContainer_1); 5053 5054 5055 5056 5057 5058var _Color2 = _interopRequireDefault(Color_1); 5059 5060 5061 5062var _Length2 = _interopRequireDefault(Length_1); 5063 5064 5065 5066function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 5067 5068function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 5069 5070var SIDE_OR_CORNER = /^(to )?(left|top|right|bottom)( (left|top|right|bottom))?$/i; 5071var PERCENTAGE_ANGLES = /^([+-]?\d*\.?\d+)% ([+-]?\d*\.?\d+)%$/i; 5072var ENDS_WITH_LENGTH = /(px)|%|( 0)$/i; 5073var FROM_TO_COLORSTOP = /^(from|to|color-stop)\((?:([\d.]+)(%)?,\s*)?(.+?)\)$/i; 5074var RADIAL_SHAPE_DEFINITION = /^\s*(circle|ellipse)?\s*((?:([\d.]+)(px|r?em|%)\s*(?:([\d.]+)(px|r?em|%))?)|closest-side|closest-corner|farthest-side|farthest-corner)?\s*(?:at\s*(?:(left|center|right)|([\d.]+)(px|r?em|%))\s+(?:(top|center|bottom)|([\d.]+)(px|r?em|%)))?(?:\s|$)/i; 5075 5076var GRADIENT_TYPE = exports.GRADIENT_TYPE = { 5077 LINEAR_GRADIENT: 0, 5078 RADIAL_GRADIENT: 1 5079}; 5080 5081var RADIAL_GRADIENT_SHAPE = exports.RADIAL_GRADIENT_SHAPE = { 5082 CIRCLE: 0, 5083 ELLIPSE: 1 5084}; 5085 5086var LENGTH_FOR_POSITION = { 5087 left: new _Length2.default('0%'), 5088 top: new _Length2.default('0%'), 5089 center: new _Length2.default('50%'), 5090 right: new _Length2.default('100%'), 5091 bottom: new _Length2.default('100%') 5092}; 5093 5094var LinearGradient = exports.LinearGradient = function LinearGradient(colorStops, direction) { 5095 _classCallCheck(this, LinearGradient); 5096 5097 this.type = GRADIENT_TYPE.LINEAR_GRADIENT; 5098 this.colorStops = colorStops; 5099 this.direction = direction; 5100}; 5101 5102var RadialGradient = exports.RadialGradient = function RadialGradient(colorStops, shape, center, radius) { 5103 _classCallCheck(this, RadialGradient); 5104 5105 this.type = GRADIENT_TYPE.RADIAL_GRADIENT; 5106 this.colorStops = colorStops; 5107 this.shape = shape; 5108 this.center = center; 5109 this.radius = radius; 5110}; 5111 5112var parseGradient = exports.parseGradient = function parseGradient(container, _ref, bounds) { 5113 var args = _ref.args, 5114 method = _ref.method, 5115 prefix = _ref.prefix; 5116 5117 if (method === 'linear-gradient') { 5118 return parseLinearGradient(args, bounds, !!prefix); 5119 } else if (method === 'gradient' && args[0] === 'linear') { 5120 // TODO handle correct angle 5121 return parseLinearGradient(['to bottom'].concat(transformObsoleteColorStops(args.slice(3))), bounds, !!prefix); 5122 } else if (method === 'radial-gradient') { 5123 return parseRadialGradient(container, prefix === '-webkit-' ? transformWebkitRadialGradientArgs(args) : args, bounds); 5124 } else if (method === 'gradient' && args[0] === 'radial') { 5125 return parseRadialGradient(container, transformObsoleteColorStops(transformWebkitRadialGradientArgs(args.slice(1))), bounds); 5126 } 5127}; 5128 5129var parseColorStops = function parseColorStops(args, firstColorStopIndex, lineLength) { 5130 var colorStops = []; 5131 5132 for (var i = firstColorStopIndex; i < args.length; i++) { 5133 var value = args[i];
5134 var HAS_LENGTH = ENDS_WITH_LENGTH.test(value); 5135 var lastSpaceIndex = value.lastIndexOf(' '); 5136 var _color = new _Color2.default(HAS_LENGTH ? value.substring(0, lastSpaceIndex) : value); 5137 var _stop = HAS_LENGTH ? new _Length2.default(value.substring(lastSpaceIndex + 1)) : i === firstColorStopIndex ? new _Length2.default('0%') : i === args.length - 1 ? new _Length2.default('100%') : null; 5138 colorStops.push({ color: _color, stop: _stop }); 5139 } 5140 5141 var absoluteValuedColorStops = colorStops.map(function (_ref2) { 5142 var color = _ref2.color, 5143 stop = _ref2.stop; 5144 5145 var absoluteStop = lineLength === 0 ? 0 : stop ? stop.getAbsoluteValue(lineLength) / lineLength : null; 5146 5147 return { 5148 color: color, 5149 // $FlowFixMe 5150 stop: absoluteStop 5151 }; 5152 }); 5153 5154 var previousColorStop = absoluteValuedColorStops[0].stop; 5155 for (var _i = 0; _i < absoluteValuedColorStops.length; _i++) { 5156 if (previousColorStop !== null) { 5157 var _stop2 = absoluteValuedColorStops[_i].stop; 5158 if (_stop2 === null) { 5159 var n = _i; 5160 while (absoluteValuedColorStops[n].stop === null) { 5161 n++; 5162 } 5163 var steps = n - _i + 1; 5164 var nextColorStep = absoluteValuedColorStops[n].stop; 5165 var stepSize = (nextColorStep - previousColorStop) / steps; 5166 for (; _i < n; _i++) { 5167 previousColorStop = absoluteValuedColorStops[_i].stop = previousColorStop + stepSize; 5168 } 5169 } else { 5170 previousColorStop = _stop2; 5171 } 5172 } 5173 } 5174 5175 return absoluteValuedColorStops; 5176}; 5177 5178var parseLinearGradient = function parseLinearGradient(args, bounds, hasPrefix) { 5179 var angle = (0, Angle.parseAngle)(args[0]); 5180 var HAS_SIDE_OR_CORNER = SIDE_OR_CORNER.test(args[0]); 5181 var HAS_DIRECTION = HAS_SIDE_OR_CORNER || angle !== null || PERCENTAGE_ANGLES.test(args[0]); 5182 var direction = HAS_DIRECTION ? angle !== null ? calculateGradientDirection( 5183 // if there is a prefix, the 0° angle points due East (instead of North per W3C) 5184 hasPrefix ? angle - Math.PI * 0.5 : angle, bounds) : HAS_SIDE_OR_CORNER ? parseSideOrCorner(args[0], bounds) : parsePercentageAngle(args[0], bounds) : calculateGradientDirection(Math.PI, bounds); 5185 var firstColorStopIndex = HAS_DIRECTION ? 1 : 0; 5186 5187 // TODO: Fix some inaccuracy with color stops with px values 5188 var lineLength = Math.min((0, Util.distance)(Math.abs(direction.x0) + Math.abs(direction.x1), Math.abs(direction.y0) + Math.abs(direction.y1)), bounds.width * 2, bounds.height * 2); 5189 5190 return new LinearGradient(parseColorStops(args, firstColorStopIndex, lineLength), direction); 5191}; 5192 5193var parseRadialGradient = function parseRadialGradient(container, args, bounds) { 5194 var m = args[0].match(RADIAL_SHAPE_DEFINITION); 5195 var shape = m && (m[1] === 'circle' || // explicit shape specification 5196 m[3] !== undefined && m[5] === undefined) // only one radius coordinate 5197 ? RADIAL_GRADIENT_SHAPE.CIRCLE : RADIAL_GRADIENT_SHAPE.ELLIPSE; 5198 var radius = {}; 5199 var center = {}; 5200 5201 if (m) { 5202 // Radius 5203 if (m[3] !== undefined) { 5204 radius.x = (0, Length_1.calculateLengthFromValueWithUnit)(container, m[3], m[4]).getAbsoluteValue(bounds.width); 5205 } 5206 5207 if (m[5] !== undefined) { 5208 radius.y = (0, Length_1.calculateLengthFromValueWithUnit)(container, m[5], m[6]).getAbsoluteValue(bounds.height); 5209 } 5210 5211 // Position 5212 if (m[7]) { 5213 center.x = LENGTH_FOR_POSITION[m[7].toLowerCase()]; 5214 } else if (m[8] !== undefined) { 5215 center.x = (0, Length_1.calculateLengthFromValueWithUnit)(container, m[8], m[9]); 5216 } 5217 5218 if (m[10]) { 5219 center.y = LENGTH_FOR_POSITION[m[10].toLowerCase()]; 5220 } else if (m[11] !== undefined) { 5221 center.y = (0, Length_1.calculateLengthFromValueWithUnit)(container, m[11], m[12]);
5222 } 5223 } 5224 5225 var gradientCenter = { 5226 x: center.x === undefined ? bounds.width / 2 : center.x.getAbsoluteValue(bounds.width), 5227 y: center.y === undefined ? bounds.height / 2 : center.y.getAbsoluteValue(bounds.height) 5228 }; 5229 var gradientRadius = calculateRadius(m && m[2] || 'farthest-corner', shape, gradientCenter, radius, bounds); 5230 5231 return new RadialGradient(parseColorStops(args, m ? 1 : 0, Math.min(gradientRadius.x, gradientRadius.y)), shape, gradientCenter, gradientRadius); 5232}; 5233 5234var calculateGradientDirection = function calculateGradientDirection(radian, bounds) { 5235 var width = bounds.width; 5236 var height = bounds.height; 5237 var HALF_WIDTH = width * 0.5; 5238 var HALF_HEIGHT = height * 0.5; 5239 var lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian)); 5240 var HALF_LINE_LENGTH = lineLength / 2; 5241 5242 var x0 = HALF_WIDTH + Math.sin(radian) * HALF_LINE_LENGTH; 5243 var y0 = HALF_HEIGHT - Math.cos(radian) * HALF_LINE_LENGTH; 5244 var x1 = width - x0; 5245 var y1 = height - y0; 5246 5247 return { x0: x0, x1: x1, y0: y0, y1: y1 }; 5248}; 5249 5250var parseTopRight = function parseTopRight(bounds) { 5251 return Math.acos(bounds.width / 2 / ((0, Util.distance)(bounds.width, bounds.height) / 2)); 5252}; 5253 5254var parseSideOrCorner = function parseSideOrCorner(side, bounds) { 5255 switch (side) { 5256 case 'bottom': 5257 case 'to top': 5258 return calculateGradientDirection(0, bounds); 5259 case 'left': 5260 case 'to right': 5261 return calculateGradientDirection(Math.PI / 2, bounds); 5262 case 'right': 5263 case 'to left': 5264 return calculateGradientDirection(3 * Math.PI / 2, bounds); 5265 case 'top right': 5266 case 'right top': 5267 case 'to bottom left': 5268 case 'to left bottom': 5269 return calculateGradientDirection(Math.PI + parseTopRight(bounds), bounds); 5270 case 'top left': 5271 case 'left top': 5272 case 'to bottom right': 5273 case 'to right bottom': 5274 return calculateGradientDirection(Math.PI - parseTopRight(bounds), bounds); 5275 case 'bottom left': 5276 case 'left bottom': 5277 case 'to top right': 5278 case 'to right top': 5279 return calculateGradientDirection(parseTopRight(bounds), bounds); 5280 case 'bottom right': 5281 case 'right bottom': 5282 case 'to top left': 5283 case 'to left top': 5284 return calculateGradientDirection(2 * Math.PI - parseTopRight(bounds), bounds); 5285 case 'top': 5286 case 'to bottom': 5287 default: 5288 return calculateGradientDirection(Math.PI, bounds); 5289 } 5290}; 5291 5292var parsePercentageAngle = function parsePercentageAngle(angle, bounds) { 5293 var _angle$split$map = angle.split(' ').map(parseFloat), 5294 _angle$split$map2 = _slicedToArray(_angle$split$map, 2), 5295 left = _angle$split$map2[0], 5296 top = _angle$split$map2[1]; 5297
5298 var ratio = left / 100 * bounds.width / (top / 100 * bounds.height); 5299 5300 return calculateGradientDirection(Math.atan(isNaN(ratio) ? 1 : ratio) + Math.PI / 2, bounds); 5301}; 5302 5303var findCorner = function findCorner(bounds, x, y, closest) { 5304 var corners = [{ x: 0, y: 0 }, { x: 0, y: bounds.height }, { x: bounds.width, y: 0 }, { x: bounds.width, y: bounds.height }]; 5305 5306 // $FlowFixMe 5307 return corners.reduce(function (stat, corner) { 5308 var d = (0, Util.distance)(x - corner.x, y - corner.y); 5309 if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) { 5310 return { 5311 optimumCorner: corner, 5312 optimumDistance: d 5313 }; 5314 } 5315 5316 return stat; 5317 }, { 5318 optimumDistance: closest ? Infinity : -Infinity, 5319 optimumCorner: null 5320 }).optimumCorner; 5321}; 5322 5323var calculateRadius = function calculateRadius(extent, shape, center, radius, bounds) { 5324 var x = center.x; 5325 var y = center.y; 5326 var rx = 0; 5327 var ry = 0; 5328 5329 switch (extent) { 5330 case 'closest-side': 5331 // The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradientâs center. 5332 // If the shape is an ellipse, it exactly meets the closest side in each dimension. 5333 if (shape === RADIAL_GRADIENT_SHAPE.CIRCLE) { 5334 rx = ry = Math.min(Math.abs(x), Math.abs(x - bounds.width), Math.abs(y), Math.abs(y - bounds.height)); 5335 } else if (shape === RADIAL_GRADIENT_SHAPE.ELLIPSE) { 5336 rx = Math.min(Math.abs(x), Math.abs(x - bounds.width)); 5337 ry = Math.min(Math.abs(y), Math.abs(y - bounds.height)); 5338 } 5339 break; 5340 5341 case 'closest-corner': 5342 // The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradientâs center. 5343 // If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified. 5344 if (shape === RADIAL_GRADIENT_SHAPE.CIRCLE) { 5345 rx = ry = Math.min((0, Util.distance)(x, y), (0, Util.distance)(x, y - bounds.height), (0, Util.distance)(x - bounds.width, y), (0, Util.distance)(x - bounds.width, y - bounds.height)); 5346 } else if (shape === RADIAL_GRADIENT_SHAPE.ELLIPSE) { 5347 // Compute the ratio ry/rx (which is to be the same as for "closest-side") 5348 var c = Math.min(Math.abs(y), Math.abs(y - bounds.height)) / Math.min(Math.abs(x), Math.abs(x - bounds.width)); 5349 var corner = findCorner(bounds, x, y, true); 5350 rx = (0, Util.distance)(corner.x - x, (corner.y - y) / c); 5351 ry = c * rx; 5352 } 5353 break; 5354 5355 case 'farthest-side': 5356 // Same as closest-side, except the ending shape is sized based on the farthest side(s) 5357 if (shape === RADIAL_GRADIENT_SHAPE.CIRCLE) { 5358 rx = ry = Math.max(Math.abs(x), Math.abs(x - bounds.width), Math.abs(y), Math.abs(y - bounds.height)); 5359 } else if (shape === RADIAL_GRADIENT_SHAPE.ELLIPSE) { 5360 rx = Math.max(Math.abs(x), Math.abs(x - bounds.width)); 5361 ry = Math.max(Math.abs(y), Math.abs(y - bounds.height)); 5362 } 5363 break; 5364 5365 case 'farthest-corner': 5366 // Same as closest-corner, except the ending shape is sized based on the farthest corner. 5367 // If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified. 5368 if (shape === RADIAL_GRADIENT_SHAPE.CIRCLE) { 5369 rx = ry = Math.max((0, Util.distance)(x, y), (0, Util.distance)(x, y - bounds.height), (0, Util.distance)(x - bounds.width, y), (0, Util.distance)(x - bounds.width, y - bounds.height)); 5370 } else if (shape === RADIAL_GRADIENT_SHAPE.ELLIPSE) { 5371 // Compute the ratio ry/rx (which is to be the same as for "farthest-side") 5372 var _c = Math.max(Math.abs(y), Math.abs(y - bounds.height)) / Math.max(Math.abs(x), Math.abs(x - bounds.width)); 5373 var _corner = findCorner(bounds, x, y, false); 5374 rx = (0, Util.distance)(_corner.x - x, (_corner.y - y) / _c); 5375 ry = _c * rx; 5376 } 5377 break; 5378 5379 default: 5380 // pixel or percentage values
5381 rx = radius.x || 0; 5382 ry = radius.y !== undefined ? radius.y : rx; 5383 break; 5384 } 5385 5386 return { 5387 x: rx, 5388 y: ry 5389 }; 5390}; 5391 5392var transformWebkitRadialGradientArgs = exports.transformWebkitRadialGradientArgs = function transformWebkitRadialGradientArgs(args) { 5393 var shape = ''; 5394 var radius = ''; 5395 var extent = ''; 5396 var position = ''; 5397 var idx = 0; 5398 5399 var POSITION = /^(left|center|right|\d+(?:px|r?em|%)?)(?:\s+(top|center|bottom|\d+(?:px|r?em|%)?))?$/i; 5400 var SHAPE_AND_EXTENT = /^(circle|ellipse)?\s*(closest-side|closest-corner|farthest-side|farthest-corner|contain|cover)?$/i; 5401 var RADIUS = /^\d+(px|r?em|%)?(?:\s+\d+(px|r?em|%)?)?$/i; 5402 5403 var matchStartPosition = args[idx].match(POSITION); 5404 if (matchStartPosition) { 5405 idx++; 5406 } 5407 5408 var matchShapeExtent = args[idx].match(SHAPE_AND_EXTENT); 5409 if (matchShapeExtent) { 5410 shape = matchShapeExtent[1] || ''; 5411 extent = matchShapeExtent[2] || ''; 5412 if (extent === 'contain') { 5413 extent = 'closest-side'; 5414 } else if (extent === 'cover') { 5415 extent = 'farthest-corner'; 5416 } 5417 idx++; 5418 } 5419 5420 var matchStartRadius = args[idx].match(RADIUS); 5421 if (matchStartRadius) { 5422 idx++; 5423 } 5424 5425 var matchEndPosition = args[idx].match(POSITION); 5426 if (matchEndPosition) { 5427 idx++; 5428 } 5429 5430 var matchEndRadius = args[idx].match(RADIUS); 5431 if (matchEndRadius) { 5432 idx++; 5433 } 5434 5435 var matchPosition = matchEndPosition || matchStartPosition; 5436 if (matchPosition && matchPosition[1]) { 5437 position = matchPosition[1] + (/^\d+$/.test(matchPosition[1]) ? 'px' : ''); 5438 if (matchPosition[2]) { 5439 position += ' ' + matchPosition[2] + (/^\d+$/.test(matchPosition[2]) ? 'px' : ''); 5440 } 5441 } 5442 5443 var matchRadius = matchEndRadius || matchStartRadius; 5444 if (matchRadius) { 5445 radius = matchRadius[0]; 5446 if (!matchRadius[1]) { 5447 radius += 'px'; 5448 } 5449 } 5450 5451 if (position && !shape && !radius && !extent) { 5452 radius = position; 5453 position = ''; 5454 } 5455 5456 if (position) { 5457 position = 'at ' + position; 5458 } 5459 5460 return [[shape, extent, radius, position].filter(function (s) { 5461 return !!s; 5462 }).join(' ')].concat(args.slice(idx)); 5463}; 5464 5465var transformObsoleteColorStops = function transformObsoleteColorStops(args) { 5466 return args.map(function (color) { 5467 return color.match(FROM_TO_COLORSTOP); 5468 }) 5469 // $FlowFixMe 5470 .map(function (v, index) { 5471 if (!v) { 5472 return args[index]; 5473 } 5474 5475 switch (v[1]) { 5476 case 'from': 5477 return v[4] + ' 0%'; 5478 case 'to': 5479 return v[4] + ' 100%'; 5480 case 'color-stop': 5481 if (v[3] === '%') { 5482 return v[4] + ' ' + v[2]; 5483 } 5484 return v[4] + ' ' + parseFloat(v[2]) * 100 + '%'; 5485 } 5486 }); 5487}; 5488}); 5489 5490unwrapExports(Gradient); 5491var Gradient_1 = Gradient.transformWebkitRadialGradientArgs; 5492var Gradient_2 = Gradient.parseGradient; 5493var Gradient_3 = Gradient.RadialGradient; 5494var Gradient_4 = Gradient.LinearGradient; 5495var Gradient_5 = Gradient.RADIAL_GRADIENT_SHAPE; 5496var Gradient_6 = Gradient.GRADIENT_TYPE; 5497 5498var Renderer_1 = createCommonjsModule(function (module, exports) { 5499Object.defineProperty(exports, "__esModule", { 5500 value: true 5501}); 5502 5503var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); }
vendor: 1,042 bytes, lines 5503-5525
5503 else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); 5504 5505var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); 5506 5507 5508 5509 5510 5511 5512 5513 5514 5515var _TextContainer2 = _interopRequireDefault(TextContainer_1); 5516 5517 5518 5519 5520 5521function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 5522 5523function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 5524 5525var Renderer = function () {
5526 function Renderer(target, options) { 5527 _classCallCheck(this, Renderer); 5528 5529 this.target = target; 5530 this.options = options; 5531 target.render(options); 5532 } 5533 5534 _createClass(Renderer, [{ 5535 key: 'renderNode', 5536 value: function renderNode(container) { 5537 if (container.isVisible()) { 5538 this.renderNodeBackgroundAndBorders(container); 5539 this.renderNodeContent(container); 5540 } 5541 } 5542 }, { 5543 key: 'renderNodeContent', 5544 value: function renderNodeContent(container) { 5545 var _this = this; 5546 5547 var callback = function callback() { 5548 if (container.childNodes.length) { 5549 container.childNodes.forEach(function (child) { 5550 if (child instanceof _TextContainer2.default) { 5551 var style = child.parent.style; 5552 _this.target.renderTextNode(child.bounds, style.color, style.font, style.textDecoration, style.textShadow); 5553 } else { 5554 _this.target.drawShape(child, container.style.color); 5555 } 5556 }); 5557 } 5558 5559 if (container.image) { 5560 var _image = _this.options.imageStore.get(container.image); 5561 if (_image) { 5562 var contentBox = (0, Bounds_1.calculateContentBox)(container.bounds, container.style.padding, container.style.border); 5563 var _width = typeof _image.width === 'number' && _image.width > 0 ? _image.width : contentBox.width; 5564 var _height = typeof _image.height === 'number' && _image.height > 0 ? _image.height : contentBox.height; 5565 if (_width > 0 && _height > 0) { 5566 _this.target.clip([(0, Bounds_1.calculatePaddingBoxPath)(container.curvedBounds)], function () { 5567 _this.target.drawImage(_image, new Bounds_1.Bounds(0, 0, _width, _height), contentBox); 5568 }); 5569 } 5570 } 5571 } 5572 }; 5573 var paths = container.getClipPaths(); 5574 if (paths.length) { 5575 this.target.clip(paths, callback); 5576 } else { 5577 callback(); 5578 } 5579 } 5580 }, { 5581 key: 'renderNodeBackgroundAndBorders', 5582 value: function renderNodeBackgroundAndBorders(container) { 5583 var _this2 = this; 5584 5585 var HAS_BACKGROUND = !container.style.background.backgroundColor.isTransparent() || container.style.background.backgroundImage.length; 5586 5587 var hasRenderableBorders = container.style.border.some(function (border$$2) { 5588 return border$$2.borderStyle !== border.BORDER_STYLE.NONE && !border$$2.borderColor.isTransparent(); 5589 }); 5590 5591 var callback = function callback() { 5592 var backgroundPaintingArea = (0, background.calculateBackgroungPaintingArea)(container.curvedBounds, container.style.background.backgroundClip); 5593 5594 if (HAS_BACKGROUND) { 5595 _this2.target.clip([backgroundPaintingArea], function () { 5596 if (!container.style.background.backgroundColor.isTransparent()) { 5597 _this2.target.fill(container.style.background.backgroundColor); 5598 } 5599 5600 _this2.renderBackgroundImage(container); 5601 }); 5602 } 5603 5604 container.style.border.forEach(function (border$$2, side) { 5605 if (border$$2.borderStyle !== border.BORDER_STYLE.NONE && !border$$2.borderColor.isTransparent()) { 5606 _this2.renderBorder(border$$2, side, container.curvedBounds); 5607 } 5608 }); 5609 }; 5610 5611 if (HAS_BACKGROUND || hasRenderableBorders) { 5612 var paths = container.parent ? container.parent.getClipPaths() : []; 5613 if (paths.length) { 5614 this.target.clip(paths, callback); 5615 } else { 5616 callback(); 5617 } 5618 } 5619 } 5620 }, {
5621 key: 'renderBackgroundImage', 5622 value: function renderBackgroundImage(container) { 5623 var _this3 = this; 5624 5625 container.style.background.backgroundImage.slice(0).reverse().forEach(function (backgroundImage) { 5626 if (backgroundImage.source.method === 'url' && backgroundImage.source.args.length) { 5627 _this3.renderBackgroundRepeat(container, backgroundImage); 5628 } else if (/gradient/i.test(backgroundImage.source.method)) { 5629 _this3.renderBackgroundGradient(container, backgroundImage); 5630 } 5631 }); 5632 } 5633 }, { 5634 key: 'renderBackgroundRepeat', 5635 value: function renderBackgroundRepeat(container, background$$2) { 5636 var image = this.options.imageStore.get(background$$2.source.args[0]); 5637 if (image) { 5638 var backgroundPositioningArea = (0, background.calculateBackgroungPositioningArea)(container.style.background.backgroundOrigin, container.bounds, container.style.padding, container.style.border); 5639 var backgroundImageSize = (0, background.calculateBackgroundSize)(background$$2, image, backgroundPositioningArea); 5640 var position = (0, background.calculateBackgroundPosition)(background$$2.position, backgroundImageSize, backgroundPositioningArea); 5641 var _path = (0, background.calculateBackgroundRepeatPath)(background$$2, position, backgroundImageSize, backgroundPositioningArea, container.bounds); 5642 5643 var _offsetX = Math.round(backgroundPositioningArea.left + position.x); 5644 var _offsetY = Math.round(backgroundPositioningArea.top + position.y); 5645 this.target.renderRepeat(_path, image, backgroundImageSize, _offsetX, _offsetY); 5646 } 5647 } 5648 }, { 5649 key: 'renderBackgroundGradient', 5650 value: function renderBackgroundGradient(container, background$$2) { 5651 var backgroundPositioningArea = (0, background.calculateBackgroungPositioningArea)(container.style.background.backgroundOrigin, container.bounds, container.style.padding, container.style.border); 5652 var backgroundImageSize = (0, background.calculateGradientBackgroundSize)(background$$2, backgroundPositioningArea); 5653 var position = (0, background.calculateBackgroundPosition)(background$$2.position, backgroundImageSize, backgroundPositioningArea); 5654 var gradientBounds = new Bounds_1.Bounds(Math.round(backgroundPositioningArea.left + position.x), Math.round(backgroundPositioningArea.top + position.y), backgroundImageSize.width, backgroundImageSize.height); 5655 5656 var gradient = (0, Gradient.parseGradient)(container, background$$2.source, gradientBounds); 5657 if (gradient) { 5658 switch (gradient.type) { 5659 case Gradient.GRADIENT_TYPE.LINEAR_GRADIENT: 5660 // $FlowFixMe 5661 this.target.renderLinearGradient(gradientBounds, gradient); 5662 break; 5663 case Gradient.GRADIENT_TYPE.RADIAL_GRADIENT: 5664 // $FlowFixMe 5665 this.target.renderRadialGradient(gradientBounds, gradient); 5666 break; 5667 } 5668 } 5669 } 5670 }, { 5671 key: 'renderBorder', 5672 value: function renderBorder(border$$2, side, curvePoints) { 5673 this.target.drawShape((0, Bounds_1.parsePathForBorder)(curvePoints, side), border$$2.borderColor); 5674 } 5675 }, { 5676 key: 'renderStack',
5677 value: function renderStack(stack) { 5678 var _this4 = this; 5679 5680 if (stack.container.isVisible()) { 5681 var _opacity = stack.getOpacity(); 5682 if (_opacity !== this._opacity) { 5683 this.target.setOpacity(stack.getOpacity()); 5684 this._opacity = _opacity; 5685 } 5686 5687 var _transform = stack.container.style.transform; 5688 if (_transform !== null) { 5689 this.target.transform(stack.container.bounds.left + _transform.transformOrigin[0].value, stack.container.bounds.top + _transform.transformOrigin[1].value, _transform.transform, function () { 5690 return _this4.renderStackContent(stack); 5691 }); 5692 } else { 5693 this.renderStackContent(stack); 5694 } 5695 } 5696 } 5697 }, { 5698 key: 'renderStackContent', 5699 value: function renderStackContent(stack) { 5700 var _splitStackingContext = splitStackingContexts(stack), 5701 _splitStackingContext2 = _slicedToArray(_splitStackingContext, 5), 5702 negativeZIndex = _splitStackingContext2[0], 5703 zeroOrAutoZIndexOrTransformedOrOpacity = _splitStackingContext2[1], 5704 positiveZIndex = _splitStackingContext2[2], 5705 nonPositionedFloats = _splitStackingContext2[3], 5706 nonPositionedInlineLevel = _splitStackingContext2[4]; 5707 5708 var _splitDescendants = splitDescendants(stack), 5709 _splitDescendants2 = _slicedToArray(_splitDescendants, 2), 5710 inlineLevel = _splitDescendants2[0], 5711 nonInlineLevel = _splitDescendants2[1]; 5712 5713 // https://www.w3.org/TR/css-position-3/#painting-order 5714 // 1. the background and borders of the element forming the stacking context. 5715 5716 5717 this.renderNodeBackgroundAndBorders(stack.container); 5718 // 2. the child stacking contexts with negative stack levels (most negative first). 5719 negativeZIndex.sort(sortByZIndex).forEach(this.renderStack, this); 5720 // 3. For all its in-flow, non-positioned, block-level descendants in tree order: 5721 this.renderNodeContent(stack.container); 5722 nonInlineLevel.forEach(this.renderNode, this); 5723 // 4. All non-positioned floating descendants, in tree order. For each one of these, 5724 // treat the element as if it created a new stacking context, but any positioned descendants and descendants 5725 // which actually create a new stacking context should be considered part of the parent stacking context, 5726 // not this new one. 5727 nonPositionedFloats.forEach(this.renderStack, this); 5728 // 5. the in-flow, inline-level, non-positioned descendants, including inline tables and inline blocks. 5729 nonPositionedInlineLevel.forEach(this.renderStack, this); 5730 inlineLevel.forEach(this.renderNode, this); 5731 // 6. All positioned, opacity or transform descendants, in tree order that fall into the following categories: 5732 // All positioned descendants with 'z-index: auto' or 'z-index: 0', in tree order. 5733 // For those with 'z-index: auto', treat the element as if it created a new stacking context, 5734 // but any positioned descendants and descendants which actually create a new stacking context should be 5735 // considered part of the parent stacking context, not this new one. For those with 'z-index: 0', 5736 // treat the stacking context generated atomically. 5737 // 5738 // All opacity descendants with opacity less than 1 5739 // 5740 // All transform descendants with transform other than none 5741 zeroOrAutoZIndexOrTransformedOrOpacity.forEach(this.renderStack, this); 5742 // 7. Stacking contexts formed by positioned descendants with z-indices greater than or equal to 1 in z-index 5743 // order (smallest first) then tree order.
5744 positiveZIndex.sort(sortByZIndex).forEach(this.renderStack, this); 5745 } 5746 }, { 5747 key: 'render', 5748 value: function render(stack) { 5749 if (this.options.backgroundColor) { 5750 this.target.rectangle(this.options.x, this.options.y, this.options.width, this.options.height, this.options.backgroundColor); 5751 } 5752 this.renderStack(stack); 5753 var target = this.target.getTarget(); 5754 return target; 5755 } 5756 }]); 5757 5758 return Renderer; 5759}(); 5760 5761exports.default = Renderer; 5762 5763 5764var splitDescendants = function splitDescendants(stack) { 5765 var inlineLevel = []; 5766 var nonInlineLevel = []; 5767 5768 var length = stack.children.length; 5769 for (var i = 0; i < length; i++) { 5770 var child = stack.children[i]; 5771 if (child.isInlineLevel()) { 5772 inlineLevel.push(child); 5773 } else { 5774 nonInlineLevel.push(child); 5775 } 5776 } 5777 return [inlineLevel, nonInlineLevel]; 5778}; 5779 5780var splitStackingContexts = function splitStackingContexts(stack) { 5781 var negativeZIndex = []; 5782 var zeroOrAutoZIndexOrTransformedOrOpacity = []; 5783 var positiveZIndex = []; 5784 var nonPositionedFloats = []; 5785 var nonPositionedInlineLevel = []; 5786 var length = stack.contexts.length; 5787 for (var i = 0; i < length; i++) { 5788 var child = stack.contexts[i]; 5789 if (child.container.isPositioned() || child.container.style.opacity < 1 || child.container.isTransformed()) { 5790 if (child.container.style.zIndex.order < 0) { 5791 negativeZIndex.push(child); 5792 } else if (child.container.style.zIndex.order > 0) { 5793 positiveZIndex.push(child); 5794 } else { 5795 zeroOrAutoZIndexOrTransformedOrOpacity.push(child); 5796 } 5797 } else { 5798 if (child.container.isFloating()) { 5799 nonPositionedFloats.push(child); 5800 } else { 5801 nonPositionedInlineLevel.push(child); 5802 } 5803 } 5804 } 5805 return [negativeZIndex, zeroOrAutoZIndexOrTransformedOrOpacity, positiveZIndex, nonPositionedFloats, nonPositionedInlineLevel]; 5806}; 5807 5808var sortByZIndex = function sortByZIndex(a, b) { 5809 if (a.container.style.zIndex.order > b.container.style.zIndex.order) { 5810 return 1; 5811 } else if (a.container.style.zIndex.order < b.container.style.zIndex.order) { 5812 return -1; 5813 } 5814 5815 return a.container.index > b.container.index ? 1 : -1; 5816}; 5817}); 5818 5819unwrapExports(Renderer_1); 5820 5821var _Proxy = createCommonjsModule(function (module, exports) { 5822Object.defineProperty(exports, "__esModule", { 5823 value: true 5824}); 5825exports.Proxy = undefined; 5826 5827 5828 5829var _Feature2 = _interopRequireDefault(Feature); 5830 5831function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 5832 5833var Proxy = exports.Proxy = function Proxy(src, options) { 5834 if (!options.proxy) { 5835 return Promise.reject(null); 5836 } 5837 var proxy = options.proxy; 5838 5839 return new Promise(function (resolve, reject) { 5840 var responseType = _Feature2.default.SUPPORT_CORS_XHR && _Feature2.default.SUPPORT_RESPONSE_TYPE ? 'blob' : 'text'; 5841 var xhr = _Feature2.default.SUPPORT_CORS_XHR ? new XMLHttpRequest() : new XDomainRequest(); 5842 xhr.onload = function () { 5843 if (xhr instanceof XMLHttpRequest) { 5844 if (xhr.status === 200) { 5845 if (responseType === 'text') { 5846 resolve(xhr.response); 5847 } else { 5848 var reader = new FileReader(); 5849 // $FlowFixMe 5850 reader.addEventListener('load', function () { 5851 return resolve(reader.result); 5852 }, false); 5853 // $FlowFixMe 5854 reader.addEventListener('error', function (e) { 5855 return reject(e); 5856 }, false); 5857 reader.readAsDataURL(xhr.response); 5858 } 5859 } else { 5860 reject(''); 5861 } 5862 } else { 5863 resolve(xhr.responseText); 5864 } 5865 }; 5866 5867 xhr.onerror = reject; 5868 xhr.open('GET', proxy + '?url=' + encodeURIComponent(src) + '&responseType=' + responseType); 5869 5870 if (responseType !== 'text' && xhr instanceof XMLHttpRequest) { 5871 xhr.responseType = responseType; 5872 } 5873 5874 if (options.imageTimeout) { 5875 var timeout = options.imageTimeout; 5876 xhr.timeout = timeout; 5877 xhr.ontimeout = function () { 5878 return reject(''); 5879 }; 5880 } 5881 5882 xhr.send(); 5883 });
5884}; 5885}); 5886 5887unwrapExports(_Proxy); 5888var _Proxy_1 = _Proxy.Proxy; 5889 5890var ResourceLoader_1 = createCommonjsModule(function (module, exports) { 5891Object.defineProperty(exports, "__esModule", { 5892 value: true 5893}); 5894exports.ResourceStore = undefined; 5895 5896var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); 5897 5898 5899 5900var _Feature2 = _interopRequireDefault(Feature); 5901 5902 5903 5904function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 5905 5906function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 5907 5908var ResourceLoader = function () { 5909 function ResourceLoader(options, logger, window) { 5910 _classCallCheck(this, ResourceLoader); 5911 5912 this.options = options; 5913 this._window = window; 5914 this.origin = this.getOrigin(window.location.href); 5915 this.cache = {}; 5916 this.logger = logger; 5917 this._index = 0; 5918 } 5919 5920 _createClass(ResourceLoader, [{ 5921 key: 'loadImage', 5922 value: function loadImage(src) { 5923 var _this = this; 5924 5925 if (this.hasResourceInCache(src)) { 5926 return src; 5927 } 5928 if (isBlobImage(src)) { 5929 this.cache[src] = _loadImage(src, this.options.imageTimeout || 0); 5930 return src; 5931 } 5932 5933 if (!isSVG(src) || _Feature2.default.SUPPORT_SVG_DRAWING) { 5934 if (this.options.allowTaint === true || isInlineImage(src) || this.isSameOrigin(src)) { 5935 return this.addImage(src, src, false); 5936 } else if (!this.isSameOrigin(src)) { 5937 if (typeof this.options.proxy === 'string') { 5938 this.cache[src] = (0, _Proxy.Proxy)(src, this.options).then(function (src) { 5939 return _loadImage(src, _this.options.imageTimeout || 0); 5940 }); 5941 return src; 5942 } else if (this.options.useCORS === true && _Feature2.default.SUPPORT_CORS_IMAGES) { 5943 return this.addImage(src, src, true); 5944 } 5945 } 5946 } 5947 } 5948 }, { 5949 key: 'inlineImage', 5950 value: function inlineImage(src) { 5951 var _this2 = this; 5952 5953 if (isInlineImage(src)) { 5954 return _loadImage(src, this.options.imageTimeout || 0); 5955 } 5956 if (this.hasResourceInCache(src)) { 5957 return this.cache[src]; 5958 } 5959 if (!this.isSameOrigin(src) && typeof this.options.proxy === 'string') { 5960 return this.cache[src] = (0, _Proxy.Proxy)(src, this.options).then(function (src) { 5961 return _loadImage(src, _this2.options.imageTimeout || 0); 5962 }); 5963 } 5964 5965 return this.xhrImage(src); 5966 } 5967 }, { 5968 key: 'xhrImage', 5969 value: function xhrImage(src) { 5970 var _this3 = this; 5971 5972 this.cache[src] = new Promise(function (resolve, reject) { 5973 var xhr = new XMLHttpRequest(); 5974 xhr.onreadystatechange = function () { 5975 if (xhr.readyState === 4) { 5976 if (xhr.status !== 200) { 5977 reject('Failed to fetch image ' + src.substring(0, 256) + ' with status code ' + xhr.status); 5978 } else { 5979 var reader = new FileReader(); 5980 reader.addEventListener('load', function () { 5981 // $FlowFixMe 5982 var result = reader.result; 5983 resolve(result); 5984 }, false); 5985 reader.addEventListener('error', function (e) { 5986 return reject(e); 5987 }, false);
5988 reader.readAsDataURL(xhr.response); 5989 } 5990 } 5991 }; 5992 xhr.responseType = 'blob'; 5993 if (_this3.options.imageTimeout) { 5994 var timeout = _this3.options.imageTimeout; 5995 xhr.timeout = timeout; 5996 xhr.ontimeout = function () { 5997 return reject(''); 5998 }; 5999 } 6000 xhr.open('GET', src, true); 6001 xhr.send(); 6002 }).then(function (src) { 6003 return _loadImage(src, _this3.options.imageTimeout || 0); 6004 }); 6005 6006 return this.cache[src]; 6007 } 6008 }, { 6009 key: 'loadCanvas', 6010 value: function loadCanvas(node) { 6011 var key = String(this._index++); 6012 this.cache[key] = Promise.resolve(node); 6013 return key; 6014 } 6015 }, { 6016 key: 'hasResourceInCache', 6017 value: function hasResourceInCache(key) { 6018 return typeof this.cache[key] !== 'undefined'; 6019 } 6020 }, { 6021 key: 'addImage', 6022 value: function addImage(key, src, useCORS) { 6023 var _this4 = this; 6024 6025 var imageLoadHandler = function imageLoadHandler(supportsDataImages) { 6026 return new Promise(function (resolve, reject) { 6027 var img = new Image(); 6028 img.onload = function () { 6029 return resolve(img); 6030 }; 6031 //ios safari 10.3 taints canvas with data urls unless crossOrigin is set to anonymous 6032 if (!supportsDataImages || useCORS) { 6033 img.crossOrigin = 'anonymous'; 6034 } 6035 6036 img.onerror = reject; 6037 img.src = src; 6038 if (img.complete === true) { 6039 // Inline XML images may fail to parse, throwing an Error later on 6040 setTimeout(function () { 6041 resolve(img); 6042 }, 500); 6043 } 6044 if (_this4.options.imageTimeout) { 6045 var timeout = _this4.options.imageTimeout; 6046 setTimeout(function () { 6047 return reject(''); 6048 }, timeout); 6049 } 6050 }); 6051 }; 6052 6053 this.cache[key] = isInlineBase64Image(src) && !isSVG(src) ? // $FlowFixMe 6054 _Feature2.default.SUPPORT_BASE64_DRAWING(src).then(imageLoadHandler) : imageLoadHandler(true); 6055 return key; 6056 } 6057 }, { 6058 key: 'isSameOrigin', 6059 value: function isSameOrigin(url) { 6060 return this.getOrigin(url) === this.origin; 6061 } 6062 }, { 6063 key: 'getOrigin', 6064 value: function getOrigin(url) { 6065 var link = this._link || (this._link = this._window.document.createElement('a')); 6066 link.href = url; 6067 link.href = link.href; // IE9, LOL! - http://jsfiddle.net/niklasvh/2e48b/ 6068 return link.protocol + link.hostname + link.port; 6069 } 6070 }, { 6071 key: 'ready', 6072 value: function ready() { 6073 var _this5 = this; 6074 6075 var keys = Object.keys(this.cache); 6076 var values = keys.map(function (str) { 6077 return _this5.cache[str].catch(function (e) { 6078 return null; 6079 }); 6080 }); 6081 return Promise.all(values).then(function (images) { 6082 return new ResourceStore(keys, images); 6083 }); 6084 } 6085 }]); 6086 6087 return ResourceLoader; 6088}(); 6089 6090exports.default = ResourceLoader; 6091 6092var ResourceStore = exports.ResourceStore = function () { 6093 function ResourceStore(keys, resources) { 6094 _classCallCheck(this, ResourceStore); 6095 6096 this._keys = keys; 6097 this._resources = resources; 6098 } 6099 6100 _createClass(ResourceStore, [{ 6101 key: 'get', 6102 value: function get(key) { 6103 var index = this._keys.indexOf(key); 6104 return index === -1 ? null : this._resources[index]; 6105 } 6106 }]); 6107 6108 return ResourceStore; 6109}();
6110 6111var INLINE_SVG = /^data:image\/svg\+xml/i; 6112var INLINE_BASE64 = /^data:image\/.*;base64,/i; 6113var INLINE_IMG = /^data:image\/.*/i; 6114 6115var isInlineImage = function isInlineImage(src) { 6116 return INLINE_IMG.test(src); 6117}; 6118var isInlineBase64Image = function isInlineBase64Image(src) { 6119 return INLINE_BASE64.test(src); 6120}; 6121var isBlobImage = function isBlobImage(src) { 6122 return src.substr(0, 4) === 'blob'; 6123}; 6124 6125var isSVG = function isSVG(src) { 6126 return src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src); 6127}; 6128 6129var _loadImage = function _loadImage(src, timeout) { 6130 return new Promise(function (resolve, reject) { 6131 var img = new Image(); 6132 img.onload = function () { 6133 return resolve(img); 6134 }; 6135 img.onerror = reject; 6136 img.src = src; 6137 if (img.complete === true) { 6138 // Inline XML images may fail to parse, throwing an Error later on 6139 setTimeout(function () { 6140 resolve(img); 6141 }, 500); 6142 } 6143 if (timeout) { 6144 setTimeout(function () { 6145 return reject(''); 6146 }, timeout); 6147 } 6148 }); 6149}; 6150}); 6151 6152unwrapExports(ResourceLoader_1); 6153var ResourceLoader_2 = ResourceLoader_1.ResourceStore; 6154 6155var PseudoNodeContent = createCommonjsModule(function (module, exports) { 6156Object.defineProperty(exports, "__esModule", { 6157 value: true 6158}); 6159exports.parseContent = exports.resolvePseudoContent = exports.popCounters = exports.parseCounterReset = exports.TOKEN_TYPE = exports.PSEUDO_CONTENT_ITEM_TYPE = undefined; 6160 6161var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); 6162 6163 6164 6165 6166 6167var PSEUDO_CONTENT_ITEM_TYPE = exports.PSEUDO_CONTENT_ITEM_TYPE = { 6168 TEXT: 0, 6169 IMAGE: 1 6170}; 6171 6172var TOKEN_TYPE = exports.TOKEN_TYPE = { 6173 STRING: 0, 6174 ATTRIBUTE: 1, 6175 URL: 2, 6176 COUNTER: 3, 6177 COUNTERS: 4, 6178 OPENQUOTE: 5, 6179 CLOSEQUOTE: 6 6180}; 6181 6182var parseCounterReset = exports.parseCounterReset = function parseCounterReset(style, data) { 6183 if (!style || !style.counterReset || style.counterReset === 'none') { 6184 return []; 6185 } 6186 6187 var counterNames = []; 6188 var counterResets = style.counterReset.split(/\s*,\s*/); 6189 var lenCounterResets = counterResets.length; 6190 6191 for (var i = 0; i < lenCounterResets; i++) { 6192 var _counterResets$i$spli = counterResets[i].split(/\s+/), 6193 _counterResets$i$spli2 = _slicedToArray(_counterResets$i$spli, 2), 6194 counterName = _counterResets$i$spli2[0], 6195 initialValue = _counterResets$i$spli2[1]; 6196 6197 counterNames.push(counterName); 6198 var counter = data.counters[counterName]; 6199 if (!counter) { 6200 counter = data.counters[counterName] = []; 6201 } 6202 counter.push(parseInt(initialValue || 0, 10)); 6203 } 6204 6205 return counterNames; 6206}; 6207 6208var popCounters = exports.popCounters = function popCounters(counterNames, data) { 6209 var lenCounters = counterNames.length; 6210 for (var i = 0; i < lenCounters; i++) { 6211 data.counters[counterNames[i]].pop(); 6212 } 6213}; 6214 6215var resolvePseudoContent = exports.resolvePseudoContent = function resolvePseudoContent(node, style, data) { 6216 if (!style || !style.content || style.content === 'none' || style.content === '-moz-alt-content' || style.display === 'none') { 6217 return null; 6218 } 6219 6220 var tokens = parseContent(style.content); 6221 6222 var len = tokens.length; 6223 var contentItems = []; 6224 var s = ''; 6225 6226 // increment the counter (if there is a "counter-increment" declaration) 6227 var counterIncrement = style.counterIncrement; 6228 if (counterIncrement && counterIncrement !== 'none') { 6229 var _counterIncrement$spl = counterIncrement.split(/\s+/), 6230 _counterIncrement$spl2 = _slicedToArray(_counterIncrement$spl, 2), 6231 counterName = _counterIncrement$spl2[0], 6232 incrementValue = _counterIncrement$spl2[1]; 6233 6234 var counter = data.counters[counterName]; 6235 if (counter) { 6236 counter[counter.length - 1] += incrementValue === undefined ? 1 : parseInt(incrementValue, 10); 6237 } 6238 } 6239 6240 // build the content string 6241 for (var i = 0; i < len; i++) { 6242 var token = tokens[i]; 6243 switch (token.type) { 6244 case TOKEN_TYPE.STRING: 6245 s += token.value || ''; 6246 break; 6247 6248 case TOKEN_TYPE.ATTRIBUTE: 6249 if (node instanceof HTMLElement && token.value) { 6250 s += node.getAttribute(token.value) || ''; 6251 } 6252 break; 6253 6254 case TOKEN_TYPE.COUNTER: 6255 var _counter = data.counters[token.name || '']; 6256 if (_counter) { 6257 s += formatCounterValue([_counter[_counter.length - 1]], '', token.format); 6258 } 6259 break; 6260 6261 case TOKEN_TYPE.COUNTERS: 6262 var _counters = data.counters[token.name || '']; 6263 if (_counters) { 6264 s += formatCounterValue(_counters, token.glue, token.format); 6265 } 6266 break; 6267 6268 case TOKEN_TYPE.OPENQUOTE: 6269 s += getQuote(style, true, data.quoteDepth); 6270 data.quoteDepth++; 6271 break; 6272 6273 case TOKEN_TYPE.CLOSEQUOTE: 6274 data.quoteDepth--; 6275 s += getQuote(style, false, data.quoteDepth); 6276 break; 6277 6278 case TOKEN_TYPE.URL: 6279 if (s) { 6280 contentItems.push({ type: PSEUDO_CONTENT_ITEM_TYPE.TEXT, value: s }); 6281 s = ''; 6282 } 6283 contentItems.push({ type: PSEUDO_CONTENT_ITEM_TYPE.IMAGE, value: token.value || '' }); 6284 break; 6285 } 6286 } 6287 6288 if (s) { 6289 contentItems.push({ type: PSEUDO_CONTENT_ITEM_TYPE.TEXT, value: s }); 6290 } 6291 6292 return contentItems; 6293}; 6294 6295var parseContent = exports.parseContent = function parseContent(content, cache) { 6296 if (cache && cache[content]) { 6297 return cache[content]; 6298 } 6299 6300 var tokens = []; 6301 var len = content.length; 6302 6303 var isString = false; 6304 var isEscaped = false; 6305 var isFunction = false; 6306 var str = ''; 6307 var functionName = ''; 6308 var args = []; 6309 6310 for (var i = 0; i < len; i++) { 6311 var c = content.charAt(i); 6312 6313 switch (c) {
6314 case "'": 6315 case '"': 6316 if (isEscaped) { 6317 str += c; 6318 } else { 6319 isString = !isString; 6320 if (!isFunction && !isString) { 6321 tokens.push({ type: TOKEN_TYPE.STRING, value: str }); 6322 str = ''; 6323 } 6324 } 6325 break; 6326 6327 case '\\': 6328 if (isEscaped) { 6329 str += c; 6330 isEscaped = false; 6331 } else { 6332 isEscaped = true; 6333 } 6334 break; 6335 6336 case '(': 6337 if (isString) { 6338 str += c; 6339 } else { 6340 isFunction = true; 6341 functionName = str; 6342 str = ''; 6343 args = []; 6344 } 6345 break; 6346 6347 case ')': 6348 if (isString) { 6349 str += c; 6350 } else if (isFunction) { 6351 if (str) { 6352 args.push(str); 6353 } 6354 6355 switch (functionName) { 6356 case 'attr': 6357 if (args.length > 0) { 6358 tokens.push({ type: TOKEN_TYPE.ATTRIBUTE, value: args[0] }); 6359 } 6360 break; 6361 6362 case 'counter': 6363 if (args.length > 0) { 6364 var counter = { 6365 type: TOKEN_TYPE.COUNTER, 6366 name: args[0] 6367 }; 6368 if (args.length > 1) { 6369 counter.format = args[1]; 6370 } 6371 tokens.push(counter); 6372 } 6373 break; 6374 6375 case 'counters': 6376 if (args.length > 0) { 6377 var _counters2 = { 6378 type: TOKEN_TYPE.COUNTERS, 6379 name: args[0] 6380 }; 6381 if (args.length > 1) { 6382 _counters2.glue = args[1]; 6383 } 6384 if (args.length > 2) { 6385 _counters2.format = args[2]; 6386 } 6387 tokens.push(_counters2); 6388 } 6389 break; 6390 6391 case 'url': 6392 if (args.length > 0) { 6393 tokens.push({ type: TOKEN_TYPE.URL, value: args[0] }); 6394 } 6395 break; 6396 } 6397 6398 isFunction = false; 6399 str = ''; 6400 } 6401 break; 6402 6403 case ',': 6404 if (isString) { 6405 str += c; 6406 } else if (isFunction) { 6407 args.push(str); 6408 str = ''; 6409 } 6410 break; 6411 6412 case ' ': 6413 case '\t': 6414 if (isString) { 6415 str += c; 6416 } else if (str) { 6417 addOtherToken(tokens, str); 6418 str = ''; 6419 } 6420 break; 6421 6422 default: 6423 str += c; 6424 } 6425 6426 if (c !== '\\') { 6427 isEscaped = false; 6428 } 6429 } 6430 6431 if (str) { 6432 addOtherToken(tokens, str); 6433 } 6434 6435 if (cache) { 6436 cache[content] = tokens; 6437 } 6438 6439 return tokens; 6440}; 6441 6442var addOtherToken = function addOtherToken(tokens, identifier) { 6443 switch (identifier) { 6444 case 'open-quote': 6445 tokens.push({ type: TOKEN_TYPE.OPENQUOTE }); 6446 break; 6447 case 'close-quote': 6448 tokens.push({ type: TOKEN_TYPE.CLOSEQUOTE }); 6449 break; 6450 } 6451}; 6452 6453var getQuote = function getQuote(style, isOpening, quoteDepth) { 6454 var quotes = style.quotes ? style.quotes.split(/\s+/) : ["'\"'", "'\"'"]; 6455 var idx = quoteDepth * 2; 6456 if (idx >= quotes.length) { 6457 idx = quotes.length - 2; 6458 } 6459 if (!isOpening) { 6460 ++idx; 6461 } 6462 return quotes[idx].replace(/^["']|["']$/g, ''); 6463};
6464 6465var formatCounterValue = function formatCounterValue(counter, glue, format) { 6466 var len = counter.length; 6467 var result = ''; 6468 6469 for (var i = 0; i < len; i++) { 6470 if (i > 0) { 6471 result += glue || ''; 6472 } 6473 result += (0, ListItem.createCounterText)(counter[i], (0, listStyle.parseListStyleType)(format || 'decimal'), false); 6474 } 6475 6476 return result; 6477}; 6478}); 6479 6480unwrapExports(PseudoNodeContent); 6481var PseudoNodeContent_1 = PseudoNodeContent.parseContent; 6482var PseudoNodeContent_2 = PseudoNodeContent.resolvePseudoContent; 6483var PseudoNodeContent_3 = PseudoNodeContent.popCounters; 6484var PseudoNodeContent_4 = PseudoNodeContent.parseCounterReset; 6485var PseudoNodeContent_5 = PseudoNodeContent.TOKEN_TYPE; 6486var PseudoNodeContent_6 = PseudoNodeContent.PSEUDO_CONTENT_ITEM_TYPE; 6487 6488var Clone = createCommonjsModule(function (module, exports) { 6489Object.defineProperty(exports, "__esModule", { 6490 value: true 6491}); 6492exports.cloneWindow = exports.DocumentCloner = undefined; 6493 6494var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); 6495 6496var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); 6497 6498 6499 6500 6501 6502 6503 6504var _ResourceLoader2 = _interopRequireDefault(ResourceLoader_1); 6505 6506 6507 6508 6509 6510 6511 6512var _CanvasRenderer2 = _interopRequireDefault(CanvasRenderer_1); 6513 6514 6515 6516function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 6517 6518function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 6519 6520var IGNORE_ATTRIBUTE = 'data-html2canvas-ignore'; 6521 6522var DocumentCloner = exports.DocumentCloner = function () { 6523 function DocumentCloner(element, options, logger, copyInline, renderer) { 6524 _classCallCheck(this, DocumentCloner); 6525 6526 this.referenceElement = element; 6527 this.scrolledElements = []; 6528 this.copyStyles = copyInline; 6529 this.inlineImages = copyInline; 6530 this.logger = logger; 6531 this.options = options; 6532 this.renderer = renderer; 6533 this.resourceLoader = new _ResourceLoader2.default(options, logger, window); 6534 this.pseudoContentData = { 6535 counters: {}, 6536 quoteDepth: 0 6537 }; 6538 // $FlowFixMe 6539 this.documentElement = this.cloneNode(element.ownerDocument.documentElement); 6540 } 6541 6542 _createClass(DocumentCloner, [{ 6543 key: 'inlineAllImages', 6544 value: function inlineAllImages(node) { 6545 var _this = this; 6546 6547 if (this.inlineImages && node) { 6548 var style = node.style; 6549 Promise.all((0, background.parseBackgroundImage)(style.backgroundImage).map(function (backgroundImage) { 6550 if (backgroundImage.method === 'url') { 6551 return _this.resourceLoader.inlineImage(backgroundImage.args[0]).then(function (img) { 6552 return img && typeof img.src === 'string' ? 'url("' + img.src + '")' : 'none'; 6553 }).catch(function (e) { 6554 6555 }); 6556 } 6557 return Promise.resolve('' + backgroundImage.prefix + backgroundImage.method + '(' + backgroundImage.args.join(',') + ')'); 6558 })).then(function (backgroundImages) { 6559 if (backgroundImages.length > 1) { 6560 // TODO Multiple backgrounds somehow broken in Chrome 6561 style.backgroundColor = ''; 6562 } 6563 style.backgroundImage = backgroundImages.join(','); 6564 }); 6565 6566 if (node instanceof HTMLImageElement) { 6567 this.resourceLoader.inlineImage(node.src).then(function (img) { 6568 if (img && node instanceof HTMLImageElement && node.parentNode) { 6569 var parentNode = node.parentNode;
6570 var clonedChild = (0, Util.copyCSSStyles)(node.style, img.cloneNode(false)); 6571 parentNode.replaceChild(clonedChild, node); 6572 } 6573 }).catch(function (e) { 6574 6575 }); 6576 } 6577 } 6578 } 6579 }, { 6580 key: 'inlineFonts', 6581 value: function inlineFonts(document) { 6582 var _this2 = this; 6583 6584 return Promise.all(Array.from(document.styleSheets).map(function (sheet) { 6585 if (sheet.href) { 6586 return fetch(sheet.href).then(function (res) { 6587 return res.text(); 6588 }).then(function (text) { 6589 return createStyleSheetFontsFromText(text, sheet.href); 6590 }).catch(function (e) { 6591 return []; 6592 }); 6593 } 6594 return getSheetFonts(sheet, document); 6595 })).then(function (fonts) { 6596 return fonts.reduce(function (acc, font) { 6597 return acc.concat(font); 6598 }, []); 6599 }).then(function (fonts) { 6600 return Promise.all(fonts.map(function (font) { 6601 return fetch(font.formats[0].src).then(function (response) { 6602 return response.blob(); 6603 }).then(function (blob) { 6604 return new Promise(function (resolve, reject) { 6605 var reader = new FileReader(); 6606 reader.onerror = reject; 6607 reader.onload = function () { 6608 // $FlowFixMe 6609 var result = reader.result; 6610 resolve(result); 6611 }; 6612 reader.readAsDataURL(blob); 6613 }); 6614 }).then(function (dataUri) { 6615 font.fontFace.setProperty('src', 'url("' + dataUri + '")'); 6616 return '@font-face {' + font.fontFace.cssText + ' '; 6617 }); 6618 })); 6619 }).then(function (fontCss) { 6620 var style = document.createElement('style'); 6621 style.textContent = fontCss.join('\n'); 6622 _this2.documentElement.appendChild(style); 6623 }); 6624 } 6625 }, { 6626 key: 'createElementClone', 6627 value: function createElementClone(node) { 6628 var _this3 = this; 6629 6630 if (this.copyStyles && node instanceof HTMLCanvasElement) { 6631 var img = node.ownerDocument.createElement('img'); 6632 try { 6633 img.src = node.toDataURL(); 6634 return img; 6635 } catch (e) { 6636 6637 } 6638 } 6639 6640 if (node instanceof HTMLIFrameElement) { 6641 var tempIframe = node.cloneNode(false); 6642 var iframeKey = generateIframeKey(); 6643 tempIframe.setAttribute('data-html2canvas-internal-iframe-key', iframeKey); 6644 6645 var _parseBounds = (0, Bounds_1.parseBounds)(node, 0, 0), 6646 width = _parseBounds.width, 6647 height = _parseBounds.height; 6648 6649 this.resourceLoader.cache[iframeKey] = getIframeDocumentElement(node, this.options).then(function (documentElement) { 6650 return _this3.renderer(documentElement, { 6651 async: _this3.options.async, 6652 allowTaint: _this3.options.allowTaint, 6653 backgroundColor: '#ffffff', 6654 canvas: null, 6655 imageTimeout: _this3.options.imageTimeout, 6656 logging: _this3.options.logging, 6657 proxy: _this3.options.proxy, 6658 removeContainer: _this3.options.removeContainer, 6659 scale: _this3.options.scale, 6660 foreignObjectRendering: _this3.options.foreignObjectRendering, 6661 useCORS: _this3.options.useCORS, 6662 target: new _CanvasRenderer2.default(), 6663 width: width, 6664 height: height, 6665 x: 0, 6666 y: 0, 6667 windowWidth: documentElement.ownerDocument.defaultView.innerWidth, 6668 windowHeight: documentElement.ownerDocument.defaultView.innerHeight, 6669 scrollX: documentElement.ownerDocument.defaultView.pageXOffset, 6670 scrollY: documentElement.ownerDocument.defaultView.pageYOffset 6671 }, _this3.logger.child(iframeKey)); 6672 }).then(function (canvas) { 6673 return new Promise(function (resolve, reject) { 6674 var iframeCanvas = document.createElement('img'); 6675 iframeCanvas.onload = function () { 6676 return resolve(canvas); 6677 }; 6678 iframeCanvas.onerror = reject; 6679 iframeCanvas.src = canvas.toDataURL(); 6680 if (tempIframe.parentNode) { 6681 tempIframe.parentNode.replaceChild((0, Util.copyCSSStyles)(node.ownerDocument.defaultView.getComputedStyle(node), iframeCanvas), tempIframe); 6682 } 6683 }); 6684 }); 6685 return tempIframe; 6686 } 6687 6688 if (node instanceof HTMLStyleElement && node.sheet && node.sheet.cssRules) { 6689 var css = [].slice.call(node.sheet.cssRules, 0).reduce(function (css, rule) { 6690 try { 6691 if (rule && rule.cssText) { 6692 return css + rule.cssText; 6693 } 6694 return css; 6695 } catch (err) { 6696 _this3.logger.log('Unable to access cssText property', rule.name); 6697 return css; 6698 } 6699 }, ''); 6700 var style = node.cloneNode(false); 6701 style.textContent = css; 6702 return style; 6703 } 6704 6705 return node.cloneNode(false); 6706 } 6707 }, { 6708 key: 'cloneNode', 6709 value: function cloneNode(node) { 6710 var clone = node.nodeType === Node.TEXT_NODE ? document.createTextNode(node.nodeValue) : this.createElementClone(node); 6711 6712 var window = node.ownerDocument.defaultView; 6713 var style = node instanceof window.HTMLElement ? window.getComputedStyle(node) : null; 6714 var styleBefore = node instanceof window.HTMLElement ? window.getComputedStyle(node, ':before') : null; 6715 var styleAfter = node instanceof window.HTMLElement ? window.getComputedStyle(node, ':after') : null; 6716 6717 if (this.referenceElement === node && clone instanceof window.HTMLElement) { 6718 this.clonedReferenceElement = clone; 6719 } 6720 6721 if (clone instanceof window.HTMLBodyElement) { 6722 createPseudoHideStyles(clone); 6723 } 6724 6725 var counters = (0, PseudoNodeContent.parseCounterReset)(style, this.pseudoContentData); 6726 var contentBefore = (0, PseudoNodeContent.resolvePseudoContent)(node, styleBefore, this.pseudoContentData); 6727 6728 for (var child = node.firstChild; child; child = child.nextSibling) { 6729 if (child.nodeType !== Node.ELEMENT_NODE || child.nodeName !== 'SCRIPT' && 6730 // $FlowFixMe 6731 !child.hasAttribute(IGNORE_ATTRIBUTE) && (typeof this.options.ignoreElements !== 'function' || 6732 // $FlowFixMe 6733 !this.options.ignoreElements(child))) { 6734 if (!this.copyStyles || child.nodeName !== 'STYLE') { 6735 clone.appendChild(this.cloneNode(child)); 6736 } 6737 } 6738 } 6739 6740 var contentAfter = (0, PseudoNodeContent.resolvePseudoContent)(node, styleAfter, this.pseudoContentData); 6741 (0, PseudoNodeContent.popCounters)(counters, this.pseudoContentData); 6742 6743 if (node instanceof window.HTMLElement && clone instanceof window.HTMLElement) { 6744 if (styleBefore) { 6745 this.inlineAllImages(inlinePseudoElement(node, clone, styleBefore, contentBefore, PSEUDO_BEFORE)); 6746 } 6747 if (styleAfter) { 6748 this.inlineAllImages(inlinePseudoElement(node, clone, styleAfter, contentAfter, PSEUDO_AFTER)); 6749 } 6750 if (style && this.copyStyles && !(node instanceof HTMLIFrameElement)) { 6751 (0, Util.copyCSSStyles)(style, clone); 6752 } 6753 this.inlineAllImages(clone); 6754 if (node.scrollTop !== 0 || node.scrollLeft !== 0) { 6755 this.scrolledElements.push([clone, node.scrollLeft, node.scrollTop]); 6756 } 6757 switch (node.nodeName) { 6758 case 'CANVAS': 6759 if (!this.copyStyles) { 6760 cloneCanvasContents(node, clone); 6761 } 6762 break; 6763 case 'TEXTAREA': 6764 case 'SELECT': 6765 clone.value = node.value; 6766 break; 6767 } 6768 } 6769 return clone; 6770 } 6771 }]); 6772 6773 return DocumentCloner; 6774}();
6775 6776var getSheetFonts = function getSheetFonts(sheet, document) { 6777 // $FlowFixMe 6778 return (sheet.cssRules ? Array.from(sheet.cssRules) : []).filter(function (rule) { 6779 return rule.type === CSSRule.FONT_FACE_RULE; 6780 }).map(function (rule) { 6781 var src = (0, background.parseBackgroundImage)(rule.style.getPropertyValue('src')); 6782 var formats = []; 6783 for (var i = 0; i < src.length; i++) { 6784 if (src[i].method === 'url' && src[i + 1] && src[i + 1].method === 'format') { 6785 var a = document.createElement('a'); 6786 a.href = src[i].args[0]; 6787 if (document.body) { 6788 document.body.appendChild(a); 6789 } 6790 6791 var font = { 6792 src: a.href, 6793 format: src[i + 1].args[0] 6794 }; 6795 formats.push(font); 6796 } 6797 } 6798 6799 return { 6800 // TODO select correct format for browser), 6801 6802 formats: formats.filter(function (font) { 6803 return (/^woff/i.test(font.format) 6804 ); 6805 }), 6806 fontFace: rule.style 6807 }; 6808 }).filter(function (font) { 6809 return font.formats.length; 6810 }); 6811}; 6812 6813var createStyleSheetFontsFromText = function createStyleSheetFontsFromText(text, baseHref) { 6814 var doc = document.implementation.createHTMLDocument(''); 6815 var base = document.createElement('base'); 6816 // $FlowFixMe 6817 base.href = baseHref; 6818 var style = document.createElement('style'); 6819 6820 style.textContent = text; 6821 if (doc.head) { 6822 doc.head.appendChild(base); 6823 } 6824 if (doc.body) { 6825 doc.body.appendChild(style); 6826 } 6827 6828 return style.sheet ? getSheetFonts(style.sheet, doc) : []; 6829}; 6830 6831var restoreOwnerScroll = function restoreOwnerScroll(ownerDocument, x, y) { 6832 if (ownerDocument.defaultView && (x !== ownerDocument.defaultView.pageXOffset || y !== ownerDocument.defaultView.pageYOffset)) { 6833 ownerDocument.defaultView.scrollTo(x, y); 6834 } 6835}; 6836 6837var cloneCanvasContents = function cloneCanvasContents(canvas, clonedCanvas) { 6838 try { 6839 if (clonedCanvas) { 6840 clonedCanvas.width = canvas.width; 6841 clonedCanvas.height = canvas.height; 6842 var ctx = canvas.getContext('2d'); 6843 var clonedCtx = clonedCanvas.getContext('2d'); 6844 if (ctx) { 6845 clonedCtx.putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0); 6846 } else { 6847 clonedCtx.drawImage(canvas, 0, 0); 6848 } 6849 } 6850 } catch (e) {} 6851}; 6852 6853var inlinePseudoElement = function inlinePseudoElement(node, clone, style, contentItems, pseudoElt) { 6854 if (!style || !style.content || style.content === 'none' || style.content === '-moz-alt-content' || style.display === 'none') { 6855 return; 6856 } 6857 6858 var anonymousReplacedElement = clone.ownerDocument.createElement('html2canvaspseudoelement'); 6859 (0, Util.copyCSSStyles)(style, anonymousReplacedElement); 6860 6861 if (contentItems) { 6862 var len = contentItems.length; 6863 for (var i = 0; i < len; i++) { 6864 var item = contentItems[i]; 6865 switch (item.type) { 6866 case PseudoNodeContent.PSEUDO_CONTENT_ITEM_TYPE.IMAGE: 6867 var img = clone.ownerDocument.createElement('img'); 6868 img.src = (0, background.parseBackgroundImage)('url(' + item.value + ')')[0].args[0]; 6869 img.style.opacity = '1'; 6870 anonymousReplacedElement.appendChild(img); 6871 break; 6872 case PseudoNodeContent.PSEUDO_CONTENT_ITEM_TYPE.TEXT: 6873 anonymousReplacedElement.appendChild(clone.ownerDocument.createTextNode(item.value)); 6874 break; 6875 } 6876 } 6877 } 6878 6879 anonymousReplacedElement.className = PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + ' ' + PSEUDO_HIDE_ELEMENT_CLASS_AFTER; 6880 clone.className += pseudoElt === PSEUDO_BEFORE ? ' ' + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE : ' ' + PSEUDO_HIDE_ELEMENT_CLASS_AFTER; 6881 if (pseudoElt === PSEUDO_BEFORE) { 6882 clone.insertBefore(anonymousReplacedElement, clone.firstChild); 6883 } else { 6884 clone.appendChild(anonymousReplacedElement); 6885 } 6886 6887 return anonymousReplacedElement; 6888}; 6889 6890var PSEUDO_BEFORE = ':before'; 6891var PSEUDO_AFTER = ':after'; 6892var PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = '___html2canvas___pseudoelement_before'; 6893var PSEUDO_HIDE_ELEMENT_CLASS_AFTER = '___html2canvas___pseudoelement_after'; 6894 6895var PSEUDO_HIDE_ELEMENT_STYLE = '{\n content: "" !important;\n display: none !important;\n}'; 6896 6897var createPseudoHideStyles = function createPseudoHideStyles(body) { 6898 createStyles(body, '.' + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + PSEUDO_BEFORE + PSEUDO_HIDE_ELEMENT_STYLE + '\n .' + PSEUDO_HIDE_ELEMENT_CLASS_AFTER + PSEUDO_AFTER + PSEUDO_HIDE_ELEMENT_STYLE); 6899}; 6900 6901var createStyles = function createStyles(body, styles) { 6902 var style = body.ownerDocument.createElement('style'); 6903 style.innerHTML = styles; 6904 body.appendChild(style); 6905}; 6906 6907var initNode = function initNode(_ref) { 6908 var _ref2 = _slicedToArray(_ref, 3), 6909 element = _ref2[0], 6910 x = _ref2[1], 6911 y = _ref2[2]; 6912 6913 element.scrollLeft = x; 6914 element.scrollTop = y; 6915}; 6916 6917var generateIframeKey = function generateIframeKey() { 6918 return Math.ceil(Date.now() + Math.random() * 10000000).toString(16); 6919}; 6920 6921var DATA_URI_REGEXP = /^data:text\/(.+);(base64)?,(.*)$/i; 6922 6923var getIframeDocumentElement = function getIframeDocumentElement(node, options) { 6924 try { 6925 return Promise.resolve(node.contentWindow.document.documentElement); 6926 } catch (e) { 6927 return options.proxy ? (0, _Proxy.Proxy)(node.src, options).then(function (html) { 6928 var match = html.match(DATA_URI_REGEXP); 6929 if (!match) { 6930 return Promise.reject(); 6931 } 6932 6933 return match[2] === 'base64' ? window.atob(decodeURIComponent(match[3])) : decodeURIComponent(match[3]); 6934 }).then(function (html) { 6935 return createIframeContainer(node.ownerDocument, (0, Bounds_1.parseBounds)(node, 0, 0)).then(function (cloneIframeContainer) { 6936 var cloneWindow = cloneIframeContainer.contentWindow; 6937 var documentClone = cloneWindow.document; 6938 6939 documentClone.open(); 6940 documentClone.write(html); 6941 var iframeLoad = iframeLoader(cloneIframeContainer).then(function () { 6942 return documentClone.documentElement; 6943 }); 6944 6945 documentClone.close(); 6946 return iframeLoad; 6947 }); 6948 }) : Promise.reject(); 6949 } 6950}; 6951 6952var createIframeContainer = function createIframeContainer(ownerDocument, bounds) { 6953 var cloneIframeContainer = ownerDocument.createElement('iframe'); 6954 6955 cloneIframeContainer.className = 'html2canvas-container'; 6956 cloneIframeContainer.style.visibility = 'hidden'; 6957 cloneIframeContainer.style.position = 'fixed'; 6958 cloneIframeContainer.style.left = '-10000px'; 6959 cloneIframeContainer.style.top = '0px'; 6960 cloneIframeContainer.style.border = '0'; 6961 cloneIframeContainer.width = bounds.width.toString(); 6962 cloneIframeContainer.height = bounds.height.toString(); 6963 cloneIframeContainer.scrolling = 'no'; // ios won't scroll without it 6964 cloneIframeContainer.setAttribute(IGNORE_ATTRIBUTE, 'true'); 6965 if (!ownerDocument.body) { 6966 return Promise.reject(''); 6967 } 6968 6969 ownerDocument.body.appendChild(cloneIframeContainer); 6970 6971 return Promise.resolve(cloneIframeContainer); 6972};
6973 6974var iframeLoader = function iframeLoader(cloneIframeContainer) { 6975 var cloneWindow = cloneIframeContainer.contentWindow; 6976 var documentClone = cloneWindow.document; 6977 6978 return new Promise(function (resolve, reject) { 6979 cloneWindow.onload = cloneIframeContainer.onload = documentClone.onreadystatechange = function () { 6980 var interval = setInterval(function () { 6981 if (documentClone.body.childNodes.length > 0 && documentClone.readyState === 'complete') { 6982 clearInterval(interval); 6983 resolve(cloneIframeContainer); 6984 } 6985 }, 50); 6986 }; 6987 }); 6988}; 6989 6990var cloneWindow = exports.cloneWindow = function cloneWindow(ownerDocument, bounds, referenceElement, options, logger, renderer) { 6991 var cloner = new DocumentCloner(referenceElement, options, logger, false, renderer); 6992 var scrollX = ownerDocument.defaultView.pageXOffset; 6993 var scrollY = ownerDocument.defaultView.pageYOffset; 6994 6995 return createIframeContainer(ownerDocument, bounds).then(function (cloneIframeContainer) { 6996 var cloneWindow = cloneIframeContainer.contentWindow; 6997 var documentClone = cloneWindow.document; 6998 6999 /* Chrome doesn't detect relative background-images assigned in inline <style> sheets when fetched through getComputedStyle 7000 if window url is about:blank, we can assign the url to current by writing onto the document 7001 */ 7002 7003 var iframeLoad = iframeLoader(cloneIframeContainer).then(function () { 7004 cloner.scrolledElements.forEach(initNode); 7005 cloneWindow.scrollTo(bounds.left, bounds.top); 7006 if (/(iPad|iPhone|iPod)/g.test(navigator.userAgent) && (cloneWindow.scrollY !== bounds.top || cloneWindow.scrollX !== bounds.left)) { 7007 documentClone.documentElement.style.top = -bounds.top + 'px'; 7008 documentClone.documentElement.style.left = -bounds.left + 'px'; 7009 documentClone.documentElement.style.position = 'absolute'; 7010 } 7011 7012 var result = Promise.resolve([cloneIframeContainer, cloner.clonedReferenceElement, cloner.resourceLoader]); 7013 7014 var onclone = options.onclone; 7015 7016 return cloner.clonedReferenceElement instanceof cloneWindow.HTMLElement || cloner.clonedReferenceElement instanceof ownerDocument.defaultView.HTMLElement || cloner.clonedReferenceElement instanceof HTMLElement ? typeof onclone === 'function' ? Promise.resolve().then(function () { 7017 return onclone(documentClone); 7018 }).then(function () { 7019 return result; 7020 }) : result : Promise.reject(''); 7021 }); 7022 7023 documentClone.open(); 7024 documentClone.write(serializeDoctype(document.doctype) + '<html></html>'); 7025 // Chrome scrolls the parent document for some reason after the write to the cloned window??? 7026 restoreOwnerScroll(referenceElement.ownerDocument, scrollX, scrollY); 7027 documentClone.replaceChild(documentClone.adoptNode(cloner.documentElement), documentClone.documentElement); 7028 documentClone.close(); 7029 7030 return iframeLoad; 7031 }); 7032}; 7033 7034var serializeDoctype = function serializeDoctype(doctype) { 7035 var str = ''; 7036 if (doctype) { 7037 str += '<!DOCTYPE '; 7038 if (doctype.name) { 7039 str += doctype.name; 7040 } 7041 7042 if (doctype.internalSubset) { 7043 str += doctype.internalSubset; 7044 } 7045 7046 if (doctype.publicId) { 7047 str += '"' + doctype.publicId + '"'; 7048 } 7049 7050 if (doctype.systemId) { 7051 str += '"' + doctype.systemId + '"'; 7052 } 7053 7054 str += '>'; 7055 } 7056 7057 return str; 7058}; 7059}); 7060 7061unwrapExports(Clone); 7062var Clone_1 = Clone.cloneWindow; 7063var Clone_2 = Clone.DocumentCloner; 7064 7065var Window = createCommonjsModule(function (module, exports) { 7066Object.defineProperty(exports, "__esModule", { 7067 value: true 7068}); 7069exports.renderElement = undefined; 7070 7071var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); }
7071 else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); 7072 7073 7074 7075var _Logger2 = _interopRequireDefault(Logger_1); 7076 7077 7078 7079 7080 7081var _Renderer2 = _interopRequireDefault(Renderer_1); 7082 7083 7084 7085var _ForeignObjectRenderer2 = _interopRequireDefault(ForeignObjectRenderer_1); 7086 7087 7088 7089var _Feature2 = _interopRequireDefault(Feature); 7090 7091 7092 7093 7094 7095 7096 7097 7098 7099var _Color2 = _interopRequireDefault(Color_1); 7100 7101function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 7102 7103var renderElement = exports.renderElement = function renderElement(element, options, logger) { 7104 var ownerDocument = element.ownerDocument; 7105 7106 var windowBounds = new Bounds_1.Bounds(options.scrollX, options.scrollY, options.windowWidth, options.windowHeight); 7107 7108 // http://www.w3.org/TR/css3-background/#special-backgrounds 7109 var documentBackgroundColor = ownerDocument.documentElement ? new _Color2.default(getComputedStyle(ownerDocument.documentElement).backgroundColor) : Color_1.TRANSPARENT; 7110 var bodyBackgroundColor = ownerDocument.body ? new _Color2.default(getComputedStyle(ownerDocument.body).backgroundColor) : Color_1.TRANSPARENT; 7111 7112 var backgroundColor = element === ownerDocument.documentElement ? documentBackgroundColor.isTransparent() ? bodyBackgroundColor.isTransparent() ? options.backgroundColor ? new _Color2.default(options.backgroundColor) : null : bodyBackgroundColor : documentBackgroundColor : options.backgroundColor ? new _Color2.default(options.backgroundColor) : null; 7113 7114 return (options.foreignObjectRendering ? // $FlowFixMe 7115 _Feature2.default.SUPPORT_FOREIGNOBJECT_DRAWING : Promise.resolve(false)).then(function (supportForeignObject) { 7116 return supportForeignObject ? function (cloner) { 7117 return cloner.inlineFonts(ownerDocument).then(function () { 7118 return cloner.resourceLoader.ready(); 7119 }).then(function () { 7120 var renderer = new _ForeignObjectRenderer2.default(cloner.documentElement); 7121 7122 var defaultView = ownerDocument.defaultView; 7123 var scrollX = defaultView.pageXOffset; 7124 var scrollY = defaultView.pageYOffset; 7125 7126 var isDocument = element.tagName === 'HTML' || element.tagName === 'BODY'; 7127 7128 var _ref = isDocument ? (0, Bounds_1.parseDocumentSize)(ownerDocument) : (0, Bounds_1.parseBounds)(element, scrollX, scrollY), 7129 width = _ref.width, 7130 height = _ref.height, 7131 left = _ref.left, 7132 top = _ref.top; 7133 7134 return renderer.render({ 7135 backgroundColor: backgroundColor, 7136 logger: logger, 7137 scale: options.scale, 7138 x: typeof options.x === 'number' ? options.x : left, 7139 y: typeof options.y === 'number' ? options.y : top, 7140 width: typeof options.width === 'number' ? options.width : Math.ceil(width), 7141 height: typeof options.height === 'number' ? options.height : Math.ceil(height), 7142 windowWidth: options.windowWidth, 7143 windowHeight: options.windowHeight, 7144 scrollX: options.scrollX, 7145 scrollY: options.scrollY 7146 }); 7147 }); 7148 }(new Clone.DocumentCloner(element, options, logger, true, renderElement)) : (0, Clone.cloneWindow)(ownerDocument, windowBounds, element, options, logger, renderElement).then(function (_ref2) { 7149 var _ref3 = _slicedToArray(_ref2, 3), 7150 container = _ref3[0], 7151 clonedElement = _ref3[1], 7152 resourceLoader = _ref3[2]; 7153 7154 var stack = (0, NodeParser_1.NodeParser)(clonedElement, resourceLoader, logger); 7155 var clonedDocument = clonedElement.ownerDocument; 7156 7157 if (backgroundColor === stack.container.style.background.backgroundColor) { 7158 stack.container.style.background.backgroundColor = Color_1.TRANSPARENT; 7159 } 7160 7161 return resourceLoader.ready().then(function (imageStore) { 7162 var fontMetrics = new Font.FontMetrics(clonedDocument); 7163 var defaultView = clonedDocument.defaultView; 7164 var scrollX = defaultView.pageXOffset; 7165 var scrollY = defaultView.pageYOffset; 7166 7167 var isDocument = clonedElement.tagName === 'HTML' || clonedElement.tagName === 'BODY'; 7168 7169 var _ref4 = isDocument ? (0, Bounds_1.parseDocumentSize)(ownerDocument) : (0, Bounds_1.parseBounds)(clonedElement, scrollX, scrollY), 7170 width = _ref4.width, 7171 height = _ref4.height, 7172 left = _ref4.left, 7173 top = _ref4.top; 7174 7175 var renderOptions = { 7176 backgroundColor: backgroundColor, 7177 fontMetrics: fontMetrics, 7178 imageStore: imageStore, 7179 logger: logger, 7180 scale: options.scale, 7181 x: typeof options.x === 'number' ? options.x : left, 7182 y: typeof options.y === 'number' ? options.y : top, 7183 width: typeof options.width === 'number' ? options.width : Math.ceil(width), 7184 height: typeof options.height === 'number' ? options.height : Math.
7184ceil(height) 7185 }; 7186 7187 if (Array.isArray(options.target)) { 7188 return Promise.all(options.target.map(function (target) { 7189 var renderer = new _Renderer2.default(target, renderOptions); 7190 return renderer.render(stack); 7191 })); 7192 } else { 7193 var renderer = new _Renderer2.default(options.target, renderOptions); 7194 var canvas = renderer.render(stack); 7195 if (options.removeContainer === true) { 7196 if (container.parentNode) { 7197 container.parentNode.removeChild(container); 7198 } else {} 7199 } 7200 7201 return canvas; 7202 } 7203 }); 7204 }); 7205 }); 7206}; 7207}); 7208 7209unwrapExports(Window); 7210var Window_1 = Window.renderElement; 7211 7212var npm = createCommonjsModule(function (module) { 7213var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; 7214 7215 7216 7217var _CanvasRenderer2 = _interopRequireDefault(CanvasRenderer_1); 7218 7219 7220 7221var _Logger2 = _interopRequireDefault(Logger_1); 7222 7223 7224 7225function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 7226 7227var html2canvas = function html2canvas(element, conf) { 7228 var config = conf || {}; 7229 var logger = new _Logger2.default(typeof config.logging === 'boolean' ? config.logging : true); 7230 logger.log('html2canvas ' + "$npm_package_version"); 7231 7232 var ownerDocument = element.ownerDocument; 7233 if (!ownerDocument) { 7234 return Promise.reject('Provided element is not within a Document'); 7235 } 7236 var defaultView = ownerDocument.defaultView; 7237 7238 var defaultOptions = { 7239 async: true, 7240 allowTaint: false, 7241 backgroundColor: '#ffffff', 7242 imageTimeout: 15000, 7243 logging: true, 7244 proxy: null, 7245 removeContainer: true, 7246 foreignObjectRendering: false, 7247 scale: defaultView.devicePixelRatio || 1, 7248 target: new _CanvasRenderer2.default(config.canvas), 7249 useCORS: false, 7250 windowWidth: defaultView.innerWidth, 7251 windowHeight: defaultView.innerHeight, 7252 scrollX: defaultView.pageXOffset, 7253 scrollY: defaultView.pageYOffset 7254 }; 7255 7256 var result = (0, Window.renderElement)(element, _extends({}, defaultOptions, config), logger); 7257 7258 return result; 7259}; 7260 7261html2canvas.CanvasRenderer = _CanvasRenderer2.default; 7262 7263module.exports = html2canvas; 7264}); 7265 7266var html2canvas$1 = unwrapExports(npm); 7267 7268var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { 7269 return typeof obj; 7270} : function (obj) { 7271 return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; 7272}; 7273 7274 7275 7276 7277 7278 7279 7280 7281 7282 7283 7284 7285 7286 7287 7288 7289 7290 7291 7292 7293 7294var _extends = Object.assign || function (target) { 7295 for (var i = 1; i < arguments.length; i++) { 7296 var source = arguments[i]; 7297 7298 for (var key in source) { 7299 if (Object.prototype.hasOwnProperty.call(source, key)) { 7300 target[key] = source[key]; 7301 } 7302 } 7303 } 7304 7305 return target; 7306}; 7307 7308// Determine the type of a variable/object. 7309var objType = function objType(obj) { 7310 var type = typeof obj === 'undefined' ? 'undefined' : _typeof(obj); 7311 if (type === 'undefined') return 'undefined';else if (type === 'string' || obj instanceof String) return 'string';else if (type === 'number' || obj instanceof Number) return 'number';else if (type === 'function' || obj instanceof Function) return 'function';else if (!!obj && obj.constructor === Array) return 'array';else if (obj && obj.nodeType === 1) return 'element';else if (type === 'object') return 'object';else return 'unknown'; 7312}; 7313 7314// Create an HTML element with optional className, innerHTML, and style. 7315var createElement = function createElement(tagName, opt) { 7316 var el = document.createElement(tagName); 7317 if (opt.className) el.className = opt.className; 7318 if (opt.innerHTML) { 7319 el.innerHTML = opt.innerHTML; 7320 var scripts = el.getElementsByTagName('script'); 7321 for (var i = scripts.length; i-- > 0; null) { 7322 scripts[i].parentNode.removeChild(scripts[i]); 7323 } 7324 } 7325 for (var key in opt.style) { 7326 el.style[key] = opt.style[key]; 7327 } 7328 return el; 7329}; 7330 7331// Deep-clone a node and preserve contents/properties. 7332var cloneNode = function cloneNode(node, javascriptEnabled) { 7333 // Recursively clone the node. 7334 var clone = node.nodeType === 3 ? document.createTextNode(node.nodeValue) : node.cloneNode(false); 7335 for (var child = node.firstChild; child; child = child.nextSibling) { 7336 if (javascriptEnabled === true || child.nodeType !== 1 || child.nodeName !== 'SCRIPT') { 7337 clone.appendChild(cloneNode(child, javascriptEnabled)); 7338 } 7339 } 7340 7341 if (node.nodeType === 1) { 7342 // Preserve contents/properties of special nodes. 7343 if (node.nodeName === 'CANVAS') { 7344 clone.width = node.width; 7345 clone.height = node.height; 7346 clone.getContext('2d').drawImage(node, 0, 0); 7347 } else if (node.nodeName === 'TEXTAREA' || node.nodeName === 'SELECT') { 7348 clone.value = node.value; 7349 } 7350 7351 // Preserve the node's scroll position when it loads. 7352 clone.addEventListener('load', function () { 7353 clone.scrollTop = node.scrollTop; 7354 clone.scrollLeft = node.scrollLeft; 7355 }, true); 7356 } 7357
vendor: 4,646 bytes, lines 7358-7529
7358 // Return the cloned node. 7359 return clone; 7360}; 7361 7362// Convert units from px using the conversion value 'k' from jsPDF. 7363var unitConvert = function unitConvert(obj, k) { 7364 if (objType(obj) === 'number') { 7365 return obj * 72 / 96 / k; 7366 } else { 7367 var newObj = {}; 7368 for (var key in obj) { 7369 newObj[key] = obj[key] * 72 / 96 / k; 7370 } 7371 return newObj; 7372 } 7373}; 7374 7375// Convert units to px using the conversion value 'k' from jsPDF. 7376var toPx = function toPx(val, k) { 7377 return Math.floor(val * k / 72 * 96); 7378}; 7379 7380var es6Promise = createCommonjsModule(function (module, exports) { 7381/*! 7382 * @overview es6-promise - a tiny implementation of Promises/A+. 7383 * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald) 7384 * @license Licensed under MIT license 7385 * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE 7386 * @version v4.2.5+7f2b526d 7387 */ 7388 7389(function (global, factory) { 7390 module.exports = factory(); 7391}(commonjsGlobal, (function () { function objectOrFunction(x) { 7392 var type = typeof x; 7393 return x !== null && (type === 'object' || type === 'function'); 7394} 7395 7396function isFunction(x) { 7397 return typeof x === 'function'; 7398} 7399 7400 7401 7402var _isArray = void 0; 7403if (Array.isArray) { 7404 _isArray = Array.isArray; 7405} else { 7406 _isArray = function (x) { 7407 return Object.prototype.toString.call(x) === '[object Array]'; 7408 }; 7409} 7410 7411var isArray = _isArray; 7412 7413var len = 0; 7414var vertxNext = void 0; 7415var customSchedulerFn = void 0; 7416 7417var asap = function asap(callback, arg) { 7418 queue[len] = callback; 7419 queue[len + 1] = arg; 7420 len += 2; 7421 if (len === 2) { 7422 // If len is 2, that means that we need to schedule an async flush. 7423 // If additional callbacks are queued before the queue is flushed, they 7424 // will be processed by this flush that we are scheduling. 7425 if (customSchedulerFn) { 7426 customSchedulerFn(flush); 7427 } else { 7428 scheduleFlush(); 7429 } 7430 } 7431}; 7432 7433function setScheduler(scheduleFn) { 7434 customSchedulerFn = scheduleFn; 7435} 7436 7437function setAsap(asapFn) { 7438 asap = asapFn; 7439} 7440 7441var browserWindow = typeof window !== 'undefined' ? window : undefined; 7442var browserGlobal = browserWindow || {}; 7443var BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver; 7444var isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]'; 7445 7446// test for web worker but not in IE10 7447var isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined'; 7448 7449// node 7450function useNextTick() { 7451 // node version 0.10.x displays a deprecation warning when nextTick is used recursively 7452 // see https://github.com/cujojs/when/issues/410 for details 7453 return function () { 7454 return process.nextTick(flush); 7455 }; 7456} 7457 7458// vertx 7459function useVertxTimer() { 7460 if (typeof vertxNext !== 'undefined') { 7461 return function () { 7462 vertxNext(flush); 7463 }; 7464 } 7465 7466 return useSetTimeout(); 7467} 7468 7469function useMutationObserver() { 7470 var iterations = 0; 7471 var observer = new BrowserMutationObserver(flush); 7472 var node = document.createTextNode(''); 7473 observer.observe(node, { characterData: true }); 7474 7475 return function () { 7476 node.data = iterations = ++iterations % 2; 7477 }; 7478} 7479 7480// web worker 7481function useMessageChannel() { 7482 var channel = new MessageChannel(); 7483 channel.port1.onmessage = flush; 7484 return function () { 7485 return channel.port2.postMessage(0); 7486 }; 7487} 7488 7489function useSetTimeout() { 7490 // Store setTimeout reference so es6-promise will be unaffected by 7491 // other code modifying setTimeout (like sinon.useFakeTimers()) 7492 var globalSetTimeout = setTimeout; 7493 return function () { 7494 return globalSetTimeout(flush, 1); 7495 }; 7496} 7497 7498var queue = new Array(1000); 7499function flush() { 7500 for (var i = 0; i < len; i += 2) { 7501 var callback = queue[i]; 7502 var arg = queue[i + 1]; 7503 7504 callback(arg); 7505 7506 queue[i] = undefined; 7507 queue[i + 1] = undefined; 7508 } 7509 7510 len = 0; 7511} 7512 7513function attemptVertx() { 7514 try { 7515 var vertx = Function('return this')().require('vertx'); 7516 vertxNext = vertx.runOnLoop || vertx.runOnContext; 7517 return useVertxTimer(); 7518 } catch (e) { 7519 return useSetTimeout(); 7520 } 7521} 7522 7523var scheduleFlush = void 0; 7524// Decide what async method to use to triggering processing of queued callbacks: 7525if (isNode) { 7526 scheduleFlush = useNextTick(); 7527} else if (BrowserMutationObserver) { 7528 scheduleFlush = useMutationObserver(); 7529} else if (isWorker) {
vendor: 9,188 bytes, lines 7530-7912
7530 scheduleFlush = useMessageChannel(); 7531} else if (browserWindow === undefined && typeof commonjsRequire === 'function') { 7532 scheduleFlush = attemptVertx(); 7533} else { 7534 scheduleFlush = useSetTimeout(); 7535} 7536 7537function then(onFulfillment, onRejection) { 7538 var parent = this; 7539 7540 var child = new this.constructor(noop); 7541 7542 if (child[PROMISE_ID] === undefined) { 7543 makePromise(child); 7544 } 7545 7546 var _state = parent._state; 7547 7548 7549 if (_state) { 7550 var callback = arguments[_state - 1]; 7551 asap(function () { 7552 return invokeCallback(_state, child, callback, parent._result); 7553 }); 7554 } else { 7555 subscribe(parent, child, onFulfillment, onRejection); 7556 } 7557 7558 return child; 7559} 7560 7561/** 7562 `Promise.resolve` returns a promise that will become resolved with the 7563 passed `value`. It is shorthand for the following: 7564 7565 ```javascript 7566 let promise = new Promise(function(resolve, reject){ 7567 resolve(1); 7568 }); 7569 7570 promise.then(function(value){ 7571 // value === 1 7572 }); 7573 ``` 7574 7575 Instead of writing the above, your code now simply becomes the following: 7576 7577 ```javascript 7578 let promise = Promise.resolve(1); 7579 7580 promise.then(function(value){ 7581 // value === 1 7582 }); 7583 ``` 7584 7585 @method resolve 7586 @static 7587 @param {Any} value value that the returned promise will be resolved with 7588 Useful for tooling. 7589 @return {Promise} a promise that will become fulfilled with the given 7590 `value` 7591*/ 7592function resolve$1(object) { 7593 /*jshint validthis:true */ 7594 var Constructor = this; 7595 7596 if (object && typeof object === 'object' && object.constructor === Constructor) { 7597 return object; 7598 } 7599 7600 var promise = new Constructor(noop); 7601 resolve(promise, object); 7602 return promise; 7603} 7604 7605var PROMISE_ID = Math.random().toString(36).substring(2); 7606 7607function noop() {} 7608 7609var PENDING = void 0; 7610var FULFILLED = 1; 7611var REJECTED = 2; 7612 7613var TRY_CATCH_ERROR = { error: null }; 7614 7615function selfFulfillment() { 7616 return new TypeError("You cannot resolve a promise with itself"); 7617} 7618 7619function cannotReturnOwn() { 7620 return new TypeError('A promises callback cannot return that same promise.'); 7621} 7622 7623function getThen(promise) { 7624 try { 7625 return promise.then; 7626 } catch (error) { 7627 TRY_CATCH_ERROR.error = error; 7628 return TRY_CATCH_ERROR; 7629 } 7630} 7631 7632function tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) { 7633 try { 7634 then$$1.call(value, fulfillmentHandler, rejectionHandler); 7635 } catch (e) { 7636 return e; 7637 } 7638} 7639 7640function handleForeignThenable(promise, thenable, then$$1) { 7641 asap(function (promise) { 7642 var sealed = false; 7643 var error = tryThen(then$$1, thenable, function (value) { 7644 if (sealed) { 7645 return; 7646 } 7647 sealed = true; 7648 if (thenable !== value) { 7649 resolve(promise, value); 7650 } else { 7651 fulfill(promise, value); 7652 } 7653 }, function (reason) { 7654 if (sealed) { 7655 return; 7656 } 7657 sealed = true; 7658 7659 reject(promise, reason); 7660 }, 'Settle: ' + (promise._label || ' unknown promise')); 7661 7662 if (!sealed && error) { 7663 sealed = true; 7664 reject(promise, error); 7665 } 7666 }, promise); 7667} 7668 7669function handleOwnThenable(promise, thenable) { 7670 if (thenable._state === FULFILLED) { 7671 fulfill(promise, thenable._result); 7672 } else if (thenable._state === REJECTED) { 7673 reject(promise, thenable._result); 7674 } else { 7675 subscribe(thenable, undefined, function (value) { 7676 return resolve(promise, value); 7677 }, function (reason) { 7678 return reject(promise, reason); 7679 }); 7680 } 7681} 7682 7683function handleMaybeThenable(promise, maybeThenable, then$$1) { 7684 if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) { 7685 handleOwnThenable(promise, maybeThenable); 7686 } else { 7687 if (then$$1 === TRY_CATCH_ERROR) { 7688 reject(promise, TRY_CATCH_ERROR.error); 7689 TRY_CATCH_ERROR.error = null; 7690 } else if (then$$1 === undefined) { 7691 fulfill(promise, maybeThenable); 7692 } else if (isFunction(then$$1)) { 7693 handleForeignThenable(promise, maybeThenable, then$$1); 7694 } else { 7695 fulfill(promise, maybeThenable); 7696 } 7697 } 7698} 7699 7700function resolve(promise, value) { 7701 if (promise === value) { 7702 reject(promise, selfFulfillment()); 7703 } else if (objectOrFunction(value)) { 7704 handleMaybeThenable(promise, value, getThen(value)); 7705 } else { 7706 fulfill(promise, value); 7707 } 7708} 7709 7710function publishRejection(promise) { 7711 if (promise._onerror) { 7712 promise._onerror(promise._result); 7713 } 7714 7715 publish(promise); 7716} 7717 7718function fulfill(promise, value) { 7719 if (promise._state !== PENDING) { 7720 return; 7721 } 7722 7723 promise._result = value; 7724 promise._state = FULFILLED; 7725 7726 if (promise._subscribers.length !== 0) { 7727 asap(publish, promise); 7728 } 7729} 7730 7731function reject(promise, reason) { 7732 if (promise._state !== PENDING) { 7733 return; 7734 } 7735 promise._state = REJECTED; 7736 promise._result = reason; 7737 7738 asap(publishRejection, promise); 7739} 7740 7741function subscribe(parent, child, onFulfillment, onRejection) { 7742 var _subscribers = parent._subscribers; 7743 var length = _subscribers.length; 7744 7745 7746 parent._onerror = null; 7747 7748 _subscribers[length] = child; 7749 _subscribers[length + FULFILLED] = onFulfillment; 7750 _subscribers[length + REJECTED] = onRejection; 7751 7752 if (length === 0 && parent._state) { 7753 asap(publish, parent); 7754 } 7755} 7756 7757function publish(promise) { 7758 var subscribers = promise._subscribers; 7759 var settled = promise._state; 7760 7761 if (subscribers.length === 0) { 7762 return; 7763 } 7764 7765 var child = void 0, 7766 callback = void 0, 7767 detail = promise._result; 7768 7769 for (var i = 0; i < subscribers.length; i += 3) { 7770 child = subscribers[i]; 7771 callback = subscribers[i + settled]; 7772 7773 if (child) { 7774 invokeCallback(settled, child, callback, detail); 7775 } else { 7776 callback(detail); 7777 } 7778 } 7779 7780 promise._subscribers.length = 0; 7781} 7782 7783function tryCatch(callback, detail) { 7784 try { 7785 return callback(detail); 7786 } catch (e) { 7787 TRY_CATCH_ERROR.error = e; 7788 return TRY_CATCH_ERROR; 7789 } 7790} 7791 7792function invokeCallback(settled, promise, callback, detail) { 7793 var hasCallback = isFunction(callback), 7794 value = void 0, 7795 error = void 0, 7796 succeeded = void 0, 7797 failed = void 0; 7798 7799 if (hasCallback) { 7800 value = tryCatch(callback, detail); 7801 7802 if (value === TRY_CATCH_ERROR) { 7803 failed = true; 7804 error = value.error; 7805 value.error = null; 7806 } else { 7807 succeeded = true; 7808 } 7809 7810 if (promise === value) { 7811 reject(promise, cannotReturnOwn()); 7812 return; 7813 } 7814 } else { 7815 value = detail; 7816 succeeded = true; 7817 } 7818 7819 if (promise._state !== PENDING) { 7820 // noop 7821 } else if (hasCallback && succeeded) { 7822 resolve(promise, value); 7823 } else if (failed) { 7824 reject(promise, error); 7825 } else if (settled === FULFILLED) { 7826 fulfill(promise, value); 7827 } else if (settled === REJECTED) { 7828 reject(promise, value); 7829 } 7830} 7831 7832function initializePromise(promise, resolver) { 7833 try { 7834 resolver(function resolvePromise(value) { 7835 resolve(promise, value); 7836 }, function rejectPromise(reason) { 7837 reject(promise, reason); 7838 }); 7839 } catch (e) { 7840 reject(promise, e); 7841 } 7842} 7843 7844var id = 0; 7845function nextId() { 7846 return id++; 7847} 7848 7849function makePromise(promise) { 7850 promise[PROMISE_ID] = id++; 7851 promise._state = undefined; 7852 promise._result = undefined; 7853 promise._subscribers = []; 7854} 7855 7856function validationError() { 7857 return new Error('Array Methods must be provided an Array'); 7858} 7859 7860var Enumerator = function () { 7861 function Enumerator(Constructor, input) { 7862 this._instanceConstructor = Constructor; 7863 this.promise = new Constructor(noop); 7864 7865 if (!this.promise[PROMISE_ID]) { 7866 makePromise(this.promise); 7867 } 7868 7869 if (isArray(input)) { 7870 this.length = input.length; 7871 this._remaining = input.length; 7872 7873 this._result = new Array(this.length); 7874 7875 if (this.length === 0) { 7876 fulfill(this.promise, this._result); 7877 } else { 7878 this.length = this.length || 0; 7879 this._enumerate(input); 7880 if (this._remaining === 0) { 7881 fulfill(this.promise, this._result); 7882 } 7883 } 7884 } else { 7885 reject(this.promise, validationError()); 7886 } 7887 } 7888 7889 Enumerator.prototype._enumerate = function _enumerate(input) { 7890 for (var i = 0; this._state === PENDING && i < input.length; i++) { 7891 this._eachEntry(input[i], i); 7892 } 7893 }; 7894 7895 Enumerator.prototype._eachEntry = function _eachEntry(entry, i) { 7896 var c = this._instanceConstructor; 7897 var resolve$$1 = c.resolve; 7898 7899 7900 if (resolve$$1 === resolve$1) { 7901 var _then = getThen(entry); 7902 7903 if (_then === then && entry._state !== PENDING) { 7904 this._settledAt(entry._state, i, entry._result); 7905 } else if (typeof _then !== 'function') { 7906 this._remaining--; 7907 this._result[i] = entry; 7908 } else if (c === Promise$1) { 7909 var promise = new c(noop); 7910 handleMaybeThenable(promise, entry, _then); 7911 this._willSettleAt(promise, i); 7912 } else {
vendor: 3,868 bytes, lines 7913-8051
7913 this._willSettleAt(new c(function (resolve$$1) { 7914 return resolve$$1(entry); 7915 }), i); 7916 } 7917 } else { 7918 this._willSettleAt(resolve$$1(entry), i); 7919 } 7920 }; 7921 7922 Enumerator.prototype._settledAt = function _settledAt(state, i, value) { 7923 var promise = this.promise; 7924 7925 7926 if (promise._state === PENDING) { 7927 this._remaining--; 7928 7929 if (state === REJECTED) { 7930 reject(promise, value); 7931 } else { 7932 this._result[i] = value; 7933 } 7934 } 7935 7936 if (this._remaining === 0) { 7937 fulfill(promise, this._result); 7938 } 7939 }; 7940 7941 Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) { 7942 var enumerator = this; 7943 7944 subscribe(promise, undefined, function (value) { 7945 return enumerator._settledAt(FULFILLED, i, value); 7946 }, function (reason) { 7947 return enumerator._settledAt(REJECTED, i, reason); 7948 }); 7949 }; 7950 7951 return Enumerator; 7952}(); 7953 7954/** 7955 `Promise.all` accepts an array of promises, and returns a new promise which 7956 is fulfilled with an array of fulfillment values for the passed promises, or 7957 rejected with the reason of the first passed promise to be rejected. It casts all 7958 elements of the passed iterable to promises as it runs this algorithm. 7959 7960 Example: 7961 7962 ```javascript 7963 let promise1 = resolve(1); 7964 let promise2 = resolve(2); 7965 let promise3 = resolve(3); 7966 let promises = [ promise1, promise2, promise3 ]; 7967 7968 Promise.all(promises).then(function(array){ 7969 // The array here would be [ 1, 2, 3 ]; 7970 }); 7971 ``` 7972 7973 If any of the `promises` given to `all` are rejected, the first promise 7974 that is rejected will be given as an argument to the returned promises's 7975 rejection handler. For example: 7976 7977 Example: 7978 7979 ```javascript 7980 let promise1 = resolve(1); 7981 let promise2 = reject(new Error("2")); 7982 let promise3 = reject(new Error("3")); 7983 let promises = [ promise1, promise2, promise3 ]; 7984 7985 Promise.all(promises).then(function(array){ 7986 // Code here never runs because there are rejected promises! 7987 }, function(error) { 7988 // error.message === "2" 7989 }); 7990 ``` 7991 7992 @method all 7993 @static 7994 @param {Array} entries array of promises 7995 @param {String} label optional string for labeling the promise. 7996 Useful for tooling. 7997 @return {Promise} promise that is fulfilled when all `promises` have been 7998 fulfilled, or rejected if any of them become rejected. 7999 @static 8000*/ 8001function all(entries) { 8002 return new Enumerator(this, entries).promise; 8003} 8004 8005/** 8006 `Promise.race` returns a new promise which is settled in the same way as the 8007 first passed promise to settle. 8008 8009 Example: 8010 8011 ```javascript 8012 let promise1 = new Promise(function(resolve, reject){ 8013 setTimeout(function(){ 8014 resolve('promise 1'); 8015 }, 200); 8016 }); 8017 8018 let promise2 = new Promise(function(resolve, reject){ 8019 setTimeout(function(){ 8020 resolve('promise 2'); 8021 }, 100); 8022 }); 8023 8024 Promise.race([promise1, promise2]).then(function(result){ 8025 // result === 'promise 2' because it was resolved before promise1 8026 // was resolved. 8027 }); 8028 ``` 8029 8030 `Promise.race` is deterministic in that only the state of the first 8031 settled promise matters. For example, even if other promises given to the 8032 `promises` array argument are resolved, but the first settled promise has 8033 become rejected before the other promises became fulfilled, the returned 8034 promise will become rejected: 8035 8036 ```javascript 8037 let promise1 = new Promise(function(resolve, reject){ 8038 setTimeout(function(){ 8039 resolve('promise 1'); 8040 }, 200); 8041 }); 8042 8043 let promise2 = new Promise(function(resolve, reject){ 8044 setTimeout(function(){ 8045 reject(new Error('promise 2')); 8046 }, 100); 8047 }); 8048 8049 Promise.race([promise1, promise2]).then(function(result){ 8050 // Code here never runs 8051 }, function(reason){
8052 // reason.message === 'promise 2' because promise 2 became rejected before 8053 // promise 1 became fulfilled 8054 }); 8055 ``` 8056 8057 An example real-world use case is implementing timeouts: 8058 8059 ```javascript 8060 Promise.race([ajax('foo.json'), timeout(5000)]) 8061 ``` 8062 8063 @method race 8064 @static 8065 @param {Array} promises array of promises to observe 8066 Useful for tooling. 8067 @return {Promise} a promise which settles in the same way as the first passed 8068 promise to settle. 8069*/ 8070function race(entries) { 8071 /*jshint validthis:true */ 8072 var Constructor = this; 8073 8074 if (!isArray(entries)) { 8075 return new Constructor(function (_, reject) { 8076 return reject(new TypeError('You must pass an array to race.')); 8077 }); 8078 } else { 8079 return new Constructor(function (resolve, reject) { 8080 var length = entries.length; 8081 for (var i = 0; i < length; i++) { 8082 Constructor.resolve(entries[i]).then(resolve, reject); 8083 } 8084 }); 8085 } 8086} 8087 8088/** 8089 `Promise.reject` returns a promise rejected with the passed `reason`. 8090 It is shorthand for the following: 8091 8092 ```javascript 8093 let promise = new Promise(function(resolve, reject){ 8094 reject(new Error('WHOOPS')); 8095 }); 8096 8097 promise.then(function(value){ 8098 // Code here doesn't run because the promise is rejected! 8099 }, function(reason){ 8100 // reason.message === 'WHOOPS' 8101 }); 8102 ``` 8103 8104 Instead of writing the above, your code now simply becomes the following: 8105 8106 ```javascript 8107 let promise = Promise.reject(new Error('WHOOPS')); 8108 8109 promise.then(function(value){ 8110 // Code here doesn't run because the promise is rejected! 8111 }, function(reason){ 8112 // reason.message === 'WHOOPS' 8113 }); 8114 ``` 8115 8116 @method reject 8117 @static 8118 @param {Any} reason value that the returned promise will be rejected with. 8119 Useful for tooling. 8120 @return {Promise} a promise rejected with the given `reason`. 8121*/ 8122function reject$1(reason) { 8123 /*jshint validthis:true */ 8124 var Constructor = this; 8125 var promise = new Constructor(noop); 8126 reject(promise, reason); 8127 return promise; 8128} 8129 8130function needsResolver() { 8131 throw new TypeError('You must pass a resolver function as the first argument to the promise constructor'); 8132} 8133 8134function needsNew() { 8135 throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object c
8135onstructor cannot be called as a function."); 8136} 8137 8138/** 8139 Promise objects represent the eventual result of an asynchronous operation. The 8140 primary way of interacting with a promise is through its `then` method, which 8141 registers callbacks to receive either a promise's eventual value or the reason 8142 why the promise cannot be fulfilled. 8143 8144 Terminology 8145 ----------- 8146 8147 - `promise` is an object or function with a `then` method whose behavior conforms to this specification. 8148 - `thenable` is an object or function that defines a `then` method. 8149 - `value` is any legal JavaScript value (including undefined, a thenable, or a promise). 8150 - `exception` is a value that is thrown using the throw statement. 8151 - `reason` is a value that indicates why a promise was rejected. 8152 - `settled` the final resting state of a promise, fulfilled or rejected. 8153 8154 A promise can be in one of three states: pending, fulfilled, or rejected. 8155 8156 Promises that are fulfilled have a fulfillment value and are in the fulfilled 8157 state. Promises that are rejected have a rejection reason and are in the 8158 rejected state. A fulfillment value is never a thenable. 8159 8160 Promises can also be said to *resolve* a value. If this value is also a 8161 promise, then the original promise's settled state will match the value's 8162 settled state. So a promise that *resolves* a promise that rejects will 8163 itself reject, and a promise that *resolves* a promise that fulfills will 8164 itself fulfill. 8165 8166 8167 Basic Usage: 8168 ------------ 8169 8170 ```js 8171 let promise = new Promise(function(resolve, reject) { 8172 // on success 8173 resolve(value); 8174 8175 // on failure 8176 reject(reason); 8177 }); 8178 8179 promise.then(function(value) { 8180 // on fulfillment 8181 }, function(reason) { 8182 // on rejection 8183 }); 8184 ``` 8185 8186 Advanced Usage: 8187 --------------- 8188 8189 Promises shine when abstracting away asynchronous interactions such as 8190 `XMLHttpRequest`s. 8191 8192 ```js 8193 function getJSON(url) { 8194 return new Promise(function(resolve, reject){ 8195 let xhr = new XMLHttpRequest(); 8196 8197 xhr.open('GET', url); 8198 xhr.onreadystatechange = handler; 8199 xhr.responseType = 'json'; 8200 xhr.setRequestHeader('Accept', 'application/json'); 8201 xhr.send(); 8202 8203 function handler() { 8204 if (this.readyState === this.DONE) { 8205 if (this.status === 200) { 8206 resolve(this.response); 8207 } else { 8208 reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']')); 8209 } 8210 } 8211 }; 8212 }); 8213 } 8214 8215 getJSON('/posts.json').then(function(json) { 8216 // on fulfillment 8217 }, function(reason) { 8218 // on rejection 8219 }); 8220 ``` 8221 8222 Unlike callbacks, promises are great composable primitives. 8223 8224 ```js 8225 Promise.all([ 8226 getJSON('/posts'), 8227 getJSON('/comments') 8228 ]).then(function(values){ 8229 values[0] // => postsJSON 8230 values[1] // => commentsJSON 8231 8232 return values; 8233 }); 8234 ``` 8235 8236 @class Promise 8237 @param {Function} resolver 8238 Useful for tooling. 8239 @constructor 8240*/ 8241 8242var Promise$1 = function () { 8243 function Promise(resolver) { 8244 this[PROMISE_ID] = nextId(); 8245 this._result = this._state = undefined; 8246 this._subscribers = []; 8247 8248 if (noop !== resolver) { 8249 typeof resolver !== 'function' && needsResolver(); 8250 this instanceof Promise ? initializePromise(this, resolver) : needsNew(); 8251 } 8252 } 8253 8254 /** 8255 The primary way of interacting with a promise is through its `then` method, 8256 which registers callbacks to receive either a promise's eventual value or the 8257 reason why the promise cannot be fulfilled. 8258 ```js 8259 findUser().then(function(user){ 8260 // user is available 8261 }, function(reason){ 8262 // user is unavailable, and you are given the reason why 8263 }); 8264 ``` 8265 Chaining 8266 -------- 8267 The return value of `then` is itself a promise. This second, 'downstream' 8268 promise is resolved with the return value of the first promise's fulfillment 8269 or rejection handler, or rejected if the handler throws an exception. 8270 ```js 8271 findUser().then(function (user) { 8272 return user.name; 8273 }, function (reason) { 8274 return 'default name'; 8275 }).then(function (userName) { 8276 // If `findUser` fulfilled, `userName` will be the user's name, otherwise it 8277 // will be `'default name'` 8278 }); 8279 findUser().then(function (user) { 8280 throw new Error('Found user, but still unhappy'); 8281 }, function (reason) { 8282 throw new Error('`findUser` rejected and we're unhappy'); 8283 }).then(function (value) { 8284 // never reached 8285 }, function (reason) { 8286 // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'. 8287 // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'. 8288 }); 8289 ``` 8290 If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream. 8291 ```js 8292 findUser().then(function (user) { 8293 throw new PedagogicalException('Upstream error'); 8294 }).then(function (value) { 8295 // never reached 8296 }).then(function (value) { 8297 // never reached 8298 }, function (reason) { 8299 // The `PedgagocialException` is propagated all the way down to here 8300 }); 8301 ``` 8302 Assimilation 8303 ------------ 8304 Sometimes the value you want to propagate to a downstream promise can only be 8305 retrieved asynchronously. This can be achieved by returning a promise in the 8306 fulfillment or rejection handler. The downstream promise will then be pending 8307 until the returned promise is settled. This is called *assimilation*. 8308 ```js 8309 findUser().then(function (user) { 8310 return findCommentsByAuthor(user); 8311 }).then(function (comments) { 8312 // The user's comments are now available 8313 }); 8314 ``` 8315 If the assimliated promise rejects, then the downstream promise will also reject. 8316 ```js 8317 findUser().then(function (user) { 8318 return findCommentsByAuthor(user); 8319 }).then(function (comments) { 8320 // If `findCommentsByAuthor` fulfills, we'll have the value here 8321 }, function (reason) { 8322 // If `findCommentsByAuthor` rejects, we'll have the reason here 8323 }); 8324 ```
vendor: 4,805 bytes, lines 8325-8561
8325 Simple Example 8326 -------------- 8327 Synchronous Example 8328 ```javascript 8329 let result; 8330 try { 8331 result = findResult(); 8332 // success 8333 } catch(reason) { 8334 // failure 8335 } 8336 ``` 8337 Errback Example 8338 ```js 8339 findResult(function(result, err){ 8340 if (err) { 8341 // failure 8342 } else { 8343 // success 8344 } 8345 }); 8346 ``` 8347 Promise Example; 8348 ```javascript 8349 findResult().then(function(result){ 8350 // success 8351 }, function(reason){ 8352 // failure 8353 }); 8354 ``` 8355 Advanced Example 8356 -------------- 8357 Synchronous Example 8358 ```javascript 8359 let author, books; 8360 try { 8361 author = findAuthor(); 8362 books = findBooksByAuthor(author); 8363 // success 8364 } catch(reason) { 8365 // failure 8366 } 8367 ``` 8368 Errback Example 8369 ```js 8370 function foundBooks(books) { 8371 } 8372 function failure(reason) { 8373 } 8374 findAuthor(function(author, err){ 8375 if (err) { 8376 failure(err); 8377 // failure 8378 } else { 8379 try { 8380 findBoooksByAuthor(author, function(books, err) { 8381 if (err) { 8382 failure(err); 8383 } else { 8384 try { 8385 foundBooks(books); 8386 } catch(reason) { 8387 failure(reason); 8388 } 8389 } 8390 }); 8391 } catch(error) { 8392 failure(err); 8393 } 8394 // success 8395 } 8396 }); 8397 ``` 8398 Promise Example; 8399 ```javascript 8400 findAuthor(). 8401 then(findBooksByAuthor). 8402 then(function(books){ 8403 // found books 8404 }).catch(function(reason){ 8405 // something went wrong 8406 }); 8407 ``` 8408 @method then 8409 @param {Function} onFulfilled 8410 @param {Function} onRejected 8411 Useful for tooling. 8412 @return {Promise} 8413 */ 8414 8415 /** 8416 `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same 8417 as the catch block of a try/catch statement. 8418 ```js 8419 function findAuthor(){ 8420 throw new Error('couldn't find that author'); 8421 } 8422 // synchronous 8423 try { 8424 findAuthor(); 8425 } catch(reason) { 8426 // something went wrong 8427 } 8428 // async with promises 8429 findAuthor().catch(function(reason){ 8430 // something went wrong 8431 }); 8432 ``` 8433 @method catch 8434 @param {Function} onRejection 8435 Useful for tooling. 8436 @return {Promise} 8437 */ 8438 8439 8440 Promise.prototype.catch = function _catch(onRejection) { 8441 return this.then(null, onRejection); 8442 }; 8443 8444 /** 8445 `finally` will be invoked regardless of the promise's fate just as native 8446 try/catch/finally behaves 8447 8448 Synchronous example: 8449 8450 ```js 8451 findAuthor() { 8452 if (Math.random() > 0.5) { 8453 throw new Error(); 8454 } 8455 return new Author(); 8456 } 8457 8458 try { 8459 return findAuthor(); // succeed or fail 8460 } catch(error) { 8461 return findOtherAuther(); 8462 } finally { 8463 // always runs 8464 // doesn't affect the return value 8465 } 8466 ``` 8467 8468 Asynchronous example: 8469 8470 ```js 8471 findAuthor().catch(function(reason){ 8472 return findOtherAuther(); 8473 }).finally(function(){ 8474 // author was either found, or not 8475 }); 8476 ``` 8477 8478 @method finally 8479 @param {Function} callback 8480 @return {Promise} 8481 */ 8482 8483 8484 Promise.prototype.finally = function _finally(callback) { 8485 var promise = this; 8486 var constructor = promise.constructor; 8487 8488 if (isFunction(callback)) { 8489 return promise.then(function (value) { 8490 return constructor.resolve(callback()).then(function () { 8491 return value; 8492 }); 8493 }, function (reason) { 8494 return constructor.resolve(callback()).then(function () { 8495 throw reason; 8496 }); 8497 }); 8498 } 8499 8500 return promise.then(callback, callback); 8501 }; 8502 8503 return Promise; 8504}(); 8505 8506Promise$1.prototype.then = then; 8507Promise$1.all = all; 8508Promise$1.race = race; 8509Promise$1.resolve = resolve$1; 8510Promise$1.reject = reject$1; 8511Promise$1._setScheduler = setScheduler; 8512Promise$1._setAsap = setAsap; 8513Promise$1._asap = asap; 8514 8515/*global self*/ 8516function polyfill() { 8517 var local = void 0; 8518 8519 if (typeof commonjsGlobal !== 'undefined') { 8520 local = commonjsGlobal; 8521 } else if (typeof self !== 'undefined') { 8522 local = self; 8523 } else { 8524 try { 8525 local = Function('return this')(); 8526 } catch (e) { 8527 throw new Error('polyfill failed because global object is unavailable in this environment'); 8528 } 8529 } 8530 8531 var P = local.Promise; 8532 8533 if (P) { 8534 var promiseToString = null; 8535 try { 8536 promiseToString = Object.prototype.toString.call(P.resolve()); 8537 } catch (e) { 8538 // silently ignored 8539 } 8540 8541 if (promiseToString === '[object Promise]' && !P.cast) { 8542 return; 8543 } 8544 } 8545 8546 local.Promise = Promise$1; 8547} 8548 8549// Strange compat.. 8550Promise$1.polyfill = polyfill; 8551Promise$1.Promise = Promise$1; 8552 8553return Promise$1; 8554 8555}))); 8556 8557 8558 8559 8560}); 8561
8562var Promise$1 = es6Promise.Promise; 8563 8564/* ----- CONSTRUCTOR ----- */ 8565 8566var Worker = function Worker(opt) { 8567 // Create the root parent for the proto chain, and the starting Worker. 8568 var root = _extends(Worker.convert(Promise$1.resolve()), JSON.parse(JSON.stringify(Worker.template))); 8569 var self = Worker.convert(Promise$1.resolve(), root); 8570 8571 // Set progress, optional settings, and return. 8572 self = self.setProgress(1, Worker, 1, [Worker]); 8573 self = self.set(opt); 8574 return self; 8575}; 8576 8577// Boilerplate for subclassing Promise. 8578Worker.prototype = Object.create(Promise$1.prototype); 8579Worker.prototype.constructor = Worker; 8580 8581// Converts/casts promises into Workers. 8582Worker.convert = function convert(promise, inherit) { 8583 // Uses prototypal inheritance to receive changes made to ancestors' properties. 8584 promise.__proto__ = inherit || Worker.prototype; 8585 return promise; 8586}; 8587 8588Worker.template = { 8589 prop: { 8590 src: null, 8591 container: null, 8592 overlay: null, 8593 canvas: null, 8594 img: null, 8595 pdf: null, 8596 pageSize: null 8597 }, 8598 progress: { 8599 val: 0, 8600 state: null, 8601 n: 0, 8602 stack: [] 8603 }, 8604 opt: { 8605 filename: 'file.pdf', 8606 margin: [0, 0, 0, 0], 8607 image: { type: 'jpeg', quality: 0.95 }, 8608 enableLinks: true, 8609 html2canvas: {}, 8610 jsPDF: {} 8611 } 8612}; 8613 8614/* ----- FROM / TO ----- */ 8615 8616Worker.prototype.from = function from(src, type) { 8617 function getType(src) { 8618 switch (objType(src)) { 8619 case 'string': 8620 return 'string'; 8621 case 'element': 8622 return src.nodeName.toLowerCase === 'canvas' ? 'canvas' : 'element'; 8623 default: 8624 return 'unknown'; 8625 } 8626 } 8627 8628 return this.then(function from_main() { 8629 type = type || getType(src); 8630 switch (type) { 8631 case 'string': 8632 return this.set({ src: createElement('div', { innerHTML: src }) }); 8633 case 'element': 8634 return this.set({ src: src }); 8635 case 'canvas': 8636 return this.set({ canvas: src }); 8637 case 'img': 8638 return this.set({ img: src }); 8639 default: 8640 return this.error('Unknown source type.'); 8641 } 8642 }); 8643}; 8644 8645Worker.prototype.to = function to(target) { 8646 // Route the 'to' request to the appropriate method. 8647 switch (target) { 8648 case 'container': 8649 return this.toContainer(); 8650 case 'canvas': 8651 return this.toCanvas(); 8652 case 'img': 8653 return this.toImg(); 8654 case 'pdf': 8655 return this.toPdf(); 8656 default: 8657 return this.error('Invalid target.'); 8658 } 8659}; 8660 8661Worker.prototype.toContainer = function toContainer() { 8662 // Set up function prerequisites. 8663 var prereqs = [function checkSrc() { 8664 return this.prop.src || this.error('Cannot duplicate - no source HTML.'); 8665 }, function checkPageSize() { 8666 return this.prop.pageSize || this.setPageSize(); 8667 }]; 8668 8669 return this.thenList(prereqs).then(function toContainer_main() { 8670 // Define the CSS styles for the container and its overlay parent. 8671 var overlayCSS = { 8672 position: 'fixed', overflow: 'hidden', zIndex: 1000, 8673 left: 0, right: 0, bottom: 0, top: 0, 8674 backgroundColor: 'rgba(0,0,0,0.8)' 8675 }; 8676 var containerCSS = { 8677 position: 'absolute', width: this.prop.pageSize.inner.width + this.prop.pageSize.unit, 8678 left: 0, right: 0, top: 0, height: 'auto', margin: 'auto', 8679 backgroundColor: 'white' 8680 }; 8681 8682 // Set the overlay to hidden (could be changed in the future to provide a print preview). 8683 overlayCSS.opacity = 0; 8684 8685 // Create and attach the elements. 8686 var source = cloneNode(this.prop.src, this.opt.html2canvas.javascriptEnabled); 8687 this.prop.overlay = createElement('div', { className: 'html2pdf__overlay', style: overlayCSS }); 8688 this.prop.container = createElement('div', { className: 'html2pdf__container', style: containerCSS }); 8689 this.prop.container.appendChild(source); 8690 this.prop.overlay.appendChild(this.prop.container); 8691 document.body.appendChild(this.prop.overlay); 8692 }); 8693}; 8694 8695Worker.prototype.toCanvas = function toCanvas() { 8696 // Set up function prerequisites. 8697 var prereqs = [function checkContainer() { 8698 return document.body.contains(this.prop.container) || this.toContainer(); 8699 }]; 8700 8701 // Fulfill prereqs then create the canvas. 8702 return this.thenList(prereqs).then(function toCanvas_main() { 8703 // Handle old-fashioned 'onrendered' argument. 8704 var options = _extends({}, this.opt.html2canvas); 8705 delete options.onrendered; 8706 8707 return html2canvas$1(this.prop.container, options); 8708 }).then(function toCanvas_post(canvas) { 8709 // Handle old-fashioned 'onrendered' argument. 8710 var onRendered = this.opt.html2canvas.onrendered || function () {}; 8711 onRendered(canvas); 8712 8713 this.prop.canvas = canvas; 8714 document.body.removeChild(this.prop.overlay); 8715 }); 8716}; 8717 8718Worker.prototype.toImg = function toImg() { 8719 // Set up function prerequisites. 8720 var prereqs = [function checkCanvas() { 8721 return this.prop.canvas || this.toCanvas(); 8722 }]; 8723 8724 // Fulfill prereqs then create the image. 8725 return this.thenList(prereqs).then(function toImg_main() { 8726 var imgData = this.prop.canvas.toDataURL('image/' + this.opt.image.type, this.opt.image.quality); 8727 this.prop.img = document.createElement('img'); 8728 this.prop.img.src = imgData; 8729 }); 8730}; 8731 8732Worker.prototype.toPdf = function toPdf() { 8733 // Set up function prerequisites. 8734 var prereqs = [function checkCanvas() { 8735 return this.prop.canvas || this.toCanvas(); 8736 }]; 8737 8738 // Fulfill prereqs then create the image. 8739 return this.thenList(prereqs).then(function toPdf_main() { 8740 // Create local copies of frequently used properties. 8741 var canvas = this.prop.canvas; 8742 var opt = this.opt; 8743 8744 // Calculate the number of pages. 8745 var pxFullHeight = canvas.height; 8746 var pxPageHeight = Math.floor(canvas.width * this.prop.pageSize.inner.ratio); 8747 var nPages = Math.ceil(pxFullHeight / pxPageHeight); 8748 8749 // Define pageHeight separately so it can be trimmed on the final page. 8750 var pageHeight = this.prop.pageSize.inner.height; 8751 8752 // Create a one-page canvas to split up the full image. 8753 var pageCanvas = document.createElement('canvas'); 8754 var pageCtx = pageCanvas.getContext('2d'); 8755 pageCanvas.width = canvas.width; 8756 pageCanvas.height = pxPageHeight; 8757 8758 // Initialize the PDF. 8759 this.prop.pdf = this.prop.pdf || new jspdf_min(opt.jsPDF); 8760 8761 for (var page = 0; page < nPages; page++) { 8762 // Trim the final page to reduce file size. 8763 if (page === nPages - 1 && pxFullHeight % pxPageHeight !== 0) { 8764 pageCanvas.height = pxFullHeight % pxPageHeight; 8765 pageHeight = pageCanvas.height * this.prop.pageSize.inner.width / pageCanvas.width; 8766 } 8767 8768 // Display the page.
vendor: 10,329 bytes, lines 8769-9065
8769 var w = pageCanvas.width; 8770 var h = pageCanvas.height; 8771 pageCtx.fillStyle = 'white'; 8772 pageCtx.fillRect(0, 0, w, h); 8773 pageCtx.drawImage(canvas, 0, page * pxPageHeight, w, h, 0, 0, w, h); 8774 8775 // Add the page to the PDF. 8776 if (page) this.prop.pdf.addPage(); 8777 var imgData = pageCanvas.toDataURL('image/' + opt.image.type, opt.image.quality); 8778 this.prop.pdf.addImage(imgData, opt.image.type, opt.margin[1], opt.margin[0], this.prop.pageSize.inner.width, pageHeight); 8779 } 8780 }); 8781}; 8782 8783/* ----- OUTPUT / SAVE ----- */ 8784 8785Worker.prototype.output = function output(type, options, src) { 8786 // Redirect requests to the correct function (outputPdf / outputImg). 8787 src = src || 'pdf'; 8788 if (src.toLowerCase() === 'img' || src.toLowerCase() === 'image') { 8789 return this.outputImg(type, options); 8790 } else { 8791 return this.outputPdf(type, options); 8792 } 8793}; 8794 8795Worker.prototype.outputPdf = function outputPdf(type, options) { 8796 // Set up function prerequisites. 8797 var prereqs = [function checkPdf() { 8798 return this.prop.pdf || this.toPdf(); 8799 }]; 8800 8801 // Fulfill prereqs then perform the appropriate output. 8802 return this.thenList(prereqs).then(function outputPdf_main() { 8803 /* Currently implemented output types: 8804 * https://rawgit.com/MrRio/jsPDF/master/docs/jspdf.js.html#line992 8805 * save(options), arraybuffer, blob, bloburi/bloburl, 8806 * datauristring/dataurlstring, dataurlnewwindow, datauri/dataurl 8807 */ 8808 return this.prop.pdf.output(type, options); 8809 }); 8810}; 8811 8812Worker.prototype.outputImg = function outputImg(type, options) { 8813 // Set up function prerequisites. 8814 var prereqs = [function checkImg() { 8815 return this.prop.img || this.toImg(); 8816 }]; 8817 8818 // Fulfill prereqs then perform the appropriate output. 8819 return this.thenList(prereqs).then(function outputImg_main() { 8820 switch (type) { 8821 case undefined: 8822 case 'img': 8823 return this.prop.img; 8824 case 'datauristring': 8825 case 'dataurlstring': 8826 return this.prop.img.src; 8827 case 'datauri': 8828 case 'dataurl': 8829 return document.location.href = this.prop.img.src; 8830 default: 8831 throw 'Image output type "' + type + '" is not supported.'; 8832 } 8833 }); 8834}; 8835 8836Worker.prototype.save = function save(filename) { 8837 // Set up function prerequisites. 8838 var prereqs = [function checkPdf() { 8839 return this.prop.pdf || this.toPdf(); 8840 }]; 8841 8842 // Fulfill prereqs, update the filename (if provided), and save the PDF. 8843 return this.thenList(prereqs).set(filename ? { filename: filename } : null).then(function save_main() { 8844 this.prop.pdf.save(this.opt.filename); 8845 }); 8846}; 8847 8848/* ----- SET / GET ----- */ 8849 8850Worker.prototype.set = function set$$1(opt) { 8851 // TODO: Implement ordered pairs? 8852 8853 // Silently ignore invalid or empty input. 8854 if (objType(opt) !== 'object') { 8855 return this; 8856 } 8857 8858 // Build an array of setter functions to queue. 8859 var fns = Object.keys(opt || {}).map(function (key) { 8860 if (key in Worker.template.prop) { 8861 // Set pre-defined properties. 8862 return function set_prop() { 8863 this.prop[key] = opt[key]; 8864 }; 8865 } else { 8866 switch (key) { 8867 case 'margin': 8868 return this.setMargin.bind(this, opt.margin); 8869 case 'jsPDF': 8870 return function set_jsPDF() { 8871 this.opt.jsPDF = opt.jsPDF;return this.setPageSize(); 8872 }; 8873 case 'pageSize': 8874 return this.setPageSize.bind(this, opt.pageSize); 8875 default: 8876 // Set any other properties in opt. 8877 return function set_opt() { 8878 this.opt[key] = opt[key]; 8879 }; 8880 } 8881 } 8882 }, this); 8883 8884 // Set properties within the promise chain. 8885 return this.then(function set_main() { 8886 return this.thenList(fns); 8887 }); 8888}; 8889 8890Worker.prototype.get = function get$$1(key, cbk) { 8891 return this.then(function get_main() { 8892 // Fetch the requested property, either as a predefined prop or in opt. 8893 var val = key in Worker.template.prop ? this.prop[key] : this.opt[key]; 8894 return cbk ? cbk(val) : val; 8895 }); 8896}; 8897 8898Worker.prototype.setMargin = function setMargin(margin) { 8899 return this.then(function setMargin_main() { 8900 // Parse the margin property: [top, left, bottom, right]. 8901 switch (objType(margin)) { 8902 case 'number': 8903 margin = [margin, margin, margin, margin]; 8904 case 'array': 8905 if (margin.length === 2) { 8906 margin = [margin[0], margin[1], margin[0], margin[1]]; 8907 } 8908 if (margin.length === 4) { 8909 break; 8910 } 8911 default: 8912 return this.error('Invalid margin array.'); 8913 } 8914 8915 // Set the margin property, then update pageSize. 8916 this.opt.margin = margin; 8917 }).then(this.setPageSize); 8918}; 8919 8920Worker.prototype.setPageSize = function setPageSize(pageSize) { 8921 return this.then(function setPageSize_main() { 8922 // Retrieve page-size based on jsPDF settings, if not explicitly provided. 8923 pageSize = pageSize || jspdf_min.getPageSize(this.opt.jsPDF); 8924 8925 // Add 'inner' field if not present. 8926 if (!pageSize.hasOwnProperty('inner')) { 8927 pageSize.inner = { 8928 width: pageSize.width - this.opt.margin[1] - this.opt.margin[3], 8929 height: pageSize.height - this.opt.margin[0] - this.opt.margin[2] 8930 }; 8931 pageSize.inner.px = { 8932 width: toPx(pageSize.inner.width, pageSize.k), 8933 height: toPx(pageSize.inner.height, pageSize.k) 8934 }; 8935 pageSize.inner.ratio = pageSize.inner.height / pageSize.inner.width; 8936 } 8937 8938 // Attach pageSize to this. 8939 this.prop.pageSize = pageSize; 8940 }); 8941}; 8942 8943Worker.prototype.setProgress = function setProgress(val, state, n, stack) { 8944 // Immediately update all progress values. 8945 if (val != null) this.progress.val = val; 8946 if (state != null) this.progress.state = state; 8947 if (n != null) this.progress.n = n; 8948 if (stack != null) this.progress.stack = stack; 8949 this.progress.ratio = this.progress.val / this.progress.state; 8950 8951 // Return this for command chaining. 8952 return this; 8953}; 8954 8955Worker.prototype.updateProgress = function updateProgress(val, state, n, stack) { 8956 // Immediately update all progress values, using setProgress. 8957 return this.setProgress(val ? this.progress.val + val : null, state ? state : null, n ? this.progress.n + n : null, stack ? this.progress.stack.concat(stack) : null); 8958}; 8959 8960/* ----- PROMISE MAPPING ----- */ 8961 8962Worker.prototype.then = function then(onFulfilled, onRejected) { 8963 // Wrap `this` for encapsulation. 8964 var self = this; 8965 8966 return this.thenCore(onFulfilled, onRejected, function then_main(onFulfilled, onRejected) { 8967 // Update progress while queuing, calling, and resolving `then`. 8968 self.updateProgress(null, null, 1, [onFulfilled]); 8969 return Promise$1.prototype.then.call(this, function then_pre(val) { 8970 self.updateProgress(null, onFulfilled); 8971 return val; 8972 }).then(onFulfilled, onRejected).then(function then_post(val) { 8973 self.updateProgress(1); 8974 return val; 8975 }); 8976 }); 8977}; 8978 8979Worker.prototype.thenCore = function thenCore(onFulfilled, onRejected, thenBase) { 8980 // Handle optional thenBase parameter. 8981 thenBase = thenBase || Promise$1.prototype.then; 8982 8983 // Wrap `this` for encapsulation and bind it to the promise handlers. 8984 var self = this; 8985 if (onFulfilled) { 8986 onFulfilled = onFulfilled.bind(self); 8987 } 8988 if (onRejected) { 8989 onRejected = onRejected.bind(self); 8990 } 8991 8992 // Cast self into a Promise to avoid polyfills recursively defining `then`. 8993 var isNative = Promise$1.toString().indexOf('[native code]') !== -1 && Promise$1.name === 'Promise'; 8994 var selfPromise = isNative ? self : Worker.convert(_extends({}, self), Promise$1.prototype); 8995 8996 // Return the promise, after casting it into a Worker and preserving props. 8997 var returnVal = thenBase.call(selfPromise, onFulfilled, onRejected); 8998 return Worker.convert(returnVal, self.__proto__); 8999}; 9000 9001Worker.prototype.thenExternal = function thenExternal(onFulfilled, onRejected) { 9002 // Call `then` and return a standard promise (exits the Worker chain). 9003 return Promise$1.prototype.then.call(this, onFulfilled, onRejected); 9004}; 9005 9006Worker.prototype.thenList = function thenList(fns) { 9007 // Queue a series of promise 'factories' into the promise chain. 9008 var self = this; 9009 fns.forEach(function thenList_forEach(fn) { 9010 self = self.thenCore(fn); 9011 }); 9012 return self; 9013}; 9014 9015Worker.prototype['catch'] = function (onRejected) { 9016 // Bind `this` to the promise handler, call `catch`, and return a Worker. 9017 if (onRejected) { 9018 onRejected = onRejected.bind(this); 9019 } 9020 var returnVal = Promise$1.prototype['catch'].call(this, onRejected); 9021 return Worker.convert(returnVal, this); 9022}; 9023 9024Worker.prototype.catchExternal = function catchExternal(onRejected) { 9025 // Call `catch` and return a standard promise (exits the Worker chain). 9026 return Promise$1.prototype['catch'].call(this, onRejected); 9027}; 9028 9029Worker.prototype.error = function error(msg) { 9030 // Throw the error in the Promise chain. 9031 return this.then(function error_main() { 9032 throw new Error(msg); 9033 }); 9034}; 9035 9036/* ----- ALIASES ----- */ 9037 9038Worker.prototype.using = Worker.prototype.set; 9039Worker.prototype.saveAs = Worker.prototype.save; 9040Worker.prototype.export = Worker.prototype.output; 9041Worker.prototype.run = Worker.prototype.then; 9042 9043// Import dependencies. 9044// Get dimensions of a PDF page, as determined by jsPDF. 9045jspdf_min.getPageSize = function (orientation, unit, format) { 9046 // Decode options object 9047 if ((typeof orientation === 'undefined' ? 'undefined' : _typeof(orientation)) === 'object') { 9048 var options = orientation; 9049 orientation = options.orientation; 9050 unit = options.unit || unit; 9051 format = options.format || format; 9052 } 9053 9054 // Default options 9055 unit = unit || 'mm'; 9056 format = format || 'a4'; 9057 orientation = ('' + (orientation || 'P')).toLowerCase(); 9058 var format_as_string = ('' + format).toLowerCase(); 9059 9060 // Size in pt of various paper formats 9061 var pageFormats = { 9062 'a0': [2383.94, 3370.39], 'a1': [1683.78, 2383.94], 9063 'a2': [1190.55, 1683.78], 'a3': [841.89, 1190.55], 9064 'a4': [595.28, 841.89], 'a5': [419.53, 595.28], 9065 'a6': [297.64, 419.53], 'a7': [209.76, 297.64],
9066 'a8': [147.40, 209.76], 'a9': [104.88, 147.40], 9067 'a10': [73.70, 104.88], 'b0': [2834.65, 4008.19], 9068 'b1': [2004.09, 2834.65], 'b2': [1417.32, 2004.09], 9069 'b3': [1000.63, 1417.32], 'b4': [708.66, 1000.63], 9070 'b5': [498.90, 708.66], 'b6': [354.33, 498.90], 9071 'b7': [249.45, 354.33], 'b8': [175.75, 249.45], 9072 'b9': [124.72, 175.75], 'b10': [87.87, 124.72], 9073 'c0': [2599.37, 3676.54], 'c1': [1836.85, 2599.37], 9074 'c2': [1298.27, 1836.85], 'c3': [918.43, 1298.27], 9075 'c4': [649.13, 918.43], 'c5': [459.21, 649.13], 9076 'c6': [323.15, 459.21], 'c7': [229.61, 323.15], 9077 'c8': [161.57, 229.61], 'c9': [113.39, 161.57], 9078 'c10': [79.37, 113.39], 'dl': [311.81, 623.62], 9079 'letter': [612, 792], 9080 'government-letter': [576, 756], 9081 'legal': [612, 1008], 9082 'junior-legal': [576, 360], 9083 'ledger': [1224, 792], 9084 'tabloid': [792, 1224], 9085 'credit-card': [153, 243] 9086 }; 9087 9088 // Unit conversion 9089 switch (unit) { 9090 case 'pt': 9091 var k = 1;break; 9092 case 'mm': 9093 var k = 72 / 25.4;break; 9094 case 'cm': 9095 var k = 72 / 2.54;break; 9096 case 'in': 9097 var k = 72;break; 9098 case 'px': 9099 var k = 72 / 96;break; 9100 case 'pc': 9101 var k = 12;break; 9102 case 'em': 9103 var k = 12;break; 9104 case 'ex': 9105 var k = 6;break; 9106 default: 9107 throw 'Invalid unit: ' + unit; 9108 } 9109 9110 // Dimensions are stored as user units and converted to points on output 9111 if (pageFormats.hasOwnProperty(format_as_string)) { 9112 var pageHeight = pageFormats[format_as_string][1] / k; 9113 var pageWidth = pageFormats[format_as_string][0] / k; 9114 } else { 9115 try { 9116 var pageHeight = format[1]; 9117 var pageWidth = format[0]; 9118 } catch (err) { 9119 throw new Error('Invalid format: ' + format); 9120 } 9121 } 9122 9123 // Handle page orientation 9124 if (orientation === 'p' || orientation === 'portrait') { 9125 orientation = 'p'; 9126 if (pageWidth > pageHeight) { 9127 var tmp = pageWidth; 9128 pageWidth = pageHeight; 9129 pageHeight = tmp; 9130 } 9131 } else if (orientation === 'l' || orientation === 'landscape') { 9132 orientation = 'l'; 9133 if (pageHeight > pageWidth) { 9134 var tmp = pageWidth; 9135 pageWidth = pageHeight; 9136 pageHeight = tmp; 9137 } 9138 } else { 9139 throw 'Invalid orientation: ' + orientation; 9140 } 9141 9142 // Return information (k is the unit conversion ratio from pts) 9143 var info = { 'width': pageWidth, 'height': pageHeight, 'unit': unit, 'k': k }; 9144 return info; 9145}; 9146 9147/* Pagebreak plugin: 9148 9149 Adds page-break functionality to the html2pdf library. Page-breaks can be 9150 enabled by CSS styles, set on individual elements using selectors, or 9151 avoided from breaking inside all elements. 9152 9153 Options on the `opt.pagebreak` object: 9154 9155 mode: String or array of strings: 'avoid-all', 'css', and/or 'legacy' 9156 Default: ['css', 'legacy'] 9157 9158 before: String or array of CSS selectors for which to add page-breaks 9159 before each element. Can be a specific element with an ID 9160 ('#myID'), all elements of a type (e.g. 'img'), all of a class 9161 ('.myClass'), or even '*' to match every element. 9162 9163 after: Like 'before', but adds a page-break immediately after the element. 9164 9165 avoid: Like 'before', but avoids page-breaks on these elements. You can 9166 enable this feature on every element using the 'avoid-all' mode. 9167*/ 9168 9169// Refs to original functions. 9170var orig = { 9171 toContainer: Worker.prototype.toContainer 9172}; 9173 9174// Add pagebreak default options to the Worker template. 9175Worker.template.opt.pagebreak = { 9176 mode: ['css', 'legacy'], 9177 before: [], 9178 after: [], 9179 avoid: [] 9180}; 9181 9182Worker.prototype.toContainer = function toContainer() { 9183 return orig.toContainer.call(this).then(function toContainer_pagebreak() { 9184 // Setup root element and inner page height. 9185 var root = this.prop.container; 9186 var pxPageHeight = this.prop.pageSize.inner.px.height; 9187 9188 // Check all requested modes. 9189 var modeSrc = [].concat(this.opt.pagebreak.mode); 9190 var mode = { 9191 avoidAll: modeSrc.indexOf('avoid-all') !== -1, 9192 css: modeSrc.indexOf('css') !== -1, 9193 legacy: modeSrc.indexOf('legacy') !== -1 9194 }; 9195 9196 // Get arrays of all explicitly requested elements. 9197 var select = {}; 9198 var self = this; 9199 ['before', 'after', 'avoid'].forEach(function (key) { 9200 var all = mode.avoidAll && key === 'avoid'; 9201 select[key] = all ? [] : [].concat(self.opt.pagebreak[key] || []); 9202 if (select[key].length > 0) { 9203 select[key] = Array.prototype.slice.call(root.querySelectorAll(select[key].join(', '))); 9204 } 9205 });
9206 9207 // Get all legacy page-break elements. 9208 var legacyEls = root.querySelectorAll('.html2pdf__page-break'); 9209 legacyEls = Array.prototype.slice.call(legacyEls); 9210 9211 // Loop through all elements. 9212 var els = root.querySelectorAll('*'); 9213 Array.prototype.forEach.call(els, function pagebreak_loop(el) { 9214 // Setup pagebreak rules based on legacy and avoidAll modes. 9215 var rules = { 9216 before: false, 9217 after: mode.legacy && legacyEls.indexOf(el) !== -1, 9218 avoid: mode.avoidAll 9219 }; 9220 9221 // Add rules for css mode. 9222 if (mode.css) { 9223 // TODO: Check if this is valid with iFrames. 9224 var style = window.getComputedStyle(el); 9225 // TODO: Handle 'left' and 'right' correctly. 9226 // TODO: Add support for 'avoid' on breakBefore/After. 9227 var breakOpt = ['always', 'page', 'left', 'right']; 9228 var avoidOpt = ['avoid', 'avoid-page']; 9229 rules = { 9230 before: rules.before || breakOpt.indexOf(style.breakBefore || style.pageBreakBefore) !== -1, 9231 after: rules.after || breakOpt.indexOf(style.breakAfter || style.pageBreakAfter) !== -1, 9232 avoid: rules.avoid || avoidOpt.indexOf(style.breakInside || style.pageBreakInside) !== -1 9233 }; 9234 } 9235 9236 // Add rules for explicit requests. 9237 Object.keys(rules).forEach(function (key) { 9238 rules[key] = rules[key] || select[key].indexOf(el) !== -1; 9239 }); 9240 9241 // Get element position on the screen. 9242 // TODO: Subtract the top of the container from clientRect.top/bottom? 9243 var clientRect = el.getBoundingClientRect(); 9244 9245 // Avoid: Check if a break happens mid-element. 9246 if (rules.avoid && !rules.before) { 9247 var startPage = Math.floor(clientRect.top / pxPageHeight); 9248 var endPage = Math.floor(clientRect.bottom / pxPageHeight); 9249 var nPages = Math.abs(clientRect.bottom - clientRect.top) / pxPageHeight; 9250 9251 // Turn on rules.before if the el is broken and is at most one page long. 9252 if (endPage !== startPage && nPages <= 1) { 9253 rules.before = true; 9254 } 9255 } 9256 9257 // Before: Create a padding div to push the element to the next page. 9258 if (rules.before) { 9259 var pad = createElement('div', { style: { 9260 display: 'block', 9261 height: pxPageHeight - clientRect.top % pxPageHeight + 'px' 9262 } }); 9263 el.parentNode.insertBefore(pad, el); 9264 } 9265 9266 // After: Create a padding div to fill the remaining page. 9267 if (rules.after) { 9268 var pad = createElement('div', { style: { 9269 display: 'block', 9270 height: pxPageHeight - clientRect.bottom % pxPageHeight + 'px' 9271 } }); 9272 el.parentNode.insertBefore(pad, el.nextSibling); 9273 } 9274 }); 9275 }); 9276}; 9277 9278// Add hyperlink functionality to the PDF creation. 9279 9280// Main link array, and refs to original functions. 9281var linkInfo = []; 9282var orig$1 = { 9283 toContainer: Worker.prototype.toContainer, 9284 toPdf: Worker.prototype.toPdf 9285}; 9286 9287Worker.prototype.toContainer = function toContainer() { 9288 return orig$1.toContainer.call(this).then(function toContainer_hyperlink() { 9289 // Retrieve hyperlink info if the option is enabled. 9290 if (this.opt.enableLinks) { 9291 // Find all anchor tags and get the container's bounds for reference. 9292 var container = this.prop.container; 9293 var links = container.querySelectorAll('a'); 9294 var containerRect = unitConvert(container.getBoundingClientRect(), this.prop.pageSize.k); 9295 linkInfo = []; 9296 9297 // Loop through each anchor tag. 9298 Array.prototype.forEach.call(links, function (link) { 9299 // Treat each client rect as a separate link (for text-wrapping). 9300 var clientRects = link.getClientRects(); 9301 for (var i = 0; i < clientRects.length; i++) { 9302 var clientRect = unitConvert(clientRects[i], this.prop.pageSize.k); 9303 clientRect.left -= containerRect.left; 9304 clientRect.top -= containerRect.top; 9305 9306 var page = Math.floor(clientRect.top / this.prop.pageSize.inner.height) + 1; 9307 var top = this.opt.margin[0] + clientRect.top % this.prop.pageSize.inner.height; 9308 var left = this.opt.margin[1] + clientRect.left; 9309 9310 linkInfo.push({ page: page, top: top, left: left, clientRect: clientRect, link: link }); 9311 } 9312 }, this); 9313 } 9314 }); 9315}; 9316 9317Worker.prototype.toPdf = function toPdf() { 9318 return orig$1.toPdf.call(this).then(function toPdf_hyperlink() { 9319 // Add hyperlinks if the option is enabled. 9320 if (this.opt.enableLinks) { 9321 // Attach each anchor tag based on info from toContainer(). 9322 linkInfo.forEach(function (l) { 9323 this.prop.pdf.setPage(l.page); 9324 this.prop.pdf.link(l.left, l.top, l.clientRect.width, l.clientRect.height, { url: l.link.href }); 9325 }, this); 9326 9327 // Reset the active page of the PDF to the final page. 9328 var nPages = this.prop.pdf.internal.getNumberOfPages(); 9329 this.prop.pdf.setPage(nPages); 9330 } 9331 }); 9332}; 9333 9334/** 9335 * Generate a PDF from an HTML element or string using html2canvas and jsPDF. 9336 * 9337 * @param {Element|string} source The source element or HTML string. 9338 * @param {Object=} opt An object of optional settings: 'margin', 'filename', 9339 * 'image' ('type' and 'quality'), and 'html2canvas' / 'jspdf', which are 9340 * sent as settings to their corresponding functions. 9341 */ 9342var html2pdf = function html2pdf(src, opt) { 9343 // Create a new worker with the given options. 9344 var worker = new html2pdf.Worker(opt); 9345 9346 if (src) { 9347 // If src is specified, perform the traditional 'simple' operation. 9348 return worker.from(src).save(); 9349 } else { 9350 // Otherwise, return the worker for new Promise-based operation. 9351 return worker; 9352 } 9353}; 9354html2pdf.Worker = Worker; 9355 9356return html2pdf; 9357 9358})));
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.