/* cytoscape.min.js */ /** * This file is part of cytoscape.js 2.0.2. * * Cytoscape.js is free software: you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Cytoscape.js is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License along with * cytoscape.js. If not, see . */ var cytoscape;(function(){var a=cytoscape=function(){return cytoscape.init.apply(cytoscape,arguments)};a.init=function(b){if(b===undefined){b={}}if(a.is.plainObject(b)){return new a.Core(b)}else{if(a.is.string(b)){return a.extension.apply(a.extension,arguments)}}};a.fn={};if(typeof exports!=="undefined"){exports=module.exports=cytoscape}window.cytoscape=cytoscape})();(function(a){a.is={string:function(b){return b!=null&&typeof b==typeof""},fn:function(b){return b!=null&&typeof b===typeof function(){} },array:function(b){return b!=null&&b instanceof Array},plainObject:function(b){return b!=null&&typeof b===typeof{}&&!a.is.array(b)&&b.constructor===Object},number:function(b){return b!=null&&typeof b===typeof 1&&!isNaN(b)},integer:function(b){return a.is.number(b)&&Math.floor(b)===b},color:function(b){return b!=null&&typeof b===typeof""&&$.Color(b).toString()!==""},bool:function(b){return b!=null&&typeof b===typeof true},elementOrCollection:function(b){return a.is.element(b)||a.is.collection(b)},element:function(b){return b instanceof a.Element&&b._private.single },collection:function(b){return b instanceof a.Collection&&!b._private.single},core:function(b){return b instanceof a.Core},style:function(b){return b instanceof a.Style},stylesheet:function(b){return b instanceof a.Stylesheet},event:function(b){return b instanceof a.Event},emptyString:function(b){if(!b){return true}else{if(a.is.string(b)){if(b===""||b.match(/^\s+$/)){return true}}}return false},nonemptyString:function(b){if(b&&a.is.string(b)&&b!==""&&!b.match(/^\s+$/)){return true}return false},domElement:function(b){if(typeof HTMLElement==="undefined"){return false }else{return b instanceof HTMLElement}}}})(cytoscape);(function(a){a.util={extend:function(){var l,d,b,c,h,j,g=arguments[0]||{},f=1,e=arguments.length,k=false;if(typeof g==="boolean"){k=g;g=arguments[1]||{};f=2}if(typeof g!=="object"&&!a.is.fn(g)){g={}}if(e===f){g=this;--f}for(;fc&&d[b]===" ";b--){}return d.substring(c,b+1)},hex2tuple:function(h){if(!(h.length===4||h.length===7)||h[0]!=="#"){return }var f=h.length===4;var e,d,c;var i=16;if(f){e=parseInt(h[1]+h[1],i);d=parseInt(h[2]+h[2],i);c=parseInt(h[3]+h[3],i)}else{e=parseInt(h[1]+h[2],i);d=parseInt(h[3]+h[4],i);c=parseInt(h[5]+h[6],i)}return[e,d,c]},hsl2tuple:function(z){var u;var k=a.util.regex.number;var o,A,j,w,c,t,v;var i=new RegExp("^"+a.util.regex.hsla+"$").exec(z);if(i){o=parseInt(i[1]);if(o<0){o=(360-(-1*o%360))%360}else{if(o>360){o=o%360}}o/=360;A=parseFloat(i[2]);if(A<0||A>100){return}A=A/100;j=parseFloat(i[3]);if(j<0||j>100){return }j=j/100;w=i[4];if(w!==undefined){w=parseFloat(w);if(w<0||w>1){return}}if(A===0){c=t=v=Math.round(j*255)}else{function f(h,g,b){if(b<0){b+=1}if(b>1){b-=1}if(b<1/6){return h+(g-h)*6*b}if(b<1/2){return g}if(b<2/3){return h+(g-h)*(2/3-b)*6}return h}var d=j<0.5?j*(1+A):j+A-j*A;var e=2*j-d;c=Math.round(255*f(e,d,o+1/3));t=Math.round(255*f(e,d,o));v=Math.round(255*f(e,d,o-1/3))}u=[c,t,v,w]}return u},rgb2tuple:function(k){var h;var d=a.util.regex.number;var b=new RegExp("^"+a.util.regex.rgba+"$").exec(k); if(b){h=[];var l=[];for(var e=1;e<=3;e++){var g=b[e];if(g[g.length-1]==="%"){l[e]=true}g=parseFloat(g);if(l[e]){g=g/100*255}if(g<0||g>255){return}h.push(Math.floor(g))}var f=l[1]||l[2]||l[3];var j=l[1]&&l[2]&&l[3];if(f&&!j){return}var c=b[4];if(c!==undefined){c=parseFloat(c);if(c<0||c>1){return}h.push(c)}}return h},colorname2tuple:function(b){return a.util.colors[b.toLowerCase()]},color2tuple:function(b){return a.util.colorname2tuple(b)||a.util.hex2tuple(b)||a.util.rgb2tuple(b)||a.util.hsl2tuple(b) },tuple2hex:function(d){var f=d[0];var e=d[1];var c=d[2];function h(b){var g=b.toString(16);if(g.length===1){g="0"+g}return g}return"#"+h(f)+h(e)+h(c)},colors:{transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}}; a.util.regex={};a.util.regex.number="(?:\\d*\\.\\d+|\\d+|\\d*\\.\\d+[eE]\\d+)";a.util.regex.rgba="rgb[a]?\\(("+a.util.regex.number+"[%]?)\\s*,\\s*("+a.util.regex.number+"[%]?)\\s*,\\s*("+a.util.regex.number+"[%]?)(?:\\s*,\\s*("+a.util.regex.number+"))?\\)";a.util.regex.rgbaNoBackRefs="rgb[a]?\\((?:"+a.util.regex.number+"[%]?)\\s*,\\s*(?:"+a.util.regex.number+"[%]?)\\s*,\\s*(?:"+a.util.regex.number+"[%]?)(?:\\s*,\\s*(?:"+a.util.regex.number+"))?\\)";a.util.regex.hsla="hsl[a]?\\(("+a.util.regex.number+")\\s*,\\s*("+a.util.regex.number+"[%])\\s*,\\s*("+a.util.regex.number+"[%])(?:\\s*,\\s*("+a.util.regex.number+"))?\\)"; a.util.regex.hslaNoBackRefs="hsl[a]?\\((?:"+a.util.regex.number+")\\s*,\\s*(?:"+a.util.regex.number+"[%])\\s*,\\s*(?:"+a.util.regex.number+"[%])(?:\\s*,\\s*(?:"+a.util.regex.number+"))?\\)";a.util.regex.hex3="\\#[0-9a-fA-F]{3}";a.util.regex.hex6="\\#[0-9a-fA-F]{6}"})(cytoscape);(function(b){b.math={};b.math.boxInBezierVicinity=function(o,j,u,k,q,i,p,h,l,f,m){var v=Math.min(o,u)-m;var s=Math.min(j,k)-m;var t=Math.max(o,u)+m;var r=Math.max(j,k)+m;if(q>=v&&q<=t&&i>=s&&i<=r){return 2}else{if(l>=v&&l<=t&&f>=s&&f<=r){return 2 }else{if(p>=v&&p<=t&&h>=s&&h<=r){return 1}}}var g=Math.min(q,p,l);var e=Math.min(i,h,f);var d=Math.max(q,p,l);var c=Math.max(i,h,f);if(g>t||dr||c=B&&t<=z&&Math.min(g,d)<=w&&Math.max(g,d)>=v)}var c=(B-m)/h;if(c>0&&c<=1){u=e*c+l;if(u>=w&&u<=v){return true }}var j=(z-m)/h;if(j>0&&j<=1){u=e*j+l;if(u>=w&&u<=v){return true}}var f=(w-l)/e;if(f>0&&f<=1){p=h*f+m;if(p>=B&&p<=z){return true}}var i=(v-l)/e;if(i>0&&i<=1){p=h*i+m;if(p>=B&&p<=z){return true}}return false};b.math.checkBezierCrossesBox=function(w,h,L,A,q,U,l,R,j,O,d){var s=Math.min(w,L)-d;var p=Math.min(h,A)-d;var T=Math.max(w,L)+d;var Q=Math.max(h,A)+d;if(q>=s&&q<=T&&U>=p&&U<=Q){return true}else{if(j>=s&&j<=T&&O>=p&&O<=Q){return true}}var v=q-2*l+j;var g=-2*q+2*l;var H=q;var B=[];if(Math.abs(v)<0.0001){var M=(s-q)/g; var z=(T-q)/g;B.push(M,z)}else{var E=g*g-4*v*(H-s);var t,r;if(E>0){var F=Math.sqrt(E);t=(-g+F)/(2*v);r=(-g-F)/(2*v);B.push(t,r)}var D=g*g-4*v*(H-T);var o,k;if(D>0){var F=Math.sqrt(D);o=(-g+F)/(2*v);k=(-g-F)/(2*v);B.push(o,k)}}B.sort(function(W,V){return W-V});var u=U-2*R+O;var e=-2*U+2*R;var G=U;var K=[];if(Math.abs(u)<0.0001){var f=(p-U)/e;var I=(Q-U)/e;K.push(f,I)}else{var m=e*e-4*u*(G-p);var c,S;if(m>0){var F=Math.sqrt(m);c=(-e+F)/(2*u);S=(-e-F)/(2*u);K.push(c,S)}var i=e*e-4*u*(G-Q);var P,N;if(i>0){var F=Math.sqrt(i); P=(-e+F)/(2*u);N=(-e-F)/(2*u);K.push(P,N)}}K.sort(function(W,V){return W-V});for(var C=0;C=0&&B[C]<=1&&B[C+1]>K[J-1]&&K[J-1]<=1&&B[C+1]>=0){return true}}}return false};b.math.inBezierVicinity=function(i,h,t,e,s,d,r,c,A){var k=0.25*t+0.5*s+0.25*r;var j=0.25*e+0.5*d+0.25*c;var o,m,w,u;var g,f,l;var z=function(C,I,D,B,H,G,E,F){g=(G-B)*(C-D)+(D-H)*(I-B);f=g*g;sideSquared=(G-B)*(G-B)+(D-H)*(D-H);if(F){if(g>0){return false}}else{if(g<0){return false }}return(f/sideSquared>E)};var q=(k+s)/2;var p=(j+d)/2;var v=true;if(z(q,p,t,e,s,d,0,v)){v=!v}return(!z(i,h,t,e,s,d,A,v)&&!z(i,h,s,d,r,c,A,v)&&!z(i,h,r,c,t,e,A,v))};b.math.solveCubic=function(o,m,l,k,v){m/=o;l/=o;k/=o;var f,g,e,i,u,p,h,j;g=(3*l-(m*m))/9;e=-(27*k)+m*(9*l-2*(m*m));e/=54;f=g*g*g+e*e;v[1]=0;h=(m/3);if(f>0){u=e+Math.sqrt(f);u=((u<0)?-Math.pow(-u,(1/3)):Math.pow(u,(1/3)));p=e-Math.sqrt(f);p=((p<0)?-Math.pow(-p,(1/3)):Math.pow(p,(1/3)));v[0]=-h+u+p;h+=(u+p)/2;v[4]=v[2]=-h;h=Math.sqrt(3)*(-p+u)/2; v[3]=h;v[5]=-h;return}v[5]=v[3]=0;if(f==0){j=((e<0)?-Math.pow(-e,(1/3)):Math.pow(e,(1/3)));v[0]=-h+2*j;v[4]=v[2]=-(j+h);return}g=-g;i=g*g*g;i=Math.acos(e/Math.sqrt(i));j=2*Math.sqrt(g);v[0]=-h+j*Math.cos(i/3);v[2]=-h+j*Math.cos((i+2*Math.PI)/3);v[4]=-h+j*Math.cos((i+4*Math.PI)/3);return};b.math.sqDistanceToQuadraticBezier=function(q,p,v,j,u,h,t,g){var D=1*v*v-4*v*u+2*v*t+4*u*u-4*u*t+t*t+j*j-4*j*h+2*j*g+4*h*h-4*h*g+g*g;var C=1*9*v*u-3*v*v-3*v*t-6*u*u+3*u*t+9*j*h-3*j*j-3*j*g-6*h*h+3*h*g;var A=1*3*v*v-6*v*u+v*t-v*q+2*u*u+2*u*q-t*q+3*j*j-6*j*h+j*g-j*p+2*h*h+2*h*p-g*p; var z=1*v*u-v*v+v*q-u*q+j*h-j*j+j*p-h*p;a("coefficients: "+D/D+", "+C/D+", "+A/D+", "+z/D);var k=[];this.solveCubic(D,C,A,z,k);var e=1e-7;var B=[];for(var l=0;l<6;l+=2){if(Math.abs(k[l+1])=0&&k[l]<=1){B.push(k[l])}}B.push(1);B.push(0);var f=-1;var w;var o,m,r;for(var s=0;s=0){if(r=0;c--){var d=a.instances[c];if(d.domElement===e){return d}}}}}})(cytoscape);(function(c){var f={};c.extensions=f;var d={};c.modules=d; function b(j,i,k){var h={};h[i]=k;switch(j){case"core":case"collection":c.fn[j](h)}return c.util.setMap({map:f,keys:[j,i],value:k})}function g(i,h){return c.util.getMap({map:f,keys:[i,h]})}function e(k,i,j,h,l){return c.util.setMap({map:d,keys:[k,i,j,h],value:l})}function a(k,i,j,h){return c.util.getMap({map:d,keys:[k,i,j,h]})}c.extension=function(){if(arguments.length==2){return g.apply(this,arguments)}else{if(arguments.length==3){return b.apply(this,arguments)}else{if(arguments.length==4){return a.apply(this,arguments) }else{if(arguments.length==5){return e.apply(this,arguments)}else{$.error("Invalid extension access syntax")}}}}}})(cytoscape);(function(b,a){if(!b){return}b.fn.cytoscape=function(h){var k=b(this);if(h==="get"){var g=a.getRegistrationForInstance(k[0]);return g.cy}else{if(a.is.fn(h)){var f=h;var c=k[0];var g=a.getRegistrationForInstance(c);if(!g){g=a.registerInstance(c)}if(g&&g.cy&&g.cy.ready()){g.cy.trigger("ready",[],f)}else{g.readies.push(f)}}else{if(a.is.plainObject(h)){return k.each(function(){var i=b.extend({},h,{container:b(this)[0]}); cytoscape(i)})}else{var c=k[0];var j=[];var d=[];for(var e=1;e node").css({width:"auto",height:"auto",shape:"rectangle","background-opacity":0.5,"padding-top":10,"padding-right":10,"padding-left":10,"padding-bottom":10}).selector("edge").css({width:1,}).selector(":active").css({"overlay-color":"black","overlay-padding":10,"overlay-opacity":0.25}).selector("core").css({"selection-box-color":"#ddd","selection-box-opacity":0.65,"selection-box-border-color":"#aaa","selection-box-border-width":1,"panning-cursor":"grabbing","active-bg-color":"black","active-bg-opacity":0.15,"active-bg-size":isTouch?40:15}) };$$.styfn.clear=function(){this._private.newStyle=true;for(var i=0;itype.max)){return null}var ret={name:name,value:value,strValue:""+value+(units?units:""),units:units,bypass:propIsBypass,pxValue:type.unitless||units==="%"?undefined:(units==="px"||!units?(value):(this.getEmSizeInPixels()*value))};return ret}else{if(type.color){var tuple=$$.util.color2tuple(value);return{name:name,value:tuple,strValue:value,bypass:propIsBypass}}else{if(type.enums){for(var i=0;i0;var props=context.properties;if(contextSelectorMatches){for(var j=0;j0){d.remove() }i.notifications(false);var c=[];if(f!=null){if(a.is.plainObject(f)||a.is.array(f)){i.add(f)}}function h(){i.one("layoutready",function(j){i.notifications(true);i.trigger(j);i.notify({type:"load",collection:i.elements(),style:i._private.style});i.one("load",g);i.trigger("load")}).one("layoutstop",function(){i.one("done",e);i.trigger("done")});i.layout(i._private.options.layout)}if(true||b&&b.chrome){setTimeout(function(){h()},30)}else{h()}return this}})})(cytoscape,typeof window==="undefined"?null:window); (function(a){a.fn.core({addToAnimationPool:function(b){var h=this;var c=h._private.aniEles;var e=[];for(var d=0;d0?o.shift():null;if(u!=null){u.callTime=+new Date;z.push(u)}}var A=[];for(var t=0;t0){g.notify({type:"draw",collection:C})}for(var t=0;t0||v.length>0;if(!m){C.splice(t,1);t--}}}function e(F,w,s){var o=g._private.style;var C=w.properties;var v=w.params;var t=w.callTime;var B;if(w.duration===0){B=1}else{B=Math.min(1,(s-t)/w.duration) }if(B<0){B=0}else{if(B>1){B=1}}if(C.delay==null){var A=w.startPosition;var r=C.position;var E=F._private.position;if(r){if(b(A.x,r.x)){E.x=h(A.x,r.x,B)}if(b(A.y,r.y)){E.y=h(A.y,r.y,B)}}if(C.css){var D=a.style.properties;for(var z=0;z=1){w.done=true}return B}function b(o,m){if(o==null||m==null){return false}if(a.is.number(o)&&a.is.number(m)){return true }else{if((o)&&(m)){return true}}return false}function h(p,q,v){if(v<0){v=0}else{if(v>1){v=1}}if(a.is.number(p)&&a.is.number(q)){return p+(q-p)*v}else{if(a.is.number(p[0])&&a.is.number(q[0])){var t=p;var s=q;function o(A,r){var B=r-A;var z=A;return Math.round(v*B+z)}var m=o(t[0],s[0]);var u=o(t[1],s[1]);var w=o(t[2],s[2]);return"rgb("+m+", "+u+", "+w+")"}}return undefined}}})})(cytoscape);(function(a){a.fn.core({data:a.define.data({field:"data",bindingEvent:"data",allowBinding:true,allowSetting:true,settingEvent:"data",settingTriggersEvent:true,triggerFnName:"trigger",allowGetting:true}),removeData:a.define.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:true}),batchData:a.define.batchData({field:"data",event:"data",triggerFnName:"trigger",immutableKeys:{id:true,source:true,target:true,parent:true},updateMappers:true}),scratch:a.define.data({field:"scratch",allowBinding:false,allowSetting:true,settingTriggersEvent:false,allowGetting:true}),removeScratch:a.define.removeData({field:"scratch",triggerEvent:false}),}) })(cytoscape);(function(a){a.fn.core({on:a.define.on(),one:a.define.on({unbindSelfOnTrigger:true}),once:a.define.on({unbindAllBindersOnTrigger:true}),off:a.define.off(),trigger:a.define.trigger(),});a.corefn.bind=a.corefn.on;a.corefn.unbind=a.corefn.off;a.define.event.aliasesOn(a.corefn)})(cytoscape);(function(a){a.fn.core({png:function(){var c=this;var b=this._private.renderer;return b.png()}})})(cytoscape);(function(a){a.fn.core({layout:function(b){var c=this;if(this._private.layoutRunning){return this }if(b==null){b=this._private.options.layout}this.initLayout(b);c.trigger("layoutstart");this._private.layoutRunning=true;this.one("layoutstop",function(){this._private.layoutRunning=false});this._private.layout.run();return this},initLayout:function(d){if(d==null){a.util.error("Layout options must be specified to run a layout");return}if(d.name==null){a.util.error("A `name` must be specified to run a layout");return}var c=d.name;var b=a.extension("layout",c);if(b==null){a.util.error("Can not apply layout: No such layout `%s` found; did you include its JS file?",c); return}this._private.layout=new b(a.util.extend({},d,{renderer:this._private.renderer,cy:this}));this._private.options.layout=d}})})(cytoscape);(function(a){a.fn.core({notify:function(e){if(!this._private.notificationsEnabled){return}var d=this.renderer();var f=this;if(a.is.element(e.collection)){var b=e.collection;e.collection=new a.Collection(f,[b])}else{if(a.is.array(e.collection)){var c=e.collection;e.collection=new a.Collection(f,c)}}d.notify(e)},notifications:function(b){var c=this._private; if(b===undefined){return c.notificationsEnabled}else{c.notificationsEnabled=b?true:false}},noNotifications:function(b){this.notifications(false);b();this.notifications(true)}})})(cytoscape);(function(a){a.fn.core({renderTo:function(b,d,e){var c=this._private.renderer;c.renderTo(b,d,e)},renderer:function(){return this._private.renderer},initRenderer:function(c){var d=this;var b=a.extension("renderer",c.name);if(b==null){a.util.error("Can not initialise: No such renderer `%s` found; did you include its JS file?",c.name); return}this._private.renderer=new b(a.util.extend({},c,{cy:d,style:d._private.style}))}})})(cytoscape);(function(a){a.fn.core({collection:function(b){if(a.is.string(b)){return this.$(b)}else{if(a.is.elementOrCollection(b)){return b.collection()}}return new a.Collection(this)},nodes:function(b){var c=this.$("node");if(b){return c.filter(b)}return c},edges:function(b){var c=this.$("edge");if(b){return c.filter(b)}return c},$:function(c){var b=new a.Collection(this,this._private.elements);if(c){return b.filter(c) }return b}});a.corefn.elements=a.corefn.filter=a.corefn.$})(cytoscape);(function(a){a.fn.core({style:function(b){return this._private.style}})})(cytoscape);(function(a){a.fn.core({panningEnabled:function(b){if(b!==undefined){this._private.panEnabled=b?true:false}else{return this._private.panEnabled}return this},zoomingEnabled:function(b){if(b!==undefined){this._private.zoomEnabled=b?true:false}else{return this._private.zoomEnabled}return this},boxSelectionEnabled:function(b){if(b!==undefined){this._private.boxSelectionEnabled=b?true:false }else{return this._private.boxSelectionEnabled}return this},pan:function(){var c=arguments;var g=this._private.pan;var d,f,e,b,h;switch(c.length){case 0:return g;case 1:if(!this._private.panEnabled){return this}else{if(a.is.string(c[0])){d=c[0];return g[d]}else{if(a.is.plainObject(c[0])){e=c[0];b=e.x;h=e.y;if(a.is.number(b)){g.x=b}if(a.is.number(h)){g.y=h}this.trigger("pan")}}}break;case 2:if(!this._private.panEnabled){return this}d=c[0];f=c[1];if((d==="x"||d==="y")&&a.is.number(f)){g[d]=f}this.trigger("pan"); break;default:break}this.notify({type:"viewport"});return this},panBy:function(h){var c=arguments;var g=this._private.pan;var d,f,e,b,i;if(!this._private.panEnabled){return this}switch(c.length){case 1:if(a.is.plainObject(c[0])){e=c[0];b=e.x;i=e.y;if(a.is.number(b)){g.x+=b}if(a.is.number(i)){g.y+=i}this.trigger("pan")}break;case 2:d=c[0];f=c[1];if((d==="x"||d==="y")&&a.is.number(f)){g[d]+=f}this.trigger("pan");break;default:break}this.notify({type:"viewport"});return this},fit:function(g,i){if(a.is.number(g)&&i===undefined){i=g; g=undefined}if(!this._private.panEnabled||!this._private.zoomEnabled){return this}if(a.is.string(g)){var f=g;g=this.$(f)}else{if(!a.is.elementOrCollection(g)){g=this.elements()}}var j=g.boundingBox();var d=this.style();var b=parseFloat(d.containerCss("width"));var c=parseFloat(d.containerCss("height"));var e;i=a.is.number(i)?i:0;if(!isNaN(b)&&!isNaN(c)){e=this._private.zoom=Math.min((b-2*i)/j.w,(c-2*i)/j.h);e=e>this._private.maxZoom?this._private.maxZoom:e;e=ethis._private.maxZoom?this._private.maxZoom:k;k=k1&&this._private.minZoom<1){this.zoom(1)}this.notify({type:"viewport"});return this}})})(cytoscape);(function(b){b.fn.collection=b.fn.eles=function(c,e){for(var d in c){var f=c[d];b.Collection.prototype[d]=f }};var a={prefix:{nodes:"n",edges:"e"},id:{nodes:0,edges:0},generate:function(h,d,g){var c=b.is.element(d)?d._private:d;var e=c.group;var f=g!=null?g:this.prefix[e]+this.id[e];if(h.getElementById(f).empty()){this.id[e]++}else{while(!h.getElementById(f).empty()){f=this.prefix[e]+(++this.id[e])}}return f}};b.Element=function(d,f,h){if(!(this instanceof b.Element)){return new b.Element(d,f,h)}var o=this;h=(h===undefined||h?true:false);if(d===undefined||f===undefined||!b.is.core(d)){b.util.error("An element must have a core reference and parameters set"); return}if(f.group!=="nodes"&&f.group!=="edges"){b.util.error("An element must be of type `nodes` or `edges`; you specified `"+f.group+"`");return}this.length=1;this[0]=this;this._private={cy:d,single:true,data:f.data||{},position:f.position||{},autoWidth:undefined,autoHeight:undefined,listeners:[],group:f.group,style:{},rstyle:{},styleCxts:[],removed:true,selected:f.selected?true:false,selectable:f.selectable===undefined?true:(f.selectable?true:false),locked:f.locked?true:false,grabbed:false,grabbable:f.grabbable===undefined?true:(f.grabbable?true:false),active:false,classes:{},animation:{current:[],queue:[]},rscratch:{},scratch:{},edges:[],children:[]}; if(f.renderedPosition){var p=f.renderedPosition;var j=d.pan();var m=d.zoom();this._private.position={x:(p.x-j.x)/m,y:(p.y-j.y)/m}}if(b.is.string(f.classes)){var e=f.classes.split(/\s+/);for(var g=0,c=e.length;g0&&b.is.plainObject(c[0])&&!b.is.element(c[0])){p=true;var s=[];var j={};for(var o=0,g=c.length;o0){var H=J.add(J.connectedNodes()).add(J.parent());H.updateStyle(s);if(s){J.rtrigger("add")}else{J.trigger("add")}}return r};b.elesfn.removed=function(){var c=this[0];return c&&c._private.removed};b.elesfn.inside=function(){var c=this[0]; return c&&!c._private.removed};b.elesfn.remove=function(r){var q=this;var A=[];var C=[];var f={};var c=q._private.cy;if(r===undefined){r=true}function B(E){var l=E._private.edges;for(var D=0;D0){if(r){this.cy().notify({type:"remove",collection:v})}v.trigger("remove")}var e={};for(var w=0;w0 }},clearQueue:function(){for(var b=0;b0){new a.Collection(this._private.cy,k).updateStyle()}c.trigger("class");return c},hasClass:function(b){var c=this[0]; return c!=null&&c._private.classes[b]},toggleClass:function(h,g){var b=h.split(/\s+/);var o=this;var e=[];for(var f=0,k=o.length;f0){new a.Collection(this._private.cy,e).updateStyle()}o.trigger("class");return o},removeClass:function(g){g=g.split(/\s+/); var c=this;var k=[];for(var f=0;f0){new a.Collection(c._private.cy,k).updateStyle()}c.trigger("class");return c}})})(cytoscape);(function(a){a.fn.eles({allAre:function(b){return this.filter(b).length===this.length},is:function(b){return this.filter(b).length>0},same:function(b){b=this.cy().collection(b);if(this.length!==b.length){return false }return this.intersect(b).length===this.length},anySame:function(b){b=this.cy().collection(b);return this.intersect(b).length>0},allAreNeighbors:function(b){b=this.cy().collection(b);return this.neighborhood().intersect(b).length===b.length}})})(cytoscape);(function(b){var a=1.4;var c=1;b.fn.eles({updateStyle:function(d){var f=this._private.cy;var e=f.style();d=d||d===undefined?true:false;e.apply(this);if(d){this.rtrigger("style")}else{this.trigger("style")}return this},updateMappers:function(d){var h=this._private.cy; var f=h.style();d=d||d===undefined?true:false;for(var e=0;eo?A:o;V=mT?l:T}else{var z=U.source()[0]._private.position;var d=U.target()[0]._private.position;var D=U._private.rstyle;G=D.labelX;F=D.labelY;B=z.x;A=d.x;m=z.y;l=d.y;if(B>A){var f=B;B=A;A=f}if(m>l){var f=m;m=l;l=f}p=Bo?A:o;V=mT?l:T;var k=D.bezierPts||[];var H=U._private.style.width.value; for(var Q=0;Qo?P.x+H:o;V=P.y-HT?P.y+H:T}}var O=U._private.style;var N=O.content.value;var q=O["font-size"];var u=O["text-halign"];var I=O["text-valign"];var g=U._private.rstyle.labelWidth;if(N&&q&&g!=undefined&&u&&I){var E=q.value;var t=g;var M,K,s,r;switch(u.value){case"left":M=B-t;K=B;break;case"center":M=G-t/2;K=G+t/2;break;case"right":M=A;K=A+t;break}if(U.isEdge()){M=G-t/2;K=G+t/2}switch(I.value){case"top":s=m-E;r=m;break; case"center":s=F-E/2;r=F+E/2;break;case"bottom":s=l;r=l+E;break}if(U.isEdge()){s=F-E/2;r=F+E/2}p=Mo?K:o;V=sT?r:T}}return{x1:p,x2:o,y1:V,y2:T,w:o-p,h:T-V}}})})(cytoscape);(function(b){function a(d){return function(){var f=this;if(f.length===0){return}if(f.isNode()&&!f.removed()){var k=0;var j=f[0];var e=j._private.edges;for(var g=0;gd}),minIndegree:c("indegree",function(e,d){return ed }),minOutdegree:c("outdegree",function(e,d){return ed})});b.fn.eles({totalDegree:function(){var f=0;var d=this.nodes();for(var e=0;e=0&&d0;if(!j){g.push(k)}}return new b.Collection(this._private.cy,g).filter(f)},kruskal:function(l){l=l||function(){return 1};function m(v){for(var u=0; u0){e.push(o[0])}e.push(g[0])}}return(new b.Collection(l,e)).filter(m)},closedNeighborhood:function(e){return this.neighborhood().add(this).filter(e)},openNeighborhood:function(e){return this.neighborhood(e)}});b.fn.eles({source:d({attr:"source"}),target:d({attr:"target"})});function d(e){return function(f){var h=[];var g=this.edges(); var o=this._private.cy;for(var j=0;j0){h.push(l)}}return new b.Collection(o,h).filter(f)}}b.fn.eles({edgesWith:a(),edgesTo:a({thisIs:"source"})});function a(e){return function(r){var f=[];var j=this._private.cy;var g=e||{};if(b.is.string(r)){r=j.$(r)}var l=r.connectedEdges();var s=this._private.ids;for(var m=0;m0){f.push(h)}}return new b.Collection(k,f).filter(e)},parents:function(f){var g=[];var e=this.parent();while(e.nonempty()){for(var h=0; h\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]";var variable="(?:[\\w-]|(?:\\\\"+metaChar+"))+";var comparatorOp="=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=";var boolOp="\\?|\\!|\\^"; var string="\"(?:\\\\\"|[^\"])+\"|'(?:\\\\'|[^'])+'";var number=$$.util.regex.number;var value=string+"|"+number;var meta="degree|indegree|outdegree";var separator="\\s*,\\s*";var className=variable;var descendant="\\s+";var child="\\s+>\\s+";var subject="\\$";var id=variable;function cleanMetaChars(str){return str.replace(new RegExp("\\\\("+metaChar+")","g"),"\1")}var ops=comparatorOp.split("|");for(var i=0;i=0; break;case"$=":matches=new RegExp(valStr+"$").exec(fieldStr)!=null;break;case"^=":matches=new RegExp("^"+valStr).exec(fieldStr)!=null;break;default:if(caseInsensitive){var expr="fieldStr "+operator+" valStr";matches=eval(expr)}else{var expr=params.fieldRef(field)+" "+operator+" "+value;matches=eval(expr)}}}else{if(operator!=null){switch(operator){case"?":matches=params.fieldTruthy(field);break;case"!":matches=!params.fieldTruthy(field);break;case"^":matches=params.fieldUndefined(field);break}}else{matches=!params.fieldUndefined(field) }}if(!matches){allDataMatches=false;break}}return allDataMatches}var allDataMatches=operandsMatch({name:"data",fieldValue:function(field){return element._private.data[field]},fieldRef:function(field){return"element._private.data."+field},fieldUndefined:function(field){return element._private.data[field]===undefined},fieldTruthy:function(field){if(element._private.data[field]){return true}return false}});if(!allDataMatches){return false}var allMetaMatches=operandsMatch({name:"meta",fieldValue:function(field){return element[field]() },fieldRef:function(field){return"element."+field+"()"},fieldUndefined:function(field){return element[field]()==undefined},fieldTruthy:function(field){if(element[field]()){return true}return false}});if(!allMetaMatches){return false}if(query.collection!=null){var matchesAny=query.collection._private.ids[element.id()]!=null;if(!matchesAny){return false}}if(query.filter!=null&&element.collection().filter(query.filter).size()==0){return false}function confirmRelations(query,elements){if(query!=null){var matches=false; elements=elements();for(var i=0;i "+str}if(query.ancestor!=null){str=queryToString(query.ancestor)+" "+str}if(query.child!=null){str+=" > "+queryToString(query.child)}if(query.descendant!=null){str+=" "+queryToString(query.descendant)}return str}for(var i=0;i1&&i0&&this.data.container.clientWidth>0){context=H.bufferCanvases[1].getContext("2d");context.globalCompositeOperation="copy";context.drawImage(H.canvases[4],0,0);context.globalCompositeOperation="source-over";context.drawImage(H.canvases[2],0,0); context.drawImage(H.canvases[0],0,0);context=H.bufferCanvases[0].getContext("2d");context.globalCompositeOperation="copy";context.drawImage(H.bufferCanvases[1],0,0)}var i=this.data.bufferCanvases[0];return i.toDataURL("image/png")};z.prototype.load=function(){var R=this;var P=function(ad,Y,ae){if(!Y){var ab=ad.parents();for(var ac=0;acag[0]&&ap.pageXag[1]&&ap.pageY=p)&&(Math.abs(aj[3]-aj[1])+Math.abs(aj[2]-aj[0])<4)&&aa.panningEnabled()){R.hoverData.dragging=true;aj[4]=0}else{if(aa.boxSelectionEnabled()&&Math.pow(aj[2]-aj[0],2)+Math.pow(aj[3]-aj[1],2)>7&&aj[4]){clearTimeout(R.bgActiveTimeout)}if(ai&&ai.isEdge()&&ai.active()){ai.unactivate()}if(aq!=ah){if(ah){ah.trigger(new w.Event(ap,{type:"mouseout"})) }if(aq){aq.trigger(new w.Event(ap,{type:"mouseover"}))}R.hoverData.last=aq}if(ai&&ai.isNode()&&R.nodeIsDraggable(ai)){R.dragData.didDrag=true;var ar=[];for(var ao=0;ao7&&ak[4])&&!R.hoverData.dragging){Z.$(":selected").unselect();if(ac.length>0){R.data.canvasNeedsRedraw[G]=true;R.data.canvasRedrawReason[G].push("De-select")}R.dragData.possibleDragElements=ac=[]}if(Math.pow(ak[2]-ak[0],2)+Math.pow(ak[3]-ak[1],2)==0){if(au!=null){au.trigger(new w.Event(at,{type:"click"})).trigger(new w.Event(at,{type:"tap"})).trigger(new w.Event(at,{type:"vclick"})) }else{if(au==null){Z.trigger(new w.Event(at,{type:"click"})).trigger(new w.Event(at,{type:"tap"})).trigger(new w.Event(at,{type:"vclick"}))}}}if(au!=null){au.trigger(new w.Event(at,{type:"mouseup"})).trigger(new w.Event(at,{type:"tapend"})).trigger(new w.Event(at,{type:"vmouseup"}))}else{if(au==null){Z.trigger(new w.Event(at,{type:"mouseup"})).trigger(new w.Event(at,{type:"tapend"})).trigger(new w.Event(at,{type:"vmouseup"}))}}if(au==ag&&!R.dragData.didDrag){if(au!=null&&au._private.selectable){if(!ab){Z.$(":selected").unselect() }if(au.selected()){au.unselect()}else{au.select()}W(au,false);R.data.canvasNeedsRedraw[G]=true;R.data.canvasRedrawReason[G].push("sglslct")}}else{if(au==ag){if(au!=null&&au._private.grabbed){var an=Z.$(":grabbed");for(var aq=0;aq7&&ak[4]){if(!ab){Z.$(":selected").unselect() }var aa=[];var af=R.getAllInBox(ak[0],ak[1],ak[2],ak[3]);var ao=new w.Event(at,{type:"select"});for(var aq=0;aq0){R.data.canvasNeedsRedraw[G]=true;R.data.canvasRedrawReason[G].push("Selection")}}R.hoverData.dragging=false;if(!ak[4]){var ar=new w.Event(at,{type:"free"});for(var aq=0;aq250){if(R.touchData.start){R.touchData.start.trigger(new w.Event(au,{type:"taphold"})) }else{R.data.cy.trigger(new w.Event(au,{type:"taphold"}));ab.$(":selected").unselect()}}},1000)}}}R.redraw()},false);R.registerBinding(window,"touchmove",function(aH){var aA=R.data.select;var an=R.touchData.capture;an&&aH.preventDefault();var al=R.data.cy;var aw=R.getCachedNodes();var af=R.getCachedEdges();var az=R.touchData.now;var Z=R.touchData.earlier;if(aH.touches[0]){var aq=R.projectIntoViewport(aH.touches[0].pageX,aH.touches[0].pageY);az[0]=aq[0];az[1]=aq[1]}if(aH.touches[1]){var aq=R.projectIntoViewport(aH.touches[1].pageX,aH.touches[1].pageY); az[2]=aq[0];az[3]=aq[1]}if(aH.touches[2]){var aq=R.projectIntoViewport(aH.touches[2].pageX,aH.touches[2].pageY);az[4]=aq[0];az[5]=aq[1]}var ab=[];for(var aE=0;aE=1.5||au>=150){R.touchData.cxt=false;if(R.touchData.start){R.touchData.start.unactivate();R.touchData.start=null}R.data.bgActivePosistion=undefined; R.data.canvasNeedsRedraw[D]=true;var aa=new w.Event(aH,{type:"cxttapend"});if(R.touchData.start){R.touchData.start.trigger(aa)}else{al.trigger(aa)}}}if(an&&R.touchData.cxt){var aa=new w.Event(aH,{type:"cxtdrag"});R.data.bgActivePosistion=undefined;R.data.canvasNeedsRedraw[D]=true;if(R.touchData.start){R.touchData.start.trigger(aa)}else{al.trigger(aa)}if(R.touchData.start){R.touchData.start._private.grabbed=false}R.touchData.cxtDragged=true}else{if(an&&aH.touches[2]&&al.boxSelectionEnabled()){R.data.bgActivePosistion=undefined; clearTimeout(this.threeFingerSelectTimeout);this.lastThreeTouch=+new Date;R.data.canvasNeedsRedraw[D]=true;R.data.canvasRedrawReason[D].push("Touch moved, redraw selection box");if(!aA||aA.length===0||aA[0]===undefined){aA[0]=(az[0]+az[2]+az[4])/3;aA[1]=(az[1]+az[3]+az[5])/3;aA[2]=(az[0]+az[2]+az[4])/3+1;aA[3]=(az[1]+az[3]+az[5])/3+1}else{aA[2]=(az[0]+az[2]+az[4])/3;aA[3]=(az[1]+az[3]+az[5])/3}aA[4]=1}else{if(an&&aH.touches[1]&&al.zoomingEnabled()&&al.panningEnabled()){R.data.bgActivePosistion=undefined; R.data.canvasNeedsRedraw[D]=true;var ap=aH.touches[0].pageX-L,ac=aH.touches[0].pageY-V;var ak=aH.touches[1].pageX-L,Y=aH.touches[1].pageY-V;var au=I(ap,ac,ak,Y);var aF=au/U;if(aF!=1&&i){var aJ=ap-H;var aI=ac-N;var av=ak-T;var at=Y-X;var aD=(aJ+av)/2;var aB=(aI+at)/2;var ae=al.zoom();var ad=ae*aF;var ah=al.pan();var ay=J[0]*ae+ah.x;var ax=J[1]*ae+ah.y;var ag={x:-ad/ae*(ay-ah.x-aD)+ay,y:-ad/ae*(ax-ah.y-aB)+ax};al._private.zoom=ad;al._private.pan=ag;al.trigger("pan zoom").notify("viewport");U=au;H=ap; N=ac;T=ak;X=Y;R.pinching=true}if(aH.touches[0]){var aq=R.projectIntoViewport(aH.touches[0].pageX,aH.touches[0].pageY);az[0]=aq[0];az[1]=aq[1]}if(aH.touches[1]){var aq=R.projectIntoViewport(aH.touches[1].pageX,aH.touches[1].pageY);az[2]=aq[0];az[3]=aq[1]}if(aH.touches[2]){var aq=R.projectIntoViewport(aH.touches[2].pageX,aH.touches[2].pageY);az[4]=aq[0];az[5]=aq[1]}}else{if(aH.touches[0]){var ao=R.touchData.start;var ai=R.touchData.last;if(ao!=null&&ao._private.group=="nodes"&&R.nodeIsDraggable(ao)){var aj=R.dragData.touchDragEles; for(var aC=0;aC4){R.touchData.singleTouchMoved=true }}if(an&&(ao==null||ao.isEdge())&&al.panningEnabled()){if(ao){ao.unactivate();if(!R.data.bgActivePosistion){R.data.bgActivePosistion={x:az[0],y:az[1]}}R.data.canvasNeedsRedraw[D]=true;R.data.canvasRedrawReason[D].push("bgactive")}al.panBy({x:ab[0]*al.zoom(),y:ab[1]*al.zoom()});R.swipePanning=true;var aq=R.projectIntoViewport(aH.touches[0].pageX,aH.touches[0].pageY);az[0]=aq[0];az[1]=aq[1]}}}}}for(var aE=0;aE0){R.data.canvasNeedsRedraw[G]=true;R.data.canvasRedrawReason[G].push("Selection")}},100)}if(!aq.touches[1]){R.pinching=false }var al=false;if(ac!=null){ac._private.active=false;al=true;ac.trigger(new w.Event(aq,{type:"unactivate"}))}if(aq.touches[2]){R.data.bgActivePosistion=undefined}else{if(aq.touches[1]){}else{if(aq.touches[0]){}else{if(!aq.touches[0]){R.data.bgActivePosistion=undefined;if(ac!=null){if(ac._private.grabbed==true){ac._private.grabbed=false;ac.trigger(new w.Event(aq,{type:"free"}));ac._private.rscratch.inDragLayer=false}var af=ac._private.edges;for(var am=0;amthis.sqDistanceToQuadraticBezier(V,U,N.startX,N.startY,N.cp2ax,N.cp2ay,N.selfEdgeMidX,N.selfEdgeMidY)))||(this.inBezierVicinity(V,U,N.selfEdgeMidX,N.selfEdgeMidY,N.cp2cx,N.cp2cy,N.endX,N.endY,Math.pow(O[P]._private.style.width.value/2,2))&&(Math.pow(O[P]._private.style.width.value/2,2)+M>this.sqDistanceToQuadraticBezier(V,U,N.selfEdgeMidX,N.selfEdgeMidY,N.cp2cx,N.cp2cy,N.endX,N.endY)))){I=true }}else{if(N.edgeType=="straight"){if(this.inLineVicinity(V,U,N.startX,N.startY,N.endX,N.endY,O[P]._private.style.width.value*2)&&Math.pow(O[P]._private.style.width.value/2,2)+M>this.sqDistanceToFiniteLine(V,U,N.startX,N.startY,N.endX,N.endY)){I=true}}else{if(N.edgeType=="bezier"){if(this.inBezierVicinity(V,U,N.startX,N.startY,N.cp2x,N.cp2y,N.endX,N.endY,Math.pow(O[P]._private.style.width.value/2,2))&&(Math.pow(O[P]._private.style.width.value/2,2)+M>this.sqDistanceToQuadraticBezier(V,U,N.startX,N.startY,N.cp2x,N.cp2y,N.endX,N.endY))){I=true }}}}if(!R.length||R[R.length-1]!=O[P]){if((b[O[P]._private.style["source-arrow-shape"].value].roughCollide(V,U,O[P]._private.rscratch.arrowStartX,O[P]._private.rscratch.arrowStartY,this.getArrowWidth(O[P]._private.style.width.value),this.getArrowHeight(O[P]._private.style.width.value),[O[P]._private.rscratch.arrowStartX-O[P].source()[0]._private.position.x,O[P]._private.rscratch.arrowStartY-O[P].source()[0]._private.position.y],0)&&b[O[P]._private.style["source-arrow-shape"].value].collide(V,U,O[P]._private.rscratch.arrowStartX,O[P]._private.rscratch.arrowStartY,this.getArrowWidth(O[P]._private.style.width.value),this.getArrowHeight(O[P]._private.style.width.value),[O[P]._private.rscratch.arrowStartX-O[P].source()[0]._private.position.x,O[P]._private.rscratch.arrowStartY-O[P].source()[0]._private.position.y],0))||(b[O[P]._private.style["target-arrow-shape"].value].roughCollide(V,U,O[P]._private.rscratch.arrowEndX,O[P]._private.rscratch.arrowEndY,this.getArrowWidth(O[P]._private.style.width.value),this.getArrowHeight(O[P]._private.style.width.value),[O[P]._private.rscratch.arrowEndX-O[P].target()[0]._private.position.x,O[P]._private.rscratch.arrowEndY-O[P].target()[0]._private.position.y],0)&&b[O[P]._private.style["target-arrow-shape"].value].collide(V,U,O[P]._private.rscratch.arrowEndX,O[P]._private.rscratch.arrowEndY,this.getArrowWidth(O[P]._private.style.width.value),this.getArrowHeight(O[P]._private.style.width.value),[O[P]._private.rscratch.arrowEndX-O[P].target()[0]._private.position.x,O[P]._private.rscratch.arrowEndY-O[P].target()[0]._private.position.y],0))){I=true }}if(I){if(J){var H=Q.cy.getElementById(O[P]._private.data.source);var S=Q.cy.getElementById(O[P]._private.data.target);if(O[P]._private.style.opacity.value!=0&&O[P]._private.style.visibility.value=="visible"&&H._private.style.opacity.value!=0&&H._private.style.visibility.value=="visible"&&S._private.style.opacity.value!=0&&S._private.style.visibility.value=="visible"){R.push(O[P])}}else{R.push(O[P])}}}R.sort(C);if(R.length>0){return R[R.length-1]}else{return null}};z.prototype.getAllInBox=function(J,T,H,S){var O=this.data; var I=this.getCachedNodes();var M=this.getCachedEdges();var P=[];var R=Math.min(J,H);var L=Math.max(J,H);var U=Math.min(T,S);var Q=Math.max(T,S);J=R;H=L;T=U;S=Q;var K;for(var N=0;N=0;H--){if(K[H].isNode()&&(K[H]._private.style.width.value=="auto"||K[H]._private.style.height.value=="auto")&&K[H].children().length>0){var J=K[H];var I=this.calcCompoundBounds(J);J._private.position.x=I.x;J._private.position.y=I.y;J._private.autoWidth=I.width;J._private.autoHeight=I.height}}};z.prototype.calcCompoundBounds=function(N){var M=N.descendants().not(":removed");var H={x:N._private.position.x,y:N._private.position.y,width:N._private.autoWidth,height:N._private.autoHeight}; if(N._private.style.visibility.value!="visible"){return H}var I=[];for(var P=0;PP){P=O}}else{if(R=="top"){var M=Math.min(N.y-N.height/2,I.top);if(MP){P=K}}}}}}if((R=="left")||(R=="top")){return S }else{return P}};z.prototype.getNodeWidth=function(i){if(i._private.style.width.value=="auto"||i._private.style.height.value=="auto"){return i._private.autoWidth}else{return i._private.style.width.value}};z.prototype.getNodeHeight=function(i){if(i._private.style.width.value=="auto"||i._private.style.height.value=="auto"){return i._private.autoHeight}else{return i._private.style.height.value}};z.prototype.getNodeShape=function(H){var i=H._private.style.shape.value;if(H.isParent()){if(i==="rectangle"||i==="roundrectangle"){return i }else{return"rectangle"}}return i};z.prototype.getNodePadding=function(I){var K=I._private.style["padding-left"].value;var H=I._private.style["padding-right"].value;var J=I._private.style["padding-top"].value;var i=I._private.style["padding-bottom"].value;if(isNaN(K)){K=0}if(isNaN(H)){H=0}if(isNaN(J)){J=0}if(isNaN(i)){i=0}return{left:K,right:H,top:J,bottom:i}};z.prototype.matchCanvasSize=function(J){var O=this.data;var N=J.clientWidth;var I=J.clientHeight;var L,H=N,K=I;if("devicePixelRatio" in window){H*=devicePixelRatio; K*=devicePixelRatio}for(var M=0;M=N;if(!M){if(!L){clearTimeout(this.redrawTimeout);this.redrawTimeout=setTimeout(function(){i.redraw()},N);return}this.lastDrawTime=O}setTimeout(function(){var ai=O;var ad=100;var V=i.data.cy;var ar=i.data;var al=i.getCachedNodes();var U=i.getCachedEdges();i.matchCanvasSize(ar.container);var R=V.zoom();var ac=Q!==undefined?Q:R; var ak=V.pan();var ao={x:ak.x,y:ak.y};if(I){ao=I}if("devicePixelRatio" in window){ac*=devicePixelRatio;ao.x*=devicePixelRatio;ao.y*=devicePixelRatio}var ah=[];for(var am=0;am0){W.strokeStyle="rgba("+S["selection-box-border-color"].value[0]+","+S["selection-box-border-color"].value[1]+","+S["selection-box-border-color"].value[2]+","+S["selection-box-opacity"].value+")";W.strokeRect(ar.select[0],ar.select[1],ar.select[2]-ar.select[0],ar.select[3]-ar.select[1])}}if(ar.bgActivePosistion){var R=ar.cy.zoom();var ab=ar.bgActivePosistion;W.fillStyle="rgba("+S["active-bg-color"].value[0]+","+S["active-bg-color"].value[1]+","+S["active-bg-color"].value[2]+","+S["active-bg-opacity"].value+")"; W.beginPath();W.arc(ab.x,ab.y,S["active-bg-size"].pxValue/R,0,2*Math.PI);W.fill()}if(!K){ar.canvasNeedsRedraw[D]=false;ar.canvasRedrawReason[D]=[]}}if(i.options.showOverlay){var W=ar.canvases[u].getContext("2d");W.lineJoin="round";W.font="14px helvetica";W.strokeStyle="#fff";W.lineWidth="4";W.fillStyle="#666";W.textAlign="right";var ag="cytoscape.js";var af=W.canvas.width;var an=W.canvas.height;var aj=4;var ap=W.measureText(ag).width;var Z=14;W.clearRect(0,0,af,an);W.strokeText(ag,af-aj,an-aj);W.fillText(ag,af-aj,an-aj); ar.overlayDrawn=true}var Y=+new Date;if(i.averageRedrawTime===undefined){i.averageRedrawTime=Y-ai}i.averageRedrawTime=i.averageRedrawTime/2+(Y-ai)/2},0)};var l={};var h=30*300;z.prototype.getCachedImage=function(H,I){if(l[H]&&l[H].image){l[H].keepTime=h;return l[H].image}var i=l[H];if(i==undefined){l[H]=new Object();l[H].image=new Image();l[H].image.onload=I;l[H].image.src=H;l[H].keepTime=h;i=l[H]}return i.image};z.prototype.swapCachedImage=function(H){if(l[H]){if(l[H].image&&l[H].image.complete){var I=l[H].image; var i=document.createElement("canvas");i.width=I.width;i.height=I.height;i.getContext("2d").drawImage(I,0,0);l[H].image=i;l[H].swappedWithCanvas=true;return i}else{return null}}else{return null}};z.prototype.updateImageCaches=function(){for(var i in l){if(l[i].keepTime<=0){if(l[i].image!=undefined){l[i].image.src=undefined;l[i].image=undefined}l[i]=undefined}else{l[i]-=1}}};z.prototype.drawImage=function(i,N,M,K,J,O,I){I.widthScale=0.5;I.heightScale=0.5;I.rotate=O;var L;var H;canvas.drawImage(I,N,M) };z.prototype.drawEdge=function(I,K,L){if(this.hideEdgesOnViewport&&(this.dragData.didDrag||this.pinching||this.hoverData.dragging||this.data.wheel||this.swipePanning)){return}var M,Q;M=K.source()[0];Q=K.target()[0];if(K._private.style.visibility.value!="visible"||M._private.style.visibility.value!="visible"||Q._private.style.visibility.value!="visible"){return}var U=K._private.style["overlay-padding"].value;var S=K._private.style["overlay-opacity"].value;var T=K._private.style["overlay-color"].value; if(L){I.strokeStyle="rgba( "+T[0]+", "+T[1]+", "+T[2]+", "+S+" )";I.lineCap="round";if(K._private.rscratch.edgeType=="self"){I.lineCap="butt"}}else{I.strokeStyle="rgba("+K._private.style["line-color"].value[0]+","+K._private.style["line-color"].value[1]+","+K._private.style["line-color"].value[2]+","+K._private.style.opacity.value+")"}if(K._private.style.width.value<=0){return}var R=K._private.style.width.value+(L?2*U:0);var O=L?"solid":K._private.style["line-style"].value;I.lineWidth=R;this.findEndpoints(K); if(K._private.rscratch.edgeType=="self"){var i=K._private.rscratch;this.drawStyledEdge(K,I,[i.startX,i.startY,i.cp2ax,i.cp2ay,i.selfEdgeMidX,i.selfEdgeMidY],O,R);this.drawStyledEdge(K,I,[i.selfEdgeMidX,i.selfEdgeMidY,i.cp2cx,i.cp2cy,i.endX,i.endY],O,R)}else{if(K._private.rscratch.edgeType=="straight"){var J=Q._private.position.x-M._private.position.x;var H=Q._private.position.y-M._private.position.y;var P=K._private.rscratch.endX-K._private.rscratch.startX;var N=K._private.rscratch.endY-K._private.rscratch.startY; if(J*P+H*N<0){K._private.rscratch.straightEdgeTooShort=true}else{var i=K._private.rscratch;this.drawStyledEdge(K,I,[i.startX,i.startY,i.endX,i.endY],O,R);K._private.rscratch.straightEdgeTooShort=false}}else{var i=K._private.rscratch;this.drawStyledEdge(K,I,[i.startX,i.startY,i.cp2x,i.cp2y,i.endX,i.endY],O,R)}}if(K._private.rscratch.noArrowPlacement!==true&&K._private.rscratch.startX!==undefined){this.drawArrowheads(I,K,L)}};var t=function(P,L,J){var I=Math.sqrt(Math.pow(P[4]-P[0],2)+Math.pow(P[5]-P[1],2)); I+=Math.sqrt(Math.pow((P[4]+P[0])/2-P[2],2)+Math.pow((P[5]+P[1])/2-P[3],2));var O=Math.ceil(I/L);var H=I/L;var M;if(O>0){M=new Array(O*2)}else{return null}for(var K=0;K0){M=new Array(O*2)}else{return null}var H=[P[2]-P[0],P[3]-P[1]];for(var K=0;K=12){O._private.rstyle.bezierPts=[]}else{}}else{O._private.rstyle.bezierPts=[]}var R=O._private.rstyle.bezierPts;if(ab.length===6){R.push({x:aa(ab[0],ab[2],ab[4],0.05),y:aa(ab[1],ab[3],ab[5],0.05)});R.push({x:aa(ab[0],ab[2],ab[4],0.25),y:aa(ab[1],ab[3],ab[5],0.25)});R.push({x:aa(ab[0],ab[2],ab[4],0.35),y:aa(ab[1],ab[3],ab[5],0.35)});R.push({x:aa(ab[0],ab[2],ab[4],0.65),y:aa(ab[1],ab[3],ab[5],0.65)});R.push({x:aa(ab[0],ab[2],ab[4],0.75),y:aa(ab[1],ab[3],ab[5],0.75)});R.push({x:aa(ab[0],ab[2],ab[4],0.95),y:aa(ab[1],ab[3],ab[5],0.95)}) }if(L=="solid"){K.beginPath();K.moveTo(ab[0],ab[1]);if(ab.length==3*2){K.quadraticCurveTo(ab[2],ab[3],ab[4],ab[5])}else{K.lineTo(ab[2],ab[3])}K.stroke()}else{if(L=="dotted"){var T;if(ab.length==3*2){T=t(ab,16,true)}else{T=s(ab,16,true)}if(!T){return}var N=Math.max(U*1.6,3.4)*I;var M=N*2,Q=N*2;M=Math.max(M,1);Q=Math.max(Q,1);var X=this.createBuffer(M,Q);var V=X[1];V.setTransform(1,0,0,1,0,0);V.clearRect(0,0,M,Q);V.fillStyle=K.strokeStyle;V.beginPath();V.arc(M/2,Q/2,N*0.5,0,Math.PI*2,false);V.fill(); K.beginPath();for(var Y=0;Y0){K.stroke()}}else{var V=M._private.style["overlay-padding"].value;var Q=M._private.style["overlay-opacity"].value; var R=M._private.style["overlay-color"].value;if(Q>0){K.fillStyle="rgba( "+R[0]+", "+R[1]+", "+R[2]+", "+Q+" )";q[this.getNodeShape(M)].draw(K,M._private.position.x,M._private.position.y,U+V*2,J+V*2)}}};z.prototype.drawInscribedImage=function(I,N,L){var i=this;var P=this.data.cy._private.zoom;var K=L._private.position.x;var J=L._private.position.y;var O=this.getNodeWidth(L);var H=this.getNodeHeight(L);I.save();q[i.getNodeShape(L)].drawPath(I,K,J,O,H);I.clip();var M=[N.width,N.height];I.drawImage(N,K-M[0]/2,J-M[1]/2,M[0],M[1]); I.restore();if(L._private.style["border-width"].value>0){I.stroke()}};z.prototype.drawNodeText=function(I,J){if(J._private.style.visibility.value!="visible"){return}var M=J._private.style["font-size"].pxValue*J.cy().zoom();var i=J._private.style["min-zoomed-font-size"].pxValue;if(M0){H.lineWidth=P;H.strokeText(V,O,N)}if(isNaN(O)){O=0}if(isNaN(N)){N=0}H.fillText(""+V,O,N);L._private.rstyle.labelWidth=H.measureText(V).width}};z.prototype.drawBackground=function(I,H,i,J,K){};z.prototype.findEdgeControlPoints=function(Z){var H={};var ac=this.data.cy;var M=[];var V;for(var aq=0;aqZ[aq]._private.data.target?Z[aq]._private.data.target+"-"+Z[aq]._private.data.source:Z[aq]._private.data.source+"-"+Z[aq]._private.data.target; if(H[V]==undefined){H[V]=[]}H[V].push(Z[aq]);M.push(V)}var ad,aj;for(var al=0;al1){U=aj._private.position.y-ad._private.position.y;T=ad._private.position.x-aj._private.position.x;var S=Math.sqrt(U*U+T*T);U/=S;T/=S}var R;for(var aq=0;aq=0&&J<=1){K.push(J) }if(L>=0&&L<=1){K.push(L)}if(K.length==0){return[]}var aa=K[0]*U[0]+S;var Z=K[0]*U[1]+H;if(K.length>1){if(K[0]==K[1]){return[aa,Z]}else{var P=K[1]*U[0]+S;var O=K[1]*U[1]+H;return[aa,Z,P,O]}}else{return[aa,Z]}};z.prototype.findCircleNearPoint=function(K,J,L,P,O){var H=P-K;var i=O-J;var I=Math.sqrt(H*H+i*i);var N=H/I;var M=i/I;return[K+N*L,J+M*L]};z.prototype.findMaxSqDistanceToOrigin=function(K){var H=0.000001;var J;for(var I=0;IH){H=J}}return H };z.prototype.finiteLinesIntersect=function(L,S,J,Q,H,P,T,N,R){var M=(T-H)*(S-P)-(N-P)*(L-H);var O=(J-L)*(S-P)-(Q-S)*(L-H);var K=(N-P)*(J-L)-(T-H)*(Q-S);if(K!=0){var I=M/K;var i=O/K;if(0<=I&&I<=1&&0<=i&&i<=1){return[L+I*(J-L),S+I*(Q-S)]}else{if(!R){return[]}else{return[L+I*(J-L),S+I*(Q-S)]}}}else{if(M==0||O==0){if([L,J,T].sort()[1]==T){return[T,N]}if([L,J,H].sort()[1]==H){return[H,P]}if([H,T,J].sort()[1]==J){return[J,Q]}return[]}else{return[]}}};z.prototype.boxIntersectEllipse=function(I,R,i,P,Q,H,U,M,K){if(iO[0]){return false}if(R>N[1]){return false}if(PQ){Q=S[aa*2]}if(S[aa*2]O){O=S[aa*2+1]}if(S[aa*2+1]Q+U){return false}if(KO+U){return false}var Z;if(U>0){var ai=B.expandPolygon(S,-U);Z=B.joinLines(ai)}else{Z=S}for(var aa=0;aa0){return true}if(B.finiteLinesIntersect(Y,X,ag,af,ad,K,ab,K,false).length>0){return true}if(B.finiteLinesIntersect(Y,X,ag,af,ad,N,ad,K,false).length>0){return true}if(B.finiteLinesIntersect(Y,X,ag,af,ab,N,ab,K,false).length>0){return true}}return false};z.prototype.polygonIntersectLine=function(N,M,H,K,I,Q,P,O){var Y=[];var L;var J=new Array(H.length); for(var U=0;U0){var X=B.expandPolygon(J,-O);T=B.joinLines(X)}else{T=J}var S,R,W,V;for(var U=0;UR)){R=Math.abs(P[2*K])}if(Math.abs(P[2*K+1]>Q)){Q=Math.abs(P[2*K+1])}}var M=0.0005;var O=Math.max(R,Q);for(var K=0;KM){P[2*K]*=(1/O);P[2*K+1]*=(1/O)}}return P};var B=c;q.ellipse={draw:function(H,K,J,I,i){q.ellipse.drawPath(H,K,J,I,i);H.fill()},drawPath:function(H,K,J,I,i){H.beginPath();H.translate(K,J);H.scale(I/2,i/2);H.arc(0,0,1,0,Math.PI*2*0.999,false);H.closePath();H.scale(2/I,2/i);H.translate(-K,-J)},intersectLine:function(L,K,J,I,H,N,M){var i=c.intersectLineEllipse(H,N,L,K,J/2+M,I/2+M); return i},intersectBox:function(I,N,i,L,H,O,K,J,M){return z.prototype.boxIntersectEllipse(I,N,i,L,M,H,O,K,J)},checkPointRough:function(H,M,L,I,i,K,J){return true},checkPoint:function(H,M,L,I,i,K,J){H-=K;M-=J;H/=(I/2+L);M/=(i/2+L);return(Math.pow(H,2)+Math.pow(M,2)<=1)}};q.triangle={points:k(3,0),draw:function(H,K,J,I,i){B.drawPolygon(H,K,J,I,i,q.triangle.points)},drawPath:function(H,K,J,I,i){B.drawPolygonPath(H,K,J,I,i,q.triangle.points)},intersectLine:function(K,J,I,H,i,M,L){return B.polygonIntersectLine(i,M,q.triangle.points,K,J,I/2,H/2,L) },intersectBox:function(I,N,i,L,H,P,K,J,M){var O=q.triangle.points;return B.boxIntersectPolygon(I,N,i,L,O,H,P,K,J,[0,-1],M)},checkPointRough:function(H,M,L,I,i,K,J){return B.checkInBoundingBox(H,M,q.triangle.points,L,I,i,K,J)},checkPoint:function(H,M,L,I,i,K,J){return B.pointInsidePolygon(H,M,q.triangle.points,K,J,I,i,[0,-1],L)}};q.square={points:k(4,0),draw:function(H,K,J,I,i){B.drawPolygon(H,K,J,I,i,q.square.points)},drawPath:function(H,K,J,I,i){B.drawPolygonPath(H,K,J,I,i,q.square.points)},intersectLine:function(K,J,I,H,i,M,L){return B.polygonIntersectLine(i,M,q.square.points,K,J,I/2,H/2,L) },intersectBox:function(I,N,i,L,H,P,K,J,M){var O=q.square.points;return B.boxIntersectPolygon(I,N,i,L,O,H,P,K,J,[0,-1],M)},checkPointRough:function(H,M,L,I,i,K,J){return B.checkInBoundingBox(H,M,q.square.points,L,I,i,K,J)},checkPoint:function(H,M,L,I,i,K,J){return B.pointInsidePolygon(H,M,q.square.points,K,J,I,i,[0,-1],L)}};q.rectangle=q.square;q.octogon={};q.roundrectangle={points:k(4,0),draw:function(H,K,J,I,i){B.drawRoundRectangle(H,K,J,I,i,10)},drawPath:function(H,K,J,I,i){B.drawRoundRectanglePath(H,K,J,I,i,10) },intersectLine:function(K,J,I,H,i,M,L){return B.roundRectangleIntersectLine(i,M,K,J,I,H,L)},intersectBox:function(I,N,i,L,H,O,K,J,M){return B.roundRectangleIntersectBox(I,N,i,L,H,O,K,J,M)},checkPointRough:function(H,M,L,I,i,K,J){return B.checkInBoundingBox(H,M,q.roundrectangle.points,L,I,i,K,J)},checkPoint:function(N,L,M,i,O,J,H){var K=B.getRoundRectangleRadius(i,O);if(B.pointInsidePolygon(N,L,q.roundrectangle.points,J,H,i,O-2*K,[0,-1],M)){return true}if(B.pointInsidePolygon(N,L,q.roundrectangle.points,J,H,i-2*K,O,[0,-1],M)){return true }var I=function(Q,V,U,S,R,P,T){Q-=U;V-=S;Q/=(R/2+T);V/=(P/2+T);return(Math.pow(Q,2)+Math.pow(V,2)<=1)};if(I(N,L,J-i/2+K,H-O/2+K,K*2,K*2,M)){return true}if(I(N,L,J+i/2-K,H-O/2+K,K*2,K*2,M)){return true}if(I(N,L,J+i/2-K,H+O/2-K,K*2,K*2,M)){return true}if(I(N,L,J-i/2+K,H+O/2-K,K*2,K*2,M)){return true}return false}};q.roundrectangle2={roundness:4.99,draw:function(I,H,i){if(H<=roundness*2){return}B.drawPolygon(I._private.position.x,I._private.position.y,H,i,nodeSapes.roundrectangle2.points)},intersectLine:function(J,I,H,i,K){return B.findPolygonIntersection(J,I,H,i,K,q.square.points) },intersectBox:function(I,N,i,L,H,P,K,J,M){var O=q.square.points}};q.pentagon={points:k(5,0),draw:function(H,K,J,I,i){B.drawPolygon(H,K,J,I,i,q.pentagon.points)},drawPath:function(H,K,J,I,i){B.drawPolygonPath(H,K,J,I,i,q.pentagon.points)},intersectLine:function(K,J,I,H,i,M,L){return B.polygonIntersectLine(i,M,q.pentagon.points,K,J,I/2,H/2,L)},intersectBox:function(I,N,i,L,H,P,K,J,M){var O=q.pentagon.points;return B.boxIntersectPolygon(I,N,i,L,O,H,P,K,J,[0,-1],M)},checkPointRough:function(H,M,L,I,i,K,J){return B.checkInBoundingBox(H,M,q.pentagon.points,L,I,i,K,J) },checkPoint:function(H,M,L,I,i,K,J){return B.pointInsidePolygon(H,M,q.pentagon.points,K,J,I,i,[0,-1],L)}};q.hexagon={points:k(6,0),draw:function(H,K,J,I,i){B.drawPolygon(H,K,J,I,i,q.hexagon.points)},drawPath:function(H,K,J,I,i){B.drawPolygonPath(H,K,J,I,i,q.hexagon.points)},intersectLine:function(K,J,I,H,i,M,L){return B.polygonIntersectLine(i,M,q.hexagon.points,K,J,I/2,H/2,L)},intersectBox:function(I,N,i,L,H,P,K,J,M){var O=q.hexagon.points;return B.boxIntersectPolygon(I,N,i,L,O,H,P,K,J,[0,-1],M) },checkPointRough:function(H,M,L,I,i,K,J){return B.checkInBoundingBox(H,M,q.hexagon.points,L,I,i,K,J)},checkPoint:function(H,M,L,I,i,K,J){return B.pointInsidePolygon(H,M,q.hexagon.points,K,J,I,i,[0,-1],L)}};q.heptagon={points:k(7,0),draw:function(H,K,J,I,i){B.drawPolygon(H,K,J,I,i,q.heptagon.points)},drawPath:function(H,K,J,I,i){B.drawPolygonPath(H,K,J,I,i,q.heptagon.points)},intersectLine:function(K,J,I,H,i,M,L){return B.polygonIntersectLine(i,M,q.heptagon.points,K,J,I/2,H/2,L)},intersectBox:function(I,N,i,L,H,P,K,J,M){var O=q.heptagon.points; return B.boxIntersectPolygon(I,N,i,L,O,H,P,K,J,[0,-1],M)},checkPointRough:function(H,M,L,I,i,K,J){return B.checkInBoundingBox(H,M,q.heptagon.points,L,I,i,K,J)},checkPoint:function(H,M,L,I,i,K,J){return B.pointInsidePolygon(H,M,q.heptagon.points,K,J,I,i,[0,-1],L)}};q.octagon={points:k(8,0),draw:function(H,K,J,I,i){B.drawPolygon(H,K,J,I,i,q.octagon.points)},drawPath:function(H,K,J,I,i){B.drawPolygonPath(H,K,J,I,i,q.octagon.points)},intersectLine:function(K,J,I,H,i,M,L){return B.polygonIntersectLine(i,M,q.octagon.points,K,J,I/2,H/2,L) },intersectBox:function(I,N,i,L,H,P,K,J,M){var O=q.octagon.points;return B.boxIntersectPolygon(I,N,i,L,O,H,P,K,J,[0,-1],M)},checkPointRough:function(H,M,L,I,i,K,J){return B.checkInBoundingBox(H,M,q.octagon.points,L,I,i,K,J)},checkPoint:function(H,M,L,I,i,K,J){return B.pointInsidePolygon(H,M,q.octagon.points,K,J,I,i,[0,-1],L)}};var j=new Array(20);var g=k(5,0);var F=k(5,Math.PI/5);var o=0.5*(3-Math.sqrt(5));o*=1.57;for(var E=0;E0){var ad=B.expandPolygon(O,-U);X=B.joinLines(ad)}else{X=O}var aa,L,Z,K;var I;var R=0;var T=0;for(var Y=0;Y=S&&S>=Z)||(aa<=S&&S<=Z)){I=(S-aa)/(Z-aa)*(K-L)+L;if(I>Q){R++}if(I0){return I}var ah=ap+U+ai;var af=am-K+ag-ai;var i=ah;var an=am+K-ag+ai;I=this.finiteLinesIntersect(ae,ad,ap,am,ah,af,i,an,false);if(I.length>0){return I}var ab=ap-U+ag-ai;var Z=am+K+ai;var S=ap+U-ag+ai;var R=Z;I=this.finiteLinesIntersect(ae,ad,ap,am,ab,Z,S,R,false);if(I.length>0){return I}var Y=ap-U-ai;var X=am-K+ag-ai;var W=Y;var V=am+K-ag+ai;I=this.finiteLinesIntersect(ae,ad,ap,am,Y,X,W,V,false);if(I.length>0){return I }var T;var Q=ap-U+ag;var P=am-K+ag;T=this.intersectLineCircle(ae,ad,ap,am,Q,P,ag+ai);if(T.length>0&&T[0]<=Q&&T[1]<=P){return[T[0],T[1]]}var M=ap+U-ag;var L=am-K+ag;T=this.intersectLineCircle(ae,ad,ap,am,M,L,ag+ai);if(T.length>0&&T[0]>=M&&T[1]<=L){return[T[0],T[1]]}var ao=ap+U-ag;var al=am+K-ag;T=this.intersectLineCircle(ae,ad,ap,am,ao,al,ag+ai);if(T.length>0&&T[0]>=ao&&T[1]>=al){return[T[0],T[1]]}var ac=ap-U+ag;var aa=am+K-ag;T=this.intersectLineCircle(ae,ad,ap,am,ac,aa,ag+ai);if(T.length>0&&T[0]<=ac&&T[1]>=aa){return[T[0],T[1]] }};z.prototype.roundRectangleIntersectBox=function(M,S,L,R,T,Q,O,N,P){var I=this.getRoundRectangleRadius(T,Q);var H=O-T/2-P;var i=N-Q/2+I-P;var V=O+T/2+P;var U=N+Q/2-I+P;var Y=O-T/2+I-P;var W=N-Q/2-P;var K=O+T/2-I+P;var J=N+Q/2+P;var ab=Math.min(M,L);var aa=Math.max(M,L);var Z=Math.min(S,R);var X=Math.max(S,R);if(aaV){return false}}if(XJ){return false}}if(H>=ab&&H<=aa&&i>=Z&&i<=X){return true}if(V>=ab&&V<=aa&&i>=Z&&i<=X){return true}if(V>=ab&&V<=aa&&U>=Z&&U<=X){return true }if(H>=ab&&H<=aa&&U>=Z&&U<=X){return true}if(ab>=H&&ab<=V&&Z>=i&&Z<=U){return true}if(aa>=H&&aa<=V&&Z>=i&&Z<=U){return true}if(aa>=H&&aa<=V&&X>=i&&X<=U){return true}if(ab>=H&&ab<=V&&X>=i&&X<=U){return true}if(Y>=ab&&Y<=aa&&W>=Z&&W<=X){return true}if(K>=ab&&K<=aa&&W>=Z&&W<=X){return true}if(K>=ab&&K<=aa&&J>=Z&&J<=X){return true}if(Y>=ab&&Y<=aa&&J>=Z&&J<=X){return true}if(ab>=Y&&ab<=K&&Z>=W&&Z<=J){return true}if(aa>=Y&&aa<=K&&Z>=W&&Z<=J){return true}if(aa>=Y&&aa<=K&&X>=W&&X<=J){return true}if(ab>=Y&&ab<=K&&X>=W&&X<=J){return true }if(this.boxIntersectEllipse(ab,Z,aa,X,P,I*2,I*2,Y+P,i+P)){return true}if(this.boxIntersectEllipse(ab,Z,aa,X,P,I*2,I*2,K-P,i+P)){return true}if(this.boxIntersectEllipse(ab,Z,aa,X,P,I*2,I*2,K-P,U-P)){return true}if(this.boxIntersectEllipse(ab,Z,aa,X,P,I*2,I*2,Y+P,U-P)){return true}return false};z.prototype.checkInBoundingCircle=function(H,N,I,M,J,i,L,K){H=(H-L)/(J+M);N=(N-K)/(i+M);return(H*H+N*N)<=I};z.prototype.checkInBoundingBox=function(R,P,S,Q,J,T,N,M){var L=S[0],K=S[1];var I=S[0],H=S[1];for(var O=1; OI){I=S[O*2]}}if(S[O*2+1]H){H=S[O*2+1]}}}R-=N;P-=M;R/=J;P/=T;if(RI){return false}}if(PH){return false}}return true};z.prototype.boxInBezierVicinity=function(T,N,Z,Q,V,M,U,L,R,J,S){var P=0.25*V+0.5*U+0.25*R;var O=0.25*M+0.5*L+0.25*J;var aa=Math.min(T,Z)-S;var X=Math.min(N,Q)-S;var Y=Math.max(T,Z)+S;var W=Math.max(N,Q)+S;if(V>=aa&&V<=Y&&M>=X&&M<=W){return 1}else{if(R>=aa&&R<=Y&&J>=X&&J<=W){return 1 }else{if(P>=aa&&P<=Y&&O>=X&&O<=W){return 1}else{if(U>=aa&&U<=Y&&L>=X&&L<=W){return 1}}}}var K=Math.min(V,P,R);var I=Math.min(M,O,J);var H=Math.max(V,P,R);var i=Math.max(M,O,J);if(K>Y||HW||i=ac&&W<=aa&&Math.min(K,H)<=Z&&Math.max(K,H)>=Y)}var i=(ac-Q)/L;if(i>0&&i<=1){X=I*i+P;if(X>=Z&&X<=Y){return true}}var N=(aa-Q)/L;if(N>0&&N<=1){X=I*N+P;if(X>=Z&&X<=Y){return true}}var J=(Z-P)/I;if(J>0&&J<=1){S=L*J+Q;if(S>=ac&&S<=aa){return true}}var M=(Y-P)/I; if(M>0&&M<=1){S=L*M+Q;if(S>=ac&&S<=aa){return true}}return false};z.prototype.checkBezierCrossesBox=function(Z,L,am,ab,T,aw,P,at,N,ap,H){var V=Math.min(Z,am)-H;var S=Math.min(L,ab)-H;var av=Math.max(Z,am)+H;var ar=Math.max(L,ab)+H;if(T>=V&&T<=av&&aw>=S&&aw<=ar){return true}else{if(N>=V&&N<=av&&ap>=S&&ap<=ar){return true}}var Y=T-2*P+N;var K=-2*T+2*P;var ai=T;var ac=[];if(Math.abs(Y)<0.0001){var an=(V-T)/K;var aa=(av-T)/K;ac.push(an,aa)}else{var af=K*K-4*Y*(ai-V);var W,U;if(af>0){var ag=Math.sqrt(af); W=(-K+ag)/(2*Y);U=(-K-ag)/(2*Y);ac.push(W,U)}var ae=K*K-4*Y*(ai-av);var R,O;if(ae>0){var ag=Math.sqrt(ae);R=(-K+ag)/(2*Y);O=(-K-ag)/(2*Y);ac.push(R,O)}}ac.sort(function(ay,ax){return ay-ax});var X=aw-2*at+ap;var I=-2*aw+2*at;var ah=aw;var al=[];if(Math.abs(X)<0.0001){var J=(S-aw)/I;var aj=(ar-aw)/I;al.push(J,aj)}else{var Q=I*I-4*X*(ah-S);var i,au;if(Q>0){var ag=Math.sqrt(Q);i=(-I+ag)/(2*X);au=(-I-ag)/(2*X);al.push(i,au)}var M=I*I-4*X*(ah-ar);var aq,ao;if(M>0){var ag=Math.sqrt(M);aq=(-I+ag)/(2*X); ao=(-I-ag)/(2*X);al.push(aq,ao)}}al.sort(function(ay,ax){return ay-ax});for(var ad=0;ad=0&&ac[ad]<=1&&ac[ad+1]>al[ak-1]&&al[ak-1]<=1&&ac[ad+1]>=0){return true}}}return false};z.prototype.inLineVicinity=function(Q,O,L,J,K,I,M){var R=M;var H=Math.min(L,K);var i=Math.max(L,K);var P=Math.min(J,I);var N=Math.max(J,I);return H-R<=Q&&Q<=i+R&&P-R<=O&&O<=N+R};z.prototype.inBezierVicinity=function(N,M,X,I,W,H,V,i,ac){var P=0.25*X+0.5*W+0.25*V; var O=0.25*I+0.5*H+0.25*i;var K={x1:Math.min(X,V,P),x2:Math.max(X,V,P),y1:Math.min(I,i,O),y2:Math.max(I,i,O)};if(NK.x2||MK.y2){return false}else{}var S,R,aa,Y;var L,J,Q;var ab=function(ae,ak,af,ad,aj,ai,ag,ah){L=(ai-ad)*(ae-af)+(af-aj)*(ak-ad);J=L*L;sideSquared=(ai-ad)*(ai-ad)+(af-aj)*(af-aj);if(ah){if(L>0){return false}}else{if(L<0){return false}}return(J/sideSquared>ag)};var U=(P+W)/2;var T=(O+H)/2;var Z=true;if(ab(U,T,X,I,W,H,0,Z)){Z=!Z}return(!ab(N,M,X,I,W,H,ac,Z)&&!ab(N,M,W,H,V,i,ac,Z)&&!ab(N,M,V,i,X,I,ac,Z)) };z.prototype.solveCubic=function(O,N,M,L,S){N/=O;M/=O;L/=O;var Q,H,i,J,R,P,I,K;H=(3*M-(N*N))/9;i=-(27*L)+N*(9*M-2*(N*N));i/=54;Q=H*H*H+i*i;S[1]=0;I=(N/3);if(Q>0){R=i+Math.sqrt(Q);R=((R<0)?-Math.pow(-R,(1/3)):Math.pow(R,(1/3)));P=i-Math.sqrt(Q);P=((P<0)?-Math.pow(-P,(1/3)):Math.pow(P,(1/3)));S[0]=-I+R+P;I+=(R+P)/2;S[4]=S[2]=-I;I=Math.sqrt(3)*(-P+R)/2;S[3]=I;S[5]=-I;return}S[5]=S[3]=0;if(Q==0){K=((i<0)?-Math.pow(-i,(1/3)):Math.pow(i,(1/3)));S[0]=-I+2*K;S[4]=S[2]=-(K+I);return}H=-H;J=H*H*H;J=Math.acos(i/Math.sqrt(J)); K=2*Math.sqrt(H);S[0]=-I+K*Math.cos(J/3);S[2]=-I+K*Math.cos((J+2*Math.PI)/3);S[4]=-I+K*Math.cos((J+4*Math.PI)/3);return};z.prototype.sqDistanceToQuadraticBezier=function(R,Q,W,L,V,K,U,J){var ac=1*W*W-4*W*V+2*W*U+4*V*V-4*V*U+U*U+L*L-4*L*K+2*L*J+4*K*K-4*K*J+J*J;var ab=1*9*W*V-3*W*W-3*W*U-6*V*V+3*V*U+9*L*K-3*L*L-3*L*J-6*K*K+3*K*J;var Z=1*3*W*W-6*W*V+W*U-W*R+2*V*V+2*V*R-U*R+3*L*L-6*L*K+L*J-L*Q+2*K*K+2*K*Q-J*Q;var Y=1*W*V-W*W+W*R-V*R+L*K-L*L+L*Q-K*Q;A("coefficients: "+ac/ac+", "+ab/ac+", "+Z/ac+", "+Y/ac); var M=[];this.solveCubic(ac,ab,Z,Y,M);var H=1e-7;var aa=[];for(var N=0;N<6;N+=2){if(Math.abs(M[N+1])=0&&M[N]<=1){aa.push(M[N])}}aa.push(1);aa.push(0);var I=-1;var X;var P,O,S;for(var T=0;T=0){if(SJ){return(O-i)*(O-i)+(L-M)*(L-M)}return(Q-K)};var A=function(){};w("renderer","canvas",z)})(cytoscape);(function(a){var b={ready:function(){},stop:function(){}};function c(d){this.options=a.util.extend(true,{},b,d)}c.prototype.run=function(){var d=this.options; var e=d.cy;e.nodes().positions(function(){return{x:0,y:0}});e.one("layoutready",d.ready);e.trigger("layoutready");e.one("layoutstop",d.stop);e.trigger("layoutstop")};c.prototype.stop=function(){var d=this.options;cy.one("layoutstop",d.stop);cy.trigger("layoutstop")};a("layout","null",c)})(cytoscape);(function(a){var c={ready:undefined,stop:undefined,fit:true,padding:30};function b(d){this.options=a.util.extend(true,{},c,d)}b.prototype.run=function(){var h=this.options;var j=h.cy;var g=j.nodes();var f=j.edges(); var e=j.container();var i=e.clientWidth;var d=e.clientHeight;g.positions(function(l,k){if(k.locked()){return false}return{x:Math.round(Math.random()*i),y:Math.round(Math.random()*d)}});j.one("layoutready",h.ready);j.trigger("layoutready");if(h.fit){j.fit(h.padding)}j.one("layoutstop",h.stop);j.trigger("layoutstop")};b.prototype.stop=function(){};a("layout","random",b)})(cytoscape);(function(a){var c={fit:true,rows:undefined,columns:undefined,ready:undefined,stop:undefined};function b(d){this.options=a.util.extend({},c,d) }b.prototype.run=function(){var z=this.options;var h=z;var g=z.cy;var u=g.nodes();var f=g.edges();var q=g.container();var t=q.clientWidth;var s=q.clientHeight;if(s==0||t==0){u.positions(function(){return{x:0,y:0}})}else{var i=u.size();var o=Math.sqrt(i*s/t);var m=Math.round(o);var p=Math.round(t/s*o);function l(B){if(B==undefined){return Math.min(m,p)}else{var A=Math.min(m,p);if(A==m){m=B}else{p=B}}}function e(B){if(B==undefined){return Math.max(m,p)}else{var A=Math.max(m,p);if(A==m){m=B}else{p=B }}}if(h.rows!=null&&h.columns!=null){m=h.rows;p=h.columns}else{if(h.rows!=null&&h.columns==null){m=h.rows;p=Math.ceil(i/m)}else{if(h.rows==null&&h.columns!=null){p=h.columns;m=Math.ceil(i/p)}else{if(p*m>i){var w=l();var r=e();if((w-1)*r>=i){l(w-1)}else{if((r-1)*w>=i){e(r-1)}}}else{while(p*m=i){e(r+1)}else{l(w+1)}}}}}}var v=t/p;var d=s/m;var k=0;var j=0;u.positions(function(C,B){if(B.locked()){return false}var A=j*v+v/2;var D=k*d+d/2;j++;if(j>=p){j=0;k++}return{x:A,y:D} })}if(z.fit){g.reset()}g.one("layoutready",z.ready);g.trigger("layoutready");g.one("layoutstop",z.stop);g.trigger("layoutstop")};b.prototype.stop=function(){};a("layout","grid",b)})(cytoscape);(function(a){var c={fit:true,ready:undefined,stop:undefined,positions:undefined,zoom:undefined,pan:undefined,padding:30};function b(d){this.options=a.util.extend(true,{},c,d)}b.prototype.run=function(){var g=this.options;var i=g.cy;var f=i.nodes();var e=i.edges();var d=i.container();function h(j){if(g.positions==null){return null }if(g.positions[j._private.data.id]==null){return null}return g.positions[j._private.data.id]}f.positions(function(k,l){var j=h(l);if(l.locked()||j==null){return false}return j});if(g.pan!=null){i.pan(g.pan)}if(g.zoom!=null){i.zoom(g.zoom)}i.one("layoutready",g.ready);i.trigger("layoutready");if(g.fit){i.fit(g.padding)}i.one("layoutstop",g.stop);i.trigger("layoutstop")};a("layout","preset",b);a("core","presetLayout",function(){var f=this;var d={};var e={};f.nodes().each(function(g,h){e[h.data("id")]=h.position() });d.positions=e;d.name="preset";d.zoom=f.zoom();d.pan=f.pan();return d})})(cytoscape);(function(a){var b={liveUpdate:true,ready:undefined,stop:undefined,maxSimulationTime:4000,fit:true,padding:[50,50,50,50],ungrabifyWhileSimulating:true,repulsion:undefined,stiffness:undefined,friction:undefined,gravity:true,fps:undefined,precision:undefined,nodeMass:undefined,edgeLength:undefined,stepSize:1,stableEnergy:function(d){var f=d;return(f.max<=0.5)||(f.mean<=0.3)}};function c(d){this.options=a.util.extend({},b,d) }c.prototype.run=function(){var k=this.options;var j=k.cy;var v=j.nodes();var i=j.edges();var q=j.container();var u=q.clientWidth;var s=q.clientHeight;if(j.nodes().size()<=1){if(k.fit){j.reset()}j.nodes().position({x:Math.round(u/2),y:Math.round(s/2)});j.one("layoutstop",k.stop);j.trigger("layoutstop");j.one("layoutstop",k.stop);j.trigger("layoutstop");return}var m=this.system=arbor.ParticleSystem(k.repulsion,k.stiffness,k.friction,k.gravity,k.fps,k.dt,k.precision);this.system=m;if(k.liveUpdate&&k.fit){j.reset() }var t=250;var g;var p=false;var f=+new Date;var r={init:function(z){},redraw:function(){var A=m.energy();if(k.stableEnergy!=null&&A!=null&&A.n>0&&k.stableEnergy(A)){m.stop();return}clearTimeout(g);g=setTimeout(w,t);var B=[];m.eachNode(function(H,C){var G=H.name;var E=H.data;var D=E.element;if(D==null){return}var F=D._private.position;if(!D.locked()&&!D.grabbed()){F.x=C.x;F.y=C.y;B.push(D)}});var z=(+new Date-f)>=16;if(k.liveUpdate&&B.length>0&&z){new a.Collection(j,B).rtrigger("position");f=+new Date }if(!p){p=true;j.one("layoutready",k.ready);j.trigger("layoutready")}}};m.renderer=r;m.screenSize(u,s);m.screenPadding(k.padding[0],k.padding[1],k.padding[2],k.padding[3]);m.screenStep(k.stepSize);function o(z,A){if(A==null){return undefined}else{if(typeof A==typeof function(){}){return A.apply(z,[z._private.data,{nodes:v.length,edges:i.length,element:z}])}else{return A}}}function d(D){var G=D.x;var E=D.y;var H=u;var B=s;var A=-2;var I=2;var F=-2;var z=2;var C=4;return{x:G/H*C+A,y:E/B*C+I}}var l=function(A){grabbed=this; var B=m.fromScreen(this.position());var z=arbor.Point(B.x,B.y);this.scratch().arbor.p=z;switch(A.type){case"grab":this.scratch().arbor.fixed=true;break;case"dragstop":this.scratch().arbor.fixed=false;this.scratch().arbor.tempMass=1000;break}};v.bind("grab drag dragstop",l);v.each(function(B,C){var E=this._private.data.id;var A=o(this,k.nodeMass);var z=this._private.locked;var D=d({x:C.position().x,y:C.position().y});if(C.locked()){return}this.scratch().arbor=m.addNode(E,{element:this,mass:A,fixed:z,x:z?D.x:undefined,y:z?D.y:undefined}) });i.each(function(){var C=this.id();var A=this.source().id();var B=this.target().id();var z=o(this,k.edgeLength);this.scratch().arbor=m.addEdge(A,B,{length:z})});function h(z){if(k.fit){j.fit()}z()}var e=v.filter(":grabbable");if(k.ungrabifyWhileSimulating){e.ungrabify()}var w=function(){if(window.isIE){h(function(){z()})}else{z()}function z(){if(!k.liveUpdate){if(k.fit){j.reset()}j.nodes().rtrigger("position")}v.unbind("grab drag dragstop",l);if(k.ungrabifyWhileSimulating){e.grabify()}j.one("layoutstop",k.stop); j.trigger("layoutstop")}};m.start();setTimeout(function(){m.stop()},k.maxSimulationTime)};c.prototype.stop=function(){if(this.system!=null){system.stop()}};a("layout","arbor",c)})(cytoscape);(function(a){var c={fit:true,ready:undefined,stop:undefined,rStepSize:10,padding:30,startAngle:3/2*Math.PI,counterclockwise:false};function b(d){this.options=a.util.extend({},c,d)}b.prototype.run=function(){var o=this.options;var w=o;var m=o.cy;var f=m.nodes();var p=m.edges();var g=m.container();var h=g.clientWidth; var v=g.clientHeight;var e={x:h/2,y:v/2};var u=50;var j=w.startAngle;var s=2*Math.PI/f.length;var t=0;for(var q=0;qh||Q===0){S+=R/W;T++}}T=Math.max(1,T);S=S/T;if(T===0){S=undefined }e[Y.id()]=S;return S}for(var t=0;t<3;t++){for(var J=0;J0&&q[0].length<=3?S/2:0);var h=2*Math.PI/q[w].length*Q; if(w===0&&q[0].length===1){R=1}return{x:O.x+R*Math.cos(h),y:O.y+R*Math.sin(h)}}else{return{x:(Q+1)*U,y:(w+1)*T}}});if(N.fit){j.fit(m.padding)}j.one("layoutready",N.ready);j.trigger("layoutready");j.one("layoutstop",N.stop);j.trigger("layoutstop")};c.prototype.stop=function(){};a("layout","breadthfirst",c)})(cytoscape);