├── .gitattributes ├── .gitignore ├── README.md ├── SVG2GIF.js └── SVG2GIF.min.js /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Windows image file caches 2 | Thumbs.db 3 | ehthumbs.db 4 | 5 | # Folder config file 6 | Desktop.ini 7 | 8 | # Recycle Bin used on file shares 9 | $RECYCLE.BIN/ 10 | 11 | # Windows Installer files 12 | *.cab 13 | *.msi 14 | *.msm 15 | *.msp 16 | 17 | # Windows shortcuts 18 | *.lnk 19 | 20 | # ========================= 21 | # Operating System Files 22 | # ========================= 23 | 24 | # OSX 25 | # ========================= 26 | 27 | .DS_Store 28 | .AppleDouble 29 | .LSOverride 30 | 31 | # Thumbnails 32 | ._* 33 | 34 | # Files that might appear in the root of a volume 35 | .DocumentRevisions-V100 36 | .fseventsd 37 | .Spotlight-V100 38 | .TemporaryItems 39 | .Trashes 40 | .VolumeIcon.icns 41 | 42 | # Directories potentially created on remote AFP share 43 | .AppleDB 44 | .AppleDesktop 45 | Network Trash Folder 46 | Temporary Items 47 | .apdisk 48 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SVG2GIF 2 | Convert GreenSock SVG Timeline Animations to GIF 3 | 4 | ## Notes 5 | 6 | * Add ```SVG2GIF.min.js``` to your project using a normal JavaScript ```script``` tag. 7 | * SVG2GIF renders SVG animations animated inline with GreenSock TimelineMax. 8 | * You must add a class name to the SVG tag you want to convert. 9 | * If you don't already, you should create a main timeline and add all and any of your timelines to it 10 | * Ensure that ```repeat:0``` is set on your timelines so that it plays only once 11 | * In the ```vars``` for the main parent timeline add in ```SVG2GIF:true``` - this notifies SVG2GIF that this is the timeline you wish to render. E.g. ```var mainTl = new TimelineMax({repeat:0, SVG2GIF:true});``` 12 | 13 | ### SVG2GIF uses the following libraries 14 | * [HTML2Canvas](https://github.com/niklasvh/html2canvas) 15 | * [Gif.js](https://jnordberg.github.io/gif.js/) 16 | * GreenSock's [Draggable](http://greensock.com/draggable) 17 | * GreenSock's [TweenMax](http://greensock.com/tweenmax) 18 | 19 | ### Demo 20 | * See it in action on CodePen [here](http://codepen.io/chrisgannon/pen/0e3f0e3af985e1c6949e70e4c8ed4df7) 21 | * Demo video on [YouTube](https://www.youtube.com/watch?v=n8FDiovShJI) 22 | 23 | -------------------------------------------------------------------------------- /SVG2GIF.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | VERSION: 0.14.8 3 | DATE: 2016-07-18 4 | UPDATES AND DOCS AT: http://greensock.com 5 | 6 | Requires TweenLite and CSSPlugin version 1.17.0 or later (TweenMax contains both TweenLite and CSSPlugin). ThrowPropsPlugin is required for momentum-based continuation of movement after the mouse/touch is released (ThrowPropsPlugin is a membership benefit of Club GreenSock - http://greensock.com/club/). 7 | 8 | @license Copyright (c) 2008-2016, GreenSock. All rights reserved. 9 | This work is subject to the terms at http://greensock.com/standard-license or for 10 | Club GreenSock members, the software agreement that was issued with your membership. 11 | 12 | @author: Jack Doyle, jack@greensock.com 13 | */ 14 | 15 | /* 16 | html2canvas 0.5.0-alpha1 17 | Copyright (c) 2015 Niklas von Hertzen 18 | 19 | Released under MIT License 20 | */ 21 | 22 | 23 | 24 | /* 25 | html2canvas 0.5.0-alpha1 26 | Copyright (c) 2015 Niklas von Hertzen 27 | 28 | Released under MIT License 29 | */ 30 | 31 | 32 | //# sourceMappingURL=gif.js.map 33 | // gif.js 0.1.6 - https://github.com/jnordberg/gif.js 34 | 35 | 36 | 37 | var _gsScope="undefined"!=typeof module&&module.exports&&"undefined"!=typeof global?global:this||window; 38 | (_gsScope._gsQueue||(_gsScope._gsQueue=[])).push(function(){_gsScope._gsDefine("utils.Draggable",["events.EventDispatcher","TweenLite","plugins.CSSPlugin"],function(q,h,ra){var y,H,O,B,K,n,L,R,ma,Ga={css:{}},f={css:{}},k={css:{}},v={css:{}},Pa=_gsScope._gsDefine.globals,ka={},w=document,A=w.documentElement||{},z=function(b){return w.createElementNS?w.createElementNS("http://www.w3.org/1999/xhtml",b):w.createElement(b)},E=z("div"),Q=[],ga=function(){return!1},ob=180/Math.PI,Ka=Date.now||function(){return(new Date).getTime()}, 39 | sa=!(w.addEventListener||!w.all),ta=w.createElement("div"),M=[],W={},Za=0,F=/^(?:a|input|textarea|button|select)$/i,u=0,db=-1!==navigator.userAgent.toLowerCase().indexOf("android"),Ta=0,Qa,Ha,Ba={},$a=function(b){if("string"==typeof b&&(b=h.selector(b)),!b||b.nodeType)return[b];var a,d=[],e=b.length;for(a=0;a!==e;d.push(b[a++]));return d},eb=function(b){var a,d={};for(a in b)d[a]=b[a];return d},I=function(){for(var b=M.length;-1<--b;)M[b]()},yb=function(b){M.push(b);1===M.length&&h.ticker.addEventListener("tick", 40 | I,this,!1,1)},gb=function(b){for(var a=M.length;-1<--a;)M[a]===b&&M.splice(a,1);h.to(fb,0,{overwrite:"all",delay:15,onComplete:fb})},fb=function(){M.length||h.ticker.removeEventListener("tick",I)},Ia=function(b,a){for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b},La=function(){return null!=window.pageYOffset?window.pageYOffset:null!=w.scrollTop?w.scrollTop:A.scrollTop||w.body.scrollTop||0},X=function(){return null!=window.pageXOffset?window.pageXOffset:null!=w.scrollLeft?w.scrollLeft:A.scrollLeft|| 41 | w.body.scrollLeft||0},Sa=function(b,a){G(b,"scroll",a);Ra(b.parentNode)||Sa(b.parentNode,a)},xa=function(b,a){aa(b,"scroll",a);Ra(b.parentNode)||xa(b.parentNode,a)},Ra=function(b){return!(b&&b!==A&&b!==w&&b!==w.body&&b!==window&&b.nodeType&&b.parentNode)},pb=function(b,a){var c="x"===a?"Width":"Height",e="scroll"+c,g="client"+c,m=w.body;return Math.max(0,Ra(b)?Math.max(A[e],m[e])-(window["inner"+c]||A[g]||m[g]):b[e]-b[g])},Ua=function(b){var a=Ra(b),d=pb(b,"x"),e=pb(b,"y");a?b=Ba:Ua(b.parentNode); 42 | b._gsMaxScrollX=d;b._gsMaxScrollY=e;b._gsScrollX=b.scrollLeft||0;b._gsScrollY=b.scrollTop||0},ab=function(b,a){return b=b||window.event,ka.pageX=b.clientX+w.body.scrollLeft+A.scrollLeft,ka.pageY=b.clientY+w.body.scrollTop+A.scrollTop,a&&(b.returnValue=!1),ka},Ca=function(b){return b?("string"==typeof b&&(b=h.selector(b)),b.length&&b!==window&&b[0]&&b[0].style&&!b.nodeType&&(b=b[0]),b===window||b.nodeType&&b.style?b:null):b},ya=function(b,a){var c,e,g,m=b.style;if(void 0===m[a]){g=["O","Moz","ms", 43 | "Ms","Webkit"];e=5;for(c=a.charAt(0).toUpperCase()+a.substr(1);-1<--e&&void 0===m[g[e]+c];);if(0>e)return"";y=3===e?"ms":g[e];a=y+c}return a},Da=function(b,a,d){var c=b.style;c&&(void 0===c[a]&&(a=ya(b,a)),null==d?c.removeProperty?c.removeProperty(a.replace(/([A-Z])/g,"-$1").toLowerCase()):c.removeAttribute(a):void 0!==c[a]&&(c[a]=d))},da=w.defaultView?w.defaultView.getComputedStyle:ga,hb=/(?:Left|Right|Width)/i,Ea=/(?:\d|\-|\+|=|#|\.)*/g,za=function(b,a,d,e,g){if("px"===e||!e)return d;if("auto"=== 44 | e||!d)return 0;var c,p=hb.test(a),x=b,P=E.style,f=0>d;return f&&(d=-d),"%"===e&&-1!==a.indexOf("border")?c=d/100*(p?b.clientWidth:b.clientHeight):(P.cssText="border:0 solid red;position:"+ba(b,"position",!0)+";line-height:0;","%"!==e&&x.appendChild?P[p?"borderLeftWidth":"borderTopWidth"]=d+e:(x=b.parentNode||w.body,P[p?"width":"height"]=d+e),x.appendChild(E),c=parseFloat(E[p?"offsetWidth":"offsetHeight"]),x.removeChild(E),0!==c||g||(c=za(b,a,d,e,!0))),f?-c:c},ba=function(b,a,d){var c,g=(b._gsTransform|| 45 | {})[a];g||0===g?d=g:(b.style[a]?g=b.style[a]:(c=da(b))?(g=c.getPropertyValue(a.replace(/([A-Z])/g,"-$1").toLowerCase()),g=g||c.length?g:c[a]):b.currentStyle&&(g=b.currentStyle[a]),"auto"!==g||"top"!==a&&"left"!==a||("absolute"!==ba(b,"position",!0)?b=0:(c="left"===a?"Left":"Top",g=ba(b,"margin"+c,!0),b=b["offset"+c]-(za(b,a,parseFloat(g),(g+"").replace(Ea,""))||0)),g=b),d=d?g:parseFloat(g)||0);return d},ha=function(b,a,d){var c=b.vars,g=c[d],m=b._listeners[a];"function"==typeof g&&g.apply(c[d+"Scope"]|| 46 | c.callbackScope||b,c[d+"Params"]||[b.pointerEvent]);m&&b.dispatchEvent(a)},Wa=function(b,a){var c,e,g,m=Ca(b),p;if(m)a:if(c=a,g=Ca(m)){c=Ca(c);var x,P,f,ib,r,t,h,k,n,v,y,H,C,S,Y,U,na;P=g.getBBox&&Fa(g);if(g===window)m=La(),e=X(),x=e+(A.clientWidth||g.innerWidth||w.body.clientWidth||0),P=m+((g.innerHeight||0)-20a-d.y?0:a-d.y-150;b.removeChild(e);m.removeChild(b);m.appendChild(e);b=e.getScreenCTM();a=b.e;g.border="50px solid red";b=e.getScreenCTM();0===a&&0===b.e&&0===b.f&&1===b.a?(B=1,K=!0):(B=a!==b.e?1:0,K=1!==b.a);m.removeChild(e)},zb=""!==ya(E,"perspective"),rb=ya(E,"transformOrigin").replace(/^ms/g,"Ms").replace(/([A-Z])/g,"-$1").toLowerCase(),T=ya(E,"transform"),Ab=T.replace(/^ms/g,"Ms").replace(/([A-Z])/g,"-$1").toLowerCase(),jb={},kb={},sb=window.SVGElement,Fa=function(b){return!!(sb&&"function"== 52 | typeof b.getBBox&&b.getCTM&&(!b.parentNode||b.parentNode.getBBox&&b.parentNode.getCTM))},Bb=(/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent)||/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent))&&11>parseFloat(RegExp.$1),Z=[],ia=[],oa=function(b){if(!b.getBoundingClientRect||!b.parentNode||!T)return{offsetTop:0,offsetLeft:0,scaleX:1,scaleY:1,offsetParent:A};if(!1!==ja.cacheSVGData&&b._gsCache&&b._gsCache.lastUpdate===h.ticker.frame)return b._gsCache;var a,d,e,g,m,p,x,P,f,k,r; 53 | d=b;var t=V(b);if(t.lastUpdate=h.ticker.frame,b.getBBox&&!t.isSVGRoot){d=b.parentNode;for(a=b.getBBox();d&&"svg"!==(d.nodeName+"").toLowerCase();)d=d.parentNode;return g=oa(d),t.offsetTop=a.y*g.scaleY,t.offsetLeft=a.x*g.scaleX,t.scaleX=g.scaleX,t.scaleY=g.scaleY,t.offsetParent=d||A,t}e=t.offsetParent;e===w.body&&(e=A);for(ia.length=Z.length=0;d&&(m=ba(d,T,!0),"matrix(1, 0, 0, 1, 0, 0)"!==m&&"none"!==m&&"translate3d(0px, 0px, 0px)"!==m&&(ia.push(d),Z.push(d.style[T]),d.style[T]="none"),d!==e);)d=d.parentNode; 54 | d=e.getBoundingClientRect();m=b.getScreenCTM();x=b.createSVGPoint();p=x.matrixTransform(m);x.x=x.y=10;x=x.matrixTransform(m);t.scaleX=(x.x-p.x)/10;t.scaleY=(x.y-p.y)/10;void 0===B&&qb();t.borderBox&&!K&&b.getAttribute("width")&&(g=da(b)||{},P=parseFloat(g.borderLeftWidth)+parseFloat(g.borderRightWidth)||0,f=parseFloat(g.borderTopWidth)+parseFloat(g.borderBottomWidth)||0,k=parseFloat(g.width)||0,r=parseFloat(g.height)||0,t.scaleX*=(k-P)/k,t.scaleY*=(r-f)/r);n?(a=b.getBoundingClientRect(),t.offsetLeft= 55 | a.left-d.left,t.offsetTop=a.top-d.top):(t.offsetLeft=p.x-d.left,t.offsetTop=p.y-d.top);t.offsetParent=e;for(b=ia.length;-1<--b;)ia[b].style[T]=Z[b];return t},qa=function(b,a){if(a=a||{},!b||b===A||!b.parentNode||b===window)return{x:0,y:0};var c=da(b),c=rb&&c?c.getPropertyValue(rb):"50% 50%",e=c.split(" "),g=-1!==c.indexOf("left")?"0%":-1!==c.indexOf("right")?"100%":e[0],e=-1!==c.indexOf("top")?"0%":-1!==c.indexOf("bottom")?"100%":e[1];return("center"===e||null==e)&&(e="50%"),("center"===g||isNaN(parseFloat(g)))&& 56 | (g="50%"),b.getBBox&&Fa(b)?(b._gsTransform||(h.set(b,{x:"+=0",overwrite:!1}),void 0===b._gsTransform.xOrigin&&console.log("Draggable requires at least GSAP 1.17.0")),c=b.getBBox(),a.x=b._gsTransform.xOrigin-c.x,a.y=b._gsTransform.yOrigin-c.y):(b.getBBox&&-1!==(g+e).indexOf("%")&&(b=b.getBBox(),b={offsetWidth:b.width,offsetHeight:b.height}),a.x=-1!==g.indexOf("%")?b.offsetWidth*parseFloat(g)/100:parseFloat(g),a.y=-1!==e.indexOf("%")?b.offsetHeight*parseFloat(e)/100:parseFloat(e)),a},V=function(b){if(!1!== 57 | ja.cacheSVGData&&b._gsCache&&b._gsCache.lastUpdate===h.ticker.frame)return b._gsCache;var a,d=b._gsCache=b._gsCache||{};a=da(b);var e=b.getBBox&&Fa(b),g="svg"===(b.nodeName+"").toLowerCase();if(d.isSVG=e,d.isSVGRoot=g,d.borderBox="border-box"===a.boxSizing,d.computedStyle=a,g)a=b.parentNode||A,a.insertBefore(E,b),d.offsetParent=E.offsetParent||A,a.removeChild(E);else if(e){for(a=b.parentNode;a&&"svg"!==(a.nodeName+"").toLowerCase();)a=a.parentNode;d.offsetParent=a}else d.offsetParent=b.offsetParent; 58 | return d},Ma=function(b,a,d,e){if(b===window||!b||!b.style||!b.parentNode)return[1,0,0,1,0,0];var c,m,p,x,P,f,k,r,t,h,n,v,y,H,u=b._gsCache||V(b),C=b.parentNode,S=C._gsCache||V(C),Y=u.computedStyle,U=u.isSVG?S.offsetParent:C.offsetParent;return c=u.isSVG&&-1!==(b.style[T]+"").indexOf("matrix")?b.style[T]:Y?Y.getPropertyValue(Ab):b.currentStyle?b.currentStyle[T]:"1,0,0,1,0,0",b.getBBox&&-1!==(b.getAttribute("transform")+"").indexOf("matrix")&&(c=b.getAttribute("transform")),c=(c+"").match(/(?:\-|\.|\b)(\d|\.|e\-)+/g)|| 59 | [1,0,0,1,0,0],6x;x++)c[x]=a[x]*g;d+=1.1;e-=1.1}else"function"==typeof a?k.end=function(c){return a.call(b,c)*g}:k.end=a;return(d||0===d)&&(k.max=d),(e||0===e)&&(k.min=e),m&&(k.velocity=0),k},wb=function(b){var a;return b&&b.getAttribute&&"BODY"!==b.nodeName?"true"===(a=b.getAttribute("data-clickable"))||"false"!==a&&(b.onclick|| 66 | F.test(b.nodeName+"")||"true"===b.getAttribute("contentEditable"))?!0:wb(b.parentNode):!1},bb=function(a,c){for(var b,e=a.length;-1<--e;)b=a[e],b.ondragstart=b.onselectstart=c?null:ga,Da(b,"userSelect",c?"text":"none")},Db=function(){var a,c=w.createElement("div"),d=w.createElement("div"),e=d.style,g=w.body||E;return e.display="inline-block",e.position="relative",c.style.cssText=d.innerHTML="width:90px; height:40px; padding:10px; overflow:auto; visibility: hidden",c.appendChild(d),g.appendChild(c), 67 | ma=d.offsetHeight+18>c.scrollHeight,e.width="100%",T||(e.paddingRight="500px",a=c.scrollLeft=c.scrollWidth-c.clientWidth,e.left="-90px",a=a!==c.scrollLeft),g.removeChild(c),a}(),xb=function(a,c){a=Ca(a);c=c||{};var b,e,g,m,p,f,k=w.createElement("div"),n=k.style,v=a.firstChild,r=0,t=0,u=a.scrollTop,y=a.scrollLeft,H=a.scrollWidth,A=a.scrollHeight,z=0,q=0,C=0;zb&&!1!==c.force3D?(p="translate3d(",f="px,0px)"):T&&(p="translate(",f="px)");this.scrollTop=function(a,b){return arguments.length?void this.top(-a, 68 | b):-this.top()};this.scrollLeft=function(a,b){return arguments.length?void this.left(-a,b):-this.left()};this.left=function(b,d){if(!arguments.length)return-(a.scrollLeft+t);var e=a.scrollLeft-y,g=t;return(2e)&&!d?(y=a.scrollLeft,h.killTweensOf(this,!0,{left:1,scrollLeft:1}),this.left(-y),void(c.onKill&&c.onKill())):(b=-b,0>b?(t=b-.5|0,b=0):b>q?(t=b-q|0,b=q):t=0,(t||g)&&(p?this._suspendTransforms||(n[T]=p+-t+"px,"+-r+f):n.left=-t+"px",Db&&0<=t+z&&(n.paddingRight=t+z+"px")),a.scrollLeft=0|b, 69 | void(y=a.scrollLeft))};this.top=function(b,d){if(!arguments.length)return-(a.scrollTop+r);var e=a.scrollTop-u,g=r;return(2e)&&!d?(u=a.scrollTop,h.killTweensOf(this,!0,{top:1,scrollTop:1}),this.top(-u),void(c.onKill&&c.onKill())):(b=-b,0>b?(r=b-.5|0,b=0):b>C?(r=b-C|0,b=C):r=0,(r||g)&&(p?this._suspendTransforms||(n[T]=p+-t+"px,"+-r+f):n.top=-r+"px"),a.scrollTop=0|b,void(u=a.scrollTop))};this.maxScrollTop=function(){return C};this.maxScrollLeft=function(){return q};this.disable=function(){for(v= 70 | k.firstChild;v;)m=v.nextSibling,a.appendChild(v),v=m;a===k.parentNode&&a.removeChild(k)};this.enable=function(){if(v=a.firstChild,v!==k){for(;v;)m=v.nextSibling,k.appendChild(v),v=m;a.appendChild(k);this.calibrate()}};this.calibrate=function(c){var d,m,p=a.clientWidth===b;u=a.scrollTop;y=a.scrollLeft;p&&a.clientHeight===e&&k.offsetHeight===g&&H===a.scrollWidth&&A===a.scrollHeight&&!c||((r||t)&&(d=this.left(),m=this.top(),this.left(-a.scrollLeft),this.top(-a.scrollTop)),(!p||c)&&(n.display="block", 71 | n.width="auto",n.paddingRight="0px",z=Math.max(0,a.scrollWidth-a.clientWidth),z&&(z+=ba(a,"paddingLeft")+(ma?ba(a,"paddingRight"):0))),n.display="inline-block",n.position="relative",n.overflow="visible",n.verticalAlign="top",n.width="100%",n.paddingRight=z+"px",ma&&(n.paddingBottom=ba(a,"paddingBottom",!0)),sa&&(n.zoom="1"),b=a.clientWidth,e=a.clientHeight,H=a.scrollWidth,A=a.scrollHeight,q=a.scrollWidth-b,C=a.scrollHeight-e,g=k.offsetHeight,n.display="block",!d&&!m||(this.left(d),this.top(m)))}; 72 | this.content=k;this.element=a;this._suspendTransforms=!1;this.enable()},ja=function(b,c){q.call(this,b);b=Ca(b);O||(O=Pa.com.greensock.plugins.ThrowPropsPlugin);this.vars=c=eb(c||{});this.target=b;this.x=this.y=this.rotation=0;this.dragResistance=parseFloat(c.dragResistance)||0;this.edgeResistance=isNaN(c.edgeResistance)?1:parseFloat(c.edgeResistance)||0;this.lockAxis=c.lockAxis;this.autoScroll=c.autoScroll||0;this.lockedAxis=null;this.allowEventDefault=!!c.allowEventDefault;var d,e,g,m,p,x,n,y,z, 73 | r,t,ea,L,F,B,E,R,C,S,Y,U,na,pa,D,I,cb,Na,Oa,Eb,N,Fb,Aa=(c.type||(sa?"top,left":"x,y")).toLowerCase(),Ja=-1!==Aa.indexOf("x")||-1!==Aa.indexOf("y"),J=-1!==Aa.indexOf("rotation"),nb=J?"rotation":Ja?"x":"left",ka=Ja?"y":"top",fa=-1!==Aa.indexOf("x")||-1!==Aa.indexOf("left")||"scroll"===Aa,M=-1!==Aa.indexOf("y")||-1!==Aa.indexOf("top")||"scroll"===Aa,ma=c.minimumMovement||2,l=this,K=$a(c.trigger||c.handle||b),T={},Z=0,ga=!1,ia=c.clickableTest||wb,V=0,X=function(a){if(l.autoScroll&&l.isDragging&&(ga|| 74 | C)){var c,d,g,m,p,ca,f,N;c=b;var x=15*l.autoScroll;ga=!1;Ba.scrollTop=null!=window.pageYOffset?window.pageYOffset:null!=A.scrollTop?A.scrollTop:w.body.scrollTop;Ba.scrollLeft=null!=window.pageXOffset?window.pageXOffset:null!=A.scrollLeft?A.scrollLeft:w.body.scrollLeft;m=l.pointerX-Ba.scrollLeft;for(p=l.pointerY-Ba.scrollTop;c&&!d;)c=(d=Ra(c.parentNode))?Ba:c.parentNode,g=d?{bottom:Math.max(A.clientHeight,window.innerHeight||0),right:Math.max(A.clientWidth,window.innerWidth||0),left:0,top:0}:c.getBoundingClientRect(), 75 | ca=f=0,M&&(N=c._gsMaxScrollY-c.scrollTop,0>N?f=N:p>g.bottom-40&&N?(ga=!0,f=Math.min(N,x*(1-Math.max(0,g.bottom-p)/40)|0)):pN?ca=N:m>g.right-40&&N?(ga=!0,ca=Math.min(N,x*(1-Math.max(0,g.right-m)/40)|0)):md&&-1E-6m&&-1E-6z&&(l.minX=z,l.maxX=z=r,r=l.minX),ea>t&&(l.minY=t,l.maxY=t=ea,ea=l.minY),J&&(l.minRotation=r,l.maxRotation=z),n=!0);c.liveSnap&&(g=!0===c.liveSnap?c.snap||{}:c.liveSnap,m=g instanceof Array||"function"==typeof g,J?(Y=Ea(m?g:g.rotation,r,z,1),U=null):(fa&& 79 | (Y=Ea(m?g:g.x||g.left||g.scrollLeft,r,z,e?-1:1)),M&&(U=Ea(m?g:g.y||g.top||g.scrollTop,ea,t,e?-1:1))))},ua=function(){l.isThrowing=!1;ha(l,"throwcomplete","onThrowComplete")},Qa=function(){l.isThrowing=!1},qa=function(a,d){var g,m,p,ca;a&&O?(!0===a&&(g=c.snap||{},m=g instanceof Array||"function"==typeof g,a={resistance:(c.throwResistance||c.resistance||1E3)/(J?10:1)},J?a.rotation=mb(l,m?g:g.rotation,z,r,1,d):(fa&&(a[nb]=mb(l,m?g:g.x||g.left||g.scrollLeft,z,r,e?-1:1,d||"x"===l.lockedAxis)),M&&(a[ka]= 80 | mb(l,m?g:g.y||g.top||g.scrollTop,t,ea,e?-1:1,d||"y"===l.lockedAxis)))),l.isThrowing=!0,ca=isNaN(c.overshootTolerance)?1===c.edgeResistance?0:1-l.edgeResistance+.2:c.overshootTolerance,l.tween=p=O.to(e||b,{throwProps:a,ease:c.ease||Pa.Power3.easeOut,onComplete:ua,onOverwrite:Qa,onUpdate:c.fastMode?ha:da,onUpdateParams:c.fastMode?[l,"onthrowupdate","onThrowUpdate"]:Q},isNaN(c.maxDuration)?2:c.maxDuration,isNaN(c.minDuration)?0===ca?0:.5:c.minDuration,ca),c.fastMode||(e&&(e._suspendTransforms=!0),p.render(p.duration(), 81 | !0,!0),da(!0,!0),l.endX=l.x,l.endY=l.y,J&&(l.endRotation=l.x),p.play(0),da(!0,!0),e&&(e._suspendTransforms=!1))):n&&l.applyBounds()},wa=function(a){var c,d,e,p,ca,N,f,x,k,r=D||[1,0,0,1,0,0];D=Va(b.parentNode,!0);a&&l.isPressed&&r.join(",")!==D.join(",")&&(c=r[0],d=r[1],e=r[2],p=r[3],ca=r[4],N=r[5],f=c*p-d*e,x=p/f*g+-e/f*m+(e*N-p*ca)/f,k=-d/f*g+c/f*m+-(c*N-d*ca)/f,m=x*D[1]+k*D[3]+D[5],g=x*D[0]+k*D[2]+D[4]);D[1]||D[2]||1!=D[0]||1!=D[3]||0!=D[4]||0!=D[5]||(D=null)},za=function(){var a=1-l.edgeResistance; 82 | wa(!1);D&&(g=l.pointerX*D[0]+l.pointerY*D[2]+D[4],m=l.pointerX*D[1]+l.pointerY*D[3]+D[5]);C&&(ya(l.pointerX,l.pointerY),X(!0));if(e)oa(),x=e.top(),p=e.left();else if(va()?(da(!0,!0),oa()):l.applyBounds(),J){var c=b,d={x:0,y:0},f=void 0,c=Ca(c),c=Va(c,!1,void 0),N=d.x,k=d.y;R=(f=!0===f?d:f||{},f.x=N*c[0]+k*c[2]+c[4],f.y=N*c[1]+k*c[3]+c[5],f);da(!0,!0);p=l.x;x=l.y=Math.atan2(R.y-l.pointerY,l.pointerX-R.x)*ob}else x=ba(b,ka),p=ba(b,nb);n&&a&&(p>z?p=z+(p-z)/a:r>p&&(p=r-(r-p)/a),J||(x>t?x=t+(x-t)/a:ea> 83 | x&&(x=ea-(ea-x)/a)))},va=function(){return l.tween&&l.tween.isActive()},La=function(){!ta.parentNode||va()||l.isDragging||ta.parentNode.removeChild(ta)},Ea=function(a,b,c,d){return"function"==typeof a?function(e){var g=l.isPressed?1-l.edgeResistance:1;return a.call(l,e>c?c+(e-c)*g:b>e?b+(e-b)*g:e)*d}:a instanceof Array?function(d){for(var e,g,m=a.length,l=0,p=999999999999999;-1<--m;)e=a[m],g=e-d,0>g&&(g=-g),p>g&&e>=b&&c>=e&&(l=m,p=g);return a[l]}:isNaN(a)?function(a){return a}:function(){return a* 84 | d}},Ha=function(a){if(!(!d||l.isPressed||!a||("mousedown"===a.type||"pointerdown"===a.type)&&30>Ka()-V&&Xa[l.pointerEvent.type])){if(I=va(),l.pointerEvent=a,Xa[a.type]?(pa=-1!==a.type.indexOf("touch")?a.currentTarget||a.target:w,G(pa,"touchend",la),G(pa,"touchmove",Ya),G(pa,"touchcancel",la),G(w,"touchstart",vb)):(pa=null,G(w,"mousemove",Ya)),Oa=null,G(w,"mouseup",la),a&&a.target&&G(a.target,"mouseup",la),na=ia.call(l,a.target)&&!c.dragClickables)return G(a.target,"change",la),ha(l,"press","onPress"), 85 | void bb(K,!0);if(Na=!pa||fa===M||e||!1===l.vars.allowNativeTouchScrolling?!1:fa?"y":"x",sa?a=ab(a,!0):Na||l.allowEventDefault||(a.preventDefault(),a.preventManipulation&&a.preventManipulation()),a.changedTouches?(a=B=a.changedTouches[0],E=a.identifier):a.pointerId?E=a.pointerId:B=E=null,u++,yb(X),m=l.pointerY=a.pageY,g=l.pointerX=a.pageX,(Na||l.autoScroll)&&Ua(b.parentNode),b.parentNode&&(e||l.autoScroll&&!J&&b.parentNode._gsMaxScrollX&&!ta.parentNode)&&!b.getBBox&&(ta.style.width=b.parentNode.scrollWidth+ 86 | "px",b.parentNode.appendChild(ta)),za(),l.tween&&l.tween.kill(),l.isThrowing=!1,h.killTweensOf(e||b,!0,T),e&&h.killTweensOf(b,!0,{scrollTo:1}),l.tween=l.lockedAxis=null,(c.zIndexBoost||!J&&!e&&!1!==c.zIndexBoost)&&(b.style.zIndex=ja.zIndex++),l.isPressed=!0,y=!(!c.onDrag&&!l._listeners.drag),!J)for(a=K.length;-1<--a;)Da(K[a],"cursor",c.cursor||"move");ha(l,"press","onPress")}},Ya=function(a){var b,c,e,p,f=a;if(d&&!H&&l.isPressed&&a){if(l.pointerEvent=a,b=a.changedTouches){if(a=b[0],a!==B&&a.identifier!== 87 | E){for(p=b.length;-1<--p&&(a=b[p]).identifier!==E;);if(0>p)return}}else if(a.pointerId&&E&&a.pointerId!==E)return;if(sa)a=ab(a,!0);else{if(pa&&Na&&!Oa&&(c=a.pageX,e=a.pageY,D&&(p=c*D[0]+e*D[2]+D[4],e=c*D[1]+e*D[3]+D[5],c=p),Oa=Math.abs(c-g)>Math.abs(e-m)&&fa?"x":"y",!1!==l.vars.lockAxisOnTouchScroll&&(l.lockedAxis="x"===Oa?"y":"x","function"==typeof l.vars.onLockAxis&&l.vars.onLockAxis.call(l,f)),db&&Na===Oa))return void la(f);l.allowEventDefault||Na&&(!Oa||Na===Oa)||!1===f.cancelable||(f.preventDefault(), 88 | f.preventManipulation&&f.preventManipulation())}l.autoScroll&&(ga=!0);ya(a.pageX,a.pageY)}},ya=function(a,b){var c,d,e,f,N,k,ca=1-l.dragResistance,h=1-l.edgeResistance;l.pointerX=a;l.pointerY=b;J?(f=Math.atan2(R.y-b,a-R.x)*ob,N=l.y-f,l.y=f,180N&&(x+=360),e=p+(x-f)*ca):(D&&(k=a*D[0]+b*D[2]+D[4],b=a*D[1]+b*D[3]+D[5],a=k),d=b-m,c=a-g,ma>d&&d>-ma&&(d=0),ma>c&&c>-ma&&(c=0),(l.lockAxis||l.lockedAxis)&&(c||d)&&(k=l.lockedAxis,k||(l.lockedAxis=k=fa&&Math.abs(c)>Math.abs(d)?"y":M?"x":null,k&& 89 | "function"==typeof l.vars.onLockAxis&&l.vars.onLockAxis.call(l,l.pointerEvent)),"y"===k?d=0:"x"===k&&(c=0)),e=p+c*ca,f=x+d*ca);Y||U?(Y&&(e=Y(e)),U&&(f=U(f))):n&&(e>z?e=z+(e-z)*h:r>e&&(e=r+(e-r)*h),J||(f>t?f=t+(f-t)*h:ea>f&&(f=ea+(f-ea)*h)));J||(e=Math.round(e),f=Math.round(f));(l.x!==e||l.y!==f&&!J)&&(J?l.endRotation=l.x=l.endX=e:(M&&(l.y=l.endY=f),fa&&(l.x=l.endX=e)),C=!0,!l.isDragging&&l.isPressed&&(l.isDragging=!0,ha(l,"dragstart","onDragStart")))},la=function(a,e){if(d&&l.isPressed&&(!a||null== 90 | E||e||!(a.pointerId&&a.pointerId!==E||a.changedTouches&&!Cb(a.changedTouches,E)))){l.isPressed=!1;var g,m,p,f,x,k=a,r=l.isDragging,n=h.delayedCall(.001,La);if(pa?(aa(pa,"touchend",la),aa(pa,"touchmove",Ya),aa(pa,"touchcancel",la),aa(w,"touchstart",vb)):aa(w,"mousemove",Ya),aa(w,"mouseup",la),a&&a.target&&aa(a.target,"mouseup",la),C=!1,na)return a&&aa(a.target,"change",la),bb(K,!1),ha(l,"release","onRelease"),ha(l,"click","onClick"),void(na=!1);if(gb(X),!J)for(m=K.length;-1<--m;)Da(K[m],"cursor",c.cursor|| 91 | "move");if(r&&(Z=Ta=Ka(),l.isDragging=!1),u--,a){if(sa&&(a=ab(a,!1)),g=a.changedTouches,g&&(a=g[0],a!==B&&a.identifier!==E)){for(m=g.length;-1<--m&&(a=g[m]).identifier!==E;);if(0>m)return}l.pointerEvent=k;l.pointerX=a.pageX;l.pointerY=a.pageY}return k&&!r?(I&&(c.snap||c.bounds)&&qa(c.throwProps),ha(l,"release","onRelease"),db&&"touchmove"===k.type||(ha(l,"click","onClick"),f=k.target||k.srcElement||b,V=Ka(),x=function(){V!==N&&l.enabled()&&!l.isPressed&&(f.click?f.click():w.createEvent&&(p=w.createEvent("MouseEvents"), 92 | p.initMouseEvent("click",!0,!0,window,1,l.pointerEvent.screenX,l.pointerEvent.screenY,l.pointerX,l.pointerY,!1,!1,!1,!1,0,null),f.dispatchEvent(p)))},db||h.delayedCall(1E-5,x))):(qa(c.throwProps),sa||l.allowEventDefault||!k||!c.dragClickables&&ia.call(l,k.target)||!r||Na&&(!Oa||Na!==Oa)||!1===k.cancelable||(k.preventDefault(),k.preventManipulation&&k.preventManipulation()),ha(l,"release","onRelease")),va()&&n.duration(l.tween.duration()),r&&ha(l,"dragend","onDragEnd"),!0}},Fa=function(a){if(a&&l.isDragging){a= 93 | a.target||a.srcElement||b.parentNode;var c=a.scrollLeft-a._gsScrollX,d=a.scrollTop-a._gsScrollY;(c||d)&&(D?(g-=c*D[0]+d*D[2],m-=d*D[3]+c*D[1]):(g-=c,m-=d),a._gsScrollX+=c,a._gsScrollY+=d,ya(l.pointerX,l.pointerY))}},Ma=function(a){var b=Ka(),c=40>b-V,b=40>b-Z,d=c&&N===V,e=!!a.preventDefault,g=c&&Fb===V,m=a.isTrusted||null==a.isTrusted&&c&&d;return e&&(d||b&&!1!==l.vars.suppressClickOnDrag)&&a.stopImmediatePropagation(),!c||d&&m===g?void((l.isPressed||b||c)&&(e?m&&a.detail&&c||(a.preventDefault(), 94 | a.preventManipulation&&a.preventManipulation()):a.returnValue=!1)):(m&&d&&(Fb=V),void(N=V))};(S=ja.get(this.target))&&S.kill();this.startDrag=function(a){Ha(a);l.isDragging||(l.isDragging=!0,ha(l,"dragstart","onDragStart"))};this.drag=Ya;this.endDrag=function(a){la(a,!0)};this.timeSinceDrag=function(){return l.isDragging?0:(Ka()-Z)/1E3};this.hitTest=function(a,b){return ja.hitTest(l.target,a,b)};this.getDirection=function(b,c){var d,e,g,m,f,N,k="velocity"===b&&O?b:"object"!=typeof b||J?"start":"element"; 95 | return"element"===k&&(f=a(l.target),N=a(b)),d="start"===k?l.x-p:"velocity"===k?O.getVelocity(this.target,nb):f.left+f.width/2-(N.left+N.width/2),J?0>d?"counter-clockwise":"clockwise":(c=c||2,e="start"===k?l.y-x:"velocity"===k?O.getVelocity(this.target,ka):f.top+f.height/2-(N.top+N.height/2),g=Math.abs(d/e),m=1/c>g?"":0>d?"left":"right",c>g&&(""!==m&&(m+="-"),m+=0>e?"up":"down"),m)};this.applyBounds=function(a){var d,e,g,m;if(a&&c.bounds!==a)return c.bounds=a,l.update(!0);if(da(!0),oa(),n){if(d=l.x, 96 | e=l.y,d>z?d=z:r>d&&(d=r),e>t?e=t:ea>e&&(e=ea),(l.x!==d||l.y!==e)&&(g=!0,l.x=l.endX=d,J?l.endRotation=d:l.y=l.endY=e,C=!0,X(!0),l.autoScroll&&!l.isDragging))for(Ua(b.parentNode),a=b,Ba.scrollTop=null!=window.pageYOffset?window.pageYOffset:null!=A.scrollTop?A.scrollTop:w.body.scrollTop,Ba.scrollLeft=null!=window.pageXOffset?window.pageXOffset:null!=A.scrollLeft?A.scrollLeft:w.body.scrollLeft;a&&!m;)a=(m=Ra(a.parentNode))?Ba:a.parentNode,M&&a.scrollTop>a._gsMaxScrollY&&(a.scrollTop=a._gsMaxScrollY), 97 | fa&&a.scrollLeft>a._gsMaxScrollX&&(a.scrollLeft=a._gsMaxScrollX);l.isThrowing&&(g||l.endX>z||l.endXt||l.endYe;e++)if(g=b[e],tb(g))for(m=0;mb.right||c.rightb.bottom||c.bottome.width||0>e.height?!1:m?(d*=.01,g=e.width*e.height,g>=b.width*b.height* 105 | d||g>=c.width*c.height*d):e.width>d&&e.height>d)},ta.style.cssText="visibility:hidden;height:1px;top:-1px;pointer-events:none;position:relative;clear:both;",ja},!0)});_gsScope._gsDefine&&_gsScope._gsQueue.pop()();(function(q){var h=function(){return(_gsScope.GreenSockGlobals||_gsScope)[q]};"function"==typeof define&&define.amd?define(["TweenLite","CSSPlugin"],h):"undefined"!=typeof module&&module.exports&&(require("../TweenLite.js"),require("../plugins/CSSPlugin.js"),module.exports=h())})("Draggable"); 106 | (function(q,h,ra,y,H,O){function B(a,b,c,d,e){return f(a,a,c,d,b,a.defaultView.pageXOffset,a.defaultView.pageYOffset).then(function(g){F("Document cloned");var m="data-html2canvas-node"+e,p="["+m+"='"+e+"']";a.querySelector(p).removeAttribute(m);var m=g.contentWindow,f=m.document.querySelector(p);return("function"===typeof b.onclone?Promise.resolve(b.onclone(m.document)):Promise.resolve(!0)).then(function(){return K(f,g,b,c,d)})})}function K(a,b,c,d,e){var g=b.contentWindow,m=new qa(g.document),p= 107 | new W(c,m),f=$a(a);d="view"===c.type?d:L(g.document);e="view"===c.type?e:R(g.document);var k=new c.renderer(d,e,p,c,h);return(new I(a,k,m,p,c)).ready.then(function(){F("Finished rendering");var d;d="view"===c.type?n(k.canvas,{width:k.canvas.width,height:k.canvas.height,top:0,left:0,x:0,y:0}):a===g.document.body||a===g.document.documentElement||null!=c.canvas?k.canvas:n(k.canvas,{width:null!=c.width?c.width:f.width,height:null!=c.height?c.height:f.height,top:f.top,left:f.left,x:g.pageXOffset,y:g.pageYOffset}); 108 | c.removeContainer&&(b.parentNode.removeChild(b),F("Cleaned up container"));return d})}function n(a,b){var c=h.createElement("canvas"),d=Math.min(a.width-1,Math.max(0,b.left)),e=Math.min(a.width,Math.max(1,b.left+b.width)),g=Math.min(a.height-1,Math.max(0,b.top)),m=Math.min(a.height,Math.max(1,b.top+b.height));c.width=b.width;c.height=b.height;F("Cropping canvas at:","left:",b.left,"top:",b.top,"width:",e-d,"height:",m-g);F("Resulting crop with width",b.width,"and height",b.height," with x",d,"and y", 109 | g);c.getContext("2d").drawImage(a,d,g,e-d,m-g,b.x,b.y,e-d,m-g);return c}function L(a){return Math.max(Math.max(a.body.scrollWidth,a.documentElement.scrollWidth),Math.max(a.body.offsetWidth,a.documentElement.offsetWidth),Math.max(a.body.clientWidth,a.documentElement.clientWidth))}function R(a){return 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))}function ma(){return"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"} 110 | function Ga(a,b){for(var c=3===a.nodeType?h.createTextNode(a.nodeValue):a.cloneNode(!1),d=a.firstChild;d;)!0!==b&&1===d.nodeType&&"SCRIPT"===d.nodeName||c.appendChild(Ga(d,b)),d=d.nextSibling;return c}function f(a,b,c,d,e,g,m){ka(a);var p=h.documentMode&&9>=h.documentMode?Ga(a.documentElement,e.javascriptEnabled):a.documentElement.cloneNode(!0),f=b.createElement("iframe");f.className="html2canvas-container";f.style.visibility="hidden";f.style.position="fixed";f.style.left="-10000px";f.style.top="0px"; 111 | f.style.border="0";f.width=c;f.height=d;f.scrolling="no";b.body.appendChild(f);return new Promise(function(b){var c=f.contentWindow.document;k(a.documentElement,p,"textarea");k(a.documentElement,p,"select");f.contentWindow.onload=f.onload=function(){var d=setInterval(function(){0");!a.defaultView||g===a.defaultView.pageXOffset&&m===a.defaultView.pageYOffset|| 112 | a.defaultView.scrollTo(g,m);c.replaceChild(!0===e.javascriptEnabled?c.adoptNode(p):A(c.adoptNode(p)),c.documentElement);c.close()})}function k(a,b,c){a=a.getElementsByTagName(c);b=b.getElementsByTagName(c);c=a.length;for(var d=0;dg+c[3].width?0:k-c[3].width,h-c[0].width).topRight.subdivide(.5),bottomRightOuter:Ia(d+y,e+z,n,v).bottomRight.subdivide(.5), 132 | bottomRightInner:Ia(d+Math.min(y,g-c[3].width),e+Math.min(z,a+c[0].width),Math.max(0,n-c[1].width),v-c[2].width).bottomRight.subdivide(.5),bottomLeftOuter:Ia(d,e+w,r,b).bottomLeft.subdivide(.5),bottomLeftInner:Ia(d+c[3].width,e+w,Math.max(0,r-c[3].width),b-c[2].width).bottomLeft.subdivide(.5)}}function X(a,b,c,d){var e=function(a,b,c){return{x:a.x+(b.x-a.x)*c,y:a.y+(b.y-a.y)*c}};return{start:a,startControl:b,endControl:c,end:d,subdivide:function(g){var f=e(a,b,g),p=e(b,c,g),k=e(c,d,g),h=e(f,p,g), 133 | p=e(p,k,g);g=e(h,p,g);return[X(a,f,h,g),X(g,p,k,d)]},curveTo:function(a){a.push(["bezierCurve",b.x,b.y,c.x,c.y,d.x,d.y])},curveToReversed:function(d){d.push(["bezierCurve",c.x,c.y,b.x,b.y,a.x,a.y])}}}function Sa(a,b,c,d,e,g,f){var m=[];0a.cssInt("zIndex")}function pb(a){return 0=b.length&&(b[1]=b[0]);return b.map(qb)})}function Da(a){return a.nodeType===Node.TEXT_NODE||a.nodeType===Node.ELEMENT_NODE}function da(a){return"static"!==a.css("position")}function hb(a){return"none"!==a.css("float")}function Ea(a){var b=this;return function(){return!a.apply(b, 136 | arguments)}}function za(a){return a.node.nodeType===Node.ELEMENT_NODE}function ba(a){return a.node.nodeType===Node.TEXT_NODE}function ha(a){return function(b,c){return b.cssInt("zIndex")+a.indexOf(b)/a.length-(c.cssInt("zIndex")+a.indexOf(c)/a.length)}}function Wa(a,b){return function(){return a.apply(b,arguments)}}function qb(a){return parseInt(a,10)}function zb(a){return a.width}function rb(a){return a.node.nodeType!==Node.ELEMENT_NODE||-1==="SCRIPT HEAD TITLE OBJECT BR OPTION".split(" ").indexOf(a.node.nodeName)} 137 | function T(a){for(var b=[],c=0,d=!1,e;a.length;)-1!==[32,13,10,9,45].indexOf(a[c])===d?(e=a.splice(0,c),e.length&&b.push(q.html2canvas.punycode.ucs2.encode(e)),d=!d,c=0):c++,c>=a.length&&(e=a.splice(0,c),e.length&&b.push(q.html2canvas.punycode.ucs2.encode(e)));return b}function Ab(a,b,c){if(!b)return Promise.reject("No proxy configured");var d=sb(va);a=Fa(b,a,d);return va?Xa(a):kb(c,a,d).then(function(a){return Ma(a.content)})}function jb(a,b,c){var d=sb(wa);a=Fa(b,a,d);return wa?Promise.resolve(a): 138 | kb(c,a,d).then(function(a){return"data:"+a.type+";base64,"+a.content})}function kb(a,b,c){return new Promise(function(d,e){var g=a.createElement("script"),f=function(){delete q.html2canvas.proxy[c];a.body.removeChild(g)};q.html2canvas.proxy[c]=function(a){f();d(a)};g.src=b;g.onerror=function(a){f();e(a)};a.body.appendChild(g)})}function sb(a){return a?"":"html2canvas_"+Date.now()+"_"+ ++ja+"_"+Math.round(1E5*Math.random())}function Fa(a,b,c){return a+"?url="+encodeURIComponent(b)+(c.length?"&callback=html2canvas.proxy."+ 139 | c:"")}function Bb(a,b){h.createElement("script");var c=h.createElement("a");c.href=a;this.src=a=c.href;this.image=new Image;var d=this;this.promise=new Promise(function(c,g){d.image.crossOrigin="Anonymous";d.image.onload=c;d.image.onerror=g;(new jb(a,b,h)).then(function(a){d.image.src=a})["catch"](g)})}function Z(a,b,c){u.call(this,a,b);this.isPseudoElement=!0;this.before=":before"===c}function ia(a,b,c,d,e){this.width=a;this.height=b;this.images=c;this.options=d;this.document=e}function oa(a,b,c, 140 | d){u.call(this,c,d);this.ownStacking=a;this.contexts=[];this.children=[];this.opacity=(this.parent?this.parent.stack.opacity:1)*b}function qa(a){this.rangeBounds=this.testRangeBounds(a);this.cors=this.testCORS();this.svg=this.testSVG()}function V(a){this.src=a;this.image=null;var b=this;this.promise=this.hasFabric().then(function(){return b.isInline(a)?Promise.resolve(b.inlineFormatting(a)):Xa(a)}).then(function(a){return new Promise(function(c){html2canvas.fabric.loadSVGFromString(a,b.createCanvas.call(b, 141 | c))})})}function Ma(a){var b=a.length,c,d,e,g,f,k,h="";for(c=0;c>4,e=(e&15)<<4|g>>2,k=(g&3)<<6|f,h=64===g?h+String.fromCharCode(d):64===f||-1===f? 142 | h+String.fromCharCode(d,e):h+String.fromCharCode(d,e,k);return h}function Va(a,b){this.src=a;this.image=null;var c=this;this.promise=b?new Promise(function(b,e){c.image=new Image;c.image.onload=b;c.image.onerror=e;c.image.src="data:image/svg+xml,"+(new XMLSerializer).serializeToString(a);!0===c.image.complete&&b(c.image)}):this.hasFabric().then(function(){return new Promise(function(b){html2canvas.fabric.parseSVGDocument(a,c.createCanvas.call(c,b))})})}function ua(a,b){u.call(this,a,b)}function tb(a, 143 | b,c){if(0=e&&c>>10&1023|55296),a=56320|a&1023);return b+q(a)}).join("")}function f(a,b){return a+22+75*(26>a)-((0!=b)<<5)}function k(a,b,c){var d=0;a=c?E(a/700):a>>1;for(a+=E(a/b);455h&&(h= 156 | 0);for(n=0;n=d&&b("invalid-input");v=a.charCodeAt(h++);v=10>v-48?v-22:26>v-65?v-65:26>v-97?v-97:36;(36<=v||v>E((2147483647-f)/e))&&b("overflow");f+=v*e;t=r<=p?1:r>=p+26?26:r-p;if(vE(2147483647/v)&&b("overflow");e*=v}e=c.length+1;p=k(f-n,e,0==n);E(f/e)>2147483647-m&&b("overflow");m+=E(f/e);f%=e;c.splice(f++,0,m)}return g(c)}function n(a){var c,d,g,m,p,h,n,r,v,t=[], 157 | u,x,z;a=e(a);u=a.length;c=128;d=0;p=72;for(h=0;hv&&t.push(q(v));for((g=m=t.length)&&t.push("-");g=c&&vE((2147483647-d)/x)&&b("overflow");d+=(n-c)*x;c=n;for(h=0;h=p+26?26:n-p;if(r= 0x80 (not a basic code point)","invalid-input":"Invalid input"},E=Math.floor,q=String.fromCharCode,C;t={version:"1.3.1",ucs2:{decode:e,encode:g},decode:h,encode:n,toASCII:function(a){return d(a,function(a){return w.test(a)? 159 | "xn--"+n(a):a})},toUnicode:function(a){return d(a,function(a){return z.test(a)?h(a.slice(4).toLowerCase()):a})}};if("function"==typeof H&&"object"==typeof H.amd&&H.amd)H("punycode",function(){return t});else if(v&&u)if(module.exports==v)u.exports=t;else for(C in t)t.hasOwnProperty(C)&&(v[C]=t[C]);else a.punycode=t})(this);var Cb=0,ub=0;q.html2canvas=function(a,b){var c=ub++;b=b||{};b.logging&&(q.html2canvas.logging=!0,q.html2canvas.start=Date.now());b.async="undefined"===typeof b.async?!0:b.async; 160 | b.allowTaint="undefined"===typeof b.allowTaint?!1:b.allowTaint;b.removeContainer="undefined"===typeof b.removeContainer?!0:b.removeContainer;b.javascriptEnabled="undefined"===typeof b.javascriptEnabled?!1:b.javascriptEnabled;b.imageTimeout="undefined"===typeof b.imageTimeout?1E4:b.imageTimeout;b.renderer="function"===typeof b.renderer?b.renderer:G;b.strict=!!b.strict;if("string"===typeof a){if("string"!==typeof b.proxy)return Promise.reject("Proxy must be used when rendering url");var d=null!=b.width? 161 | b.width:q.innerWidth,e=null!=b.height?b.height:q.innerHeight;return v(E(a),b.proxy,h,d,e,b).then(function(a){return K(a.contentWindow.document.documentElement,a,b,d,e)})}var g=(a===O?[h.documentElement]:a.length?a:[a])[0];g.setAttribute("data-html2canvas-node"+c,c);return B(g.ownerDocument,b,g.ownerDocument.defaultView.innerWidth,g.ownerDocument.defaultView.innerHeight,c).then(function(a){"function"===typeof b.onrendered&&(F("options.onrendered is deprecated, html2canvas returns a Promise containing the canvas"), 162 | b.onrendered(a));return a})};q.html2canvas.punycode=this.punycode;q.html2canvas.proxy={};Q.prototype.darken=function(a){a=1-a;return new Q([Math.round(this.r*a),Math.round(this.g*a),Math.round(this.b*a),this.a])};Q.prototype.isTransparent=function(){return 0===this.a};Q.prototype.isBlack=function(){return 0===this.r&&0===this.g&&0===this.b};Q.prototype.fromArray=function(a){Array.isArray(a)&&(this.r=Math.min(a[0],255),this.g=Math.min(a[1],255),this.b=Math.min(a[2],255),3Date.now()?this.asyncRenderer(a,b,c):setTimeout(Wa(function(){this.asyncRenderer(a,b)},this),0)};I.prototype.createPseudoHideStyles=function(a){this.createStyles(a,"."+Z.prototype.PSEUDO_HIDE_ELEMENT_CLASS_BEFORE+':before { content: "" !important; display: none !important; }.'+Z.prototype.PSEUDO_HIDE_ELEMENT_CLASS_AFTER+':after { content: "" !important; display: none !important; }')}; 190 | I.prototype.disableAnimations=function(a){this.createStyles(a,"* { -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(a,b){var c=a.createElement("style");c.innerHTML=b;a.body.appendChild(c)};I.prototype.getPseudoElements=function(a){var b=[[a]];if(a.node.nodeType=== 191 | Node.ELEMENT_NODE){var c=this.getPseudoElement(a,":before");a=this.getPseudoElement(a,":after");c&&b.push(c);a&&b.push(a)}return[].concat.apply([],b)};I.prototype.getPseudoElement=function(a,b){var c=a.computedStyle(b);if(!c||!c.content||"none"===c.content||"-moz-alt-content"===c.content||"none"===c.display)return null;var d,e=c.content,g=e.substr(0,1);d=g===e.substr(e.length-1)&&g.match(/'|"/)?e.substr(1,e.length-2):e;for(var f="url"===d.substr(0,3),e=h.createElement(f?"img":"html2canvaspseudoelement"), 192 | g=new Z(e,a,b),k=c.length-1;0<=k;k--){var n=yb(c.item(k));e.style[n]=c[n]}e.className=Z.prototype.PSEUDO_HIDE_ELEMENT_CLASS_BEFORE+" "+Z.prototype.PSEUDO_HIDE_ELEMENT_CLASS_AFTER;if(f)return e.src=Qa(d)[0].args[0],[g];c=h.createTextNode(d);e.appendChild(c);return[g,new ua(c,g)]};I.prototype.getChildren=function(a){return[].concat.apply([],[].filter.call(a.node.childNodes,Da).map(function(b){var c=[b.nodeType===Node.TEXT_NODE?new ua(b,a):new u(b,a)].filter(rb);return b.nodeType===Node.ELEMENT_NODE&& 193 | c.length&&"TEXTAREA"!==b.tagName?c[0].isElementVisible()?c.concat(this.getChildren(c[0])):[]:c},this))};I.prototype.newStackingContext=function(a,b){var c=new oa(b,a.getOpacity(),a.node,a.parent);a.cloneTo(c);(b?c.getParentStack(this):c.parent.stack).contexts.push(c);a.stack=c};I.prototype.createStackingContexts=function(){this.nodes.forEach(function(a){var b;if(b=za(a))(b=this.isRootElement(a)||1>a.getOpacity())||(b=a.css("position"),b="auto"!==(-1!==["absolute","relative","fixed"].indexOf(b)?a.css("zIndex"): 194 | "auto")),b=b||this.isBodyWithTransparentRoot(a)||a.hasTransform();b?this.newStackingContext(a,!0):za(a)&&(da(a)&&Ua(a)||-1!==["inline-block","inline-table"].indexOf(a.css("display"))||hb(a))?this.newStackingContext(a,!1):a.assignStack(a.parent.stack)},this)};I.prototype.isBodyWithTransparentRoot=function(a){return"BODY"===a.node.nodeName&&a.parent.color("backgroundColor").isTransparent()};I.prototype.isRootElement=function(a){return null===a.parent};I.prototype.sortStackingContexts=function(a){a.contexts.sort(ha(a.contexts.slice(0))); 195 | a.contexts.forEach(this.sortStackingContexts,this)};I.prototype.parseTextBounds=function(a){return function(b,c,d){if("none"!==a.parent.css("textDecoration").substr(0,4)||0!==b.trim().length){if(this.support.rangeBounds&&!a.parent.hasTransform())return c=d.slice(0,c).join("").length,this.getRangeBounds(a.node,c,b.length);if(a.node&&"string"===typeof a.node.data)return b=a.node.splitText(b.length),c=this.getWrapperBounds(a.node,a.parent.hasTransform()),a.node=b,c}else if(!this.support.rangeBounds|| 196 | a.parent.hasTransform())a.node=a.node.splitText(b.length);return{}}};I.prototype.getWrapperBounds=function(a,b){var c=a.ownerDocument.createElement("html2canvaswrapper"),d=a.parentNode,e=a.cloneNode(!0);c.appendChild(a.cloneNode(!0));d.replaceChild(c,a);var g=b?eb(c):$a(c);d.replaceChild(e,c);return g};I.prototype.getRangeBounds=function(a,b,c){var d=this.range||(this.range=a.ownerDocument.createRange());d.setStart(a,b);d.setEnd(a,b+c);return d.getBoundingClientRect()};I.prototype.parse=function(a){var b= 197 | a.contexts.filter(Ra),c=a.children.filter(za),d=c.filter(Ea(hb)),e=d.filter(Ea(da)).filter(Ea(ab)),c=c.filter(Ea(da)).filter(hb),g=d.filter(Ea(da)).filter(ab),d=a.contexts.concat(d.filter(da)).filter(Ua),f=a.children.filter(ba).filter(Ca);a=a.contexts.filter(pb);b.concat(e).concat(c).concat(g).concat(d).concat(f).concat(a).forEach(function(a){this.renderQueue.push(a);a instanceof oa&&(this.parse(a),this.renderQueue.push(new gb))},this)};I.prototype.paint=function(a){try{a instanceof gb?this.renderer.ctx.restore(): 198 | ba(a)?(!0===a.parent.isPseudoElement&&a.parent.appendToDOM(),this.paintText(a),!0===a.parent.isPseudoElement&&a.parent.cleanDOM()):this.paintNode(a)}catch(b){if(F(b),this.options.strict)throw b;}};I.prototype.paintNode=function(a){a instanceof oa&&(this.renderer.setOpacity(a.opacity),this.renderer.ctx.save(),a.hasTransform()&&this.renderer.setTransform(a.parseTransform()));"INPUT"===a.node.nodeName&&"checkbox"===a.node.type?this.paintCheckbox(a):"INPUT"===a.node.nodeName&&"radio"===a.node.type?this.paintRadio(a): 199 | this.paintElement(a)};I.prototype.paintElement=function(a){var b=a.parseBounds();this.renderer.clip(a.backgroundClip,function(){this.renderer.renderBackground(a,b,a.borders.borders.map(zb))},this);this.renderer.clip(a.clip,function(){this.renderer.renderBorders(a.borders.borders)},this);this.renderer.clip(a.backgroundClip,function(){switch(a.node.nodeName){case "svg":case "IFRAME":var c=this.images.get(a.node);c?this.renderer.renderImage(a,b,a.borders,c):F("Error loading <"+a.node.nodeName+">",a.node); 200 | break;case "IMG":(c=this.images.get(a.node.src))?this.renderer.renderImage(a,b,a.borders,c):F("Error loading ",a.node.src);break;case "CANVAS":this.renderer.renderImage(a,b,a.borders,{image:a.node});break;case "SELECT":case "INPUT":case "TEXTAREA":this.paintFormValue(a)}},this)};I.prototype.paintCheckbox=function(a){var b=a.parseBounds(),c=Math.min(b.width,b.height),d={width:c-1,height:c-1,top:b.top,left:b.left},b=[3,3],e=[b,b,b,b],g=[1,1,1,1].map(function(a){return{color:new Q("#A5A5A5"),width:a}}), 201 | f=La(d,e,g);this.renderer.clip(a.backgroundClip,function(){this.renderer.rectangle(d.left+1,d.top+1,d.width-2,d.height-2,new Q("#DEDEDE"));this.renderer.renderBorders(fb(g,d,f,e));a.node.checked&&(this.renderer.font(new Q("#424242"),"normal","normal","bold",c-3+"px","arial"),this.renderer.text("\u2714",d.left+c/6,d.top+c-1))},this)};I.prototype.paintRadio=function(a){var b=a.parseBounds(),c=Math.min(b.width,b.height)-2;this.renderer.clip(a.backgroundClip,function(){this.renderer.circleStroke(b.left+ 202 | 1,b.top+1,c,new Q("#DEDEDE"),1,new Q("#A5A5A5"));a.node.checked&&this.renderer.circle(Math.ceil(b.left+c/4)+1,Math.ceil(b.top+c/4)+1,Math.floor(c/2),new Q("#424242"))},this)};I.prototype.paintFormValue=function(a){var b=a.getValue();if(0";try{c.drawImage(a,0,0),b.toDataURL()}catch(d){return!1}return!0};V.prototype.hasFabric=function(){return html2canvas.fabric?Promise.resolve(): 216 | Promise.reject(Error("html2canvas.svg.js is not loaded, cannot render svg"))};V.prototype.inlineFormatting=function(a){return/^data:image\/svg\+xml;base64,/.test(a)?this.decode64(this.removeContentType(a)):this.removeContentType(a)};V.prototype.removeContentType=function(a){return a.replace(/^data:image\/svg\+xml(;base64)?,/,"")};V.prototype.isInline=function(a){return/^data:image\/svg\+xml/i.test(a)};V.prototype.createCanvas=function(a){var b=this;return function(c,d){var e=new html2canvas.fabric.StaticCanvas("c"); 217 | b.image=e.lowerCanvasEl;e.setWidth(d.width).setHeight(d.height).add(html2canvas.fabric.util.groupSVGElements(c,d)).renderAll();a(e.lowerCanvasEl)}};V.prototype.decode64=function(a){return"function"===typeof q.atob?q.atob(a):Ma(a)};Va.prototype=Object.create(V.prototype);ua.prototype=Object.create(u.prototype);ua.prototype.applyTextTransform=function(){this.node.data=this.transform(this.parent.css("textTransform"))};ua.prototype.transform=function(a){var b=this.node.data;switch(a){case "lowercase":return b.toLowerCase(); 218 | case "capitalize":return b.replace(/(^|\s|:|-|\(|\))([a-z])/g,tb);case "uppercase":return b.toUpperCase();default:return b}};lb.prototype=Object.create(ta.prototype);G.prototype=Object.create(ia.prototype);G.prototype.setFillStyle=function(a){this.ctx.fillStyle="object"===typeof a&&a.isColor?a.toString():a;return this.ctx};G.prototype.rectangle=function(a,b,c,d,e){this.setFillStyle(e).fillRect(a,b,c,d)};G.prototype.circle=function(a,b,c,d){this.setFillStyle(d);this.ctx.beginPath();this.ctx.arc(a+ 219 | c/2,b+c/2,c/2,0,2*Math.PI,!0);this.ctx.closePath();this.ctx.fill()};G.prototype.circleStroke=function(a,b,c,d,e,g){this.circle(a,b,c,d);this.ctx.strokeStyle=g.toString();this.ctx.stroke()};G.prototype.drawShape=function(a,b){this.shape(a);this.setFillStyle(b).fill()};G.prototype.taints=function(a){if(null===a.tainted){this.taintCtx.drawImage(a.image,0,0);try{this.taintCtx.getImageData(0,0,1,1),a.tainted=!1}catch(b){this.taintCtx=h.createElement("canvas").getContext("2d"),a.tainted=!0}}return a.tainted}; 220 | G.prototype.drawImage=function(a,b,c,d,e,g,f,k,h){this.taints(a)&&!this.options.allowTaint||this.ctx.drawImage(a.image,b,c,d,e,g,f,k,h)};G.prototype.clip=function(a,b,c){this.ctx.save();a.filter(aa).forEach(function(a){this.shape(a).clip()},this);b.call(c);this.ctx.restore()};G.prototype.shape=function(a){this.ctx.beginPath();a.forEach(function(a,c){"rect"===a[0]?this.ctx.rect.apply(this.ctx,a.slice(1)):this.ctx[0===c?"moveTo":a[0]+"To"].apply(this.ctx,a.slice(1))},this);this.ctx.closePath();return this.ctx}; 221 | G.prototype.font=function(a,b,c,d,e,g){this.setFillStyle(a).font=[b,c,d,e,g].join(" ").split(",")[0]};G.prototype.fontShadow=function(a,b,c,d){this.setVariable("shadowColor",a.toString()).setVariable("shadowOffsetY",b).setVariable("shadowOffsetX",c).setVariable("shadowBlur",d)};G.prototype.clearShadow=function(){this.setVariable("shadowColor","rgba(0,0,0,0)")};G.prototype.setOpacity=function(a){this.ctx.globalAlpha=a};G.prototype.setTransform=function(a){this.ctx.translate(a.origin[0],a.origin[1]); 222 | this.ctx.transform.apply(this.ctx,a.matrix);this.ctx.translate(-a.origin[0],-a.origin[1])};G.prototype.setVariable=function(a,b){this.variables[a]!==b&&(this.variables[a]=this.ctx[a]=b);return this};G.prototype.text=function(a,b,c){this.ctx.fillText(a,b,c)};G.prototype.backgroundRepeatShape=function(a,b,c,d,e,g,f,k,h){this.clip([[["line",Math.round(e),Math.round(g)],["line",Math.round(e+f),Math.round(g)],["line",Math.round(e+f),Math.round(k+g)],["line",Math.round(e),Math.round(k+g)]]],function(){this.renderBackgroundRepeat(a, 223 | b,c,d,h[3],h[0])},this)};G.prototype.renderBackgroundRepeat=function(a,b,c,d,e,g){e=Math.round(d.left+b.left+e);b=Math.round(d.top+b.top+g);this.setFillStyle(this.ctx.createPattern(this.resizeImage(a,c),"repeat"));this.ctx.translate(e,b);this.ctx.fill();this.ctx.translate(-e,-b)};G.prototype.renderBackgroundGradient=function(a,b){if(a instanceof Za){var c=this.ctx.createLinearGradient(b.left+b.width*a.x0,b.top+b.height*a.y0,b.left+b.width*a.x1,b.top+b.height*a.y1);a.colorStops.forEach(function(a){c.addColorStop(a.stop, 224 | a.color.toString())});this.rectangle(b.left,b.top,b.width,b.height,c)}};G.prototype.resizeImage=function(a,b){var c=a.image;if(c.width===b.width&&c.height===b.height)return c;var d=h.createElement("canvas");d.width=b.width;d.height=b.height;d.getContext("2d").drawImage(c,0,0,c.width,c.height,0,0,b.width,b.height);return d}}}).call({},"undefined"!==typeof window?window:void 0,"undefined"!==typeof document?document:void 0); 225 | (function(q){function h(y,H){if({}.hasOwnProperty.call(h.cache,y))return h.cache[y];var q=h.resolve(y);if(!q)throw Error("Failed to resolve module "+y);var B={id:y,require:h,filename:y,exports:{},loaded:!1,parent:H,children:[]};H&&H.children.push(B);var K=y.slice(0,y.lastIndexOf("/")+1);return h.cache[y]=B.exports,q.call(B.exports,B,B.exports,K,y),B.loaded=!0,h.cache[y]=B.exports}h.modules={};h.cache={};h.resolve=function(y){return{}.hasOwnProperty.call(h.modules,y)?h.modules[y]:void 0};h.define= 226 | function(y,q){h.modules[y]=q};var ra=function(h){return h="/",{title:"browser",version:"v0.10.26",browser:!0,env:{},argv:[],nextTick:q.setImmediate||function(h){setTimeout(h,0)},cwd:function(){return h},chdir:function(y){h=y}}}();h.define("/gif.coffee",function(y,q,O,B){function H(h,n){function f(){this.constructor=h}for(var k in n)({}).hasOwnProperty.call(n,k)&&(h[k]=n[k]);return f.prototype=n.prototype,h.prototype=new f,h.__super__=n.prototype,h}var n,L,R;q=h("events",y).EventEmitter;n=h("/browser.coffee", 227 | y);q=function(h){function q(f){var k;this.running=!1;this.options={};this.frames=[];this.freeWorkers=[];this.activeWorkers=[];this.setOptions(f);for(k in L)f=L[k],null!=this.options[k]?this.options[k]:this.options[k]=f}return H(q,h),L={workerScript:"gif.worker.js",workers:2,repeat:0,background:"#fff",quality:10,width:null,height:null,transparent:null},R={delay:500,copy:!1},q.prototype.setOption=function(f,k){return this.options[f]=k,null==this._canvas||"width"!==f&&"height"!==f?void 0:this._canvas[f]= 228 | k},q.prototype.setOptions=function(f){var k,h,n=[];for(k in f)({}).hasOwnProperty.call(f,k)&&(h=f[k],n.push(this.setOption(k,h)));return n},q.prototype.addFrame=function(f,k){var h,n;null==k&&(k={});h={};h.transparent=this.options.transparent;for(n in R)h[n]=k[n]||R[n];if(null!=this.options.width||this.setOption("width",f.width),null!=this.options.height||this.setOption("height",f.height),"undefined"!==typeof ImageData&&null!=ImageData&&f instanceof ImageData)h.data=f.data;else if("undefined"!==typeof CanvasRenderingContext2D&& 229 | null!=CanvasRenderingContext2D&&f instanceof CanvasRenderingContext2D||"undefined"!==typeof WebGLRenderingContext&&null!=WebGLRenderingContext&&f instanceof WebGLRenderingContext)k.copy?h.data=this.getContextData(f):h.context=f;else if(null!=f.childNodes)k.copy?h.data=this.getImageData(f):h.image=f;else throw Error("Invalid image");return this.frames.push(h)},q.prototype.render=function(){var f;if(this.running)throw Error("Already running");if(null==this.options.width||null==this.options.height)throw Error("Width and height must be set prior to rendering"); 230 | this.running=!0;this.finishedFrames=this.nextFrame=0;this.imageParts=function(f){for(var k=0,h=function(){var f;f=[];for(var k=0;0<=this.frames.length?kthis.frames.length;0<=this.frames.length?++k:--k)f.push(k);return f}.apply(this,arguments).length;kf;0<=f?++h:--h)k.push(h);return k}.apply(this,arguments).length;kf;this.freeWorkers.length<=f?++h:--h)k.push(h);return k}.apply(this,arguments).forEach(function(f){return function(k){var h; 232 | return console.log("spawning worker "+k),h=new Worker(f.options.workerScript),h.onmessage=function(f){return function(k){return f.activeWorkers.splice(f.activeWorkers.indexOf(h),1),f.freeWorkers.push(h),f.frameFinished(k.data)}}(f),f.freeWorkers.push(h)}}(this)),f},q.prototype.frameFinished=function(f){console.log("frame "+f.index+" finished - "+this.activeWorkers.length+" active");this.finishedFrames++;this.emit("progress",this.finishedFrames/this.frames.length);this.imageParts[f.index]=f;a:{f=this.imageParts; 233 | for(var k=0,h=f.length;k=this.frames.length?void 0:(f=this.frames[this.nextFrame++],h=this.freeWorkers.shift(),k=this.getTask(f),console.log("starting frame "+(k.index+1)+" of "+this.frames.length),this.activeWorkers.push(h),h.postMessage(k))},q.prototype.getContextData= 235 | function(f){return f.getImageData(0,0,this.options.width,this.options.height).data},q.prototype.getImageData=function(f){var k;return null!=this._canvas||(this._canvas=document.createElement("canvas"),this._canvas.width=this.options.width,this._canvas.height=this.options.height),k=this._canvas.getContext("2d"),k.setFill=this.options.background,k.fillRect(0,0,this.options.width,this.options.height),k.drawImage(f,0,0),this.getContextData(k)},q.prototype.getTask=function(f){var k,h;if(k=this.frames.indexOf(f), 236 | h={index:k,last:k===this.frames.length-1,delay:f.delay,transparent:f.transparent,width:this.options.width,height:this.options.height,quality:this.options.quality,repeat:this.options.repeat,canTransfer:"chrome"===n.name},null!=f.data)h.data=f.data;else if(null!=f.context)h.data=this.getContextData(f.context);else if(null!=f.image)h.data=this.getImageData(f.image);else throw Error("Invalid frame");return h},q}(q);y.exports=q});h.define("/browser.coffee",function(h,q,O,B){O=navigator.userAgent.toLowerCase(); 237 | q=navigator.platform.toLowerCase();B=O.match(/(opera|ie|firefox|chrome|version)[\s\/:]([\w\d\.]+)?.*?(safari|version[\s\/:]([\w\d\.]+)|$)/)||[null,"unknown",0];q={name:"version"===B[1]?B[3]:B[1],version:"ie"===B[1]&&document.documentMode||parseFloat("opera"===B[1]&&B[4]?B[4]:B[2]),platform:{name:O.match(/ip(?:ad|od|hone)/)?"ios":(O.match(/(?:webos|android)/)||q.match(/mac|win|linux/)||["other"])[0]}};q[q.name]=!0;q[q.name+parseInt(q.version,10)]=!0;q.platform[q.platform.name]=!0;h.exports=q});h.define("events", 238 | function(h,q,O,B){ra.EventEmitter||(ra.EventEmitter=function(){});h=q.EventEmitter=ra.EventEmitter;var y="function"===typeof Array.isArray?Array.isArray:function(h){return"[object Array]"===Object.prototype.toString.call(h)};h.prototype.setMaxListeners=function(h){this._events||(this._events={});this._events.maxListeners=h};h.prototype.emit=function(h){if("error"===h&&(!this._events||!this._events.error||y(this._events.error)&&!this._events.error.length))throw arguments[1]instanceof Error?arguments[1]: 239 | Error("Uncaught, unspecified 'error' event.");if(!this._events)return!1;var n=this._events[h];if(!n)return!1;if("function"!=typeof n){if(y(n)){for(var q=Array.prototype.slice.call(arguments,1),n=n.slice(),B=0,H=n.length;Bn&&(this._events[h].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.", 241 | this._events[h].length),console.trace())}this._events[h].push(q)}else this._events[h]=[this._events[h],q];else this._events[h]=q;return this};h.prototype.on=h.prototype.addListener;h.prototype.once=function(h,q){var n=this;return n.on(h,function Ga(){n.removeListener(h,Ga);q.apply(this,arguments)}),this};h.prototype.removeListener=function(h,q){if("function"!==typeof q)throw Error("removeListener only takes instances of Function");if(!this._events||!this._events[h])return this;var n=this._events[h]; 242 | if(y(n)){var B=n.indexOf(q);if(0>B)return this;n.splice(B,1);0==n.length&&delete this._events[h]}else this._events[h]===q&&delete this._events[h];return this};h.prototype.removeAllListeners=function(h){return h&&this._events&&this._events[h]&&(this._events[h]=null),this};h.prototype.listeners=function(h){return this._events||(this._events={}),this._events[h]||(this._events[h]=[]),y(this._events[h])||(this._events[h]=[this._events[h]]),this._events[h]}});q.GIF=h("/gif.coffee")}).call(this,this); 243 | (function(){function q(f){var h=f.fps?f.fps:30,k,n,q=1/h,v=f.timeline,w=f.startFrameValue,y=v.totalDuration()/q,z=f.svg,A=Math.floor(1/h*1E3),B,F=this,u,H=f.convertButton;this.init=function(){"svg"==z.tagName&&(z.style="none",z.getAttribute("width")||(z.setAttribute("width",f.svgWidth),z.setAttribute("height",f.svgHeight),z.setAttribute("style","width:"+f.svgWidth+"px; height:"+f.svgHeight+"px;visibility:visible;"),z.style.width=f.svgWidth,z.style.height=f.svgHeight));y/=v.timeScale();k=0;z.style.position= 244 | "relative";z.style.transform="none";z.style.webkitTransform="none";z.style.mozTransform="none";var h;try{h=new Blob(["(function(b){function a(b,d){if({}.hasOwnProperty.call(a.cache,b))return a.cache[b];var e=a.resolve(b);if(!e)throw new Error('Failed to resolve module '+b);var c={id:b,require:a,filename:b,exports:{},loaded:!1,parent:d,children:[]};d&&d.children.push(c);var f=b.slice(0,b.lastIndexOf('/')+1);return a.cache[b]=c.exports,e.call(c.exports,c,c.exports,f,b),c.loaded=!0,a.cache[b]=c.exports}a.modules={},a.cache={},a.resolve=function(b){return{}.hasOwnProperty.call(a.modules,b)?a.modules[b]:void 0},a.define=function(b,c){a.modules[b]=c},a.define('/gif.worker.coffee',function(d,e,f,g){var b,c;b=a('/GIFEncoder.js',d),c=function(a){var c,e,d,f;return c=new b(a.width,a.height),a.index===0?c.writeHeader():c.firstFrame=!1,c.setTransparent(a.transparent),c.setRepeat(a.repeat),c.setDelay(a.delay),c.setQuality(a.quality),c.addFrame(a.data),a.last&&c.finish(),d=c.stream(),a.data=d.pages,a.cursor=d.cursor,a.pageSize=d.constructor.pageSize,a.canTransfer?(f=function(c){for(var b=0,d=a.data.length;b=c.pageSize&&this.newPage(),this.pages[this.page][this.cursor++]=a},c.prototype.writeUTFBytes=function(b){for(var c=b.length,a=0;a=0&&(this.dispose=a)},b.prototype.setRepeat=function(a){this.repeat=a},b.prototype.setTransparent=function(a){this.transparent=a},b.prototype.addFrame=function(a){this.image=a,this.getImagePixels(),this.analyzePixels(),this.firstFrame&&(this.writeLSD(),this.writePalette(),this.repeat>=0&&this.writeNetscapeExt()),this.writeGraphicCtrlExt(),this.writeImageDesc(),this.firstFrame||this.writePalette(),this.writePixels(),this.firstFrame=!1},b.prototype.finish=function(){this.out.writeByte(59)},b.prototype.setQuality=function(a){a<1&&(a=1),this.sample=a},b.prototype.writeHeader=function(){this.out.writeUTFBytes('GIF89a')},b.prototype.analyzePixels=function(){var g=this.pixels.length,d=g/3;this.indexedPixels=new Uint8Array(d);var a=new f(this.pixels,this.sample);a.buildColormap(),this.colorTab=a.getColormap();var b=0;for(var c=0;c>16,l=(e&65280)>>8,m=e&255,c=0,d=16777216,j=this.colorTab.length;for(var a=0;a=0&&(a=dispose&7),a<<=2,this.out.writeByte(0|a|0|b),this.writeShort(this.delay),this.out.writeByte(this.transIndex),this.out.writeByte(0)},b.prototype.writeImageDesc=function(){this.out.writeByte(44),this.writeShort(0),this.writeShort(0),this.writeShort(this.width),this.writeShort(this.height),this.firstFrame?this.out.writeByte(0):this.out.writeByte(128|this.palSize)},b.prototype.writeLSD=function(){this.writeShort(this.width),this.writeShort(this.height),this.out.writeByte(240|this.palSize),this.out.writeByte(0),this.out.writeByte(0)},b.prototype.writeNetscapeExt=function(){this.out.writeByte(33),this.out.writeByte(255),this.out.writeByte(11),this.out.writeUTFBytes('NETSCAPE2.0'),this.out.writeByte(3),this.out.writeByte(1),this.writeShort(this.repeat),this.out.writeByte(0)},b.prototype.writePalette=function(){this.out.writeBytes(this.colorTab);var b=768-this.colorTab.length;for(var a=0;a>8&255)},b.prototype.writePixels=function(){var a=new g(this.width,this.height,this.indexedPixels,this.colorDepth);a.encode(this.out)},b.prototype.stream=function(){return this.out},e.exports=b}),a.define('/LZWEncoder.js',function(e,g,h,i){function f(y,D,C,B){function w(a,b){r[f++]=a,f>=254&&t(b)}function x(b){u(a),k=i+2,j=!0,l(i,b)}function u(b){for(var a=0;a=0){y=w-d,d===0&&(y=1);do if((d-=y)<0&&(d+=w),h[d]===g){e=n[d];continue a}while(h[d]>=0)}l(e,r),e=t,k<1<0&&(a.writeByte(f),a.writeBytes(r,0,f),f=0)}function p(a){return(1<0?g|=a<=8)w(g&255,c),g>>=8,e-=8;if((k>m||j)&&(j?(m=p(n_bits=q),j=!1):(++n_bits,n_bits==b?m=1<0)w(g&255,c),g>>=8,e-=8;t(c)}}var s=Math.max(2,B),r=new Uint8Array(256),h=new Int32Array(a),n=new Int32Array(a),g,e=0,f,k=0,m,j=!1,q,i,o;this.encode=z}var c=-1,b=12,a=5003,d=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535];e.exports=f}),a.define('/TypedNeuQuant.js',function(A,F,E,D){function C(A,B){function I(){o=[],q=new Int32Array(256),t=new Int32Array(a),y=new Int32Array(a),z=new Int32Array(a>>3);var c,d;for(c=0;c>=b,o[c][1]>>=b,o[c][2]>>=b,o[c][3]=c}function K(b,a,c,e,f){o[a][0]-=b*(o[a][0]-c)/d,o[a][1]-=b*(o[a][1]-e)/d,o[a][2]-=b*(o[a][2]-f)/d}function L(j,e,n,l,k){var h=Math.abs(e-j),i=Math.min(e+j,a),g=e+1,f=e-1,m=1,b,d;while(gh)d=z[m++],gh&&(b=o[f--],b[0]-=d*(b[0]-n)/c,b[1]-=d*(b[1]-l)/c,b[2]-=d*(b[2]-k)/c)}function C(p,s,q){var h=2147483647,k=h,d=-1,m=d,c,j,e,n,l;for(c=0;c>i-b),n>g,y[c]-=l,t[c]+=l<>1,b=f+1;b>1,b=f+1;b<256;b++)q[b]=n}function E(j,i,k){var b,d,c,e=1e3,h=-1,f=q[i],g=f-1;while(f=0)f=e?f=a:(f++,c<0&&(c=-c),b=d[0]-j,b<0&&(b=-b),c+=b,c=0&&(d=o[g],c=i-d[1],c>=e?g=-1:(g--,c<0&&(c=-c),b=d[0]-j,b<0&&(b=-b),c+=b,c>h;for(a<=1&&(a=0),c=0;c=f&&(g-=f),c++,q===0&&(q=1),c%q===0)for(n-=n/D,o-=o/v,a=o>>h,a<=1&&(a=0),e=0;e>g,r=e<>3,h=6,t=1<=y){makeFrame=null;if(1 Set timeline repeat:0':"of "+timelineFrames;w.innerHTML=timelineFrames;R.onclick=ra;ka=Draggable.create(document.querySelector(".uiPanel"),{bounds:window}); 252 | window.onresize=function(){ka[0].applyBounds()}})})(); --------------------------------------------------------------------------------