1.0 RC 1.5 Add limited support for radial gradients (only for circles and ellipses...
authorDmitry Baranovskiy <dbaranovskiy@Fresh-Air.sydney.atlassian.com>
Thu, 24 Sep 2009 00:42:49 +0000 (10:42 +1000)
committerDmitry Baranovskiy <dbaranovskiy@Fresh-Air.sydney.atlassian.com>
Thu, 24 Sep 2009 00:42:49 +0000 (10:42 +1000)
Fixed bugs with quadratic curves and first parameter for Raphael being DOM Element.

raphael-min.js
raphael.js

index b2e2e21..1e77a06 100644 (file)
@@ -1,7 +1,7 @@
 /*
- * Raphael 1.0 RC1.4 - JavaScript Vector Library
+ * Raphael 1.0 RC1.5 - JavaScript Vector Library
  *
  * Copyright (c) 2008 - 2009 Dmitry Baranovskiy (http://raphaeljs.com)
  * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license.
  */
-window.Raphael=(function(){var Y=/[, ]+/,g=document,L=window,P={was:"Raphael" in window,is:window.Raphael},f=function(){return l.apply(f,arguments);},b={},q={"clip-rect":"0 0 10e9 10e9",cx:0,cy:0,fill:"#fff","fill-opacity":1,font:'10px "Arial"',"font-family":'"Arial"',"font-size":"10","font-style":"normal","font-weight":400,gradient:0,height:0,href:"http://raphaeljs.com/",opacity:1,path:"M0,0",r:0,rotation:0,rx:0,ry:0,scale:"1 1",src:"",stroke:"#000","stroke-dasharray":"","stroke-linecap":"butt","stroke-linejoin":"butt","stroke-miterlimit":0,"stroke-opacity":1,"stroke-width":1,target:"_blank","text-anchor":"middle",title:"Raphael",translation:"0 0",width:0,x:0,y:0},u={"clip-rect":"csv",cx:"number",cy:"number",fill:"colour","fill-opacity":"number","font-size":"number",height:"number",opacity:"number",path:"path",r:"number",rotation:"csv",rx:"number",ry:"number",scale:"csv",stroke:"colour","stroke-opacity":"number","stroke-width":"number",translation:"csv",width:"number",x:"number",y:"number"},v=["click","dblclick","mousedown","mousemove","mouseout","mouseover","mouseup"];f.version="1.0 RC1.4";f.type=(window.SVGAngle||document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")?"SVG":"VML");f.svg=!(f.vml=f.type=="VML");f.idGenerator=0;f.fn={};f.is=function(i,e){e=(e+"").toLowerCase();if(e=="undefined"&&typeof i=="undefined"){return true;}if(i==null&&e=="null"){return true;}return Object.prototype.toString.call(i).replace(/^\[object\s+|\]$/gi,"").toLowerCase()==e;};f.setWindow=function(e){L=e;g=L.document;};f.hsb2rgb=X(function(af,ad,aj){if(f.is(af,"object")&&"h" in af&&"s" in af&&"b" in af){aj=af.b;ad=af.s;af=af.h;}var aa,ab,ak;if(aj==0){return{r:0,g:0,b:0,hex:"#000"};}if(af>1||ad>1||aj>1){af/=255;ad/=255;aj/=255;}var ac=Math.floor(af*6),ag=(af*6)-ac,Z=aj*(1-ad),R=aj*(1-(ad*ag)),al=aj*(1-(ad*(1-ag)));aa=[aj,R,Z,Z,al,aj,aj][ac];ab=[al,aj,aj,R,Z,Z,al][ac];ak=[Z,Z,al,aj,aj,R,Z][ac];aa*=255;ab*=255;ak*=255;var ah={r:aa,g:ab,b:ak},e=Math.round(aa).toString(16),ae=Math.round(ab).toString(16),ai=Math.round(ak).toString(16);if(e.length==1){e="0"+e;}if(ae.length==1){ae="0"+ae;}if(ai.length==1){ai="0"+ai;}ah.hex="#"+e+ae+ai;return ah;},f);f.rgb2hsb=X(function(e,i,ad){if(f.is(e,"object")&&"r" in e&&"g" in e&&"b" in e){ad=e.b;i=e.g;e=e.r;}if(f.is(e,"string")){var af=f.getRGB(e);e=af.r;i=af.g;ad=af.b;}if(e>1||i>1||ad>1){e/=255;i/=255;ad/=255;}var ac=Math.max(e,i,ad),R=Math.min(e,i,ad),aa,Z,ab=ac;if(R==ac){return{h:0,s:0,b:ac};}else{var ae=(ac-R);Z=ae/ac;if(e==ac){aa=(i-ad)/ae;}else{if(i==ac){aa=2+((ad-e)/ae);}else{aa=4+((e-i)/ae);}}aa/=6;if(aa<0){aa+=1;}if(aa>1){aa-=1;}}return{h:aa,s:Z,b:ab};},f);f._path2string=function(){var Z="",ac;for(var R=0,aa=this.length;R<aa;R++){for(var e=0,ab=this[R].length;e<ab;e++){Z+=this[R][e];e&&e!=ab-1&&(Z+=",");}R!=aa-1&&(Z+="\n");}return Z.replace(/,(?=-)/g,"");};function X(Z,i,e){function R(){var aa=Array.prototype.splice.call(arguments,0,arguments.length),ab=aa.join("\u25ba");R.cache=R.cache||{};R.count=R.count||[];if(ab in R.cache){return e?e(R.cache[ab]):R.cache[ab];}if(R.count.length>1000){delete R.cache[R.count.unshift()];}R.count.push(ab);R.cache[ab]=Z.apply(i,aa);return e?e(R.cache[ab]):R.cache[ab];}return R;}f.getRGB=X(function(e){var af={aliceblue:"#f0f8ff",amethyst:"#96c",antiquewhite:"#faebd7",aqua:"#0ff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000",blanchedalmond:"#ffebcd",blue:"#00f",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#0ff",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",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#f0f",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",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#789",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#0f0",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#f0f",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",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:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#f00",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",wheat:"#f5deb3",white:"#fff",whitesmoke:"#f5f5f5",yellow:"#ff0",yellowgreen:"#9acd32"},ab;if((e+"").toLowerCase() in af){e=af[e.toString().toLowerCase()];}if(!e){return{r:0,g:0,b:0,hex:"#000"};}if(e=="none"){return{r:-1,g:-1,b:-1,hex:"none"};}var R,Z,ae,ac=(e+"").match(/^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgb\(\s*([\d\.]+\s*,\s*[\d\.]+\s*,\s*[\d\.]+)\s*\)|rgb\(\s*([\d\.]+%\s*,\s*[\d\.]+%\s*,\s*[\d\.]+%)\s*\)|hs[bl]\(\s*([\d\.]+\s*,\s*[\d\.]+\s*,\s*[\d\.]+)\s*\)|hs[bl]\(\s*([\d\.]+%\s*,\s*[\d\.]+%\s*,\s*[\d\.]+%)\s*\))\s*$/i);if(ac){if(ac[2]){ae=parseInt(ac[2].substring(5),16);Z=parseInt(ac[2].substring(3,5),16);R=parseInt(ac[2].substring(1,3),16);}if(ac[3]){ae=parseInt(ac[3].substring(3)+ac[3].substring(3),16);Z=parseInt(ac[3].substring(2,3)+ac[3].substring(2,3),16);R=parseInt(ac[3].substring(1,2)+ac[3].substring(1,2),16);}if(ac[4]){ac=ac[4].split(/\s*,\s*/);R=parseFloat(ac[0]);Z=parseFloat(ac[1]);ae=parseFloat(ac[2]);}if(ac[5]){ac=ac[5].split(/\s*,\s*/);R=parseFloat(ac[0])*2.55;Z=parseFloat(ac[1])*2.55;ae=parseFloat(ac[2])*2.55;}if(ac[6]){ac=ac[6].split(/\s*,\s*/);R=parseFloat(ac[0]);Z=parseFloat(ac[1]);ae=parseFloat(ac[2]);return f.hsb2rgb(R,Z,ae);}if(ac[7]){ac=ac[7].split(/\s*,\s*/);R=parseFloat(ac[0])*2.55;Z=parseFloat(ac[1])*2.55;ae=parseFloat(ac[2])*2.55;return f.hsb2rgb(R,Z,ae);}ac={r:R,g:Z,b:ae};var i=Math.round(R).toString(16),aa=Math.round(Z).toString(16),ad=Math.round(ae).toString(16);(i.length==1)&&(i="0"+i);(aa.length==1)&&(aa="0"+aa);(ad.length==1)&&(ad="0"+ad);ac.hex="#"+i+aa+ad;ab=ac;}else{ab={r:-1,g:-1,b:-1,hex:"none"};}return ab;},f);f.getColor=function(i){var R=this.getColor.start=this.getColor.start||{h:0,s:1,b:i||0.75},e=this.hsb2rgb(R.h,R.s,R.b);R.h+=0.075;if(R.h>1){R.h=0;R.s-=0.2;if(R.s<=0){this.getColor.start={h:0,s:1,b:R.b};}}return e.hex;};f.getColor.reset=function(){delete this.start;};f.parsePathString=X(function(e){if(!e){return null;}var R={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},i=[];if(f.is(e,"array")&&f.is(e[0],"array")){i=t(e);}if(!i.length){(e+"").replace(/([achlmqstvz])[\s,]*((-?\d*\.?\d*(?:e[-+]?\d+)?\s*,?\s*)+)/ig,function(aa,Z,ad){var ac=[],ab=Z.toLowerCase();ad.replace(/(-?\d*\.?\d*(?:e[-+]?\d+)?)\s*,?\s*/ig,function(af,ae){ae&&ac.push(+ae);});while(ac.length>=R[ab]){i.push([Z].concat(ac.splice(0,R[ab])));if(!R[ab]){break;}}});}i.toString=f._path2string;return i;});var C=X(function(ag){if(!ag){return{x:0,y:0,width:0,height:0};}ag=O(ag);var ad=0,ac=0,Z=[],R=[];for(var aa=0,af=ag.length;aa<af;aa++){if(ag[aa][0]=="M"){ad=ag[aa][1];ac=ag[aa][2];Z.push(ad);R.push(ac);}else{var ab=J(ad,ac,ag[aa][1],ag[aa][2],ag[aa][3],ag[aa][4],ag[aa][5],ag[aa][6]);Z=Z.concat(ab.min.x,ab.max.x);R=R.concat(ab.min.y,ab.max.y);}}var e=Math.min.apply(0,Z),ae=Math.min.apply(0,R);return{x:e,y:ae,width:Math.max.apply(0,Z)-e,height:Math.max.apply(0,R)-ae};}),t=function(ac){var Z=[];if(!f.is(ac,"array")||!f.is(ac&&ac[0],"array")){ac=f.parsePathString(ac);}for(var R=0,aa=ac.length;R<aa;R++){Z[R]=[];for(var e=0,ab=ac[R].length;e<ab;e++){Z[R][e]=ac[R][e];}}Z.toString=f._path2string;return Z;},c=X(function(aa){if(!f.is(aa,"array")||!f.is(aa&&aa[0],"array")){aa=f.parsePathString(aa);}var ag=[],ai=0,ah=0,al=0,ak=0,Z=0;if(aa[0][0]=="M"){ai=aa[0][1];ah=aa[0][2];al=ai;ak=ah;Z++;ag.push(["M",ai,ah]);}for(var ad=Z,am=aa.length;ad<am;ad++){var e=ag[ad]=[],aj=aa[ad];if(aj[0]!=aj[0].toLowerCase()){e[0]=aj[0].toLowerCase();switch(e[0]){case"a":e[1]=aj[1];e[2]=aj[2];e[3]=aj[3];e[4]=aj[4];e[5]=aj[5];e[6]=+(aj[6]-ai).toFixed(3);e[7]=+(aj[7]-ah).toFixed(3);break;case"v":e[1]=+(aj[1]-ah).toFixed(3);break;case"m":al=aj[1];ak=aj[2];default:for(var ac=1,ae=aj.length;ac<ae;ac++){e[ac]=+(aj[ac]-((ac%2)?ai:ah)).toFixed(3);}}}else{e=ag[ad]=[];if(aj[0]=="m"){al=aj[1]+ai;ak=aj[2]+ah;}for(var ab=0,R=aj.length;ab<R;ab++){ag[ad][ab]=aj[ab];}}var af=ag[ad].length;switch(ag[ad][0]){case"z":ai=al;ah=ak;break;case"h":ai+=+ag[ad][af-1];break;case"v":ah+=+ag[ad][af-1];break;default:ai+=+ag[ad][af-2];ah+=+ag[ad][af-1];}}ag.toString=f._path2string;return ag;},0,t),w=X(function(aa){if(!f.is(aa,"array")||!f.is(aa&&aa[0],"array")){aa=f.parsePathString(aa);}var af=[],ah=0,ag=0,ak=0,aj=0,Z=0;if(aa[0][0]=="M"){ah=+aa[0][1];ag=+aa[0][2];ak=ah;aj=ag;Z++;af[0]=["M",ah,ag];}for(var ad=Z,al=aa.length;ad<al;ad++){var e=af[ad]=[],ai=aa[ad];if(ai[0]!=(ai[0]+"").toUpperCase()){e[0]=(ai[0]+"").toUpperCase();switch(e[0]){case"A":e[1]=ai[1];e[2]=ai[2];e[3]=ai[3];e[4]=ai[4];e[5]=ai[5];e[6]=+(ai[6]+ah);e[7]=+(ai[7]+ag);break;case"V":e[1]=+ai[1]+ag;break;case"H":e[1]=+ai[1]+ah;break;case"M":ak=+ai[1]+ah;aj=+ai[2]+ag;default:for(var ac=1,ae=ai.length;ac<ae;ac++){e[ac]=+ai[ac]+((ac%2)?ah:ag);}}}else{for(var ab=0,R=ai.length;ab<R;ab++){af[ad][ab]=ai[ab];}}switch(e[0]){case"Z":ah=ak;ag=aj;break;case"H":ah=e[1];break;case"V":ag=e[1];break;default:ah=af[ad][af[ad].length-2];ag=af[ad][af[ad].length-1];}}af.toString=f._path2string;return af;},null,t),d=function(i,Z,e,R){return[i,Z,e,R,e,R];},x=function(i,Z,ab,aa,e,R){return[2/3*i+1/3*ab,2/3*Z+1/3*aa,2/3*i+1/3*e,2/3*Z+1/3*R,e,R];},r=function(ak,aP,au,ar,al,af,aa,aj,aO,am){var aq=Math.PI*120/180,e=Math.PI/180*(+al||0),ay=[],av,aL=X(function(aQ,aT,i){var aS=aQ*Math.cos(i)-aT*Math.sin(i),aR=aQ*Math.sin(i)+aT*Math.cos(i);return{x:aS,y:aR};});if(!am){av=aL(ak,aP,-e);ak=av.x;aP=av.y;av=aL(aj,aO,-e);aj=av.x;aO=av.y;var R=Math.cos(Math.PI/180*al),ah=Math.sin(Math.PI/180*al),aA=(ak-aj)/2,az=(aP-aO)/2;au=Math.max(au,Math.abs(aA));ar=Math.max(ar,Math.abs(az));var Z=au*au,aD=ar*ar,aF=(af==aa?-1:1)*Math.sqrt(Math.abs((Z*aD-Z*az*az-aD*aA*aA)/(Z*az*az+aD*aA*aA))),ao=aF*au*az/ar+(ak+aj)/2,an=aF*-ar*aA/au+(aP+aO)/2,ae=Math.asin((aP-an)/ar),ad=Math.asin((aO-an)/ar);ae=ak<ao?Math.PI-ae:ae;ad=aj<ao?Math.PI-ad:ad;ae<0&&(ae=Math.PI*2+ae);ad<0&&(ad=Math.PI*2+ad);if(aa&&ae>ad){ae=ae-Math.PI*2;}if(!aa&&ad>ae){ad=ad-Math.PI*2;}}else{ae=am[0];ad=am[1];ao=am[2];an=am[3];}var ai=ad-ae;if(Math.abs(ai)>aq){var ap=ad,at=aj,ag=aO;ad=ae+aq*(aa&&ad>ae?1:-1);aj=ao+au*Math.cos(ad);aO=an+ar*Math.sin(ad);ay=r(aj,aO,au,ar,al,0,aa,at,ag,[ad,ap,ao,an]);}ai=ad-ae;var ac=Math.cos(ae),aN=Math.sin(ae),ab=Math.cos(ad),aM=Math.sin(ad),aB=Math.tan(ai/4),aE=4/3*au*aB,aC=4/3*ar*aB,aK=[ak,aP],aJ=[ak+aE*aN,aP-aC*ac],aI=[aj+aE*aM,aO-aC*ab],aG=[aj,aO];aJ[0]=2*aK[0]-aJ[0];aJ[1]=2*aK[1]-aJ[1];if(am){return[aJ,aI,aG].concat(ay);}else{ay=[aJ,aI,aG].concat(ay).join(",").split(",");var aw=[];for(var aH=0,ax=ay.length;aH<ax;aH++){aw[aH]=aH%2?aL(ay[aH-1],ay[aH],e).y:aL(ay[aH],ay[aH+1],e).x;}return aw;}},A=X(function(i,e,ao,am,ab,aa,ad,ac,ai){var ag=Math.pow(1-ai,3)*i+Math.pow(1-ai,2)*3*ai*ao+(1-ai)*3*ai*ai*ab+Math.pow(ai,3)*ad,ae=Math.pow(1-ai,3)*e+Math.pow(1-ai,2)*3*ai*am+(1-ai)*3*ai*ai*aa+Math.pow(ai,3)*ac,ak=i+2*ai*(ao-i)+ai*ai*(ab-2*ao+i),aj=e+2*ai*(am-e)+ai*ai*(aa-2*am+e),an=ao+2*ai*(ab-ao)+ai*ai*(ad-2*ab+ao),al=am+2*ai*(aa-am)+ai*ai*(ac-2*aa+am),ah=(1-ai)*i+ai*ao,af=(1-ai)*e+ai*am,Z=(1-ai)*ab+ai*ad,R=(1-ai)*aa+ai*ac;return{x:ag,y:ae,m:{x:ak,y:aj},n:{x:an,y:al},start:{x:ah,y:af},end:{x:Z,y:R}};}),J=X(function(i,e,Z,R,am,al,ai,af){var ak=(am-2*Z+i)-(ai-2*am+Z),ah=2*(Z-i)-2*(am-Z),ae=i-Z,ac=(-ah+Math.sqrt(ah*ah-4*ak*ae))/2/ak,aa=(-ah-Math.sqrt(ah*ah-4*ak*ae))/2/ak,ag=[e,af],aj=[i,ai],ad=A(i,e,Z,R,am,al,ai,af,ac>0&&ac<1?ac:0),ab=A(i,e,Z,R,am,al,ai,af,aa>0&&aa<1?aa:0);aj=aj.concat(ad.x,ab.x);ag=ag.concat(ad.y,ab.y);ak=(al-2*R+e)-(af-2*al+R);ah=2*(R-e)-2*(al-R);ae=e-R;ac=(-ah+Math.sqrt(ah*ah-4*ak*ae))/2/ak;aa=(-ah-Math.sqrt(ah*ah-4*ak*ae))/2/ak;ad=A(i,e,Z,R,am,al,ai,af,ac>0&&ac<1?ac:0);ab=A(i,e,Z,R,am,al,ai,af,aa>0&&aa<1?aa:0);aj=aj.concat(ad.x,ab.x);ag=ag.concat(ad.y,ab.y);return{min:{x:Math.min.apply(Math,aj),y:Math.min.apply(Math,ag)},max:{x:Math.max.apply(Math,aj),y:Math.max.apply(Math,ag)}};}),O=X(function(al,ag){var aa=w(al),ah=ag&&w(ag),ai={x:0,y:0,bx:0,by:0,X:0,Y:0},e={x:0,y:0,bx:0,by:0,X:0,Y:0},ac=function(am,an){var i,ao;if(!am){return["C",an.x,an.y,an.x,an.y,an.x,an.y];}switch(am[0]){case"M":an.X=am[1];an.Y=am[2];break;case"A":am=["C"].concat(r.apply(0,[an.x,an.y].concat(am.slice(1))));break;case"S":i=an.x+(an.x-(an.bx||an.x));ao=an.y+(an.y-(an.by||an.y));am=["C",i,ao].concat(am.slice(1));break;case"T":i=an.x+(an.x-(an.bx||an.x));ao=an.y+(an.y-(an.by||an.y));am=["C"].concat(x(an.x,an.y,i,ao,am[1],am[2]));break;case"Q":am=["C"].concat(x(an.x,an.y,am[1],am[2],am[3],am[4]));break;case"L":am=["C"].concat(d(an.x,an.y,am[1],am[2]));break;case"H":am=["C"].concat(d(an.x,an.y,am[1],an.y));break;case"V":am=["C"].concat(d(an.x,an.y,an.x,am[1]));break;case"Z":am=["C"].concat(d(an.x,an.y,an.X,an.Y));break;}return am;},R=function(am,an){if(am[an].length>7){am[an].shift();var ao=am[an];while(ao.length){am.splice(an++,0,["C"].concat(ao.splice(0,6)));}am.splice(an,1);aj=Math.max(aa.length,ah&&ah.length||0);}},Z=function(aq,ap,an,am,ao){if(aq&&ap&&aq[ao][0]=="M"&&ap[ao][0]!="M"){ap.splice(ao,0,["M",am.x,am.y]);an.bx=0;an.by=0;an.x=aq[ao][1];an.y=aq[ao][2];aj=Math.max(aa.length,ah&&ah.length||0);}};for(var ae=0,aj=Math.max(aa.length,ah&&ah.length||0);ae<aj;ae++){aa[ae]=ac(aa[ae],ai);R(aa,ae);ah&&(ah[ae]=ac(ah[ae],e));ah&&R(ah,ae);Z(aa,ah,ai,e,ae);Z(ah,aa,e,ai,ae);var ad=aa[ae],ak=ah&&ah[ae],ab=ad.length,af=ah&&ak.length;ai.bx=ad[ab-4]||0;ai.by=ad[ab-3]||0;ai.x=ad[ab-2];ai.y=ad[ab-1];e.bx=ah&&(ak[af-4]||0);e.by=ah&&(ak[af-3]||0);e.x=ah&&ak[af-2];e.y=ah&&ak[af-1];}return ah?[aa,ah]:aa;},null,t),n=X(function(ah){if(f.is(ah,"string")){ah=ah.split(/\s*\-\s*/);var Z=ah.shift();if(Z.toLowerCase()=="v"){Z=90;}else{if(Z.toLowerCase()=="h"){Z=0;}else{Z=parseFloat(Z);}}Z=-Z;var af={angle:Z,type:"linear",dots:[],vector:[0,0,Math.cos(Z*Math.PI/180).toFixed(3),Math.sin(Z*Math.PI/180).toFixed(3)]},ag=1/(Math.max(Math.abs(af.vector[2]),Math.abs(af.vector[3]))||1);af.vector[2]*=ag;af.vector[3]*=ag;if(af.vector[2]<0){af.vector[0]=-af.vector[2];af.vector[2]=0;}if(af.vector[3]<0){af.vector[1]=-af.vector[3];af.vector[3]=0;}af.vector[0]=af.vector[0];af.vector[1]=af.vector[1];af.vector[2]=af.vector[2];af.vector[3]=af.vector[3];for(var ac=0,ai=ah.length;ac<ai;ac++){var e={},ae=ah[ac].match(/^([^:]*):?([\d\.]*)/);e.color=f.getRGB(ae[1]).hex;ae[2]&&(e.offset=ae[2]+"%");af.dots.push(e);}for(var ac=1,ai=af.dots.length-1;ac<ai;ac++){if(!af.dots[ac].offset){var R=parseFloat(af.dots[ac-1].offset||0),aa=false;for(var ab=ac+1;ab<ai;ab++){if(af.dots[ab].offset){aa=af.dots[ab].offset;break;}}if(!aa){aa=100;ab=ai;}aa=parseFloat(aa);var ad=(aa-R)/(ab-ac+1);for(;ac<ab;ac++){R+=ad;af.dots[ac].offset=R+"%";}}}return af;}else{return ah;}}),G=function(){var R,i,aa,Z,e;if(f.is(arguments[0],"string")||f.is(arguments[0],"object")){if(f.is(arguments[0],"string")){R=g.getElementById(arguments[0]);}else{R=arguments[0];}if(R.tagName){if(arguments[1]==null){return{container:R,width:R.style.pixelWidth||R.offsetWidth,height:R.style.pixelHeight||R.offsetHeight};}else{return{container:R,width:arguments[1],height:arguments[2]};}}}else{if(f.is(arguments[0],"number")&&arguments.length>3){return{container:1,x:arguments[0],y:arguments[1],width:arguments[2],height:arguments[3]};}}},a=function(e,R){var i=this;for(var Z in R){if(R.hasOwnProperty(Z)&&!(Z in e)){switch(typeof R[Z]){case"function":(function(aa){e[Z]=e===i?aa:function(){return aa.apply(i,arguments);};})(R[Z]);break;case"object":e[Z]=e[Z]||{};a.call(this,e[Z],R[Z]);break;default:e[Z]=R[Z];break;}}}};if(f.svg){b.svgns="http://www.w3.org/2000/svg";b.xlink="http://www.w3.org/1999/xlink";var N=function(e){return +e+(Math.floor(e)==e)*0.5;};var z=function(ab){for(var R=0,Z=ab.length;R<Z;R++){if(ab[R][0].toLowerCase()!="a"){for(var e=1,aa=ab[R].length;e<aa;e++){ab[R][e]=N(ab[R][e]);}}else{ab[R][6]=N(ab[R][6]);ab[R][7]=N(ab[R][7]);}}return ab;};var B=function(R,e){if(e){for(var i in e){if(e.hasOwnProperty(i)){R.setAttribute(i,e[i]);}}}else{return g.createElementNS(b.svgns,R);}};f.toString=function(){return"Your browser supports SVG.\nYou are running Rapha\u00ebl "+this.version;};var W=function(e,Z){var i=B("path");Z.canvas&&Z.canvas.appendChild(i);var R=new m(i,Z);R.type="path";F(R,{fill:"none",stroke:"#000",path:e});return R;};var M=function(ad,ab,ae){ab=n(ab);var aa=B((ab.type||"linear")+"Gradient");aa.id="r"+(f.idGenerator++).toString(36);if(ab.vector&&ab.vector.length){B(aa,{x1:ab.vector[0],y1:ab.vector[1],x2:ab.vector[2],y2:ab.vector[3]});}ae.defs.appendChild(aa);var ac=true;for(var R=0,Z=ab.dots.length;R<Z;R++){var e=B("stop");if(ab.dots[R].offset){ac=false;}B(e,{offset:ab.dots[R].offset?ab.dots[R].offset:(R==0)?"0%":"100%","stop-color":f.getRGB(ab.dots[R].color).hex||"#fff"});aa.appendChild(e);}if(ac&&ab.dots[Z-1].opacity!=null){B(e,{"stop-opacity":ab.dots[Z-1].opacity});}B(ad,{fill:"url(#"+aa.id+")",opacity:1,"fill-opacity":1});ad.style.fill="";ad.style.opacity=1;ad.style.fillOpacity=1;};var s=function(i){var e=i.getBBox();B(i.pattern,{patternTransform:f.format("translate({0},{1})",e.x,e.y)});};var F=function(ah,aq){var ak={"":[0],none:[0],"-":[3,1],".":[1,1],"-.":[3,1,1,1],"-..":[3,1,1,1,1,1],". ":[1,3],"- ":[4,3],"--":[8,3],"- .":[4,3,1,3],"--.":[8,3,1,3],"--..":[8,3,1,3,1,3]},am=ah.node,ai=ah.attrs,ae=ah.attr("rotation"),ab=function(ay,ax){ax=ak[(ax+"").toLowerCase()];if(ax){var av=ay.attrs["stroke-width"]||"1",at={round:av,square:av,butt:0}[ay.attrs["stroke-linecap"]||aq["stroke-linecap"]]||0,aw=[];var au=ax.length;while(au--){aw[au]=ax[au]*av+((au%2)?1:-1)*at;}B(am,{"stroke-dasharray":aw.join(",")});}};parseFloat(ae)&&ah.rotate(0,true);for(var al in aq){if(aq.hasOwnProperty(al)){if(!(al in q)){continue;}var aj=aq[al];ai[al]=aj;switch(al){case"href":case"title":case"target":var ao=am.parentNode;if(ao.tagName.toLowerCase()!="a"){var Z=B("a");ao.insertBefore(Z,am);Z.appendChild(am);ao=Z;}ao.setAttributeNS(ah.paper.xlink,al,aj);break;case"clip-rect":var i=(aj+"").split(Y);if(i.length==4){ah.clip&&ah.clip.parentNode.parentNode.removeChild(ah.clip.parentNode);var R=B("clipPath"),an=B("rect");R.id="r"+(f.idGenerator++).toString(36);B(an,{x:i[0],y:i[1],width:i[2],height:i[3]});R.appendChild(an);ah.paper.defs.appendChild(R);B(am,{"clip-path":"url(#"+R.id+")"});ah.clip=an;}if(!aj){var ap=g.getElementById(am.getAttribute("clip-path").replace(/(^url\(#|\)$)/g,""));ap&&ap.parentNode.removeChild(ap);B(am,{"clip-path":""});delete ah.clip;}break;case"path":if(aj&&ah.type=="path"){ai.path=z(w(aj));B(am,{d:ai.path});}case"width":am.setAttribute(al,aj);if(ai.fx){al="x";aj=ai.x;}else{break;}case"x":if(ai.fx){aj=-ai.x-(ai.width||0);}case"rx":if(al=="rx"&&ah.type=="rect"){break;}case"cx":am.setAttribute(al,aj);ah.pattern&&s(ah);break;case"height":am.setAttribute(al,aj);if(ai.fy){al="y";aj=ai.y;}else{break;}case"y":if(ai.fy){aj=-ai.y-(ai.height||0);}case"ry":if(al=="ry"&&ah.type=="rect"){break;}case"cy":am.setAttribute(al,aj);ah.pattern&&s(ah);break;case"r":if(ah.type=="rect"){B(am,{rx:aj,ry:aj});}else{am.setAttribute(al,aj);}break;case"src":if(ah.type=="image"){am.setAttributeNS(ah.paper.xlink,"href",aj);}break;case"stroke-width":am.style.strokeWidth=aj;am.setAttribute(al,aj);if(ai["stroke-dasharray"]){ab(ah,ai["stroke-dasharray"]);}break;case"stroke-dasharray":ab(ah,aj);break;case"rotation":ae=aj;ah.rotate(aj,true);break;case"translation":var ac=(aj+"").split(Y);ah.translate((+ac[0]+1||2)-1,(+ac[1]+1||2)-1);break;case"scale":var ac=(aj+"").split(Y);ah.scale(+ac[0]||1,+ac[1]||+ac[0]||1,+ac[2]||null,+ac[3]||null);break;case"fill":var aa=(aj+"").match(/^url\(['"]?([^\)]+)['"]?\)$/i);if(aa){var R=B("pattern"),ag=B("image");R.id="r"+(f.idGenerator++).toString(36);B(R,{x:0,y:0,patternUnits:"userSpaceOnUse"});B(ag,{x:0,y:0});ag.setAttributeNS(ah.paper.xlink,"href",aa[1]);R.appendChild(ag);var ar=g.createElement("img");ar.style.position="absolute";ar.style.top="-9999em";ar.style.left="-9999em";ar.onload=function(){B(R,{width:this.offsetWidth,height:this.offsetHeight});B(ag,{width:this.offsetWidth,height:this.offsetHeight});g.body.removeChild(this);b.safari();};g.body.appendChild(ar);ar.src=aa[1];ah.paper.defs.appendChild(R);am.style.fill="url(#"+R.id+")";B(am,{fill:"url(#"+R.id+")"});ah.pattern=R;ah.pattern&&s(ah);break;}delete aq.gradient;delete ai.gradient;if(!f.is(ai.opacity,"undefined")&&f.is(aq.opacity,"undefined")){am.style.opacity=ai.opacity;B(am,{opacity:ai.opacity});}if(!f.is(ai["fill-opacity"],"undefined")&&f.is(aq["fill-opacity"],"undefined")){am.style.fillOpacity=ai["fill-opacity"];B(am,{"fill-opacity":ai["fill-opacity"]});}case"stroke":am.style[al]=f.getRGB(aj).hex;am.setAttribute(al,f.getRGB(aj).hex);break;case"gradient":M(am,aj,ah.paper);break;case"opacity":case"fill-opacity":if(ai.gradient){var e=g.getElementById(am.getAttribute("fill").replace(/^url\(#|\)$/g,""));if(e){var ad=e.getElementsByTagName("stop");ad[ad.length-1].setAttribute("stop-opacity",aj);}break;}default:al=="font-size"&&(aj=parseInt(aj,10)+"px");var af=al.replace(/(\-.)/g,function(at){return at.substring(1).toUpperCase();});am.style[af]=aj;am.setAttribute(al,aj);break;}}}T(ah,aq);parseInt(ae,10)&&ah.rotate(ae,true);};var K=1.2;var T=function(e,aa){if(e.type!="text"||!("text" in aa||"font" in aa||"font-size" in aa||"x" in aa||"y" in aa)){return;}var af=e.attrs,R=e.node,ah=R.firstChild?parseInt(g.defaultView.getComputedStyle(R.firstChild,"").getPropertyValue("font-size"),10):10;if("text" in aa){while(R.firstChild){R.removeChild(R.firstChild);}var Z=(aa.text+"").split("\n");for(var ab=0,ag=Z.length;ab<ag;ab++){var ad=B("tspan");ab&&B(ad,{dy:ah*K,x:af.x});ad.appendChild(g.createTextNode(Z[ab]));R.appendChild(ad);}}else{var Z=R.getElementsByTagName("tspan");for(var ab=0,ag=Z.length;ab<ag;ab++){ab&&B(Z[ab],{dy:ah*K,x:af.x});}}B(R,{y:af.y});var ac=e.getBBox(),ae=af.y-(ac.y+ac.height/2);ae&&B(R,{y:af.y+ae});};var m=function(i,e){var Z=0,R=0;this[0]=i;this.node=i;this.paper=e;this.attrs=this.attrs||{};this.transformations=[];this._={tx:0,ty:0,rt:{deg:0,cx:0,cy:0},sx:1,sy:1};};m.prototype.rotate=function(i,e,Z){if(i==null){if(this._.rt.cx){return[this._.rt.deg,this._.rt.cx,this._.rt.cy].join(" ");}return this._.rt.deg;}var R=this.getBBox();i=(i+"").split(Y);if(i.length-1){e=parseFloat(i[1]);Z=parseFloat(i[2]);}i=parseFloat(i[0]);if(e!=null){this._.rt.deg=i;}else{this._.rt.deg+=i;}(Z==null)&&(e=null);this._.rt.cx=e;this._.rt.cy=Z;e=e==null?R.x+R.width/2:e;Z=Z==null?R.y+R.height/2:Z;if(this._.rt.deg){this.transformations[0]=f.format("rotate({0} {1} {2})",this._.rt.deg,e,Z);this.clip&&B(this.clip,{transform:f.format("rotate({0} {1} {2})",-this._.rt.deg,e,Z)});}else{this.transformations[0]="";this.clip&&B(this.clip,{transform:""});}B(this.node,{transform:this.transformations.join(" ")});return this;};m.prototype.hide=function(){this.node.style.display="none";return this;};m.prototype.show=function(){this.node.style.display="block";return this;};m.prototype.remove=function(){this.node.parentNode.removeChild(this.node);};m.prototype.getBBox=function(){if(this.type=="path"){return C(this.attrs.path);}if(this.node.style.display=="none"){this.show();var Z=true;}var ad={};try{ad=this.node.getBBox();}catch(ab){}finally{ad=ad||{};}if(this.type=="text"){ad={x:ad.x,y:Infinity,width:ad.width,height:0};for(var R=0,aa=this.node.getNumberOfChars();R<aa;R++){var ac=this.node.getExtentOfChar(R);(ac.y<ad.y)&&(ad.y=ac.y);(ac.y+ac.height-ad.y>ad.height)&&(ad.height=ac.y+ac.height-ad.y);}}Z&&this.hide();return ad;};m.prototype.attr=function(){if(arguments.length==1&&f.is(arguments[0],"string")){if(arguments[0]=="translation"){return this.translate();}if(arguments[0]=="rotation"){return this.rotate();}if(arguments[0]=="scale"){return this.scale();}return this.attrs[arguments[0]];}if(arguments.length==1&&f.is(arguments[0],"array")){var e={};for(var i in arguments[0]){if(arguments[0].hasOwnProperty(i)){e[arguments[0][i]]=this.attrs[arguments[0][i]];}}return e;}if(arguments.length==2){var R={};R[arguments[0]]=arguments[1];F(this,R);}else{if(arguments.length==1&&f.is(arguments[0],"object")){F(this,arguments[0]);}}return this;};m.prototype.toFront=function(){this.node.parentNode.appendChild(this.node);return this;};m.prototype.toBack=function(){if(this.node.parentNode.firstChild!=this.node){this.node.parentNode.insertBefore(this.node,this.node.parentNode.firstChild);}return this;};m.prototype.insertAfter=function(e){if(e.node.nextSibling){e.node.parentNode.insertBefore(this.node,e.node.nextSibling);}else{e.node.parentNode.appendChild(this.node);}return this;};m.prototype.insertBefore=function(e){var i=e.node;i.parentNode.insertBefore(this.node,i);return this;};m.prototype.blur=function(e){if(e!="none"){var i=B("filter"),R=B("feGaussianBlur");i.id="r"+(f.idGenerator++).toString(36);B(R,{stdDeviation:+e||1.5});i.appendChild(R);this.paper.defs.appendChild(i);this._blur=i;B(this.node,{filter:"url(#"+i.id+")"});}else{if(this._blur){this._blur.parentNode.removeChild(this._blur);delete this._blur;}this.node.removeAttribute("filter");}};var D=function(i,e,ab,aa){e=N(e);ab=N(ab);var Z=B("circle");i.canvas&&i.canvas.appendChild(Z);var R=new m(Z,i);R.attrs={cx:e,cy:ab,r:aa,fill:"none",stroke:"#000"};R.type="circle";B(Z,R.attrs);return R;};var I=function(R,e,ad,i,ab,ac){e=N(e);ad=N(ad);var aa=B("rect");R.canvas&&R.canvas.appendChild(aa);var Z=new m(aa,R);Z.attrs={x:e,y:ad,width:i,height:ab,r:ac||0,rx:ac||0,ry:ac||0,fill:"none",stroke:"#000"};Z.type="rect";B(aa,Z.attrs);return Z;};var h=function(i,e,ac,ab,aa){e=N(e);ac=N(ac);var Z=B("ellipse");i.canvas&&i.canvas.appendChild(Z);var R=new m(Z,i);R.attrs={cx:e,cy:ac,rx:ab,ry:aa,fill:"none",stroke:"#000"};R.type="ellipse";B(Z,R.attrs);return R;};var p=function(R,ac,e,ad,i,ab){var aa=B("image");B(aa,{x:e,y:ad,width:i,height:ab,preserveAspectRatio:"none"});aa.setAttributeNS(R.xlink,"href",ac);R.canvas&&R.canvas.appendChild(aa);var Z=new m(aa,R);Z.attrs={x:e,y:ad,width:i,height:ab,src:ac};Z.type="image";return Z;};var H=function(i,e,ab,aa){var Z=B("text");B(Z,{x:e,y:ab,"text-anchor":"middle"});i.canvas&&i.canvas.appendChild(Z);var R=new m(Z,i);R.attrs={x:e,y:ab,"text-anchor":"middle",text:aa,font:q.font,stroke:"none",fill:"#000"};R.type="text";F(R,R.attrs);return R;};var E=function(i,e){this.width=i||this.width;this.height=e||this.height;this.canvas.setAttribute("width",this.width);this.canvas.setAttribute("height",this.height);return this;};var l=function(){var aa=G.apply(null,arguments),R=aa.container,ac=aa.x,ab=aa.y,Z=aa.width,ad=aa.height;if(!R){throw new Error("SVG container not found.");}b.canvas=B("svg");var e=b.canvas,ae=e.style;e.setAttribute("width",Z||512);b.width=Z||512;e.setAttribute("height",ad||342);b.height=ad||342;if(R==1){g.body.appendChild(e);ae.position="absolute";ae.left=ac+"px";ae.top=ab+"px";}else{if(R.firstChild){R.insertBefore(e,R.firstChild);}else{R.appendChild(e);}}R={canvas:e,clear:function(){while(this.canvas.firstChild){this.canvas.removeChild(this.canvas.firstChild);}this.desc=B("desc");this.defs=B("defs");this.desc.appendChild(g.createTextNode("Created with Rapha\u00ebl"));this.canvas.appendChild(this.desc);this.canvas.appendChild(this.defs);}};for(var i in b){if(b.hasOwnProperty(i)){if(i!="create"){R[i]=b[i];}}}a.call(R,R,f.fn);R.clear();R.raphael=f;return R;};b.remove=function(){this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas);};if({"Apple Computer, Inc.":1,"Google Inc.":1}[navigator.vendor]){b.safari=function(){var e=this.rect(-99,-99,this.width+99,this.height+99);setTimeout(function(){e.remove();});};}else{b.safari=function(){};}}if(f.vml){var y=function(ac){var aa=O(ac);for(var R=0,Z=aa.length;R<Z;R++){aa[R][0]=(aa[R][0]+"").toLowerCase();aa[R][0]=="z"&&(aa[R][0]="x");for(var e=1,ab=aa[R].length;e<ab;e++){aa[R][e]=Math.round(aa[R][e]);}}return(aa+"");};f.toString=function(){return"Your browser doesn\u2019t support SVG. Assuming it is Internet Explorer and falling down to VML.\nYou are running Rapha\u00ebl "+this.version;};var W=function(e,ab){var Z=V("group"),ac=Z.style;ac.position="absolute";ac.left=0;ac.top=0;ac.width=ab.width+"px";ac.height=ab.height+"px";Z.coordsize=ab.coordsize;Z.coordorigin=ab.coordorigin;var R=V("shape"),i=R.style;i.width=ab.width+"px";i.height=ab.height+"px";R.path="";R.coordsize=this.coordsize;R.coordorigin=this.coordorigin;Z.appendChild(R);var aa=new m(R,Z,ab);aa.isAbsolute=true;aa.type="path";aa.path=[];aa.Path="";if(e){aa.attrs.path=f.parsePathString(e);aa.node.path=y(aa.attrs.path);}F(aa,{fill:"none",stroke:"#000"});aa.setBox();ab.canvas.appendChild(Z);return aa;};var F=function(af,aj){af.attrs=af.attrs||{};var ah=af.node,ak=af.attrs,ac=ah.style,Z,ao=af;for(var ad in aj){if(aj.hasOwnProperty(ad)){ak[ad]=aj[ad];}}aj.href&&(ah.href=aj.href);aj.title&&(ah.title=aj.title);aj.target&&(ah.target=aj.target);if(aj.path&&af.type=="path"){ak.path=f.parsePathString(aj.path);ah.path=y(ak.path);}if(aj.rotation!=null){af.rotate(aj.rotation,true);}if(aj.translation){Z=(aj.translation+"").split(Y);af.translate(Z[0],Z[1]);}if(aj.scale){Z=(aj.scale+"").split(Y);af.scale(+Z[0]||1,+Z[1]||+Z[0]||1,+Z[2]||null,+Z[3]||null);}if("clip-rect" in aj){var e=(aj["clip-rect"]+"").split(Y);if(e.length==4){e[2]=+e[2]+(+e[0]);e[3]=+e[3]+(+e[1]);var ae=ah.clipRect||g.createElement("div"),an=ae.style,ab=ah.parentNode;an.clip=f.format("rect({0}px {2}px {3}px {1}px)",e);if(!ah.clipRect){an.position="absolute";an.top=0;an.left=0;an.width=af.paper.width+"px";an.height=af.paper.height+"px";ab.parentNode.insertBefore(ae,ab);ae.appendChild(ab);ah.clipRect=ae;}}if(!aj["clip-rect"]){ah.clipRect&&(ah.clipRect.style.clip="");}}if(af.type=="image"&&aj.src){ah.src=aj.src;}if(af.type=="image"&&aj.opacity){ah.filterOpacity=" progid:DXImageTransform.Microsoft.Alpha(opacity="+(aj.opacity*100)+")";ac.filter=(ah.filterMatrix||"")+(ah.filterOpacity||"");}aj.font&&(ac.font=aj.font);aj["font-family"]&&(ac.fontFamily='"'+aj["font-family"].split(",")[0].replace(/^['"]+|['"]+$/g,"")+'"');aj["font-size"]&&(ac.fontSize=aj["font-size"]);aj["font-weight"]&&(ac.fontWeight=aj["font-weight"]);aj["font-style"]&&(ac.fontStyle=aj["font-style"]);if(aj.opacity!=null||aj["stroke-width"]!=null||aj.fill!=null||aj.stroke!=null||aj["stroke-width"]!=null||aj["stroke-opacity"]!=null||aj["fill-opacity"]!=null||aj["stroke-dasharray"]!=null||aj["stroke-miterlimit"]!=null||aj["stroke-linejoin"]!=null||aj["stroke-linecap"]!=null){ah=af.shape||ah;var ai=(ah.getElementsByTagName("fill")&&ah.getElementsByTagName("fill")[0]),al=false;!ai&&(al=ai=V("fill"));if("fill-opacity" in aj||"opacity" in aj){var i=((+ak["fill-opacity"]+1||2)-1)*((+ak.opacity+1||2)-1);i<0&&(i=0);i>1&&(i=1);ai.opacity=i;}aj.fill&&(ai.on=true);if(ai.on==null||aj.fill=="none"){ai.on=false;}if(ai.on&&aj.fill){var R=aj.fill.match(/^url\(([^\)]+)\)$/i);if(R){ai.src=R[1];ai.type="tile";}else{ai.color=f.getRGB(aj.fill).hex;ai.src="";ai.type="solid";}}al&&ah.appendChild(ai);var aa=(ah.getElementsByTagName("stroke")&&ah.getElementsByTagName("stroke")[0]),am=false;!aa&&(am=aa=V("stroke"));if((aj.stroke&&aj.stroke!="none")||aj["stroke-width"]||aj["stroke-opacity"]!=null||aj["stroke-dasharray"]||aj["stroke-miterlimit"]||aj["stroke-linejoin"]||aj["stroke-linecap"]){aa.on=true;}(aj.stroke=="none"||aa.on==null||aj.stroke==0||aj["stroke-width"]==0)&&(aa.on=false);aa.on&&aj.stroke&&(aa.color=f.getRGB(aj.stroke).hex);var i=((+ak["stroke-opacity"]+1||2)-1)*((+ak.opacity+1||2)-1);i<0&&(i=0);i>1&&(i=1);aa.opacity=i;aj["stroke-linejoin"]&&(aa.joinstyle=aj["stroke-linejoin"]||"miter");aa.miterlimit=aj["stroke-miterlimit"]||8;aj["stroke-linecap"]&&(aa.endcap={butt:"flat",square:"square",round:"round"}[aj["stroke-linecap"]]||"miter");aj["stroke-width"]&&(aa.weight=(parseFloat(aj["stroke-width"])||1)*12/16);if(aj["stroke-dasharray"]){var ag={"-":"shortdash",".":"shortdot","-.":"shortdashdot","-..":"shortdashdotdot",". ":"dot","- ":"dash","--":"longdash","- .":"dashdot","--.":"longdashdot","--..":"longdashdotdot"};aa.dashstyle=ag[aj["stroke-dasharray"]]||"";}am&&ah.appendChild(aa);}if(ao.type=="text"){var ac=b.span.style;ak.font&&(ac.font=ak.font);ak["font-family"]&&(ac.fontFamily=ak["font-family"]);ak["font-size"]&&(ac.fontSize=ak["font-size"]);ak["font-weight"]&&(ac.fontWeight=ak["font-weight"]);ak["font-style"]&&(ac.fontStyle=ak["font-style"]);b.span.innerHTML=ao.node.string.replace(/</g,"&#60;").replace(/&/g,"&#38;").replace(/\n/g,"<br>");ao.W=ak.w=b.span.offsetWidth;ao.H=ak.h=b.span.offsetHeight;ao.X=ak.x;ao.Y=ak.y+Math.round(ao.H/2);switch(ak["text-anchor"]){case"start":ao.node.style["v-text-align"]="left";ao.bbx=Math.round(ao.W/2);break;case"end":ao.node.style["v-text-align"]="right";ao.bbx=-Math.round(ao.W/2);break;default:ao.node.style["v-text-align"]="center";break;}}};var o=function(i,e,aa,Z){var R=Math.round(Math.atan((parseFloat(aa)-parseFloat(i))/(parseFloat(Z)-parseFloat(e)))*57.29)||0;if(!R&&parseFloat(i)<parseFloat(e)){R=180;}R-=180;if(R<0){R+=360;}return R;};var M=function(ad,ac){ac=n(ac);ad.attrs=ad.attrs||{};var R=ad.attrs,ab=ad.node.getElementsByTagName("fill");ad.attrs.gradient=ac;ad=ad.shape||ad.node;if(ab.length){ab=ab[0];}else{ab=V("fill");}if(ac.dots.length){ab.on=true;ab.method="none";ab.type=((ac.type+"").toLowerCase()=="radial")?"gradientTitle":"gradient";if(!f.is(ac.dots[0].color,"undefined")){ab.color=f.getRGB(ac.dots[0].color).hex;}if(!f.is(ac.dots[ac.dots.length-1].color,"undefined")){ab.color2=f.getRGB(ac.dots[ac.dots.length-1].color).hex;}var ae=[];for(var Z=0,aa=ac.dots.length;Z<aa;Z++){if(ac.dots[Z].offset){ae.push(ac.dots[Z].offset+" "+f.getRGB(ac.dots[Z].color).hex);}}var e=f.is(ac.dots[ac.dots.length-1].opacity,"undefined")?(f.is(R.opacity,"undefined")?1:R.opacity):ac.dots[ac.dots.length-1].opacity;if(ae.length){ab.colors.value=ae.join(",");e=f.is(R.opacity,"undefined")?1:R.opacity;}else{ab.colors&&(ab.colors.value="0% "+ab.color);}ab.opacity=e;if(!f.is(ac.angle,"undefined")){ab.angle=(-ac.angle+270)%360;}else{if(ac.vector){ab.angle=o.apply(null,ac.vector);}}if((ac.type+"").toLowerCase()=="radial"){ab.focus="100%";ab.focusposition="0.5 0.5";}}};var m=function(aa,ac,e){var ab=0,R=0,i=0,Z=1;this[0]=aa;this.node=aa;this.X=0;this.Y=0;this.attrs={};this.Group=ac;this.paper=e;this._={tx:0,ty:0,rt:{deg:0},sx:1,sy:1};};m.prototype.rotate=function(i,e,R){if(i==null){if(this._.rt.cx){return[this._.rt.deg,this._.rt.cx,this._.rt.cy].join(" ");}return this._.rt.deg;}i=(i+"").split(Y);if(i.length-1){e=parseFloat(i[1]);R=parseFloat(i[2]);}i=parseFloat(i[0]);if(e!=null){this._.rt.deg=i;}else{this._.rt.deg+=i;}(R==null)&&(e=null);this._.rt.cx=e;this._.rt.cy=R;this.setBox(this.attrs,e,R);this.Group.style.rotation=this._.rt.deg;return this;};m.prototype.setBox=function(ab,ac,aa){var R=this.Group.style,ad=(this.shape&&this.shape.style)||this.node.style;ab=ab||{};for(var ae in ab){if(ab.hasOwnProperty(ae)){this.attrs[ae]=ab[ae];}}ac=ac||this._.rt.cx;aa=aa||this._.rt.cy;var ah=this.attrs,ak,aj,al,ag;switch(this.type){case"circle":ak=ah.cx-ah.r;aj=ah.cy-ah.r;al=ag=ah.r*2;break;case"ellipse":ak=ah.cx-ah.rx;aj=ah.cy-ah.ry;al=ah.rx*2;ag=ah.ry*2;break;case"rect":case"image":ak=ah.x;aj=ah.y;al=ah.width||0;ag=ah.height||0;break;case"text":this.textpath.v=["m",Math.round(ah.x),", ",Math.round(ah.y-2),"l",Math.round(ah.x)+1,", ",Math.round(ah.y-2)].join("");ak=ah.x-Math.round(this.W/2);aj=ah.y-this.H/2;al=this.W;ag=this.H;break;case"path":if(!this.attrs.path){ak=0;aj=0;al=this.paper.width;ag=this.paper.height;}else{var af=C(this.attrs.path);ak=af.x;aj=af.y;al=af.width;ag=af.height;}break;default:ak=0;aj=0;al=this.paper.width;ag=this.paper.height;break;}ac=(ac==null)?ak+al/2:ac;aa=(aa==null)?aj+ag/2:aa;var Z=ac-this.paper.width/2,ai=aa-this.paper.height/2;if(this.type=="path"||this.type=="text"){(R.left!=Z+"px")&&(R.left=Z+"px");(R.top!=ai+"px")&&(R.top=ai+"px");this.X=this.type=="text"?ak:-Z;this.Y=this.type=="text"?aj:-ai;this.W=al;this.H=ag;(ad.left!=-Z+"px")&&(ad.left=-Z+"px");(ad.top!=-ai+"px")&&(ad.top=-ai+"px");}else{(R.left!=Z+"px")&&(R.left=Z+"px");(R.top!=ai+"px")&&(R.top=ai+"px");this.X=ak;this.Y=aj;this.W=al;this.H=ag;(R.width!=this.paper.width+"px")&&(R.width=this.paper.width+"px");(R.height!=this.paper.height+"px")&&(R.height=this.paper.height+"px");(ad.left!=ak-Z+"px")&&(ad.left=ak-Z+"px");(ad.top!=aj-ai+"px")&&(ad.top=aj-ai+"px");(ad.width!=al+"px")&&(ad.width=al+"px");(ad.height!=ag+"px")&&(ad.height=ag+"px");var am=(+ab.r||0)/(Math.min(al,ag));if(this.type=="rect"&&this.arcsize!=am&&(am||this.arcsize)){var e=V(am?"roundrect":"rect");e.arcsize=am;this.Group.appendChild(e);this.node.parentNode.removeChild(this.node);this.node=e;this.arcsize=am;F(this,this.attrs);this.setBox(this.attrs);}}};m.prototype.hide=function(){this.Group.style.display="none";return this;};m.prototype.show=function(){this.Group.style.display="block";return this;};m.prototype.getBBox=function(){if(this.type=="path"){return C(this.attrs.path);}return{x:this.X+(this.bbx||0),y:this.Y,width:this.W,height:this.H};};m.prototype.remove=function(){this[0].parentNode.removeChild(this[0]);this.Group.parentNode.removeChild(this.Group);this.shape&&this.shape.parentNode.removeChild(this.shape);};m.prototype.attr=function(){if(arguments.length==1&&f.is(arguments[0],"string")){if(arguments[0]=="translation"){return this.translate();}if(arguments[0]=="rotation"){return this.rotate();}if(arguments[0]=="scale"){return this.scale();}return this.attrs[arguments[0]];}if(this.attrs&&arguments.length==1&&f.is(arguments[0],"array")){var e={};for(var R=0,Z=arguments[0].length;R<Z;R++){e[arguments[0][R]]=this.attrs[arguments[0][R]];}return e;}var aa;if(arguments.length==2){aa={};aa[arguments[0]]=arguments[1];}if(arguments.length==1&&f.is(arguments[0],"object")){aa=arguments[0];}if(aa){if(aa.gradient){M(this,aa.gradient);}if(aa.text&&this.type=="text"){this.node.string=aa.text;}F(this,aa);this.setBox(this.attrs);}return this;};m.prototype.toFront=function(){this.Group.parentNode.appendChild(this.Group);return this;};m.prototype.toBack=function(){if(this.Group.parentNode.firstChild!=this.Group){this.Group.parentNode.insertBefore(this.Group,this.Group.parentNode.firstChild);}return this;};m.prototype.insertAfter=function(e){if(e.Group.nextSibling){e.Group.parentNode.insertBefore(this.Group,e.Group.nextSibling);}else{e.Group.parentNode.appendChild(this.Group);}return this;};m.prototype.insertBefore=function(e){e.Group.parentNode.insertBefore(this.Group,e.Group);return this;};m.prototype.blur=function(e){var i=this.node.style,R=i.filter;R=R.replace(/progid:DXImageTransform\.Microsoft\.Blur\(pixelradius\=[^\)]+\)/g,"");if(e!="none"){i.filter=R+" progid:DXImageTransform.Microsoft.Blur(pixelradius="+(+e||1.5)+")";i.margin=f.format("-{0}px 0 0 -{0}px",Math.round(+e||1.5));}else{i.filter=R;i.margin=0;}};var D=function(i,ae,ad,e){var aa=V("group"),Z=aa.style,R=V("oval"),ac=R.style;Z.position="absolute";Z.left=0;Z.top=0;Z.width=i.width+"px";Z.height=i.height+"px";aa.coordsize=i.coordsize;aa.coordorigin=i.coordorigin;aa.appendChild(R);var ab=new m(R,aa,i);ab.type="circle";F(ab,{stroke:"#000",fill:"none"});ab.attrs.cx=ae;ab.attrs.cy=ad;ab.attrs.r=e;ab.setBox({x:ae-e,y:ad-e,width:e*2,height:e*2});i.canvas.appendChild(aa);return ab;};var I=function(i,ae,ad,af,aa,e){var ab=V("group"),Z=ab.style,R=V(e?"roundrect":"rect"),ag=(+e||0)/(Math.min(af,aa));R.arcsize=ag;Z.position="absolute";Z.left=0;Z.top=0;Z.width=i.width+"px";Z.height=i.height+"px";ab.coordsize=i.coordsize;ab.coordorigin=i.coordorigin;ab.appendChild(R);var ac=new m(R,ab,i);ac.type="rect";F(ac,{stroke:"#000"});ac.arcsize=ag;ac.setBox({x:ae,y:ad,width:af,height:aa,r:+e});i.canvas.appendChild(ab);return ac;};var h=function(e,af,ae,R,i){var ab=V("group"),aa=ab.style,Z=V("oval"),ad=Z.style;aa.position="absolute";aa.left=0;aa.top=0;aa.width=e.width+"px";aa.height=e.height+"px";ab.coordsize=e.coordsize;ab.coordorigin=e.coordorigin;ab.appendChild(Z);var ac=new m(Z,ab,e);ac.type="ellipse";F(ac,{stroke:"#000"});ac.attrs.cx=af;ac.attrs.cy=ae;ac.attrs.rx=R;ac.attrs.ry=i;ac.setBox({x:af-R,y:ae-i,width:R*2,height:i*2});e.canvas.appendChild(ab);return ac;};var p=function(i,e,af,ae,ag,aa){var ab=V("group"),Z=ab.style,R=V("image"),ad=R.style;Z.position="absolute";Z.left=0;Z.top=0;Z.width=i.width+"px";Z.height=i.height+"px";ab.coordsize=i.coordsize;ab.coordorigin=i.coordorigin;R.src=e;ab.appendChild(R);var ac=new m(R,ab,i);ac.type="image";ac.attrs.src=e;ac.attrs.x=af;ac.attrs.y=ae;ac.attrs.w=ag;ac.attrs.h=aa;ac.setBox({x:af,y:ae,width:ag,height:aa});i.canvas.appendChild(ab);return ac;};var H=function(i,af,ae,ag){var ab=V("group"),aa=ab.style,Z=V("shape"),ad=Z.style,ah=V("path"),e=ah.style,R=V("textpath");aa.position="absolute";aa.left=0;aa.top=0;aa.width=i.width+"px";aa.height=i.height+"px";ab.coordsize=i.coordsize;ab.coordorigin=i.coordorigin;ah.v=["m",Math.round(af),", ",Math.round(ae),"l",Math.round(af)+1,", ",Math.round(ae)].join("");ah.textpathok=true;ad.width=i.width;ad.height=i.height;aa.position="absolute";aa.left=0;aa.top=0;aa.width=i.width;aa.height=i.height;R.string=ag;R.on=true;Z.appendChild(R);Z.appendChild(ah);ab.appendChild(Z);var ac=new m(R,ab,i);ac.shape=Z;ac.textpath=ah;ac.type="text";ac.attrs.text=ag;ac.attrs.x=af;ac.attrs.y=ae;ac.attrs.w=1;ac.attrs.h=1;F(ac,{font:q.font,stroke:"none",fill:"#000"});ac.setBox();i.canvas.appendChild(ab);return ac;};var E=function(R,e){var i=this.canvas.style;this.width=parseFloat(R||this.width);this.height=parseFloat(e||this.height);i.width=this.width+"px";i.height=this.height+"px";i.clip="rect(0 "+this.width+"px "+this.height+"px 0)";this.coordsize=this.width+" "+this.height;return this;};g.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)");try{!g.namespaces.rvml&&g.namespaces.add("rvml","urn:schemas-microsoft-com:vml");var V=function(e){return g.createElement("<rvml:"+e+' class="rvml">');};}catch(U){var V=function(e){return g.createElement("<"+e+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">');};}var l=function(){var Z=G.apply(null,arguments),i=Z.container,ae=Z.height,af,R=Z.width,ad=Z.x,ac=Z.y;if(!i){throw new Error("VML container not found.");}var ab=b.canvas=g.createElement("div"),aa=ab.style;R=parseFloat(R)||"512px";ae=parseFloat(ae)||"342px";b.width=R;b.height=ae;b.coordsize=R+" "+ae;b.coordorigin="0 0";b.span=g.createElement("span");af=b.span.style;ab.appendChild(b.span);af.position="absolute";af.left="-99999px";af.top="-99999px";af.padding=0;af.margin=0;af.lineHeight=1;af.display="inline";aa.width=R+"px";aa.height=ae+"px";aa.position="absolute";aa.clip="rect(0 "+R+"px "+ae+"px 0)";if(i==1){g.body.appendChild(ab);aa.left=ad+"px";aa.top=ac+"px";i={style:{width:R,height:ae}};}else{i.style.width=R;i.style.height=ae;if(i.firstChild){i.insertBefore(ab,i.firstChild);}else{i.appendChild(ab);}}for(var e in b){if(b.hasOwnProperty(e)){i[e]=b[e];}}a.call(i,i,f.fn);i.clear=function(){while(ab.firstChild){ab.removeChild(ab.firstChild);}};i.raphael=f;return i;};b.remove=function(){this.canvas.parentNode.removeChild(this.canvas);};b.safari=function(){};}var j=(function(){if(g.addEventListener){return function(aa,R,i,e){var Z=function(ab){return i.call(e,ab);};aa.addEventListener(R,Z,false);return function(){aa.removeEventListener(R,Z,false);return true;};};}else{if(g.attachEvent){return function(ab,Z,R,i){var aa=function(ac){return R.call(i,ac||L.event);};ab.attachEvent("on"+Z,aa);var e=function(){ab.detachEvent("on"+Z,aa);return true;};if(Z=="mouseover"){ab.attachEvent("onmouseenter",aa);return function(){ab.detachEvent("onmouseenter",aa);return e();};}else{if(Z=="mouseout"){ab.attachEvent("onmouseleave",aa);return function(){ab.detachEvent("onmouseleave",aa);return e();};}}return e;};}}})();for(var Q=v.length;Q--;){(function(e){m.prototype[e]=function(i){if(f.is(i,"function")){this.events=this.events||{};this.events[e]=this.events[e]||{};this.events[e][i]=this.events[e][i]||[];this.events[e][i].push(j(this.shape||this.node,e,i,this));}return this;};m.prototype["un"+e]=function(i){this.events&&this.events[e]&&this.events[e][i]&&this.events[e][i].length&&this.events[e][i].shift()()&&!this.events[e][i].length&&delete this.events[e][i];};})(v[Q]);}b.circle=function(e,R,i){return D(this,e,R,i);};b.rect=function(e,aa,i,R,Z){return I(this,e,aa,i,R,Z);};b.ellipse=function(e,Z,R,i){return h(this,e,Z,R,i);};b.path=function(e){e&&!f.is(e,"string")&&!f.is(e[0],"array")&&(e+="");return W(f.format.apply(f,arguments),this);};b.image=function(Z,e,aa,i,R){return p(this,Z,e,aa,i,R);};b.text=function(e,R,i){return H(this,e,R,i);};b.set=function(e){arguments.length>1&&(e=Array.prototype.splice.call(arguments,0,arguments.length));return new k(e);};b.setSize=E;m.prototype.stop=function(){clearTimeout(this.animation_in_progress);return this;};m.prototype.scale=function(aj,ai,Z,R){if(aj==null&&ai==null){return{x:this._.sx,y:this._.sy,toString:function(){return this.x+" "+this.y;}};}ai=ai||aj;!+ai&&(ai=aj);var an,al,am,ak,aA=this.attrs;if(aj!=0){var ah=this.getBBox(),ae=ah.x+ah.width/2,ab=ah.y+ah.height/2,az=aj/this._.sx,ay=ai/this._.sy;Z=(+Z||Z==0)?Z:ae;R=(+R||R==0)?R:ab;var ag=Math.round(aj/Math.abs(aj)),ad=Math.round(ai/Math.abs(ai)),aq=this.node.style,aC=Z+(ae-Z)*ag*az,aB=R+(ab-R)*ad*ay;switch(this.type){case"rect":case"image":var af=aA.width*ag*az,ap=aA.height*ad*ay,ac=aC-af/2,aa=aB-ap/2;this.attr({width:af,height:ap,x:ac,y:aa});break;case"circle":case"ellipse":this.attr({rx:aA.rx*az,ry:aA.ry*ay,r:aA.r*az,cx:aC,cy:aB});break;case"path":var at=c(aA.path),au=true;for(var aw=0,ao=at.length;aw<ao;aw++){var ar=at[aw];if(ar[0].toUpperCase()=="M"&&au){continue;}else{au=false;}if(f.svg&&ar[0].toUpperCase()=="A"){ar[at[aw].length-2]*=az;ar[at[aw].length-1]*=ay;ar[1]*=az;ar[2]*=ay;ar[5]=+(ag+ad?!!+ar[5]:!+ar[5]);}else{for(var av=1,ax=ar.length;av<ax;av++){ar[av]*=(av%2)?az:ay;}}}var e=C(at),an=aC-e.x-e.width/2,al=aB-e.y-e.height/2;at=c(at);at[0][1]+=an;at[0][2]+=al;this.attr({path:at.join(" ")});break;}if(this.type in {text:1,image:1}&&(ag!=1||ad!=1)){if(this.transformations){this.transformations[2]="scale(".concat(ag,",",ad,")");this.node.setAttribute("transform",this.transformations.join(" "));an=(ag==-1)?-aA.x-(af||0):aA.x;al=(ad==-1)?-aA.y-(ap||0):aA.y;this.attr({x:an,y:al});aA.fx=ag-1;aA.fy=ad-1;}else{this.node.filterMatrix=" progid:DXImageTransform.Microsoft.Matrix(M11=".concat(ag,", M12=0, M21=0, M22=",ad,", Dx=0, Dy=0, sizingmethod='auto expand', filtertype='bilinear')");aq.filter=(this.node.filterMatrix||"")+(this.node.filterOpacity||"");}}else{if(this.transformations){this.transformations[2]="";this.node.setAttribute("transform",this.transformations.join(" "));aA.fx=0;aA.fy=0;}else{this.node.filterMatrix="";aq.filter=(this.node.filterMatrix||"")+(this.node.filterOpacity||"");}}aA.scale=[aj,ai,Z,R].join(" ");this._.sx=aj;this._.sy=ai;}return this;};f.easing_formulas={linear:function(e){return e;},"<":function(e){return Math.pow(e,3);},">":function(e){return Math.pow(e-1,3)+1;},"<>":function(e){e=e*2;if(e<1){return Math.pow(e,3)/2;}e-=2;return(Math.pow(e,3)+2)/2;},backIn:function(i){var e=1.70158;return i*i*((e+1)*i-e);},backOut:function(i){i=i-1;var e=1.70158;return i*i*((e+1)*i+e)+1;},elastic:function(R){if(R==0||R==1){return R;}var i=0.3,e=i/4;return Math.pow(2,-10*R)*Math.sin((R-e)*(2*Math.PI)/i)+1;},bounce:function(Z){var i=7.5625,R=2.75,e;if(Z<(1/R)){e=i*Z*Z;}else{if(Z<(2/R)){Z-=(1.5/R);e=i*Z*Z+0.75;}else{if(Z<(2.5/R)){Z-=(2.25/R);e=i*Z*Z+0.9375;}else{Z-=(2.625/R);e=i*Z*Z+0.984375;}}}return e;}};m.prototype.animate=function(at,aj,ai,aa){clearTimeout(this.animation_in_progress);if(f.is(ai,"function")||!ai){aa=ai||null;}var am={},R={},ag={},af={x:0,y:0};for(var ak in at){if(at.hasOwnProperty(ak)){if(ak in u){am[ak]=this.attr(ak);(am[ak]==null)&&(am[ak]=q[ak]);R[ak]=at[ak];switch(u[ak]){case"number":ag[ak]=(R[ak]-am[ak])/aj;break;case"colour":am[ak]=f.getRGB(am[ak]);var al=f.getRGB(R[ak]);ag[ak]={r:(al.r-am[ak].r)/aj,g:(al.g-am[ak].g)/aj,b:(al.b-am[ak].b)/aj};break;case"path":var ab=O(am[ak],R[ak]);am[ak]=ab[0];R[ak]=ab[1];ag[ak]=[];for(var ao=0,ae=am[ak].length;ao<ae;ao++){ag[ak][ao]=[0];for(var an=1,aq=am[ak][ao].length;an<aq;an++){ag[ak][ao][an]=(R[ak][ao][an]-am[ak][ao][an])/aj;}}break;case"csv":var e=(at[ak]+"").split(Y),ad=(am[ak]+"").split(Y);switch(ak){case"translation":am[ak]=[0,0];ag[ak]=[e[0]/aj,e[1]/aj];break;case"rotation":am[ak]=(ad[1]==e[1]&&ad[2]==e[2])?ad:[0,e[1],e[2]];ag[ak]=[(e[0]-am[ak][0])/aj,0,0];break;case"scale":at[ak]=e;am[ak]=(am[ak]+"").split(Y);ag[ak]=[(e[0]-am[ak][0])/aj,(e[1]-am[ak][1])/aj,0,0];break;case"clip-rect":am[ak]=(am[ak]+"").split(Y);ag[ak]=[];var ao=4;while(ao--){ag[ak][ao]=(e[ao]-am[ak][ao])/aj;}break;}R[ak]=e;}}}}var Z=+new Date,ah=0,ar=function(i){return +i>255?255:+i;},ac=this;(function ap(){var av=new Date-Z,aD={},au;if(av<aj){var aB=f.easing_formulas[ai]?f.easing_formulas[ai](av/aj):av/aj;for(var az in am){if(am.hasOwnProperty(az)){switch(u[az]){case"number":au=+am[az]+aB*aj*ag[az];break;case"colour":au="rgb("+[ar(Math.round(am[az].r+aB*aj*ag[az].r)),ar(Math.round(am[az].g+aB*aj*ag[az].g)),ar(Math.round(am[az].b+aB*aj*ag[az].b))].join(",")+")";break;case"path":au=[];for(var ax=0,aE=am[az].length;ax<aE;ax++){au[ax]=[am[az][ax][0]];for(var aw=1,ay=am[az][ax].length;aw<ay;aw++){au[ax][aw]=+am[az][ax][aw]+aB*aj*ag[az][ax][aw];}au[ax]=au[ax].join(" ");}au=au.join(" ");break;case"csv":switch(az){case"translation":var aC=ag[az][0]*(av-ah),aA=ag[az][1]*(av-ah);af.x+=aC;af.y+=aA;au=[aC,aA].join(" ");break;case"rotation":au=+am[az][0]+aB*aj*ag[az][0];am[az][1]&&(au+=","+am[az][1]+","+am[az][2]);break;case"scale":au=[+am[az][0]+aB*aj*ag[az][0],+am[az][1]+aB*aj*ag[az][1],(2 in at[az]?at[az][2]:""),(3 in at[az]?at[az][3]:"")].join(" ");break;case"clip-rect":au=[];var ax=4;while(ax--){au[ax]=+am[az][ax]+aB*aj*ag[az][ax];}break;}break;}aD[az]=au;}}ac.attr(aD);ac.animation_in_progress=setTimeout(ap);f.svg&&b.safari();}else{(af.x||af.y)&&ac.translate(-af.x,-af.y);ac.attr(at);clearTimeout(ac.animation_in_progress);f.svg&&b.safari();(f.is(aa,"function"))&&aa.call(ac);}ah=av;})();return this;};m.prototype.translate=function(e,R){if(e==null){return{x:this._.tx,y:this._.ty};}this._.tx+=+e;this._.ty+=+R;switch(this.type){case"circle":case"ellipse":this.attr({cx:+e+this.attrs.cx,cy:+R+this.attrs.cy});break;case"rect":case"image":case"text":this.attr({x:+e+this.attrs.x,y:+R+this.attrs.y});break;case"path":var i=c(this.attrs.path);i[0][1]+=+e;i[0][2]+=+R;this.attr({path:i});break;}return this;};var k=function(e){this.items=[];this.length=0;if(e){for(var R=0,Z=e.length;R<Z;R++){if(e[R]&&(e[R].constructor==m||e[R].constructor==k)){this[this.items.length]=this.items[this.items.length]=e[R];this.length++;}}}};k.prototype.push=function(){var aa,e;for(var R=0,Z=arguments.length;R<Z;R++){aa=arguments[R];if(aa&&(aa.constructor==m||aa.constructor==k)){e=this.items.length;this[e]=this.items[e]=aa;this.length++;}}return this;};k.prototype.pop=function(){delete this[this.length--];return this.items.pop();};for(var S in m.prototype){if(m.prototype.hasOwnProperty(S)){k.prototype[S]=(function(e){return function(){for(var R=0,Z=this.items.length;R<Z;R++){this.items[R][e].apply(this.items[R],arguments);}return this;};})(S);}}k.prototype.attr=function(R,ac){if(R&&f.is(R,"array")&&f.is(R[0],"object")){for(var e=0,ab=R.length;e<ab;e++){this.items[e].attr(R[e]);}}else{for(var Z=0,aa=this.items.length;Z<aa;Z++){this.items[Z].attr.apply(this.items[Z],arguments);}}return this;};k.prototype.getBBox=function(){var e=[],ac=[],R=[],aa=[];for(var Z=this.items.length;Z--;){var ab=this.items[Z].getBBox();e.push(ab.x);ac.push(ab.y);R.push(ab.x+ab.width);aa.push(ab.y+ab.height);}e=Math.min.apply(Math,e);ac=Math.min.apply(Math,ac);return{x:e,y:ac,width:Math.max.apply(Math,R)-e,height:Math.max.apply(Math,aa)-ac};};f.registerFont=function(i){if(!i.face){return i;}this.fonts=this.fonts||{};var Z={w:i.w,face:{},glyphs:{}},R=i.face["font-family"];for(var ac in i.face){if(i.face.hasOwnProperty(ac)){Z.face[ac]=i.face[ac];}}if(this.fonts[R]){this.fonts[R].push(Z);}else{this.fonts[R]=[Z];}if(!i.svg){Z.face["units-per-em"]=parseInt(i.face["units-per-em"],10);for(var aa in i.glyphs){if(i.glyphs.hasOwnProperty(aa)){var ab=i.glyphs[aa];Z.glyphs[aa]={w:ab.w,k:{},d:ab.d&&"M"+ab.d.replace(/[mlcxtrv]/g,function(ad){return{l:"L",c:"C",x:"z",t:"m",r:"l",v:"c"}[ad]||"M";})+"z"};if(ab.k){for(var e in ab.k){if(ab.hasOwnProperty(e)){Z.glyphs[aa].k[e]=ab.k[e];}}}}}}return i;};b.getFont=function(ae,af,R,aa){aa=aa||"normal";R=R||"normal";af=+af||{normal:400,bold:700,lighter:300,bolder:800}[af]||400;var ab=f.fonts[ae];if(!ab){var Z=new RegExp("(^|\\s)"+ae.replace(/[^\w\d\s+!~.:_-]/g,"")+"(\\s|$)","i");for(var e in f.fonts){if(f.fonts.hasOwnProperty(e)){if(Z.test(e)){ab=f.fonts[e];break;}}}}var ac;if(ab){for(var ad=0,ag=ab.length;ad<ag;ad++){ac=ab[ad];if(ac.face["font-weight"]==af&&(ac.face["font-style"]==R||!ac.face["font-style"])&&ac.face["font-stretch"]==aa){break;}}}return ac;};b.print=function(ag,af,ad,R,ak){var ab=this.set(),ae=(ad+"").split(""),e=0,aj="",aa;f.is(R,"string")&&(R=this.getFont(R));if(R){aa=(ak||16)/R.face["units-per-em"];for(var ac=0,ah=ae.length;ac<ah;ac++){var Z=ac&&R.glyphs[ae[ac-1]]||{},ai=R.glyphs[ae[ac]];e+=ac?(Z.w||R.w)+(Z.k&&Z.k[ae[ac]]||0):0;ai&&ai.d&&ab.push(this.path(ai.d).attr({fill:"#000",stroke:"none",translation:[e,0]}));}ab.scale(aa,aa,0,af).translate(ag,(ak||16)/2);}return ab;};f.format=function(i){var e=f.is(arguments[1],"array")?[0].concat(arguments[1]):arguments;i&&f.is(i,"string")&&e.length-1&&(i=i.replace(/\{(\d+)\}/g,function(Z,R){return e[++R]==null?"":e[R];}));return i;};f.ninja=function(){var R=window.Raphael,i;if(P.was){window.Raphael=P.is;}else{try{delete window.Raphael;}catch(Z){window.Raphael=i;}}return R;};f.el=m.prototype;return f;})();
\ No newline at end of file
+window.Raphael=(function(){var X=/[, ]+/,g=document,K=window,O={was:"Raphael" in window,is:window.Raphael},f=function(){return l.apply(f,arguments);},b={},p={"clip-rect":"0 0 10e9 10e9",cx:0,cy:0,fill:"#fff","fill-opacity":1,font:'10px "Arial"',"font-family":'"Arial"',"font-size":"10","font-style":"normal","font-weight":400,gradient:0,height:0,href:"http://raphaeljs.com/",opacity:1,path:"M0,0",r:0,rotation:0,rx:0,ry:0,scale:"1 1",src:"",stroke:"#000","stroke-dasharray":"","stroke-linecap":"butt","stroke-linejoin":"butt","stroke-miterlimit":0,"stroke-opacity":1,"stroke-width":1,target:"_blank","text-anchor":"middle",title:"Raphael",translation:"0 0",width:0,x:0,y:0},t={"clip-rect":"csv",cx:"number",cy:"number",fill:"colour","fill-opacity":"number","font-size":"number",height:"number",opacity:"number",path:"path",r:"number",rotation:"csv",rx:"number",ry:"number",scale:"csv",stroke:"colour","stroke-opacity":"number","stroke-width":"number",translation:"csv",width:"number",x:"number",y:"number"},u=["click","dblclick","mousedown","mousemove","mouseout","mouseover","mouseup"];f.version="1.0 RC1.5";f.type=(window.SVGAngle||document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")?"SVG":"VML");f.svg=!(f.vml=f.type=="VML");f.idGenerator=0;f.fn={};f.is=function(i,e){e=(e+"").toLowerCase();if((e=="object"||e=="undefined")&&typeof i==e){return true;}if(i==null&&e=="null"){return true;}return Object.prototype.toString.call(i).replace(/^\[object\s+|\]$/gi,"").toLowerCase()==e;};f.setWindow=function(e){K=e;g=K.document;};f.hsb2rgb=W(function(ae,ac,ai){if(f.is(ae,"object")&&"h" in ae&&"s" in ae&&"b" in ae){ai=ae.b;ac=ae.s;ae=ae.h;}var Z,aa,aj;if(ai==0){return{r:0,g:0,b:0,hex:"#000"};}if(ae>1||ac>1||ai>1){ae/=255;ac/=255;ai/=255;}var ab=Math.floor(ae*6),af=(ae*6)-ab,Y=ai*(1-ac),R=ai*(1-(ac*af)),ak=ai*(1-(ac*(1-af)));Z=[ai,R,Y,Y,ak,ai,ai][ab];aa=[ak,ai,ai,R,Y,Y,ak][ab];aj=[Y,Y,ak,ai,ai,R,Y][ab];Z*=255;aa*=255;aj*=255;var ag={r:Z,g:aa,b:aj},e=Math.round(Z).toString(16),ad=Math.round(aa).toString(16),ah=Math.round(aj).toString(16);if(e.length==1){e="0"+e;}if(ad.length==1){ad="0"+ad;}if(ah.length==1){ah="0"+ah;}ag.hex="#"+e+ad+ah;return ag;},f);f.rgb2hsb=W(function(e,i,ac){if(f.is(e,"object")&&"r" in e&&"g" in e&&"b" in e){ac=e.b;i=e.g;e=e.r;}if(f.is(e,"string")){var ae=f.getRGB(e);e=ae.r;i=ae.g;ac=ae.b;}if(e>1||i>1||ac>1){e/=255;i/=255;ac/=255;}var ab=Math.max(e,i,ac),R=Math.min(e,i,ac),Z,Y,aa=ab;if(R==ab){return{h:0,s:0,b:ab};}else{var ad=(ab-R);Y=ad/ab;if(e==ab){Z=(i-ac)/ad;}else{if(i==ab){Z=2+((ac-e)/ad);}else{Z=4+((e-i)/ad);}}Z/=6;if(Z<0){Z+=1;}if(Z>1){Z-=1;}}return{h:Z,s:Y,b:aa};},f);f._path2string=function(){var Y="",ab;for(var R=0,Z=this.length;R<Z;R++){for(var e=0,aa=this[R].length;e<aa;e++){Y+=this[R][e];e&&e!=aa-1&&(Y+=",");}R!=Z-1&&(Y+="\n");}return Y.replace(/,(?=-)/g,"");};function W(Y,i,e){function R(){var Z=Array.prototype.splice.call(arguments,0,arguments.length),aa=Z.join("\u25ba");R.cache=R.cache||{};R.count=R.count||[];if(aa in R.cache){return e?e(R.cache[aa]):R.cache[aa];}if(R.count.length>1000){delete R.cache[R.count.unshift()];}R.count.push(aa);R.cache[aa]=Y.apply(i,Z);return e?e(R.cache[aa]):R.cache[aa];}return R;}f.getRGB=W(function(e){var ae={aliceblue:"#f0f8ff",amethyst:"#96c",antiquewhite:"#faebd7",aqua:"#0ff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000",blanchedalmond:"#ffebcd",blue:"#00f",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#0ff",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",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#f0f",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",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#789",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#0f0",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#f0f",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",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:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#f00",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",wheat:"#f5deb3",white:"#fff",whitesmoke:"#f5f5f5",yellow:"#ff0",yellowgreen:"#9acd32"},aa;if((e+"").toLowerCase() in ae){e=ae[(e+"").toLowerCase()];}if(!e){return{r:0,g:0,b:0,hex:"#000"};}if(e=="none"){return{r:-1,g:-1,b:-1,hex:"none"};}var R,Y,ad,ab=(e+"").match(/^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgb\(\s*([\d\.]+\s*,\s*[\d\.]+\s*,\s*[\d\.]+)\s*\)|rgb\(\s*([\d\.]+%\s*,\s*[\d\.]+%\s*,\s*[\d\.]+%)\s*\)|hs[bl]\(\s*([\d\.]+\s*,\s*[\d\.]+\s*,\s*[\d\.]+)\s*\)|hs[bl]\(\s*([\d\.]+%\s*,\s*[\d\.]+%\s*,\s*[\d\.]+%)\s*\))\s*$/i);if(ab){if(ab[2]){ad=parseInt(ab[2].substring(5),16);Y=parseInt(ab[2].substring(3,5),16);R=parseInt(ab[2].substring(1,3),16);}if(ab[3]){ad=parseInt(ab[3].substring(3)+ab[3].substring(3),16);Y=parseInt(ab[3].substring(2,3)+ab[3].substring(2,3),16);R=parseInt(ab[3].substring(1,2)+ab[3].substring(1,2),16);}if(ab[4]){ab=ab[4].split(/\s*,\s*/);R=parseFloat(ab[0]);Y=parseFloat(ab[1]);ad=parseFloat(ab[2]);}if(ab[5]){ab=ab[5].split(/\s*,\s*/);R=parseFloat(ab[0])*2.55;Y=parseFloat(ab[1])*2.55;ad=parseFloat(ab[2])*2.55;}if(ab[6]){ab=ab[6].split(/\s*,\s*/);R=parseFloat(ab[0]);Y=parseFloat(ab[1]);ad=parseFloat(ab[2]);return f.hsb2rgb(R,Y,ad);}if(ab[7]){ab=ab[7].split(/\s*,\s*/);R=parseFloat(ab[0])*2.55;Y=parseFloat(ab[1])*2.55;ad=parseFloat(ab[2])*2.55;return f.hsb2rgb(R,Y,ad);}ab={r:R,g:Y,b:ad};var i=Math.round(R).toString(16),Z=Math.round(Y).toString(16),ac=Math.round(ad).toString(16);(i.length==1)&&(i="0"+i);(Z.length==1)&&(Z="0"+Z);(ac.length==1)&&(ac="0"+ac);ab.hex="#"+i+Z+ac;aa=ab;}else{aa={r:-1,g:-1,b:-1,hex:"none",error:1};}return aa;},f);f.getColor=function(i){var R=this.getColor.start=this.getColor.start||{h:0,s:1,b:i||0.75},e=this.hsb2rgb(R.h,R.s,R.b);R.h+=0.075;if(R.h>1){R.h=0;R.s-=0.2;if(R.s<=0){this.getColor.start={h:0,s:1,b:R.b};}}return e.hex;};f.getColor.reset=function(){delete this.start;};f.parsePathString=W(function(e){if(!e){return null;}var R={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},i=[];if(f.is(e,"array")&&f.is(e[0],"array")){i=s(e);}if(!i.length){(e+"").replace(/([achlmqstvz])[\s,]*((-?\d*\.?\d*(?:e[-+]?\d+)?\s*,?\s*)+)/ig,function(Z,Y,ac){var ab=[],aa=Y.toLowerCase();ac.replace(/(-?\d*\.?\d*(?:e[-+]?\d+)?)\s*,?\s*/ig,function(ae,ad){ad&&ab.push(+ad);});while(ab.length>=R[aa]){i.push([Y].concat(ab.splice(0,R[aa])));if(!R[aa]){break;}}});}i.toString=f._path2string;return i;});var B=W(function(ag){if(!ag){return{x:0,y:0,width:0,height:0};}ag=N(ag);var ad=0,ac=0,Z=[],R=[];for(var aa=0,af=ag.length;aa<af;aa++){if(ag[aa][0]=="M"){ad=ag[aa][1];ac=ag[aa][2];Z.push(ad);R.push(ac);}else{var ab=I(ad,ac,ag[aa][1],ag[aa][2],ag[aa][3],ag[aa][4],ag[aa][5],ag[aa][6]);Z=Z.concat(ab.min.x,ab.max.x);R=R.concat(ab.min.y,ab.max.y);}}var e=Math.min.apply(0,Z),ae=Math.min.apply(0,R);return{x:e,y:ae,width:Math.max.apply(0,Z)-e,height:Math.max.apply(0,R)-ae};}),s=function(ab){var Y=[];if(!f.is(ab,"array")||!f.is(ab&&ab[0],"array")){ab=f.parsePathString(ab);}for(var R=0,Z=ab.length;R<Z;R++){Y[R]=[];for(var e=0,aa=ab[R].length;e<aa;e++){Y[R][e]=ab[R][e];}}Y.toString=f._path2string;return Y;},c=W(function(Z){if(!f.is(Z,"array")||!f.is(Z&&Z[0],"array")){Z=f.parsePathString(Z);}var af=[],ah=0,ag=0,ak=0,aj=0,Y=0;if(Z[0][0]=="M"){ah=Z[0][1];ag=Z[0][2];ak=ah;aj=ag;Y++;af.push(["M",ah,ag]);}for(var ac=Y,al=Z.length;ac<al;ac++){var e=af[ac]=[],ai=Z[ac];if(ai[0]!=ai[0].toLowerCase()){e[0]=ai[0].toLowerCase();switch(e[0]){case"a":e[1]=ai[1];e[2]=ai[2];e[3]=ai[3];e[4]=ai[4];e[5]=ai[5];e[6]=+(ai[6]-ah).toFixed(3);e[7]=+(ai[7]-ag).toFixed(3);break;case"v":e[1]=+(ai[1]-ag).toFixed(3);break;case"m":ak=ai[1];aj=ai[2];default:for(var ab=1,ad=ai.length;ab<ad;ab++){e[ab]=+(ai[ab]-((ab%2)?ah:ag)).toFixed(3);}}}else{e=af[ac]=[];if(ai[0]=="m"){ak=ai[1]+ah;aj=ai[2]+ag;}for(var aa=0,R=ai.length;aa<R;aa++){af[ac][aa]=ai[aa];}}var ae=af[ac].length;switch(af[ac][0]){case"z":ah=ak;ag=aj;break;case"h":ah+=+af[ac][ae-1];break;case"v":ag+=+af[ac][ae-1];break;default:ah+=+af[ac][ae-2];ag+=+af[ac][ae-1];}}af.toString=f._path2string;return af;},0,s),v=W(function(Z){if(!f.is(Z,"array")||!f.is(Z&&Z[0],"array")){Z=f.parsePathString(Z);}var ae=[],ag=0,af=0,aj=0,ai=0,Y=0;if(Z[0][0]=="M"){ag=+Z[0][1];af=+Z[0][2];aj=ag;ai=af;Y++;ae[0]=["M",ag,af];}for(var ac=Y,ak=Z.length;ac<ak;ac++){var e=ae[ac]=[],ah=Z[ac];if(ah[0]!=(ah[0]+"").toUpperCase()){e[0]=(ah[0]+"").toUpperCase();switch(e[0]){case"A":e[1]=ah[1];e[2]=ah[2];e[3]=ah[3];e[4]=ah[4];e[5]=ah[5];e[6]=+(ah[6]+ag);e[7]=+(ah[7]+af);break;case"V":e[1]=+ah[1]+af;break;case"H":e[1]=+ah[1]+ag;break;case"M":aj=+ah[1]+ag;ai=+ah[2]+af;default:for(var ab=1,ad=ah.length;ab<ad;ab++){e[ab]=+ah[ab]+((ab%2)?ag:af);}}}else{for(var aa=0,R=ah.length;aa<R;aa++){ae[ac][aa]=ah[aa];}}switch(e[0]){case"Z":ag=aj;af=ai;break;case"H":ag=e[1];break;case"V":af=e[1];break;default:ag=ae[ac][ae[ac].length-2];af=ae[ac][ae[ac].length-1];}}ae.toString=f._path2string;return ae;},null,s),d=function(i,Y,e,R){return[i,Y,e,R,e,R];},w=function(i,Y,ab,Z,e,R){var aa=1/3,ac=2/3;return[aa*i+ac*ab,aa*Y+ac*Z,aa*e+ac*ab,aa*R+ac*Z,e,R];},q=function(aj,aO,at,aq,ak,ae,Z,ai,aN,al){var ap=Math.PI*120/180,e=Math.PI/180*(+ak||0),ax=[],au,aK=W(function(aP,aS,i){var aR=aP*Math.cos(i)-aS*Math.sin(i),aQ=aP*Math.sin(i)+aS*Math.cos(i);return{x:aR,y:aQ};});if(!al){au=aK(aj,aO,-e);aj=au.x;aO=au.y;au=aK(ai,aN,-e);ai=au.x;aN=au.y;var R=Math.cos(Math.PI/180*ak),ag=Math.sin(Math.PI/180*ak),az=(aj-ai)/2,ay=(aO-aN)/2;at=Math.max(at,Math.abs(az));aq=Math.max(aq,Math.abs(ay));var Y=at*at,aC=aq*aq,aE=(ae==Z?-1:1)*Math.sqrt(Math.abs((Y*aC-Y*ay*ay-aC*az*az)/(Y*ay*ay+aC*az*az))),an=aE*at*ay/aq+(aj+ai)/2,am=aE*-aq*az/at+(aO+aN)/2,ad=Math.asin((aO-am)/aq),ac=Math.asin((aN-am)/aq);ad=aj<an?Math.PI-ad:ad;ac=ai<an?Math.PI-ac:ac;ad<0&&(ad=Math.PI*2+ad);ac<0&&(ac=Math.PI*2+ac);if(Z&&ad>ac){ad=ad-Math.PI*2;}if(!Z&&ac>ad){ac=ac-Math.PI*2;}}else{ad=al[0];ac=al[1];an=al[2];am=al[3];}var ah=ac-ad;if(Math.abs(ah)>ap){var ao=ac,ar=ai,af=aN;ac=ad+ap*(Z&&ac>ad?1:-1);ai=an+at*Math.cos(ac);aN=am+aq*Math.sin(ac);ax=q(ai,aN,at,aq,ak,0,Z,ar,af,[ac,ao,an,am]);}ah=ac-ad;var ab=Math.cos(ad),aM=Math.sin(ad),aa=Math.cos(ac),aL=Math.sin(ac),aA=Math.tan(ah/4),aD=4/3*at*aA,aB=4/3*aq*aA,aJ=[aj,aO],aI=[aj+aD*aM,aO-aB*ab],aH=[ai+aD*aL,aN-aB*aa],aF=[ai,aN];aI[0]=2*aJ[0]-aI[0];aI[1]=2*aJ[1]-aI[1];if(al){return[aI,aH,aF].concat(ax);}else{ax=[aI,aH,aF].concat(ax).join(",").split(",");var av=[];for(var aG=0,aw=ax.length;aG<aw;aG++){av[aG]=aG%2?aK(ax[aG-1],ax[aG],e).y:aK(ax[aG],ax[aG+1],e).x;}return av;}},z=W(function(i,e,an,al,aa,Z,ac,ab,ah){var af=Math.pow(1-ah,3)*i+Math.pow(1-ah,2)*3*ah*an+(1-ah)*3*ah*ah*aa+Math.pow(ah,3)*ac,ad=Math.pow(1-ah,3)*e+Math.pow(1-ah,2)*3*ah*al+(1-ah)*3*ah*ah*Z+Math.pow(ah,3)*ab,aj=i+2*ah*(an-i)+ah*ah*(aa-2*an+i),ai=e+2*ah*(al-e)+ah*ah*(Z-2*al+e),am=an+2*ah*(aa-an)+ah*ah*(ac-2*aa+an),ak=al+2*ah*(Z-al)+ah*ah*(ab-2*Z+al),ag=(1-ah)*i+ah*an,ae=(1-ah)*e+ah*al,Y=(1-ah)*aa+ah*ac,R=(1-ah)*Z+ah*ab;return{x:af,y:ad,m:{x:aj,y:ai},n:{x:am,y:ak},start:{x:ag,y:ae},end:{x:Y,y:R}};}),I=W(function(i,e,Y,R,al,ak,ah,ae){var aj=(al-2*Y+i)-(ah-2*al+Y),ag=2*(Y-i)-2*(al-Y),ad=i-Y,ab=(-ag+Math.sqrt(ag*ag-4*aj*ad))/2/aj,Z=(-ag-Math.sqrt(ag*ag-4*aj*ad))/2/aj,af=[e,ae],ai=[i,ah],ac=z(i,e,Y,R,al,ak,ah,ae,ab>0&&ab<1?ab:0),aa=z(i,e,Y,R,al,ak,ah,ae,Z>0&&Z<1?Z:0);ai=ai.concat(ac.x,aa.x);af=af.concat(ac.y,aa.y);aj=(ak-2*R+e)-(ae-2*ak+R);ag=2*(R-e)-2*(ak-R);ad=e-R;ab=(-ag+Math.sqrt(ag*ag-4*aj*ad))/2/aj;Z=(-ag-Math.sqrt(ag*ag-4*aj*ad))/2/aj;ac=z(i,e,Y,R,al,ak,ah,ae,ab>0&&ab<1?ab:0);aa=z(i,e,Y,R,al,ak,ah,ae,Z>0&&Z<1?Z:0);ai=ai.concat(ac.x,aa.x);af=af.concat(ac.y,aa.y);return{min:{x:Math.min.apply(Math,ai),y:Math.min.apply(Math,af)},max:{x:Math.max.apply(Math,ai),y:Math.max.apply(Math,af)}};}),N=W(function(ak,af){var Z=v(ak),ag=af&&v(af),ah={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},e={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},ab=function(al,am){var i,an;if(!al){return["C",am.x,am.y,am.x,am.y,am.x,am.y];}!(al[0] in {T:1,Q:1})&&(am.qx=am.qy=null);switch(al[0]){case"M":am.X=al[1];am.Y=al[2];break;case"A":al=["C"].concat(q.apply(0,[am.x,am.y].concat(al.slice(1))));break;case"S":i=am.x+(am.x-(am.bx||am.x));an=am.y+(am.y-(am.by||am.y));al=["C",i,an].concat(al.slice(1));break;case"T":am.qx=am.x+(am.x-(am.qx||am.x));am.qy=am.y+(am.y-(am.qy||am.y));al=["C"].concat(w(am.x,am.y,am.qx,am.qy,al[1],al[2]));break;case"Q":am.qx=al[1];am.qy=al[2];al=["C"].concat(w(am.x,am.y,al[1],al[2],al[3],al[4]));break;case"L":al=["C"].concat(d(am.x,am.y,al[1],al[2]));break;case"H":al=["C"].concat(d(am.x,am.y,al[1],am.y));break;case"V":al=["C"].concat(d(am.x,am.y,am.x,al[1]));break;case"Z":al=["C"].concat(d(am.x,am.y,am.X,am.Y));break;}return al;},R=function(al,am){if(al[am].length>7){al[am].shift();var an=al[am];while(an.length){al.splice(am++,0,["C"].concat(an.splice(0,6)));}al.splice(am,1);ai=Math.max(Z.length,ag&&ag.length||0);}},Y=function(ap,ao,am,al,an){if(ap&&ao&&ap[an][0]=="M"&&ao[an][0]!="M"){ao.splice(an,0,["M",al.x,al.y]);am.bx=0;am.by=0;am.x=ap[an][1];am.y=ap[an][2];ai=Math.max(Z.length,ag&&ag.length||0);}};for(var ad=0,ai=Math.max(Z.length,ag&&ag.length||0);ad<ai;ad++){Z[ad]=ab(Z[ad],ah);R(Z,ad);ag&&(ag[ad]=ab(ag[ad],e));ag&&R(ag,ad);Y(Z,ag,ah,e,ad);Y(ag,Z,e,ah,ad);var ac=Z[ad],aj=ag&&ag[ad],aa=ac.length,ae=ag&&aj.length;ah.x=ac[aa-2];ah.y=ac[aa-1];ah.bx=parseFloat(ac[aa-4])||ah.x;ah.by=parseFloat(ac[aa-3])||ah.y;e.bx=ag&&(parseFloat(aj[ae-4])||e.x);e.by=ag&&(parseFloat(aj[ae-3])||e.y);e.x=ag&&aj[ae-2];e.y=ag&&aj[ae-1];}return ag?[Z,ag]:Z;},null,s),n=W(function(ae){var ad=[];for(var aa=0,af=ae.length;aa<af;aa++){var e={},ac=ae[aa].match(/^([^:]*):?([\d\.]*)/);e.color=f.getRGB(ac[1]);if(e.color.error){return null;}e.color=e.color.hex;ac[2]&&(e.offset=ac[2]+"%");ad.push(e);}for(var aa=1,af=ad.length-1;aa<af;aa++){if(!ad[aa].offset){var R=parseFloat(ad[aa-1].offset||0),Y=false;for(var Z=aa+1;Z<af;Z++){if(ad[Z].offset){Y=ad[Z].offset;break;}}if(!Y){Y=100;Z=af;}Y=parseFloat(Y);var ab=(Y-R)/(Z-aa+1);for(;aa<Z;aa++){R+=ab;ad[aa].offset=R+"%";}}}return ad;}),F=function(){var R,i,Z,Y,e;if(f.is(arguments[0],"string")||f.is(arguments[0],"object")){if(f.is(arguments[0],"string")){R=g.getElementById(arguments[0]);}else{R=arguments[0];}if(R.tagName){if(arguments[1]==null){return{container:R,width:R.style.pixelWidth||R.offsetWidth,height:R.style.pixelHeight||R.offsetHeight};}else{return{container:R,width:arguments[1],height:arguments[2]};}}}else{if(f.is(arguments[0],"number")&&arguments.length>3){return{container:1,x:arguments[0],y:arguments[1],width:arguments[2],height:arguments[3]};}}},a=function(e,R){var i=this;for(var Y in R){if(R.hasOwnProperty(Y)&&!(Y in e)){switch(typeof R[Y]){case"function":(function(Z){e[Y]=e===i?Z:function(){return Z.apply(i,arguments);};})(R[Y]);break;case"object":e[Y]=e[Y]||{};a.call(this,e[Y],R[Y]);break;default:e[Y]=R[Y];break;}}}};if(f.svg){b.svgns="http://www.w3.org/2000/svg";b.xlink="http://www.w3.org/1999/xlink";var M=function(e){return +e+(Math.floor(e)==e)*0.5;};var y=function(aa){for(var R=0,Y=aa.length;R<Y;R++){if(aa[R][0].toLowerCase()!="a"){for(var e=1,Z=aa[R].length;e<Z;e++){aa[R][e]=M(aa[R][e]);}}else{aa[R][6]=M(aa[R][6]);aa[R][7]=M(aa[R][7]);}}return aa;};var A=function(R,e){if(e){for(var i in e){if(e.hasOwnProperty(i)){R.setAttribute(i,e[i]);}}}else{return g.createElementNS(b.svgns,R);}};f.toString=function(){return"Your browser supports SVG.\nYou are running Rapha\u00ebl "+this.version;};var V=function(e,Y){var i=A("path");Y.canvas&&Y.canvas.appendChild(i);var R=new m(i,Y);R.type="path";E(R,{fill:"none",stroke:"#000",path:e});return R;};var L=function(Y,ai,e){var af="linear",ac=0.5,aa=0.5,ak=Y.style;ai=(ai+"").replace(/^r(?:\(([^,]+?)\s*,\s*([^\)]+?)\))?/,function(al,i,am){af="radial";if(i&&am){ac=parseFloat(i);aa=parseFloat(am);if(Math.pow(ac-0.5,2)+Math.pow(aa-0.5,2)>0.25){aa=Math.sqrt(0.25-Math.pow(ac-0.5,2))+0.5;}}return"";});ai=ai.split(/\s*\-\s*/);if(af=="linear"){var ab=ai.shift();ab=-parseFloat(ab);if(isNaN(ab)){return null;}var Z=[0,0,Math.cos(ab*Math.PI/180),Math.sin(ab*Math.PI/180)],ah=1/(Math.max(Math.abs(Z[2]),Math.abs(Z[3]))||1);Z[2]*=ah;Z[3]*=ah;if(Z[2]<0){Z[0]=-Z[2];Z[2]=0;}if(Z[3]<0){Z[1]=-Z[3];Z[3]=0;}}var ae=n(ai);if(!ae){return null;}var R=A(af+"Gradient");R.id="r"+(f.idGenerator++).toString(36);af=="radial"?A(R,{fx:ac,fy:aa}):A(R,{x1:Z[0],y1:Z[1],x2:Z[2],y2:Z[3]});e.defs.appendChild(R);for(var ad=0,aj=ae.length;ad<aj;ad++){var ag=A("stop");A(ag,{offset:ae[ad].offset?ae[ad].offset:!ad?"0%":"100%","stop-color":ae[ad].color||"#fff"});R.appendChild(ag);}A(Y,{fill:"url(#"+R.id+")",opacity:1,"fill-opacity":1});ak.fill="";ak.opacity=1;ak.fillOpacity=1;return 1;};var r=function(i){var e=i.getBBox();A(i.pattern,{patternTransform:f.format("translate({0},{1})",e.x,e.y)});};var E=function(ag,ap){var aj={"":[0],none:[0],"-":[3,1],".":[1,1],"-.":[3,1,1,1],"-..":[3,1,1,1,1,1],". ":[1,3],"- ":[4,3],"--":[8,3],"- .":[4,3,1,3],"--.":[8,3,1,3],"--..":[8,3,1,3,1,3]},al=ag.node,ah=ag.attrs,ad=ag.attr("rotation"),aa=function(ax,aw){aw=aj[(aw+"").toLowerCase()];if(aw){var au=ax.attrs["stroke-width"]||"1",ar={round:au,square:au,butt:0}[ax.attrs["stroke-linecap"]||ap["stroke-linecap"]]||0,av=[];var at=aw.length;while(at--){av[at]=aw[at]*au+((at%2)?1:-1)*ar;}A(al,{"stroke-dasharray":av.join(",")});}};parseFloat(ad)&&ag.rotate(0,true);for(var ak in ap){if(ap.hasOwnProperty(ak)){if(!(ak in p)){continue;}var ai=ap[ak];ah[ak]=ai;switch(ak){case"href":case"title":case"target":var an=al.parentNode;if(an.tagName.toLowerCase()!="a"){var Y=A("a");an.insertBefore(Y,al);Y.appendChild(al);an=Y;}an.setAttributeNS(ag.paper.xlink,ak,ai);break;case"clip-rect":var i=(ai+"").split(X);if(i.length==4){ag.clip&&ag.clip.parentNode.parentNode.removeChild(ag.clip.parentNode);var R=A("clipPath"),am=A("rect");R.id="r"+(f.idGenerator++).toString(36);A(am,{x:i[0],y:i[1],width:i[2],height:i[3]});R.appendChild(am);ag.paper.defs.appendChild(R);A(al,{"clip-path":"url(#"+R.id+")"});ag.clip=am;}if(!ai){var ao=g.getElementById(al.getAttribute("clip-path").replace(/(^url\(#|\)$)/g,""));ao&&ao.parentNode.removeChild(ao);A(al,{"clip-path":""});delete ag.clip;}break;case"path":if(ai&&ag.type=="path"){ah.path=y(v(ai));A(al,{d:ah.path});}break;case"width":al.setAttribute(ak,ai);if(ah.fx){ak="x";ai=ah.x;}else{break;}case"x":if(ah.fx){ai=-ah.x-(ah.width||0);}case"rx":if(ak=="rx"&&ag.type=="rect"){break;}case"cx":al.setAttribute(ak,ai);ag.pattern&&r(ag);break;case"height":al.setAttribute(ak,ai);if(ah.fy){ak="y";ai=ah.y;}else{break;}case"y":if(ah.fy){ai=-ah.y-(ah.height||0);}case"ry":if(ak=="ry"&&ag.type=="rect"){break;}case"cy":al.setAttribute(ak,ai);ag.pattern&&r(ag);break;case"r":if(ag.type=="rect"){A(al,{rx:ai,ry:ai});}else{al.setAttribute(ak,ai);}break;case"src":if(ag.type=="image"){al.setAttributeNS(ag.paper.xlink,"href",ai);}break;case"stroke-width":al.style.strokeWidth=ai;al.setAttribute(ak,ai);if(ah["stroke-dasharray"]){aa(ag,ah["stroke-dasharray"]);}break;case"stroke-dasharray":aa(ag,ai);break;case"rotation":ad=ai;ag.rotate(ai,true);break;case"translation":var ab=(ai+"").split(X);ag.translate((+ab[0]+1||2)-1,(+ab[1]+1||2)-1);break;case"scale":var ab=(ai+"").split(X);ag.scale(+ab[0]||1,+ab[1]||+ab[0]||1,+ab[2]||null,+ab[3]||null);break;case"fill":var Z=(ai+"").match(/^url\(['"]?([^\)]+)['"]?\)$/i);if(Z){var R=A("pattern"),af=A("image");R.id="r"+(f.idGenerator++).toString(36);A(R,{x:0,y:0,patternUnits:"userSpaceOnUse"});A(af,{x:0,y:0});af.setAttributeNS(ag.paper.xlink,"href",Z[1]);R.appendChild(af);var aq=g.createElement("img");aq.style.position="absolute";aq.style.top="-9999em";aq.style.left="-9999em";aq.onload=function(){A(R,{width:this.offsetWidth,height:this.offsetHeight});A(af,{width:this.offsetWidth,height:this.offsetHeight});g.body.removeChild(this);b.safari();};g.body.appendChild(aq);aq.src=Z[1];ag.paper.defs.appendChild(R);al.style.fill="url(#"+R.id+")";A(al,{fill:"url(#"+R.id+")"});ag.pattern=R;ag.pattern&&r(ag);break;}if(!f.getRGB(ai).error){delete ap.gradient;delete ah.gradient;if(!f.is(ah.opacity,"undefined")&&f.is(ap.opacity,"undefined")){al.style.opacity=ah.opacity;A(al,{opacity:ah.opacity});}if(!f.is(ah["fill-opacity"],"undefined")&&f.is(ap["fill-opacity"],"undefined")){al.style.fillOpacity=ah["fill-opacity"];A(al,{"fill-opacity":ah["fill-opacity"]});}}else{if((ag.type in {circle:1,ellipse:1}||(ai+"").charAt(0)!="r")&&L(al,ai,ag.paper)){ah.gradient=ai;ah.fill="none";break;}}case"stroke":al.style[ak]=f.getRGB(ai).hex;al.setAttribute(ak,f.getRGB(ai).hex);break;case"gradient":(ag.type in {circle:1,ellipse:1}||(ai+"").charAt(0)!="r")&&L(al,ai,ag.paper);break;case"opacity":case"fill-opacity":if(ah.gradient){var e=g.getElementById(al.getAttribute("fill").replace(/^url\(#|\)$/g,""));if(e){var ac=e.getElementsByTagName("stop");ac[ac.length-1].setAttribute("stop-opacity",ai);}break;}default:ak=="font-size"&&(ai=parseInt(ai,10)+"px");var ae=ak.replace(/(\-.)/g,function(ar){return ar.substring(1).toUpperCase();});al.style[ae]=ai;al.setAttribute(ak,ai);break;}}}S(ag,ap);parseInt(ad,10)&&ag.rotate(ad,true);};var J=1.2;var S=function(e,Z){if(e.type!="text"||!("text" in Z||"font" in Z||"font-size" in Z||"x" in Z||"y" in Z)){return;}var ae=e.attrs,R=e.node,ag=R.firstChild?parseInt(g.defaultView.getComputedStyle(R.firstChild,"").getPropertyValue("font-size"),10):10;if("text" in Z){while(R.firstChild){R.removeChild(R.firstChild);}var Y=(Z.text+"").split("\n");for(var aa=0,af=Y.length;aa<af;aa++){var ac=A("tspan");aa&&A(ac,{dy:ag*J,x:ae.x});ac.appendChild(g.createTextNode(Y[aa]));R.appendChild(ac);}}else{var Y=R.getElementsByTagName("tspan");for(var aa=0,af=Y.length;aa<af;aa++){aa&&A(Y[aa],{dy:ag*J,x:ae.x});}}A(R,{y:ae.y});var ab=e.getBBox(),ad=ae.y-(ab.y+ab.height/2);ad&&A(R,{y:ae.y+ad});};var m=function(i,e){var Z=0,R=0;this[0]=i;this.node=i;i.raphael=this;this.paper=e;this.attrs=this.attrs||{};this.transformations=[];this._={tx:0,ty:0,rt:{deg:0,cx:0,cy:0},sx:1,sy:1};};m.prototype.rotate=function(i,e,Y){if(i==null){if(this._.rt.cx){return[this._.rt.deg,this._.rt.cx,this._.rt.cy].join(" ");}return this._.rt.deg;}var R=this.getBBox();i=(i+"").split(X);if(i.length-1){e=parseFloat(i[1]);Y=parseFloat(i[2]);}i=parseFloat(i[0]);if(e!=null){this._.rt.deg=i;}else{this._.rt.deg+=i;}(Y==null)&&(e=null);this._.rt.cx=e;this._.rt.cy=Y;e=e==null?R.x+R.width/2:e;Y=Y==null?R.y+R.height/2:Y;if(this._.rt.deg){this.transformations[0]=f.format("rotate({0} {1} {2})",this._.rt.deg,e,Y);this.clip&&A(this.clip,{transform:f.format("rotate({0} {1} {2})",-this._.rt.deg,e,Y)});}else{this.transformations[0]="";this.clip&&A(this.clip,{transform:""});}A(this.node,{transform:this.transformations.join(" ")});return this;};m.prototype.hide=function(){this.node.style.display="none";return this;};m.prototype.show=function(){this.node.style.display="block";return this;};m.prototype.remove=function(){this.node.parentNode.removeChild(this.node);};m.prototype.getBBox=function(){if(this.type=="path"){return B(this.attrs.path);}if(this.node.style.display=="none"){this.show();var Y=true;}var ac={};try{ac=this.node.getBBox();}catch(aa){}finally{ac=ac||{};}if(this.type=="text"){ac={x:ac.x,y:Infinity,width:ac.width,height:0};for(var R=0,Z=this.node.getNumberOfChars();R<Z;R++){var ab=this.node.getExtentOfChar(R);(ab.y<ac.y)&&(ac.y=ab.y);(ab.y+ab.height-ac.y>ac.height)&&(ac.height=ab.y+ab.height-ac.y);}}Y&&this.hide();return ac;};m.prototype.attr=function(){if(arguments.length==1&&f.is(arguments[0],"string")){if(arguments[0]=="translation"){return this.translate();}if(arguments[0]=="rotation"){return this.rotate();}if(arguments[0]=="scale"){return this.scale();}return this.attrs[arguments[0]];}if(arguments.length==1&&f.is(arguments[0],"array")){var e={};for(var i in arguments[0]){if(arguments[0].hasOwnProperty(i)){e[arguments[0][i]]=this.attrs[arguments[0][i]];}}return e;}if(arguments.length==2){var R={};R[arguments[0]]=arguments[1];E(this,R);}else{if(arguments.length==1&&f.is(arguments[0],"object")){E(this,arguments[0]);}}return this;};m.prototype.toFront=function(){this.node.parentNode.appendChild(this.node);return this;};m.prototype.toBack=function(){if(this.node.parentNode.firstChild!=this.node){this.node.parentNode.insertBefore(this.node,this.node.parentNode.firstChild);}return this;};m.prototype.insertAfter=function(e){if(e.node.nextSibling){e.node.parentNode.insertBefore(this.node,e.node.nextSibling);}else{e.node.parentNode.appendChild(this.node);}return this;};m.prototype.insertBefore=function(e){var i=e.node;i.parentNode.insertBefore(this.node,i);return this;};var C=function(i,e,aa,Z){e=M(e);aa=M(aa);var Y=A("circle");i.canvas&&i.canvas.appendChild(Y);var R=new m(Y,i);R.attrs={cx:e,cy:aa,r:Z,fill:"none",stroke:"#000"};R.type="circle";A(Y,R.attrs);return R;};var H=function(R,e,ac,i,aa,ab){e=M(e);ac=M(ac);var Z=A("rect");R.canvas&&R.canvas.appendChild(Z);var Y=new m(Z,R);Y.attrs={x:e,y:ac,width:i,height:aa,r:ab||0,rx:ab||0,ry:ab||0,fill:"none",stroke:"#000"};Y.type="rect";A(Z,Y.attrs);return Y;};var h=function(i,e,ab,aa,Z){e=M(e);ab=M(ab);var Y=A("ellipse");i.canvas&&i.canvas.appendChild(Y);var R=new m(Y,i);R.attrs={cx:e,cy:ab,rx:aa,ry:Z,fill:"none",stroke:"#000"};R.type="ellipse";A(Y,R.attrs);return R;};var o=function(R,ab,e,ac,i,aa){var Z=A("image");A(Z,{x:e,y:ac,width:i,height:aa,preserveAspectRatio:"none"});Z.setAttributeNS(R.xlink,"href",ab);R.canvas&&R.canvas.appendChild(Z);var Y=new m(Z,R);Y.attrs={x:e,y:ac,width:i,height:aa,src:ab};Y.type="image";return Y;};var G=function(i,e,aa,Z){var Y=A("text");A(Y,{x:e,y:aa,"text-anchor":"middle"});i.canvas&&i.canvas.appendChild(Y);var R=new m(Y,i);R.attrs={x:e,y:aa,"text-anchor":"middle",text:Z,font:p.font,stroke:"none",fill:"#000"};R.type="text";E(R,R.attrs);return R;};var D=function(i,e){this.width=i||this.width;this.height=e||this.height;this.canvas.setAttribute("width",this.width);this.canvas.setAttribute("height",this.height);return this;};var l=function(){var Z=F.apply(null,arguments),R=Z&&Z.container,ab=Z.x,aa=Z.y,Y=Z.width,ac=Z.height;if(!R){throw new Error("SVG container not found.");}b.canvas=A("svg");var e=b.canvas,ad=e.style;e.setAttribute("width",Y||512);b.width=Y||512;e.setAttribute("height",ac||342);b.height=ac||342;if(R==1){g.body.appendChild(e);ad.position="absolute";ad.left=ab+"px";ad.top=aa+"px";}else{if(R.firstChild){R.insertBefore(e,R.firstChild);}else{R.appendChild(e);}}R={canvas:e,clear:function(){while(this.canvas.firstChild){this.canvas.removeChild(this.canvas.firstChild);}this.desc=A("desc");this.defs=A("defs");this.desc.appendChild(g.createTextNode("Created with Rapha\u00ebl"));this.canvas.appendChild(this.desc);this.canvas.appendChild(this.defs);}};for(var i in b){if(b.hasOwnProperty(i)){if(i!="create"){R[i]=b[i];}}}a.call(R,R,f.fn);R.clear();R.raphael=f;return R;};b.remove=function(){this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas);};}if(f.vml){var x=function(ab){var Z=N(ab);for(var R=0,Y=Z.length;R<Y;R++){Z[R][0]=(Z[R][0]+"").toLowerCase();Z[R][0]=="z"&&(Z[R][0]="x");for(var e=1,aa=Z[R].length;e<aa;e++){Z[R][e]=Math.round(Z[R][e]);}}return(Z+"");};f.toString=function(){return"Your browser doesn\u2019t support SVG. Assuming it is Internet Explorer and falling down to VML.\nYou are running Rapha\u00ebl "+this.version;};var V=function(e,aa){var Y=U("group"),ab=Y.style;ab.position="absolute";ab.left=0;ab.top=0;ab.width=aa.width+"px";ab.height=aa.height+"px";Y.coordsize=aa.coordsize;Y.coordorigin=aa.coordorigin;var R=U("shape"),i=R.style;i.width=aa.width+"px";i.height=aa.height+"px";R.path="";R.coordsize=this.coordsize;R.coordorigin=this.coordorigin;Y.appendChild(R);var Z=new m(R,Y,aa);Z.isAbsolute=true;Z.type="path";Z.path=[];Z.Path="";if(e){Z.attrs.path=f.parsePathString(e);Z.node.path=x(Z.attrs.path);}E(Z,{fill:"none",stroke:"#000"});Z.setBox();aa.canvas.appendChild(Y);return Z;};var E=function(ae,ai){ae.attrs=ae.attrs||{};var ag=ae.node,aj=ae.attrs,ab=ag.style,Y,an=ae;for(var ac in ai){if(ai.hasOwnProperty(ac)){aj[ac]=ai[ac];}}ai.href&&(ag.href=ai.href);ai.title&&(ag.title=ai.title);ai.target&&(ag.target=ai.target);if(ai.path&&ae.type=="path"){aj.path=f.parsePathString(ai.path);ag.path=x(aj.path);}if(ai.rotation!=null){ae.rotate(ai.rotation,true);}if(ai.translation){Y=(ai.translation+"").split(X);ae.translate(Y[0],Y[1]);}if(ai.scale){Y=(ai.scale+"").split(X);ae.scale(+Y[0]||1,+Y[1]||+Y[0]||1,+Y[2]||null,+Y[3]||null);}if("clip-rect" in ai){var e=(ai["clip-rect"]+"").split(X);if(e.length==4){e[2]=+e[2]+(+e[0]);e[3]=+e[3]+(+e[1]);var ad=ag.clipRect||g.createElement("div"),am=ad.style,aa=ag.parentNode;am.clip=f.format("rect({1}px {2}px {3}px {0}px)",e);if(!ag.clipRect){am.position="absolute";am.top=0;am.left=0;am.width=ae.paper.width+"px";am.height=ae.paper.height+"px";aa.parentNode.insertBefore(ad,aa);ad.appendChild(aa);ag.clipRect=ad;}}if(!ai["clip-rect"]){ag.clipRect&&(ag.clipRect.style.clip="");}}if(ae.type=="image"&&ai.src){ag.src=ai.src;}if(ae.type=="image"&&ai.opacity){ag.filterOpacity=" progid:DXImageTransform.Microsoft.Alpha(opacity="+(ai.opacity*100)+")";ab.filter=(ag.filterMatrix||"")+(ag.filterOpacity||"");}ai.font&&(ab.font=ai.font);ai["font-family"]&&(ab.fontFamily='"'+ai["font-family"].split(",")[0].replace(/^['"]+|['"]+$/g,"")+'"');ai["font-size"]&&(ab.fontSize=ai["font-size"]);ai["font-weight"]&&(ab.fontWeight=ai["font-weight"]);ai["font-style"]&&(ab.fontStyle=ai["font-style"]);if(ai.opacity!=null||ai["stroke-width"]!=null||ai.fill!=null||ai.stroke!=null||ai["stroke-width"]!=null||ai["stroke-opacity"]!=null||ai["fill-opacity"]!=null||ai["stroke-dasharray"]!=null||ai["stroke-miterlimit"]!=null||ai["stroke-linejoin"]!=null||ai["stroke-linecap"]!=null){ag=ae.shape||ag;var ah=(ag.getElementsByTagName("fill")&&ag.getElementsByTagName("fill")[0]),ak=false;!ah&&(ak=ah=U("fill"));if("fill-opacity" in ai||"opacity" in ai){var i=((+aj["fill-opacity"]+1||2)-1)*((+aj.opacity+1||2)-1);i<0&&(i=0);i>1&&(i=1);ah.opacity=i;}ai.fill&&(ah.on=true);if(ah.on==null||ai.fill=="none"){ah.on=false;}if(ah.on&&ai.fill){var R=ai.fill.match(/^url\(([^\)]+)\)$/i);if(R){ah.src=R[1];ah.type="tile";}else{ah.color=f.getRGB(ai.fill).hex;ah.src="";ah.type="solid";if(f.getRGB(ai.fill).error&&(an.type in {circle:1,ellipse:1}||(ai.fill+"").charAt(0)!="r")&&L(an,ai.fill)){aj.fill="none";aj.gradient=ai.fill;}}}ak&&ag.appendChild(ah);var Z=(ag.getElementsByTagName("stroke")&&ag.getElementsByTagName("stroke")[0]),al=false;!Z&&(al=Z=U("stroke"));if((ai.stroke&&ai.stroke!="none")||ai["stroke-width"]||ai["stroke-opacity"]!=null||ai["stroke-dasharray"]||ai["stroke-miterlimit"]||ai["stroke-linejoin"]||ai["stroke-linecap"]){Z.on=true;}(ai.stroke=="none"||Z.on==null||ai.stroke==0||ai["stroke-width"]==0)&&(Z.on=false);Z.on&&ai.stroke&&(Z.color=f.getRGB(ai.stroke).hex);var i=((+aj["stroke-opacity"]+1||2)-1)*((+aj.opacity+1||2)-1);i<0&&(i=0);i>1&&(i=1);Z.opacity=i;ai["stroke-linejoin"]&&(Z.joinstyle=ai["stroke-linejoin"]||"miter");Z.miterlimit=ai["stroke-miterlimit"]||8;ai["stroke-linecap"]&&(Z.endcap={butt:"flat",square:"square",round:"round"}[ai["stroke-linecap"]]||"miter");ai["stroke-width"]&&(Z.weight=(parseFloat(ai["stroke-width"])||1)*12/16);if(ai["stroke-dasharray"]){var af={"-":"shortdash",".":"shortdot","-.":"shortdashdot","-..":"shortdashdotdot",". ":"dot","- ":"dash","--":"longdash","- .":"dashdot","--.":"longdashdot","--..":"longdashdotdot"};Z.dashstyle=af[ai["stroke-dasharray"]]||"";}al&&ag.appendChild(Z);}if(an.type=="text"){var ab=b.span.style;aj.font&&(ab.font=aj.font);aj["font-family"]&&(ab.fontFamily=aj["font-family"]);aj["font-size"]&&(ab.fontSize=aj["font-size"]);aj["font-weight"]&&(ab.fontWeight=aj["font-weight"]);aj["font-style"]&&(ab.fontStyle=aj["font-style"]);an.node.string&&(b.span.innerHTML=an.node.string.replace(/</g,"&#60;").replace(/&/g,"&#38;").replace(/\n/g,"<br>"));an.W=aj.w=b.span.offsetWidth;an.H=aj.h=b.span.offsetHeight;an.X=aj.x;an.Y=aj.y+Math.round(an.H/2);switch(aj["text-anchor"]){case"start":an.node.style["v-text-align"]="left";an.bbx=Math.round(an.W/2);break;case"end":an.node.style["v-text-align"]="right";an.bbx=-Math.round(an.W/2);break;default:an.node.style["v-text-align"]="center";break;}}};var L=function(e,ac){e.attrs=e.attrs||{};var ad=e.attrs,af=e.node.getElementsByTagName("fill"),aa="linear",ab=".5 .5";e.attrs.gradient=ac;ac=(ac+"").replace(/^r(?:\(([^,]+?)\s*,\s*([^\)]+?)\))?/,function(ah,ai,i){aa="radial";if(ai&&i){ai=parseFloat(ai);i=parseFloat(i);if(Math.pow(ai-0.5,2)+Math.pow(i-0.5,2)>0.25){i=Math.sqrt(0.25-Math.pow(ai-0.5,2))+0.5;}ab=ai+" "+i;}return"";});ac=ac.split(/\s*\-\s*/);if(aa=="linear"){var R=ac.shift();R=-parseFloat(R);if(isNaN(R)){return null;}}var Z=n(ac);if(!Z){return null;}e=e.shape||e.node;af=af[0]||U("fill");if(Z.length){af.on=true;af.method="none";af.type=(aa=="radial")?"gradientradial":"gradient";af.color=Z[0].color;af.color2=Z[Z.length-1].color;var ag=[];for(var Y=0,ae=Z.length;Y<ae;Y++){Z[Y].offset&&ag.push(Z[Y].offset+" "+Z[Y].color);}if(ag.length){af.colors.value=ag.join(",");}else{af.colors&&(af.colors.value="0% "+af.color);}if(aa=="radial"){af.focus="100%";af.focussize=ab;af.focusposition=ab;}else{af.angle=(270-R)%360;}}return 1;};var m=function(Z,ab,e){var aa=0,R=0,i=0,Y=1;this[0]=Z;this.node=Z;Z.raphael=this;this.X=0;this.Y=0;this.attrs={};this.Group=ab;this.paper=e;this._={tx:0,ty:0,rt:{deg:0},sx:1,sy:1};};m.prototype.rotate=function(i,e,R){if(i==null){if(this._.rt.cx){return[this._.rt.deg,this._.rt.cx,this._.rt.cy].join(" ");}return this._.rt.deg;}i=(i+"").split(X);if(i.length-1){e=parseFloat(i[1]);R=parseFloat(i[2]);}i=parseFloat(i[0]);if(e!=null){this._.rt.deg=i;}else{this._.rt.deg+=i;}R==null&&(e=null);this._.rt.cx=e;this._.rt.cy=R;this.setBox(this.attrs,e,R);this.Group.style.rotation=this._.rt.deg;return this;};m.prototype.setBox=function(aa,ab,Z){var R=this.Group.style,ac=(this.shape&&this.shape.style)||this.node.style;aa=aa||{};for(var ad in aa){if(aa.hasOwnProperty(ad)){this.attrs[ad]=aa[ad];}}ab=ab||this._.rt.cx;Z=Z||this._.rt.cy;var ag=this.attrs,aj,ai,ak,af;switch(this.type){case"circle":aj=ag.cx-ag.r;ai=ag.cy-ag.r;ak=af=ag.r*2;break;case"ellipse":aj=ag.cx-ag.rx;ai=ag.cy-ag.ry;ak=ag.rx*2;af=ag.ry*2;break;case"rect":case"image":aj=ag.x;ai=ag.y;ak=ag.width||0;af=ag.height||0;break;case"text":this.textpath.v=["m",Math.round(ag.x),", ",Math.round(ag.y-2),"l",Math.round(ag.x)+1,", ",Math.round(ag.y-2)].join("");aj=ag.x-Math.round(this.W/2);ai=ag.y-this.H/2;ak=this.W;af=this.H;break;case"path":if(!this.attrs.path){aj=0;ai=0;ak=this.paper.width;af=this.paper.height;}else{var ae=B(this.attrs.path);aj=ae.x;ai=ae.y;ak=ae.width;af=ae.height;}break;default:aj=0;ai=0;ak=this.paper.width;af=this.paper.height;break;}ab=(ab==null)?aj+ak/2:ab;Z=(Z==null)?ai+af/2:Z;var Y=ab-this.paper.width/2,ah=Z-this.paper.height/2;if(this.type=="path"||this.type=="text"){(R.left!=Y+"px")&&(R.left=Y+"px");(R.top!=ah+"px")&&(R.top=ah+"px");this.X=this.type=="text"?aj:-Y;this.Y=this.type=="text"?ai:-ah;this.W=ak;this.H=af;(ac.left!=-Y+"px")&&(ac.left=-Y+"px");(ac.top!=-ah+"px")&&(ac.top=-ah+"px");}else{(R.left!=Y+"px")&&(R.left=Y+"px");(R.top!=ah+"px")&&(R.top=ah+"px");this.X=aj;this.Y=ai;this.W=ak;this.H=af;(R.width!=this.paper.width+"px")&&(R.width=this.paper.width+"px");(R.height!=this.paper.height+"px")&&(R.height=this.paper.height+"px");(ac.left!=aj-Y+"px")&&(ac.left=aj-Y+"px");(ac.top!=ai-ah+"px")&&(ac.top=ai-ah+"px");(ac.width!=ak+"px")&&(ac.width=ak+"px");(ac.height!=af+"px")&&(ac.height=af+"px");var al=(+aa.r||0)/(Math.min(ak,af));if(this.type=="rect"&&this.arcsize!=al&&(al||this.arcsize)){var e=U(al?"roundrect":"rect");e.arcsize=al;this.Group.appendChild(e);this.node.parentNode.removeChild(this.node);this.node=e;this.arcsize=al;E(this,this.attrs);this.setBox(this.attrs);}}};m.prototype.hide=function(){this.Group.style.display="none";return this;};m.prototype.show=function(){this.Group.style.display="block";return this;};m.prototype.getBBox=function(){if(this.type=="path"){return B(this.attrs.path);}return{x:this.X+(this.bbx||0),y:this.Y,width:this.W,height:this.H};};m.prototype.remove=function(){this[0].parentNode.removeChild(this[0]);this.Group.parentNode.removeChild(this.Group);this.shape&&this.shape.parentNode.removeChild(this.shape);};m.prototype.attr=function(){if(arguments.length==1&&f.is(arguments[0],"string")){if(arguments[0]=="translation"){return this.translate();}if(arguments[0]=="rotation"){return this.rotate();}if(arguments[0]=="scale"){return this.scale();}return this.attrs[arguments[0]];}if(this.attrs&&arguments.length==1&&f.is(arguments[0],"array")){var e={};for(var R=0,Y=arguments[0].length;R<Y;R++){e[arguments[0][R]]=this.attrs[arguments[0][R]];}return e;}var Z;if(arguments.length==2){Z={};Z[arguments[0]]=arguments[1];}if(arguments.length==1&&f.is(arguments[0],"object")){Z=arguments[0];}if(Z){if(Z.gradient&&(this.type in {circle:1,ellipse:1}||(Z.gradient+"").charAt(0)!="r")){L(this,Z.gradient);}if(Z.text&&this.type=="text"){this.node.string=Z.text;}E(this,Z);this.setBox(this.attrs);}return this;};m.prototype.toFront=function(){this.Group.parentNode.appendChild(this.Group);return this;};m.prototype.toBack=function(){if(this.Group.parentNode.firstChild!=this.Group){this.Group.parentNode.insertBefore(this.Group,this.Group.parentNode.firstChild);}return this;};m.prototype.insertAfter=function(e){if(e.Group.nextSibling){e.Group.parentNode.insertBefore(this.Group,e.Group.nextSibling);}else{e.Group.parentNode.appendChild(this.Group);}return this;};m.prototype.insertBefore=function(e){e.Group.parentNode.insertBefore(this.Group,e.Group);return this;};var C=function(i,ad,ac,e){var Z=U("group"),Y=Z.style,R=U("oval"),ab=R.style;Y.position="absolute";Y.left=0;Y.top=0;Y.width=i.width+"px";Y.height=i.height+"px";Z.coordsize=i.coordsize;Z.coordorigin=i.coordorigin;Z.appendChild(R);var aa=new m(R,Z,i);aa.type="circle";E(aa,{stroke:"#000",fill:"none"});aa.attrs.cx=ad;aa.attrs.cy=ac;aa.attrs.r=e;aa.setBox({x:ad-e,y:ac-e,width:e*2,height:e*2});i.canvas.appendChild(Z);return aa;};var H=function(i,ad,ac,ae,Z,e){var aa=U("group"),Y=aa.style,R=U(e?"roundrect":"rect"),af=(+e||0)/(Math.min(ae,Z));R.arcsize=af;Y.position="absolute";Y.left=0;Y.top=0;Y.width=i.width+"px";Y.height=i.height+"px";aa.coordsize=i.coordsize;aa.coordorigin=i.coordorigin;aa.appendChild(R);var ab=new m(R,aa,i);ab.type="rect";E(ab,{stroke:"#000"});ab.arcsize=af;ab.setBox({x:ad,y:ac,width:ae,height:Z,r:+e});i.canvas.appendChild(aa);return ab;};var h=function(e,ae,ad,R,i){var aa=U("group"),Z=aa.style,Y=U("oval"),ac=Y.style;Z.position="absolute";Z.left=0;Z.top=0;Z.width=e.width+"px";Z.height=e.height+"px";aa.coordsize=e.coordsize;aa.coordorigin=e.coordorigin;aa.appendChild(Y);var ab=new m(Y,aa,e);ab.type="ellipse";E(ab,{stroke:"#000"});ab.attrs.cx=ae;ab.attrs.cy=ad;ab.attrs.rx=R;ab.attrs.ry=i;ab.setBox({x:ae-R,y:ad-i,width:R*2,height:i*2});e.canvas.appendChild(aa);return ab;};var o=function(i,e,ae,ad,af,Z){var aa=U("group"),Y=aa.style,R=U("image"),ac=R.style;Y.position="absolute";Y.left=0;Y.top=0;Y.width=i.width+"px";Y.height=i.height+"px";aa.coordsize=i.coordsize;aa.coordorigin=i.coordorigin;R.src=e;aa.appendChild(R);var ab=new m(R,aa,i);ab.type="image";ab.attrs.src=e;ab.attrs.x=ae;ab.attrs.y=ad;ab.attrs.w=af;ab.attrs.h=Z;ab.setBox({x:ae,y:ad,width:af,height:Z});i.canvas.appendChild(aa);return ab;};var G=function(i,ae,ad,af){var aa=U("group"),Z=aa.style,Y=U("shape"),ac=Y.style,ag=U("path"),e=ag.style,R=U("textpath");Z.position="absolute";Z.left=0;Z.top=0;Z.width=i.width+"px";Z.height=i.height+"px";aa.coordsize=i.coordsize;aa.coordorigin=i.coordorigin;ag.v=["m",Math.round(ae),", ",Math.round(ad),"l",Math.round(ae)+1,", ",Math.round(ad)].join("");ag.textpathok=true;ac.width=i.width;ac.height=i.height;Z.position="absolute";Z.left=0;Z.top=0;Z.width=i.width;Z.height=i.height;R.string=af;R.on=true;Y.appendChild(R);Y.appendChild(ag);aa.appendChild(Y);var ab=new m(R,aa,i);ab.shape=Y;ab.textpath=ag;ab.type="text";ab.attrs.text=af;ab.attrs.x=ae;ab.attrs.y=ad;ab.attrs.w=1;ab.attrs.h=1;E(ab,{font:p.font,stroke:"none",fill:"#000"});ab.setBox();i.canvas.appendChild(aa);return ab;};var D=function(R,e){var i=this.canvas.style;this.width=parseFloat(R||this.width);this.height=parseFloat(e||this.height);i.width=this.width+"px";i.height=this.height+"px";i.clip="rect(0 "+this.width+"px "+this.height+"px 0)";this.coordsize=this.width+" "+this.height;return this;};g.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)");try{!g.namespaces.rvml&&g.namespaces.add("rvml","urn:schemas-microsoft-com:vml");var U=function(e){return g.createElement("<rvml:"+e+' class="rvml">');};}catch(T){var U=function(e){return g.createElement("<"+e+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">');};}var l=function(){var Y=F.apply(null,arguments),i=Y.container,ad=Y.height,ae,R=Y.width,ac=Y.x,ab=Y.y;if(!i){throw new Error("VML container not found.");}var aa=b.canvas=g.createElement("div"),Z=aa.style;R=parseFloat(R)||512;ad=parseFloat(ad)||342;b.width=R;b.height=ad;b.coordsize=R+" "+ad;b.coordorigin="0 0";b.span=g.createElement("span");ae=b.span.style;aa.appendChild(b.span);ae.position="absolute";ae.left="-99999px";ae.top="-99999px";ae.padding=0;ae.margin=0;ae.lineHeight=1;ae.display="inline";Z.width=R+"px";Z.height=ad+"px";Z.position="absolute";Z.clip="rect(0 "+R+"px "+ad+"px 0)";if(i==1){g.body.appendChild(aa);Z.left=ac+"px";Z.top=ab+"px";i={style:{width:R,height:ad}};}else{i.style.width=R;i.style.height=ad;if(i.firstChild){i.insertBefore(aa,i.firstChild);}else{i.appendChild(aa);}}for(var e in b){if(b.hasOwnProperty(e)){i[e]=b[e];}}a.call(i,i,f.fn);i.clear=function(){while(aa.firstChild){aa.removeChild(aa.firstChild);}};i.raphael=f;return i;};b.remove=function(){this.canvas.parentNode.removeChild(this.canvas);};}if({"Apple Computer, Inc.":1,"Google Inc.":1}[navigator.vendor]){b.safari=function(){var e=this.rect(-99,-99,this.width+99,this.height+99);setTimeout(function(){e.remove();});};}else{b.safari=function(){};}var j=(function(){if(g.addEventListener){return function(Z,R,i,e){var Y=function(aa){return i.call(e,aa);};Z.addEventListener(R,Y,false);return function(){Z.removeEventListener(R,Y,false);return true;};};}else{if(g.attachEvent){return function(aa,Y,R,i){var Z=function(ab){return R.call(i,ab||K.event);};aa.attachEvent("on"+Y,Z);var e=function(){aa.detachEvent("on"+Y,Z);return true;};if(Y=="mouseover"){aa.attachEvent("onmouseenter",Z);return function(){aa.detachEvent("onmouseenter",Z);return e();};}else{if(Y=="mouseout"){aa.attachEvent("onmouseleave",Z);return function(){aa.detachEvent("onmouseleave",Z);return e();};}}return e;};}}})();for(var P=u.length;P--;){(function(e){m.prototype[e]=function(i){if(f.is(i,"function")){this.events=this.events||{};this.events[e]=this.events[e]||{};this.events[e][i]=this.events[e][i]||[];this.events[e][i].push(j(this.shape||this.node,e,i,this));}return this;};m.prototype["un"+e]=function(i){this.events&&this.events[e]&&this.events[e][i]&&this.events[e][i].length&&this.events[e][i].shift()()&&!this.events[e][i].length&&delete this.events[e][i];};})(u[P]);}b.circle=function(e,R,i){return C(this,e,R,i);};b.rect=function(e,Z,i,R,Y){return H(this,e,Z,i,R,Y);};b.ellipse=function(e,Y,R,i){return h(this,e,Y,R,i);};b.path=function(e){e&&!f.is(e,"string")&&!f.is(e[0],"array")&&(e+="");return V(f.format.apply(f,arguments),this);};b.image=function(Y,e,Z,i,R){return o(this,Y,e,Z,i,R);};b.text=function(e,R,i){return G(this,e,R,i);};b.set=function(e){arguments.length>1&&(e=Array.prototype.splice.call(arguments,0,arguments.length));return new k(e);};b.setSize=D;m.prototype.stop=function(){clearTimeout(this.animation_in_progress);return this;};m.prototype.scale=function(aj,ai,Y,R){if(aj==null&&ai==null){return{x:this._.sx,y:this._.sy,toString:function(){return this.x+" "+this.y;}};}ai=ai||aj;!+ai&&(ai=aj);var an,al,am,ak,aA=this.attrs;if(aj!=0){var ag=this.getBBox(),ad=ag.x+ag.width/2,aa=ag.y+ag.height/2,az=aj/this._.sx,ay=ai/this._.sy;Y=(+Y||Y==0)?Y:ad;R=(+R||R==0)?R:aa;var af=Math.round(aj/Math.abs(aj)),ac=Math.round(ai/Math.abs(ai)),aq=this.node.style,aC=Y+(ad-Y)*af*az,aB=R+(aa-R)*ac*ay;switch(this.type){case"rect":case"image":var ae=aA.width*af*az,ap=aA.height*ac*ay,ah=aA.r*Math.min(az,ay),ab=aC-ae/2,Z=aB-ap/2;this.attr({width:ae,height:ap,x:ab,y:Z,r:ah});break;case"circle":case"ellipse":this.attr({rx:aA.rx*az,ry:aA.ry*ay,r:aA.r*Math.min(az,ay),cx:aC,cy:aB});break;case"path":var at=c(aA.path),au=true;for(var aw=0,ao=at.length;aw<ao;aw++){var ar=at[aw];if(ar[0].toUpperCase()=="M"&&au){continue;}else{au=false;}if(f.svg&&ar[0].toUpperCase()=="A"){ar[at[aw].length-2]*=az;ar[at[aw].length-1]*=ay;ar[1]*=az;ar[2]*=ay;ar[5]=+(af+ac?!!+ar[5]:!+ar[5]);}else{for(var av=1,ax=ar.length;av<ax;av++){ar[av]*=(av%2)?az:ay;}}}var e=B(at),an=aC-e.x-e.width/2,al=aB-e.y-e.height/2;at[0][1]+=an;at[0][2]+=al;this.attr({path:at});break;}if(this.type in {text:1,image:1}&&(af!=1||ac!=1)){if(this.transformations){this.transformations[2]="scale(".concat(af,",",ac,")");this.node.setAttribute("transform",this.transformations.join(" "));an=(af==-1)?-aA.x-(ae||0):aA.x;al=(ac==-1)?-aA.y-(ap||0):aA.y;this.attr({x:an,y:al});aA.fx=af-1;aA.fy=ac-1;}else{this.node.filterMatrix=" progid:DXImageTransform.Microsoft.Matrix(M11=".concat(af,", M12=0, M21=0, M22=",ac,", Dx=0, Dy=0, sizingmethod='auto expand', filtertype='bilinear')");aq.filter=(this.node.filterMatrix||"")+(this.node.filterOpacity||"");}}else{if(this.transformations){this.transformations[2]="";this.node.setAttribute("transform",this.transformations.join(" "));aA.fx=0;aA.fy=0;}else{this.node.filterMatrix="";aq.filter=(this.node.filterMatrix||"")+(this.node.filterOpacity||"");}}aA.scale=[aj,ai,Y,R].join(" ");this._.sx=aj;this._.sy=ai;}return this;};f.easing_formulas={linear:function(e){return e;},"<":function(e){return Math.pow(e,3);},">":function(e){return Math.pow(e-1,3)+1;},"<>":function(e){e=e*2;if(e<1){return Math.pow(e,3)/2;}e-=2;return(Math.pow(e,3)+2)/2;},backIn:function(i){var e=1.70158;return i*i*((e+1)*i-e);},backOut:function(i){i=i-1;var e=1.70158;return i*i*((e+1)*i+e)+1;},elastic:function(R){if(R==0||R==1){return R;}var i=0.3,e=i/4;return Math.pow(2,-10*R)*Math.sin((R-e)*(2*Math.PI)/i)+1;},bounce:function(Y){var i=7.5625,R=2.75,e;if(Y<(1/R)){e=i*Y*Y;}else{if(Y<(2/R)){Y-=(1.5/R);e=i*Y*Y+0.75;}else{if(Y<(2.5/R)){Y-=(2.25/R);e=i*Y*Y+0.9375;}else{Y-=(2.625/R);e=i*Y*Y+0.984375;}}}return e;}};m.prototype.animate=function(ar,ai,ah,Z){clearTimeout(this.animation_in_progress);if(f.is(ah,"function")||!ah){Z=ah||null;}var al={},R={},af={},ae={x:0,y:0};for(var aj in ar){if(ar.hasOwnProperty(aj)){if(aj in t){al[aj]=this.attr(aj);(al[aj]==null)&&(al[aj]=p[aj]);R[aj]=ar[aj];switch(t[aj]){case"number":af[aj]=(R[aj]-al[aj])/ai;break;case"colour":al[aj]=f.getRGB(al[aj]);var ak=f.getRGB(R[aj]);af[aj]={r:(ak.r-al[aj].r)/ai,g:(ak.g-al[aj].g)/ai,b:(ak.b-al[aj].b)/ai};break;case"path":var aa=N(al[aj],R[aj]);al[aj]=aa[0];R[aj]=aa[1];af[aj]=[];for(var an=0,ad=al[aj].length;an<ad;an++){af[aj][an]=[0];for(var am=1,ap=al[aj][an].length;am<ap;am++){af[aj][an][am]=(R[aj][an][am]-al[aj][an][am])/ai;}}break;case"csv":var e=(ar[aj]+"").split(X),ac=(al[aj]+"").split(X);switch(aj){case"translation":al[aj]=[0,0];af[aj]=[e[0]/ai,e[1]/ai];break;case"rotation":al[aj]=(ac[1]==e[1]&&ac[2]==e[2])?ac:[0,e[1],e[2]];af[aj]=[(e[0]-al[aj][0])/ai,0,0];break;case"scale":ar[aj]=e;al[aj]=(al[aj]+"").split(X);af[aj]=[(e[0]-al[aj][0])/ai,(e[1]-al[aj][1])/ai,0,0];break;case"clip-rect":al[aj]=(al[aj]+"").split(X);af[aj]=[];var an=4;while(an--){af[aj][an]=(e[an]-al[aj][an])/ai;}break;}R[aj]=e;}}}}var Y=+new Date,ag=0,aq=function(i){return +i>255?255:+i;},ab=this;(function ao(){var au=new Date-Y,aC={},at;if(au<ai){var aA=f.easing_formulas[ah]?f.easing_formulas[ah](au/ai):au/ai;for(var ay in al){if(al.hasOwnProperty(ay)){switch(t[ay]){case"number":at=+al[ay]+aA*ai*af[ay];break;case"colour":at="rgb("+[aq(Math.round(al[ay].r+aA*ai*af[ay].r)),aq(Math.round(al[ay].g+aA*ai*af[ay].g)),aq(Math.round(al[ay].b+aA*ai*af[ay].b))].join(",")+")";break;case"path":at=[];for(var aw=0,aD=al[ay].length;aw<aD;aw++){at[aw]=[al[ay][aw][0]];for(var av=1,ax=al[ay][aw].length;av<ax;av++){at[aw][av]=+al[ay][aw][av]+aA*ai*af[ay][aw][av];}at[aw]=at[aw].join(" ");}at=at.join(" ");break;case"csv":switch(ay){case"translation":var aB=af[ay][0]*(au-ag),az=af[ay][1]*(au-ag);ae.x+=aB;ae.y+=az;at=[aB,az].join(" ");break;case"rotation":at=+al[ay][0]+aA*ai*af[ay][0];al[ay][1]&&(at+=","+al[ay][1]+","+al[ay][2]);break;case"scale":at=[+al[ay][0]+aA*ai*af[ay][0],+al[ay][1]+aA*ai*af[ay][1],(2 in ar[ay]?ar[ay][2]:""),(3 in ar[ay]?ar[ay][3]:"")].join(" ");break;case"clip-rect":at=[];var aw=4;while(aw--){at[aw]=+al[ay][aw]+aA*ai*af[ay][aw];}break;}break;}aC[ay]=at;}}ab.attr(aC);ab.animation_in_progress=setTimeout(ao);f.svg&&b.safari();}else{(ae.x||ae.y)&&ab.translate(-ae.x,-ae.y);ab.attr(ar);clearTimeout(ab.animation_in_progress);f.svg&&b.safari();(f.is(Z,"function"))&&Z.call(ab);}ag=au;})();return this;};m.prototype.translate=function(e,R){if(e==null){return{x:this._.tx,y:this._.ty};}this._.tx+=+e;this._.ty+=+R;switch(this.type){case"circle":case"ellipse":this.attr({cx:+e+this.attrs.cx,cy:+R+this.attrs.cy});break;case"rect":case"image":case"text":this.attr({x:+e+this.attrs.x,y:+R+this.attrs.y});break;case"path":var i=c(this.attrs.path);i[0][1]+=+e;i[0][2]+=+R;this.attr({path:i});break;}return this;};m.prototype.toString=function(){return"Rapha\u00ebl\u2019s object";};var k=function(e){this.items=[];this.length=0;if(e){for(var R=0,Y=e.length;R<Y;R++){if(e[R]&&(e[R].constructor==m||e[R].constructor==k)){this[this.items.length]=this.items[this.items.length]=e[R];this.length++;}}}};k.prototype.push=function(){var Z,e;for(var R=0,Y=arguments.length;R<Y;R++){Z=arguments[R];if(Z&&(Z.constructor==m||Z.constructor==k)){e=this.items.length;this[e]=this.items[e]=Z;this.length++;}}return this;};k.prototype.pop=function(){delete this[this.length--];return this.items.pop();};for(var Q in m.prototype){if(m.prototype.hasOwnProperty(Q)){k.prototype[Q]=(function(e){return function(){for(var R=0,Y=this.items.length;R<Y;R++){this.items[R][e].apply(this.items[R],arguments);}return this;};})(Q);}}k.prototype.attr=function(R,ab){if(R&&f.is(R,"array")&&f.is(R[0],"object")){for(var e=0,aa=R.length;e<aa;e++){this.items[e].attr(R[e]);}}else{for(var Y=0,Z=this.items.length;Y<Z;Y++){this.items[Y].attr.apply(this.items[Y],arguments);}}return this;};k.prototype.getBBox=function(){var e=[],ab=[],R=[],Z=[];for(var Y=this.items.length;Y--;){var aa=this.items[Y].getBBox();e.push(aa.x);ab.push(aa.y);R.push(aa.x+aa.width);Z.push(aa.y+aa.height);}e=Math.min.apply(Math,e);ab=Math.min.apply(Math,ab);return{x:e,y:ab,width:Math.max.apply(Math,R)-e,height:Math.max.apply(Math,Z)-ab};};f.registerFont=function(i){if(!i.face){return i;}this.fonts=this.fonts||{};var Y={w:i.w,face:{},glyphs:{}},R=i.face["font-family"];for(var ab in i.face){if(i.face.hasOwnProperty(ab)){Y.face[ab]=i.face[ab];}}if(this.fonts[R]){this.fonts[R].push(Y);}else{this.fonts[R]=[Y];}if(!i.svg){Y.face["units-per-em"]=parseInt(i.face["units-per-em"],10);for(var Z in i.glyphs){if(i.glyphs.hasOwnProperty(Z)){var aa=i.glyphs[Z];Y.glyphs[Z]={w:aa.w,k:{},d:aa.d&&"M"+aa.d.replace(/[mlcxtrv]/g,function(ac){return{l:"L",c:"C",x:"z",t:"m",r:"l",v:"c"}[ac]||"M";})+"z"};if(aa.k){for(var e in aa.k){if(aa.hasOwnProperty(e)){Y.glyphs[Z].k[e]=aa.k[e];}}}}}}return i;};b.getFont=function(ad,ae,R,Z){Z=Z||"normal";R=R||"normal";ae=+ae||{normal:400,bold:700,lighter:300,bolder:800}[ae]||400;var aa=f.fonts[ad];if(!aa){var Y=new RegExp("(^|\\s)"+ad.replace(/[^\w\d\s+!~.:_-]/g,"")+"(\\s|$)","i");for(var e in f.fonts){if(f.fonts.hasOwnProperty(e)){if(Y.test(e)){aa=f.fonts[e];break;}}}}var ab;if(aa){for(var ac=0,af=aa.length;ac<af;ac++){ab=aa[ac];if(ab.face["font-weight"]==ae&&(ab.face["font-style"]==R||!ab.face["font-style"])&&ab.face["font-stretch"]==Z){break;}}}return ab;};b.print=function(af,ae,ac,R,aj){var aa=this.set(),ad=(ac+"").split(""),e=0,ai="",Z;f.is(R,"string")&&(R=this.getFont(R));if(R){Z=(aj||16)/R.face["units-per-em"];for(var ab=0,ag=ad.length;ab<ag;ab++){var Y=ab&&R.glyphs[ad[ab-1]]||{},ah=R.glyphs[ad[ab]];e+=ab?(Y.w||R.w)+(Y.k&&Y.k[ad[ab]]||0):0;ah&&ah.d&&aa.push(this.path(ah.d).attr({fill:"#000",stroke:"none",translation:[e,0]}));}aa.scale(Z,Z,0,ae).translate(af,(aj||16)/2);}return aa;};f.format=function(i){var e=f.is(arguments[1],"array")?[0].concat(arguments[1]):arguments;i&&f.is(i,"string")&&e.length-1&&(i=i.replace(/\{(\d+)\}/g,function(Y,R){return e[++R]==null?"":e[R];}));return i;};f.ninja=function(){var R=window.Raphael,i;if(O.was){window.Raphael=O.is;}else{try{delete window.Raphael;}catch(Y){window.Raphael=i;}}return R;};f.el=m.prototype;return f;})();
\ No newline at end of file
index 050a70e..637e170 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Raphael 1.0 RC1.4 - JavaScript Vector Library
+ * Raphael 1.0 RC1.5 - JavaScript Vector Library
  *
  * Copyright (c) 2008 - 2009 Dmitry Baranovskiy (http://raphaeljs.com)
  * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license.
@@ -21,14 +21,14 @@ window.Raphael = (function () {
         availableAttrs = {"clip-rect": "0 0 10e9 10e9", cx: 0, cy: 0, fill: "#fff", "fill-opacity": 1, font: '10px "Arial"', "font-family": '"Arial"', "font-size": "10", "font-style": "normal", "font-weight": 400, gradient: 0, height: 0, href: "http://raphaeljs.com/", opacity: 1, path: "M0,0", r: 0, rotation: 0, rx: 0, ry: 0, scale: "1 1", src: "", stroke: "#000", "stroke-dasharray": "", "stroke-linecap": "butt", "stroke-linejoin": "butt", "stroke-miterlimit": 0, "stroke-opacity": 1, "stroke-width": 1, target: "_blank", "text-anchor": "middle", title: "Raphael", translation: "0 0", width: 0, x: 0, y: 0},
         availableAnimAttrs = {"clip-rect": "csv", cx: "number", cy: "number", fill: "colour", "fill-opacity": "number", "font-size": "number", height: "number", opacity: "number", path: "path", r: "number", rotation: "csv", rx: "number", ry: "number", scale: "csv", stroke: "colour", "stroke-opacity": "number", "stroke-width": "number", translation: "csv", width: "number", x: "number", y: "number"},
         events = ["click", "dblclick", "mousedown", "mousemove", "mouseout", "mouseover", "mouseup"];
-    R.version = "1.0 RC1.4";
+    R.version = "1.0 RC1.5";
     R.type = (window.SVGAngle || document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1") ? "SVG" : "VML");
     R.svg = !(R.vml = R.type == "VML");
     R.idGenerator = 0;
     R.fn = {};
     R.is = function (o, type) {
         type = (type + "").toLowerCase();
-        if (type == "undefined" && typeof o == "undefined") {
+        if ((type == "object" || type == "undefined") && typeof o == type) {
             return true;
         }
         if (o == null && type == "null") {
@@ -164,7 +164,7 @@ window.Raphael = (function () {
         var htmlcolors = {aliceblue: "#f0f8ff", amethyst: "#96c", antiquewhite: "#faebd7", aqua: "#0ff", aquamarine: "#7fffd4", azure: "#f0ffff", beige: "#f5f5dc", bisque: "#ffe4c4", black: "#000", blanchedalmond: "#ffebcd", blue: "#00f", blueviolet: "#8a2be2", brown: "#a52a2a", burlywood: "#deb887", cadetblue: "#5f9ea0", chartreuse: "#7fff00", chocolate: "#d2691e", coral: "#ff7f50", cornflowerblue: "#6495ed", cornsilk: "#fff8dc", crimson: "#dc143c", cyan: "#0ff", 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", firebrick: "#b22222", floralwhite: "#fffaf0", forestgreen: "#228b22", fuchsia: "#f0f", 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", lightgreen: "#90ee90", lightgrey: "#d3d3d3", lightpink: "#ffb6c1", lightsalmon: "#ffa07a", lightsalmon: "#ffa07a", lightseagreen: "#20b2aa", lightskyblue: "#87cefa", lightslategray: "#789", lightsteelblue: "#b0c4de", lightyellow: "#ffffe0", lime: "#0f0", limegreen: "#32cd32", linen: "#faf0e6", magenta: "#f0f", maroon: "#800000", mediumaquamarine: "#66cdaa", mediumblue: "#0000cd", mediumorchid: "#ba55d3", mediumpurple: "#9370db", mediumseagreen: "#3cb371", mediumslateblue: "#7b68ee", 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: "#db7093", papayawhip: "#ffefd5", peachpuff: "#ffdab9", peru: "#cd853f", pink: "#ffc0cb", plum: "#dda0dd", powderblue: "#b0e0e6", purple: "#800080", red: "#f00", 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", wheat: "#f5deb3", white: "#fff", whitesmoke: "#f5f5f5", yellow: "#ff0", yellowgreen: "#9acd32"},
         res;
         if ((colour + "").toLowerCase() in htmlcolors) {
-            colour = htmlcolors[colour.toString().toLowerCase()];
+            colour = htmlcolors[(colour + "").toLowerCase()];
         }
         if (!colour) {
             return {r: 0, g: 0, b: 0, hex: "#000"};
@@ -223,7 +223,7 @@ window.Raphael = (function () {
             rgb.hex = "#" + r + g + b;
             res = rgb;
         } else {
-            res = {r: -1, g: -1, b: -1, hex: "none"};
+            res = {r: -1, g: -1, b: -1, hex: "none", error: 1};
         }
         return res;
     }, R);
@@ -464,11 +464,13 @@ window.Raphael = (function () {
             return [x1, y1, x2, y2, x2, y2];
         },
         q2c = function (x1, y1, ax, ay, x2, y2) {
+            var _13 = 1 / 3,
+                _23 = 2 / 3;
             return [
-                    2 / 3 * x1 + 1 / 3 * ax,
-                    2 / 3 * y1 + 1 / 3 * ay,
-                    2 / 3 * x1 + 1 / 3 * x2,
-                    2 / 3 * y1 + 1 / 3 * y2,
+                    _13 * x1 + _23 * ax,
+                    _13 * y1 + _23 * ay,
+                    _13 * x2 + _23 * ax,
+                    _13 * y2 + _23 * ay,
                     x2,
                     y2
                 ];
@@ -600,13 +602,14 @@ window.Raphael = (function () {
         path2curve = cacher(function (path, path2) {
             var p = pathToAbsolute(path),
                 p2 = path2 && pathToAbsolute(path2),
-                attrs = {x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0},
-                attrs2 = {x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0},
+                attrs = {x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0, qx: null, qy: null},
+                attrs2 = {x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0, qx: null, qy: null},
                 processPath = function (path, d) {
                     var nx, ny;
                     if (!path) {
                         return ["C", d.x, d.y, d.x, d.y, d.x, d.y];
                     }
+                    !(path[0] in {T:1, Q:1}) && (d.qx = d.qy = null);
                     switch (path[0]) {
                         case "M":
                             d.X = path[1];
@@ -621,11 +624,13 @@ window.Raphael = (function () {
                             path = ["C", nx, ny].concat(path.slice(1));
                             break;
                         case "T":
-                            nx = d.x + (d.x - (d.bx || d.x));
-                            ny = d.y + (d.y - (d.by || d.y));
-                            path = ["C"].concat(q2c(d.x, d.y, nx, ny, path[1], path[2]));
+                            d.qx = d.x + (d.x - (d.qx || d.x));
+                            d.qy = d.y + (d.y - (d.qy || d.y));
+                            path = ["C"].concat(q2c(d.x, d.y, d.qx, d.qy, path[1], path[2]));
                             break;
                         case "Q":
+                            d.qx = path[1];
+                            d.qy = path[2];
                             path = ["C"].concat(q2c(d.x, d.y, path[1], path[2], path[3], path[4]));
                             break;
                         case "L":
@@ -675,78 +680,53 @@ window.Raphael = (function () {
                     seg2 = p2 && p2[i],
                     seglen = seg.length,
                     seg2len = p2 && seg2.length;
-                attrs.bx = seg[seglen - 4] || 0;
-                attrs.by = seg[seglen - 3] || 0;
                 attrs.x = seg[seglen - 2];
                 attrs.y = seg[seglen - 1];
-                attrs2.bx = p2 && (seg2[seg2len - 4] || 0);
-                attrs2.by = p2 && (seg2[seg2len - 3] || 0);
+                attrs.bx = parseFloat(seg[seglen - 4]) || attrs.x;
+                attrs.by = parseFloat(seg[seglen - 3]) || attrs.y;
+                attrs2.bx = p2 && (parseFloat(seg2[seg2len - 4]) || attrs2.x);
+                attrs2.by = p2 && (parseFloat(seg2[seg2len - 3]) || attrs2.y);
                 attrs2.x = p2 && seg2[seg2len - 2];
                 attrs2.y = p2 && seg2[seg2len - 1];
             }
             return p2 ? [p, p2] : p;
         }, null, pathClone),
-        toGradient = cacher(function (gradient) {
-            if (R.is(gradient, "string")) {
-                gradient = gradient.split(/\s*\-\s*/);
-                var angle = gradient.shift();
-                if (angle.toLowerCase() == "v") {
-                    angle = 90;
-                } else if (angle.toLowerCase() == "h") {
-                    angle = 0;
-                } else {
-                    angle = parseFloat(angle);
-                }
-                angle = -angle;
-                var grobj = {angle: angle, type: "linear", dots: [], vector: [0, 0, Math.cos(angle * Math.PI / 180).toFixed(3), Math.sin(angle * Math.PI / 180).toFixed(3)]},
-                    max = 1 / (Math.max(Math.abs(grobj.vector[2]), Math.abs(grobj.vector[3])) || 1);
-                grobj.vector[2] *= max;
-                grobj.vector[3] *= max;
-                if (grobj.vector[2] < 0) {
-                    grobj.vector[0] = -grobj.vector[2];
-                    grobj.vector[2] = 0;
-                }
-                if (grobj.vector[3] < 0) {
-                    grobj.vector[1] = -grobj.vector[3];
-                    grobj.vector[3] = 0;
-                }
-                grobj.vector[0] = grobj.vector[0];
-                grobj.vector[1] = grobj.vector[1];
-                grobj.vector[2] = grobj.vector[2];
-                grobj.vector[3] = grobj.vector[3];
-                for (var i = 0, ii = gradient.length; i < ii; i++) {
-                    var dot = {},
-                        par = gradient[i].match(/^([^:]*):?([\d\.]*)/);
-                    dot.color = R.getRGB(par[1]).hex;
-                    par[2] && (dot.offset = par[2] + "%");
-                    grobj.dots.push(dot);
-                }
-                for (var i = 1, ii = grobj.dots.length - 1; i < ii; i++) {
-                    if (!grobj.dots[i].offset) {
-                        var start = parseFloat(grobj.dots[i - 1].offset || 0),
-                            end = false;
-                        for (var j = i + 1; j < ii; j++) {
-                            if (grobj.dots[j].offset) {
-                                end = grobj.dots[j].offset;
-                                break;
-                            }
-                        }
-                        if (!end) {
-                            end = 100;
-                            j = ii;
-                        }
-                        end = parseFloat(end);
-                        var d = (end - start) / (j - i + 1);
-                        for (; i < j; i++) {
-                            start += d;
-                            grobj.dots[i].offset = start + "%";
+        parseDots = cacher(function (gradient) {
+            var dots = [];
+            for (var i = 0, ii = gradient.length; i < ii; i++) {
+                var dot = {},
+                    par = gradient[i].match(/^([^:]*):?([\d\.]*)/);
+                dot.color = R.getRGB(par[1]);
+                if (dot.color.error) {
+                    return null;
+                }
+                dot.color = dot.color.hex;
+                par[2] && (dot.offset = par[2] + "%");
+                dots.push(dot);
+            }
+            for (var i = 1, ii = dots.length - 1; i < ii; i++) {
+                if (!dots[i].offset) {
+                    var start = parseFloat(dots[i - 1].offset || 0),
+                        end = false;
+                    for (var j = i + 1; j < ii; j++) {
+                        if (dots[j].offset) {
+                            end = dots[j].offset;
+                            break;
                         }
                     }
+                    if (!end) {
+                        end = 100;
+                        j = ii;
+                    }
+                    end = parseFloat(end);
+                    var d = (end - start) / (j - i + 1);
+                    for (; i < j; i++) {
+                        start += d;
+                        dots[i].offset = start + "%";
+                    }
                 }
-                return grobj;
-            } else {
-                return gradient;
             }
+            return dots;
         }),
         getContainer = function () {
             var container,
@@ -836,42 +816,65 @@ window.Raphael = (function () {
             return p;
         };
         var addGradientFill = function (o, gradient, SVG) {
-            gradient = toGradient(gradient);
-            var el = $((gradient.type || "linear") + "Gradient");
-            el.id = "r" + (R.idGenerator++).toString(36);
-            if (gradient.vector && gradient.vector.length) {
-                $(el, {
-                    x1: gradient.vector[0],
-                    y1: gradient.vector[1],
-                    x2: gradient.vector[2],
-                    y2: gradient.vector[3]
-                });
+            var type = "linear",
+                fx = .5, fy = .5,
+                s = o.style;
+            gradient = (gradient + "").replace(/^r(?:\(([^,]+?)\s*,\s*([^\)]+?)\))?/, function (all, _fx, _fy) {
+                type = "radial";
+                if (_fx && _fy) {
+                    fx = parseFloat(_fx);
+                    fy = parseFloat(_fy);
+                    if (Math.pow(fx - .5, 2) + Math.pow(fy - .5, 2) > .25) {
+                        fy = Math.sqrt(.25 - Math.pow(fx - .5, 2)) + .5;
+                    }
+                }
+                return "";
+            });
+            gradient = gradient.split(/\s*\-\s*/);
+            if (type == "linear") {
+                var angle = gradient.shift();
+                angle = -parseFloat(angle);
+                if (isNaN(angle)) {
+                    return null;
+                }
+                var vector = [0, 0, Math.cos(angle * Math.PI / 180), Math.sin(angle * Math.PI / 180)],
+                    max = 1 / (Math.max(Math.abs(vector[2]), Math.abs(vector[3])) || 1);
+                vector[2] *= max;
+                vector[3] *= max;
+                if (vector[2] < 0) {
+                    vector[0] = -vector[2];
+                    vector[2] = 0;
+                }
+                if (vector[3] < 0) {
+                    vector[1] = -vector[3];
+                    vector[3] = 0;
+                }
+            }
+            var dots = parseDots(gradient);
+            if (!dots) {
+                return null;
             }
+            var el = $(type + "Gradient");
+            el.id = "r" + (R.idGenerator++).toString(36);
+            type == "radial" ? $(el, {fx: fx, fy: fy}) : $(el, {x1: vector[0], y1: vector[1], x2: vector[2], y2: vector[3]});
             SVG.defs.appendChild(el);
-            var isopacity = true;
-            for (var i = 0, ii = gradient.dots.length; i < ii; i++) {
+            for (var i = 0, ii = dots.length; i < ii; i++) {
                 var stop = $("stop");
-                if (gradient.dots[i].offset) {
-                    isopacity = false;
-                }
                 $(stop, {
-                    offset: gradient.dots[i].offset ? gradient.dots[i].offset : (i == 0) ? "0%" : "100%",
-                    "stop-color": R.getRGB(gradient.dots[i].color).hex || "#fff"
+                    offset: dots[i].offset ? dots[i].offset : !i ? "0%" : "100%",
+                    "stop-color": dots[i].color || "#fff"
                 });
-                // ignoring opacity for internal points, because VML doesn't support it
                 el.appendChild(stop);
             };
-            if (isopacity && gradient.dots[ii - 1].opacity != null) {
-                $(stop, {"stop-opacity": gradient.dots[ii - 1].opacity});
-            }
             $(o, {
                 fill: "url(#" + el.id + ")",
                 opacity: 1,
                 "fill-opacity": 1
             });
-            o.style.fill = "";
-            o.style.opacity = 1;
-            o.style.fillOpacity = 1;
+            s.fill = "";
+            s.opacity = 1;
+            s.fillOpacity = 1;
+            return 1;
         };
         var updatePosition = function (o) {
             var bbox = o.getBBox();
@@ -959,6 +962,7 @@ window.Raphael = (function () {
                             attrs.path = roundPath(pathToAbsolute(value));
                             $(node, {d: attrs.path});
                         }
+                        break;
                     case "width":
                         node.setAttribute(att, value);
                         if (attrs.fx) {
@@ -1064,17 +1068,23 @@ window.Raphael = (function () {
                             o.pattern && updatePosition(o);
                             break;
                         }
-                        delete params.gradient;
-                        delete attrs.gradient;
-                        if (!R.is(attrs.opacity, "undefined") && R.is(params.opacity, "undefined") ) {
-                            node.style.opacity = attrs.opacity;
-                            // Need following line for Firefox
-                            $(node, {opacity: attrs.opacity});
-                        }
-                        if (!R.is(attrs["fill-opacity"], "undefined") && R.is(params["fill-opacity"], "undefined") ) {
-                            node.style.fillOpacity = attrs["fill-opacity"];
-                            // Need following line for Firefox
-                            $(node, {"fill-opacity": attrs["fill-opacity"]});
+                        if (!R.getRGB(value).error) {
+                            delete params.gradient;
+                            delete attrs.gradient;
+                            if (!R.is(attrs.opacity, "undefined") && R.is(params.opacity, "undefined") ) {
+                                node.style.opacity = attrs.opacity;
+                                // Need following line for Firefox
+                                $(node, {opacity: attrs.opacity});
+                            }
+                            if (!R.is(attrs["fill-opacity"], "undefined") && R.is(params["fill-opacity"], "undefined") ) {
+                                node.style.fillOpacity = attrs["fill-opacity"];
+                                // Need following line for Firefox
+                                $(node, {"fill-opacity": attrs["fill-opacity"]});
+                            }
+                        } else if ((o.type in {circle: 1, ellipse: 1} || (value + "").charAt(0) != "r") && addGradientFill(node, value, o.paper)) {
+                            attrs.gradient = value;
+                            attrs.fill = "none";
+                            break;
                         }
                     case "stroke":
                         node.style[att] = R.getRGB(value).hex;
@@ -1082,7 +1092,7 @@ window.Raphael = (function () {
                         node.setAttribute(att, R.getRGB(value).hex);
                         break;
                     case "gradient":
-                        addGradientFill(node, value, o.paper);
+                        (o.type in {circle: 1, ellipse: 1} || (value + "").charAt(0) != "r") && addGradientFill(node, value, o.paper);
                         break;
                     case "opacity":
                     case "fill-opacity":
@@ -1145,6 +1155,7 @@ window.Raphael = (function () {
                 Y = 0;
             this[0] = node;
             this.node = node;
+            node.raphael = this;
             this.paper = svg;
             this.attrs = this.attrs || {};
             this.transformations = []; // rotate, translate, scale
@@ -1280,25 +1291,6 @@ window.Raphael = (function () {
             node.parentNode.insertBefore(this.node, node);
             return this;
         };
-        Element.prototype.blur = function (size) {
-            // Experimental. No WebKit support.
-            if (size != "none") {
-                var fltr = $("filter"),
-                    blur = $("feGaussianBlur");
-                fltr.id = "r" + (R.idGenerator++).toString(36);
-                $(blur, {stdDeviation: +size || 1.5});
-                fltr.appendChild(blur);
-                this.paper.defs.appendChild(fltr);
-                this._blur = fltr;
-                $(this.node, {filter: "url(#" + fltr.id + ")"});
-            } else {
-                if (this._blur) {
-                    this._blur.parentNode.removeChild(this._blur);
-                    delete this._blur;
-                }
-                this.node.removeAttribute("filter");
-            }
-        };
         
         var theCircle = function (svg, x, y, r) {
             x = round(x);
@@ -1362,7 +1354,7 @@ window.Raphael = (function () {
         };
         var create = function () {
             var con = getContainer.apply(null, arguments),
-                container = con.container,
+                container = con && con.container,
                 x = con.x,
                 y = con.y,
                 width = con.width,
@@ -1415,14 +1407,6 @@ window.Raphael = (function () {
         paper.remove = function () {
             this.canvas.parentNode && this.canvas.parentNode.removeChild(this.canvas);
         };
-        if ({"Apple Computer, Inc.": 1, "Google Inc.": 1}[navigator.vendor]) { // Safari or Chrome (WebKit)
-            paper.safari = function () {
-                var rect = this.rect(-99, -99, this.width + 99, this.height + 99);
-                setTimeout(function () {rect.remove();});
-            };
-        } else {
-            paper.safari = function () {};
-        }
     }
 
     // VML
@@ -1461,7 +1445,6 @@ window.Raphael = (function () {
             p.isAbsolute = true;
             p.type = "path";
             p.path = [];
-            // p.last = {x: 0, y: 0, bx: 0, by: 0, isAbsolute: true};
             p.Path = "";
             if (pathString) {
                 p.attrs.path = R.parsePathString(pathString);
@@ -1508,7 +1491,7 @@ window.Raphael = (function () {
                     var div = node.clipRect || doc.createElement("div"),
                         dstyle = div.style,
                         group = node.parentNode;
-                    dstyle.clip = R.format("rect({0}px {2}px {3}px {1}px)", rect);
+                    dstyle.clip = R.format("rect({1}px {2}px {3}px {0}px)", rect);
                     if (!node.clipRect) {
                         dstyle.position = "absolute";
                         dstyle.top = 0;
@@ -1570,6 +1553,10 @@ window.Raphael = (function () {
                         fill.color = R.getRGB(params.fill).hex;
                         fill.src = "";
                         fill.type = "solid";
+                        if (R.getRGB(params.fill).error && (res.type in {circle: 1, ellipse: 1} || (params.fill + "").charAt(0) != "r") && addGradientFill(res, params.fill)) {
+                            a.fill = "none";
+                            a.gradient = params.fill;
+                        }
                     }
                 }
                 newfill && node.appendChild(fill);
@@ -1619,7 +1606,7 @@ window.Raphael = (function () {
                 a["font-size"] && (s.fontSize = a["font-size"]);
                 a["font-weight"] && (s.fontWeight = a["font-weight"]);
                 a["font-style"] && (s.fontStyle = a["font-style"]);
-                paper.span.innerHTML = res.node.string.replace(/</g, "&#60;").replace(/&/g, "&#38;").replace(/\n/g, "<br>");
+                res.node.string && (paper.span.innerHTML = res.node.string.replace(/</g, "&#60;").replace(/&/g, "&#38;").replace(/\n/g, "<br>"));
                 res.W = a.w = paper.span.offsetWidth;
                 res.H = a.h = paper.span.offsetHeight;
                 res.X = a.x;
@@ -1641,63 +1628,63 @@ window.Raphael = (function () {
                 }
             }
         };
-        var getAngle = function (a, b, c, d) {
-            var angle = Math.round(Math.atan((parseFloat(c) - parseFloat(a)) / (parseFloat(d) - parseFloat(b))) * 57.29) || 0;
-            if (!angle && parseFloat(a) < parseFloat(b)) {
-                angle = 180;
-            }
-            angle -= 180;
-            if (angle < 0) {
-                angle += 360;
-            }
-            return angle;
-        };
         var addGradientFill = function (o, gradient) {
-            gradient = toGradient(gradient);
             o.attrs = o.attrs || {};
             var attrs = o.attrs,
-                fill = o.node.getElementsByTagName("fill");
+                fill = o.node.getElementsByTagName("fill"),
+                type = "linear",
+                fxfy = ".5 .5";
             o.attrs.gradient = gradient;
-            o = o.shape || o.node;
-            if (fill.length) {
-                fill = fill[0];
-            } else {
-                fill = createNode("fill");
+            gradient = (gradient + "").replace(/^r(?:\(([^,]+?)\s*,\s*([^\)]+?)\))?/, function (all, fx, fy) {
+                type = "radial";
+                if (fx && fy) {
+                    fx = parseFloat(fx);
+                    fy = parseFloat(fy);
+                    if (Math.pow(fx - .5, 2) + Math.pow(fy - .5, 2) > .25) {
+                        fy = Math.sqrt(.25 - Math.pow(fx - .5, 2)) + .5;
+                    }
+                    fxfy = fx + " " + fy;
+                }
+                return "";
+            });
+            gradient = gradient.split(/\s*\-\s*/);
+            if (type == "linear") {
+                var angle = gradient.shift();
+                angle = -parseFloat(angle);
+                if (isNaN(angle)) {
+                    return null;
+                }
             }
-            if (gradient.dots.length) {
+            var dots = parseDots(gradient);
+            if (!dots) {
+                return null;
+            }
+            o = o.shape || o.node;
+            fill = fill[0] || createNode("fill");
+            if (dots.length) {
                 fill.on = true;
                 fill.method = "none";
-                fill.type = ((gradient.type + "").toLowerCase() == "radial") ? "gradientTitle" : "gradient";
-                if (!R.is(gradient.dots[0].color, "undefined")) {
-                    fill.color = R.getRGB(gradient.dots[0].color).hex;
-                }
-                if (!R.is(gradient.dots[gradient.dots.length - 1].color, "undefined")) {
-                    fill.color2 = R.getRGB(gradient.dots[gradient.dots.length - 1].color).hex;
-                }
+                fill.type = (type == "radial") ? "gradientradial" : "gradient";
+                fill.color = dots[0].color;
+                fill.color2 = dots[dots.length - 1].color;
                 var clrs = [];
-                for (var i = 0, ii = gradient.dots.length; i < ii; i++) {
-                    if (gradient.dots[i].offset) {
-                        clrs.push(gradient.dots[i].offset + " " + R.getRGB(gradient.dots[i].color).hex);
-                    }
-                };
-                var fillOpacity = R.is(gradient.dots[gradient.dots.length - 1].opacity, "undefined") ? (R.is(attrs.opacity, "undefined") ? 1 : attrs.opacity) : gradient.dots[gradient.dots.length - 1].opacity;
+                for (var i = 0, ii = dots.length; i < ii; i++) {
+                    dots[i].offset && clrs.push(dots[i].offset + " " + dots[i].color);
+                }
                 if (clrs.length) {
                     fill.colors.value = clrs.join(",");
-                    fillOpacity = R.is(attrs.opacity, "undefined") ? 1 : attrs.opacity;
                 } else {
                     fill.colors && (fill.colors.value = "0% " + fill.color);
                 }
-                fill.opacity = fillOpacity;
-                if (!R.is(gradient.angle, "undefined")) {
-                    fill.angle = (-gradient.angle + 270) % 360;
-                } else if (gradient.vector) {
-                    fill.angle = getAngle.apply(null, gradient.vector);
-                }
-                if ((gradient.type + "").toLowerCase() == "radial") {
+                if (type == "radial") {
                     fill.focus = "100%";
-                    fill.focusposition = "0.5 0.5";
+                    fill.focussize = fxfy;
+                    fill.focusposition = fxfy;
+                } else {
+                    fill.angle = (270 - angle) % 360;
                 }
             }
+            return 1;
         };
         var Element = function (node, group, vml) {
             var Rotation = 0,
@@ -1706,6 +1693,7 @@ window.Raphael = (function () {
                 Scale = 1;
             this[0] = node;
             this.node = node;
+            node.raphael = this;
             this.X = 0;
             this.Y = 0;
             this.attrs = {};
@@ -1737,7 +1725,7 @@ window.Raphael = (function () {
             } else {
                 this._.rt.deg += deg;
             }
-            (cy == null) && (cx = null);
+            cy == null && (cx = null);
             this._.rt.cx = cx;
             this._.rt.cy = cy;
             this.setBox(this.attrs, cx, cy);
@@ -1903,7 +1891,7 @@ window.Raphael = (function () {
                 params = arguments[0];
             }
             if (params) {
-                if (params.gradient) {
+                if (params.gradient && (this.type in {circle: 1, ellipse: 1} || (params.gradient + "").charAt(0) != "r")) {
                     addGradientFill(this, params.gradient);
                 }
                 if (params.text && this.type == "text") {
@@ -1936,18 +1924,6 @@ window.Raphael = (function () {
             element.Group.parentNode.insertBefore(this.Group, element.Group);
             return this;
         };
-        Element.prototype.blur = function (size) {
-            var s = this.node.style,
-                f = s.filter;
-            f = f.replace(/progid:DXImageTransform\.Microsoft\.Blur\(pixelradius\=[^\)]+\)/g, "");
-            if (size != "none") {
-                s.filter = f + " progid:DXImageTransform.Microsoft.Blur(pixelradius=" + (+size || 1.5) + ")";
-                s.margin = R.format("-{0}px 0 0 -{0}px", Math.round(+size || 1.5));
-            } else {
-                s.filter = f;
-                s.margin = 0;
-            }
-        };
         
         var theCircle = function (vml, x, y, r) {
             var g = createNode("group"),
@@ -2120,8 +2096,8 @@ window.Raphael = (function () {
             }
             var c = paper.canvas = doc.createElement("div"),
                 cs = c.style;
-            width = parseFloat(width) || "512px";
-            height = parseFloat(height) || "342px";
+            width = parseFloat(width) || 512;
+            height = parseFloat(height) || 342;
             paper.width = width;
             paper.height = height;
             paper.coordsize = width + " " + height;
@@ -2174,10 +2150,18 @@ window.Raphael = (function () {
         paper.remove = function () {
             this.canvas.parentNode.removeChild(this.canvas);
         };
-        paper.safari = function () {};
     }
 
     // rest
+    // Safari or Chrome (WebKit)
+    if ({"Apple Computer, Inc.": 1, "Google Inc.": 1}[navigator.vendor]) {
+        paper.safari = function () {
+            var rect = this.rect(-99, -99, this.width + 99, this.height + 99);
+            setTimeout(function () {rect.remove();});
+        };
+    } else {
+        paper.safari = function () {};
+    }
 
     // Events
     var addEvent = (function () {
@@ -2299,13 +2283,15 @@ window.Raphael = (function () {
                 case "image":
                     var neww = a.width * dirx * kx,
                         newh = a.height * diry * ky,
+                        newr = a.r * Math.min(kx, ky),
                         newx = ncx - neww / 2,
                         newy = ncy - newh / 2;
                     this.attr({
                         width: neww,
                         height: newh,
                         x: newx,
-                        y: newy
+                        y: newy,
+                        r: newr
                     });
                     break;
                 case "circle":
@@ -2313,7 +2299,7 @@ window.Raphael = (function () {
                     this.attr({
                         rx: a.rx * kx,
                         ry: a.ry * ky,
-                        r: a.r * kx,
+                        r: a.r * Math.min(kx, ky),
                         cx: ncx,
                         cy: ncy
                     });
@@ -2343,11 +2329,10 @@ window.Raphael = (function () {
                     var dim2 = pathDimensions(path),
                         dx = ncx - dim2.x - dim2.width / 2,
                         dy = ncy - dim2.y - dim2.height / 2;
-                    path = pathToRelative(path);
                     path[0][1] += dx;
                     path[0][2] += dy;
 
-                    this.attr({path: path.join(" ")});
+                    this.attr({path: path});
                 break;
             }
             if (this.type in {text: 1, image:1} && (dirx != 1 || diry != 1)) {
@@ -2614,6 +2599,10 @@ window.Raphael = (function () {
         }
         return this;
     };
+    Element.prototype.toString = function () {
+        return "Rapha\u00ebl\u2019s object";
+    };
+    
 
     // Set
     var Set = function (items) {