( function ( ) { function t ( e , t ) { return ( new Date ( t , e + 1 , 0 ) ) . getDate ( ) } function n ( e , t , n ) { return function ( r , i , s ) { var o = e ( r ) , u = [ ] ; o < r && t ( o ) ; if ( s > 1 ) while ( o < i ) { var a = new Date ( + o ) ; n ( a ) % s === 0 && u . push ( a ) , t ( o ) } else while ( o < i ) u . push ( new Date ( + o ) ) , t ( o ) ; return u } } var e = window . nv || { } ; e . version = "1.1.14b" , e . dev = ! 0 , window . nv = e , e . tooltip = e . tooltip || { } , e . utils = e . utils || { } , e . models = e . models || { } , e . charts = { } , e . graphs = [ ] , e . logs = { } , e . dispatch = d3 . dispatch ( "render_start" , "render_end" ) , e . dev && ( e . dispatch . on ( "render_start" , function ( t ) { e . logs . startTime = + ( new Date ) } ) , e . dispatch . on ( "render_end" , function ( t ) { e . logs . endTime = + ( new Date ) , e . logs . totalTime = e . logs . endTime - e . logs . startTime , e . log ( "total" , e . logs . totalTime ) } ) ) , e . log = function ( ) { if ( e . dev && console . log && console . log . apply ) console . log . apply ( console , arguments ) ; else if ( e . dev && typeof console . log == "function" && Function . prototype . bind ) { var t = Function . prototype . bind . call ( console . log , console ) ; t . apply ( console , arguments ) } return arguments [ arguments . length - 1 ] } , e . render = function ( n ) { n = n || 1 , e . render . active = ! 0 , e . dispatch . render _start ( ) , setTimeout ( function ( ) { var t , r ; for ( var i = 0 ; i < n && ( r = e . render . queue [ i ] ) ; i ++ ) t = r . generate ( ) , typeof r . callback == typeof Function && r . callback ( t ) , e . graphs . push ( t ) ; e . render . queue . splice ( 0 , i ) , e . render . queue . length ? setTimeout ( arguments . callee , 0 ) : ( e . dispatch . render _end ( ) , e . render . active = ! 1 ) } , 0 ) } , e . render . active = ! 1 , e . render . queue = [ ] , e . addGraph = function ( t ) { typeof arguments [ 0 ] == typeof Function && ( t = { generate : arguments [ 0 ] , callback : arguments [ 1 ] } ) , e . render . queue . push ( t ) , e . render . active || e . render ( ) } , e . identity = function ( e ) { return e } , e . strip = function ( e ) { return e . replace ( /(\s|&)/g , "" ) } , d3 . time . monthEnd = function ( e ) { return new Date ( e . getFullYear ( ) , e . getMonth ( ) , 0 ) } , d3 . time . monthEnds = n ( d3 . time . monthEnd , function ( e ) { e . setUTCDate ( e . getUTCDate ( ) + 1 ) , e . setDate ( t ( e . getMonth ( ) + 1 , e . getFullYear ( ) ) ) } , function ( e ) { return e . getMonth ( ) } ) , e . interactiveGuideline = function ( ) { "use strict" ; function c ( o ) { o . each ( function ( o ) { function g ( ) { var e = d3 . mouse ( this ) , n = e [ 0 ] , r = e [ 1 ] , o = ! 0 , a = ! 1 ; l && ( n = d3 . event . offsetX , r = d3 . event . offsetY , d3 . event . target . tagName !== "svg" && ( o = ! 1 ) , d3 . event . target . className . baseVal . match ( "nv-legend" ) && ( a = ! 0 ) ) , o && ( n -= i . left , r -= i . top ) ; if ( n < 0 || r < 0 || n > p || r > d || d3 . event . relatedTarget && d3 . event . relatedTarget . ownerSVGElement === undefined || a ) { if ( l && d3 . event . relatedTarget && d3 . event . relatedTarget . ownerSVGElement === undefined && d3 . event . relatedTarget . className . match ( t . nvPointerEventsClass ) ) return ; u . elementMouseout ( { mouseX : n , mouseY : r } ) , c . renderGuideLine ( null ) ; return } var f = s . invert ( n ) ; u . elementMousemove ( { mouseX : n , mouseY : r , pointXValue : f } ) , d3 . event . type === "dblclick" && u . elementDblclick ( { mouseX : n , mouseY : r , pointXValue : f } ) } var h = d3 . select ( this ) , p = n || 960 , d = r || 400 , v = h . selectAll ( "g.nv-wrap.nv-interactiveLineLayer" ) . data ( [ o ] ) , m = v . enter ( ) . append ( "g" ) . attr ( "class" , " nv-wrap nv-interactiveLineLayer" ) ; m . append ( "g" ) . attr ( "class" , "nv-interactiveGuideLine" ) ; if ( ! f ) return ; f . on ( "mousemove" , g , ! 0 ) . on ( "mouseout" , g , ! 0 ) . on ( "dblclick" , g ) , c . renderGuideLine = function ( t ) { if ( ! a ) return ; var n = v . select ( ".nv-interactiveGuideLine" ) . selectAll ( "line" ) . data ( t != null ? [ e . utils . NaNtoZero ( t ) ] : [ ] , String ) ; n . enter ( ) . append ( "line" ) . attr ( "class" , "nv-guideline" ) . attr ( "x1" , function ( e ) { return e } ) . attr ( "x2" , function ( e ) { return e } ) . attr ( "y1" , d ) . attr ( "y2" , 0 ) , n . exit ( ) . remove ( ) } } ) } var t = e . models . tooltip ( ) , n = null , r = null , i = { left : 0 , top : 0 } , s = d3 . scale . linear ( ) , o = d3 . scale . linear ( ) , u = d3 . dispatch ( "elementMousemove" , "elementMouseout" , "elementDblclick" ) , a = ! 0 , f = null , l = navigator . userAgent . indexOf ( "MSIE" ) !== - 1 ; return c . dispatch = u , c . tooltip = t , c . margin = function ( e ) { return arguments . length ? ( i . top = typeof e . top != "undefined" ? e . top : i . top , i . left = typeof e . left != "undefined" ? e . left : i . left , c ) : i } , c . width = function ( e ) { return arguments . length ? ( n = e , c ) : n } , c . height = function ( e ) { return arguments . length ? ( r = e , c ) : r } , c . xScale = function ( e ) { return arguments . length ? ( s = e , c ) : s } , c . showGuideLine = function ( e ) { return arguments . length ? ( a = e , c ) : a } , c . svgContainer = function ( e ) { return arguments . length ? ( f = e , c ) : f } , c } , e . interactiveBisect = function ( e , t , n ) { "use strict" ; if ( ! e instanceof Array ) return null ; typeof n != "function" && ( n = function ( e , t ) { return e . x } ) ; var r = d
e . models . line ( ) , n = e . models . axis ( ) , r = e . models . axis ( ) , i = e . models . legend ( ) , s = e . models . legend ( ) , o = e . interactiveGuideline ( ) , u = { top : 30 , right : 30 , bottom : 50 , left : 60 } , a = e . utils . defaultColor ( ) , f = null , l = null , c = ! 0 , h = ! 0 , p = ! 0 , d = ! 1 , v = ! 0 , m = ! 0 , g = ! 1 , y = ! 0 , b = function ( e , t , n , r , i ) { return "<h3>" + e + "</h3>" + "<p>" + n + " at " + t + "</p>" } , w , E , S = t . id ( ) , x = { index : 0 , rescaleY : y } , T = null , N = "No Data Available." , C = function ( e ) { return e . average } , k = d3 . dispatch ( "tooltipShow" , "tooltipHide" , "stateChange" , "changeState" ) , L = 250 ; n . orient ( "bottom" ) . tickPadding ( 7 ) , r . orient ( d ? "right" : "left" ) , s . updateState ( ! 1 ) ; var A = d3 . scale . linear ( ) , O = { i : 0 , x : 0 } , M = function ( i , s ) { var o = i . pos [ 0 ] + ( s . offsetLeft || 0 ) , u = i . pos [ 1 ] + ( s . offsetTop || 0 ) , a = n . tickFormat ( ) ( t . x ( ) ( i . point , i . pointIndex ) ) , f = r . tickFormat ( ) ( t . y ( ) ( i . point , i . pointIndex ) ) , l = b ( i . series . key , a , f , i , _ ) ; e . tooltip . show ( [ o , u ] , l , null , null , s ) } ; return t . dispatch . on ( "elementMouseover.tooltip" , function ( e ) { e . pos = [ e . pos [ 0 ] + u . left , e . pos [ 1 ] + u . top ] , k . tooltipShow ( e ) } ) , t . dispatch . on ( "elementMouseout.tooltip" , function ( e ) { k . tooltipHide ( e ) } ) , k . on ( "tooltipHide" , function ( ) { v && e . tooltip . cleanup ( ) } ) , _ . dispatch = k , _ . lines = t , _ . legend = i , _ . xAxis = n , _ . yAxis = r , _ . interactiveLayer = o , d3 . rebind ( _ , t , "defined" , "isArea" , "x" , "y" , "xScale" , "yScale" , "size" , "xDomain" , "yDomain" , "xRange" , "yRange" , "forceX" , "forceY" , "interactive" , "clipEdge" , "clipVoronoi" , "useVoronoi" , "id" ) , _ . options = e . utils . optionsFunc . bind ( _ ) , _ . margin = function ( e ) { return arguments . length ? ( u . top = typeof e . top != "undefined" ? e . top : u . top , u . right = typeof e . right != "undefined" ? e . right : u . right , u . bottom = typeof e . bottom != "undefined" ? e . bottom : u . bottom , u . left = typeof e . left != "undefined" ? e . left : u . left , _ ) : u } , _ . width = function ( e ) { return arguments . length ? ( f = e , _ ) : f } , _ . height = function ( e ) { return arguments . length ? ( l = e , _ ) : l } , _ . color = function ( t ) { return arguments . length ? ( a = e . utils . getColor ( t ) , i . color ( a ) , _ ) : a } , _ . rescaleY = function ( e ) { return arguments . length ? ( y = e , _ ) : y } , _ . showControls = function ( e ) { return arguments . length ? ( m = e , _ ) : m } , _ . useInteractiveGuideline = function ( e ) { return arguments . length ? ( g = e , e === ! 0 && ( _ . interactive ( ! 1 ) , _ . useVoronoi ( ! 1 ) ) , _ ) : g } , _ . showLegend = function ( e ) { return arguments . length ? ( c = e , _ ) : c } , _ . showXAxis = function ( e ) { return arguments . length ? ( h = e , _ ) : h } , _ . showYAxis = function ( e ) { return arguments . length ? ( p = e , _ ) : p } , _ . rightAlignYAxis = function ( e ) { return arguments . length ? ( d = e , r . orient ( e ? "right" : "left" ) , _ ) : d } , _ . tooltips = function ( e ) { return arguments . length ? ( v = e , _ ) : v } , _ . tooltipContent = function ( e ) { return arguments . length ? ( b = e , _ ) : b } , _ . state = function ( e ) { return arguments . length ? ( x = e , _ ) : x } , _ . defaultState = function ( e ) { return arguments . length ? ( T = e , _ ) : T } , _ . noData = function ( e ) { return arguments . length ? ( N = e , _ ) : N } , _ . average = function ( e ) { return arguments . length ? ( C = e , _ ) : C } , _ . transitionDuration = function ( e ) { return arguments . length ? ( L = e , _ ) : L } , _ } , e . models . discreteBar = function ( ) { "use strict" ; function E ( e ) { return e . each ( function ( e ) { var i = n - t . left - t . right , E = r - t . top - t . bottom , S = d3 . select ( this ) ; e . forEach ( function ( e , t ) { e . values . forEach ( function ( e ) { e . series = t } ) } ) ; var T = p && d ? [ ] : e . map ( function ( e ) { return e . values . map ( function ( e , t ) { return { x : u ( e , t ) , y : a ( e , t ) , y0 : e . y0 } } ) } ) ; s . domain ( p || d3 . merge ( T ) . map ( function ( e ) { return e . x } ) ) . rangeBands ( v || [ 0 , i ] , . 1 ) , o . domain ( d || d3 . extent ( d3 . merge ( T ) . map ( function ( e ) { return e . y } ) . concat ( f ) ) ) , c ? o . range ( m || [ E - ( o . domain ( ) [ 0 ] < 0 ? 12 : 0 ) , o . domain ( ) [ 1 ] > 0 ? 12 : 0 ] ) : o . range ( m || [ E , 0 ] ) , b = b || s , w = w || o . copy ( ) . range ( [ o ( 0 ) , o ( 0 ) ] ) ; var N = S . selectAll ( "g.nv-wrap.nv-discretebar" ) . data ( [ e ] ) , C = N . enter ( ) . append ( "g" ) . attr ( "class" , "nvd3 nv-wrap nv-discretebar" ) , k = C . append ( "g" ) , L = N . select ( "g" ) ; k . append ( "g" ) . attr ( "class" , "nv-groups" ) , N . attr ( "transform" , "translate(" + t . left + "," + t . top + ")" ) ; var A = N . select ( ".nv-groups" ) . selectAll ( ".nv-group" ) . data ( function ( e ) { return e } , function ( e ) { return e . key } ) ; A . enter ( ) . append ( "g" ) . style ( "stroke-opacity" , 1e-6 ) . style ( "fill-opacity" , 1e-6 ) , A . exit ( ) . transition ( ) . style ( "stroke-opacity" , 1e-6 ) . style ( "fill-opacity" , 1e-6 ) . remove ( ) , A . attr ( "class" , function ( e , t ) { return "nv-group nv-series-" + t } ) . classed ( "hover" , function ( e ) { return e . hover } ) , A . transition ( ) . style ( "stroke-opacity" , 1 ) . style ( "fill-opacity" , . 75 ) ; var O = A . selectAll ( "g.nv-bar" ) . data ( function ( e ) { return e . values } ) ; O . e
( p ) . defined ( a ) . x ( function ( t , n ) { return e . utils . NaNtoZero ( c ( o ( t , n ) ) ) } ) . y0 ( function ( t , n ) { return e . utils . NaNtoZero ( h ( u ( t , n ) ) ) } ) . y1 ( function ( e , t ) { return h ( h . domain ( ) [ 0 ] <= 0 ? h . domain ( ) [ 1 ] >= 0 ? 0 : h . domain ( ) [ 1 ] : h . domain ( ) [ 0 ] ) } ) . apply ( this , [ t . values ] ) } ) ; var O = L . selectAll ( "path.nv-line" ) . data ( function ( e ) { return [ e . values ] } ) ; O . enter ( ) . append ( "path" ) . attr ( "class" , "nv-line" ) . attr ( "d" , d3 . svg . line ( ) . interpolate ( p ) . defined ( a ) . x ( function ( t , n ) { return e . utils . NaNtoZero ( d ( o ( t , n ) ) ) } ) . y ( function ( t , n ) { return e . utils . NaNtoZero ( v ( u ( t , n ) ) ) } ) ) , O . transition ( ) . attr ( "d" , d3 . svg . line ( ) . interpolate ( p ) . defined ( a ) . x ( function ( t , n ) { return e . utils . NaNtoZero ( c ( o ( t , n ) ) ) } ) . y ( function ( t , n ) { return e . utils . NaNtoZero ( h ( u ( t , n ) ) ) } ) ) , d = c . copy ( ) , v = h . copy ( ) } ) , m } var t = e . models . scatter ( ) , n = { top : 0 , right : 0 , bottom : 0 , left : 0 } , r = 960 , i = 500 , s = e . utils . defaultColor ( ) , o = function ( e ) { return e . x } , u = function ( e ) { return e . y } , a = function ( e , t ) { return ! isNaN ( u ( e , t ) ) && u ( e , t ) !== null } , f = function ( e ) { return e . area } , l = ! 1 , c , h , p = "linear" ; t . size ( 16 ) . sizeDomain ( [ 16 , 256 ] ) ; var d , v ; return m . dispatch = t . dispatch , m . scatter = t , d3 . rebind ( m , t , "id" , "interactive" , "size" , "xScale" , "yScale" , "zScale" , "xDomain" , "yDomain" , "xRange" , "yRange" , "sizeDomain" , "forceX" , "forceY" , "forceSize" , "clipVoronoi" , "useVoronoi" , "clipRadius" , "padData" , "highlightPoint" , "clearHighlights" ) , m . options = e . utils . optionsFunc . bind ( m ) , m . margin = function ( e ) { return arguments . length ? ( n . top = typeof e . top != "undefined" ? e . top : n . top , n . right = typeof e . right != "undefined" ? e . right : n . right , n . bottom = typeof e . bottom != "undefined" ? e . bottom : n . bottom , n . left = typeof e . left != "undefined" ? e . left : n . left , m ) : n } , m . width = function ( e ) { return arguments . length ? ( r = e , m ) : r } , m . height = function ( e ) { return arguments . length ? ( i = e , m ) : i } , m . x = function ( e ) { return arguments . length ? ( o = e , t . x ( e ) , m ) : o } , m . y = function ( e ) { return arguments . length ? ( u = e , t . y ( e ) , m ) : u } , m . clipEdge = function ( e ) { return arguments . length ? ( l = e , m ) : l } , m . color = function ( n ) { return arguments . length ? ( s = e . utils . getColor ( n ) , t . color ( s ) , m ) : s } , m . interpolate = function ( e ) { return arguments . length ? ( p = e , m ) : p } , m . defined = function ( e ) { return arguments . length ? ( a = e , m ) : a } , m . isArea = function ( e ) { return arguments . length ? ( f = d3 . functor ( e ) , m ) : f } , m } , e . models . lineChart = function ( ) { "use strict" ; function N ( m ) { return m . each ( function ( m ) { var C = d3 . select ( this ) , k = this , L = ( a || parseInt ( C . style ( "width" ) ) || 960 ) - o . left - o . right , A = ( f || parseInt ( C . style ( "height" ) ) || 400 ) - o . top - o . bottom ; N . update = function ( ) { C . transition ( ) . duration ( x ) . call ( N ) } , N . container = this , b . disabled = m . map ( function ( e ) { return ! ! e . disabled } ) ; if ( ! w ) { var O ; w = { } ; for ( O in b ) b [ O ] instanceof Array ? w [ O ] = b [ O ] . slice ( 0 ) : w [ O ] = b [ O ] } if ( ! m || ! m . length || ! m . filter ( function ( e ) { return e . values . length } ) . length ) { var M = C . selectAll ( ".nv-noData" ) . data ( [ E ] ) ; return M . enter ( ) . append ( "text" ) . attr ( "class" , "nvd3 nv-noData" ) . attr ( "dy" , "-.7em" ) . style ( "text-anchor" , "middle" ) , M . attr ( "x" , o . left + L / 2 ) . attr ( "y" , o . top + A / 2 ) . text ( function ( e ) { return e } ) , N } C . selectAll ( ".nv-noData" ) . remove ( ) , g = t . xScale ( ) , y = t . yScale ( ) ; var _ = C . selectAll ( "g.nv-wrap.nv-lineChart" ) . data ( [ m ] ) , D = _ . enter ( ) . append ( "g" ) . attr ( "class" , "nvd3 nv-wrap nv-lineChart" ) . append ( "g" ) , P = _ . select ( "g" ) ; D . append ( "rect" ) . style ( "opacity" , 0 ) , D . append ( "g" ) . attr ( "class" , "nv-x nv-axis" ) , D . append ( "g" ) . attr ( "class" , "nv-y nv-axis" ) , D . append ( "g" ) . attr ( "class" , "nv-linesWrap" ) , D . append ( "g" ) . attr ( "class" , "nv-legendWrap" ) , D . append ( "g" ) . attr ( "class" , "nv-interactive" ) , P . select ( "rect" ) . attr ( "width" , L ) . attr ( "height" , A ) , l && ( i . width ( L ) , P . select ( ".nv-legendWrap" ) . datum ( m ) . call ( i ) , o . top != i . height ( ) && ( o . top = i . height ( ) , A = ( f || parseInt ( C . style ( "height" ) ) || 400 ) - o . top - o . bottom ) , _ . select ( ".nv-legendWrap" ) . attr ( "transform" , "translate(0," + - o . top + ")" ) ) , _ . attr ( "transform" , "translate(" + o . left + "," + o . top + ")" ) , p && P . select ( ".nv-y.nv-axis" ) . attr ( "transform" , "translate(" + L + ",0)" ) , d && ( s . width ( L ) . height ( A ) . margin ( { left : o . left , top : o . top } ) . svgContainer ( C ) . xScale ( g ) , _ . select ( ".nv-interactive" ) . call ( s ) ) , t . width ( L ) . height ( A ) . color ( m . map ( function ( e , t ) { return e . color || u ( e , t ) } ) . filter ( function ( e , t ) { return ! m [ t ] . disabled } ) ) ; var H = P . select ( ".nv-linesWrap" ) . datum ( m . filter ( function ( e ) { return ! e . disabled } ) ) ; H . transition ( ) . call ( t ) , c && ( n . scale ( g ) . ticks ( L / 100 ) . tickSize ( - A , 0
} ) , B . attr ( "class" , function ( e , t ) { return a ( e , t ) < 0 ? "nv-bar negative" : "nv-bar positive" } ) . transition ( ) . attr ( "transform" , function ( e , t ) { return "translate(" + i ( u ( e , t ) ) + ",0)" } ) , v && ( m || ( m = e . map ( function ( ) { return ! 0 } ) ) , B . style ( "fill" , function ( e , t , n ) { return d3 . rgb ( v ( e , t ) ) . darker ( m . map ( function ( e , t ) { return t } ) . filter ( function ( e , t ) { return ! m [ t ] } ) [ n ] ) . toString ( ) } ) . style ( "stroke" , function ( e , t , n ) { return d3 . rgb ( v ( e , t ) ) . darker ( m . map ( function ( e , t ) { return t } ) . filter ( function ( e , t ) { return ! m [ t ] } ) [ n ] ) . toString ( ) } ) ) , c ? B . transition ( ) . delay ( function ( t , n ) { return n * g / e [ 0 ] . values . length } ) . attr ( "y" , function ( e , t ) { return s ( c ? e . y1 : 0 ) } ) . attr ( "height" , function ( e , t ) { return Math . max ( Math . abs ( s ( e . y + ( c ? e . y0 : 0 ) ) - s ( c ? e . y0 : 0 ) ) , 1 ) } ) . attr ( "x" , function ( t , n ) { return c ? 0 : t . series * i . rangeBand ( ) / e . length } ) . attr ( "width" , i . rangeBand ( ) / ( c ? 1 : e . length ) ) : B . transition ( ) . delay ( function ( t , n ) { return n * g / e [ 0 ] . values . length } ) . attr ( "x" , function ( t , n ) { return t . series * i . rangeBand ( ) / e . length } ) . attr ( "width" , i . rangeBand ( ) / e . length ) . attr ( "y" , function ( e , t ) { return a ( e , t ) < 0 ? s ( 0 ) : s ( 0 ) - s ( a ( e , t ) ) < 1 ? s ( 0 ) - 1 : s ( a ( e , t ) ) || 0 } ) . attr ( "height" , function ( e , t ) { return Math . max ( Math . abs ( s ( a ( e , t ) ) - s ( 0 ) ) , 1 ) || 0 } ) , T = i . copy ( ) , N = s . copy ( ) } ) , C } var t = { top : 0 , right : 0 , bottom : 0 , left : 0 } , n = 960 , r = 500 , i = d3 . scale . ordinal ( ) , s = d3 . scale . linear ( ) , o = Math . floor ( Math . random ( ) * 1e4 ) , u = function ( e ) { return e . x } , a = function ( e ) { return e . y } , f = [ 0 ] , l = ! 0 , c = ! 1 , h = "zero" , p = e . utils . defaultColor ( ) , d = ! 1 , v = null , m , g = 1200 , y , b , w , E , S = . 1 , x = d3 . dispatch ( "chartClick" , "elementClick" , "elementDblClick" , "elementMouseover" , "elementMouseout" ) , T , N ; return C . dispatch = x , C . options = e . utils . optionsFunc . bind ( C ) , C . x = function ( e ) { return arguments . length ? ( u = e , C ) : u } , C . y = function ( e ) { return arguments . length ? ( a = e , C ) : a } , C . margin = function ( e ) { return arguments . length ? ( t . top = typeof e . top != "undefined" ? e . top : t . top , t . right = typeof e . right != "undefined" ? e . right : t . right , t . bottom = typeof e . bottom != "undefined" ? e . bottom : t . bottom , t . left = typeof e . left != "undefined" ? e . left : t . left , C ) : t } , C . width = function ( e ) { return arguments . length ? ( n = e , C ) : n } , C . height = function ( e ) { return arguments . length ? ( r = e , C ) : r } , C . xScale = function ( e ) { return arguments . length ? ( i = e , C ) : i } , C . yScale = function ( e ) { return arguments . length ? ( s = e , C ) : s } , C . xDomain = function ( e ) { return arguments . length ? ( y = e , C ) : y } , C . yDomain = function ( e ) { return arguments . length ? ( b = e , C ) : b } , C . xRange = function ( e ) { return arguments . length ? ( w = e , C ) : w } , C . yRange = function ( e ) { return arguments . length ? ( E = e , C ) : E } , C . forceY = function ( e ) { return arguments . length ? ( f = e , C ) : f } , C . stacked = function ( e ) { return arguments . length ? ( c = e , C ) : c } , C . stackOffset = function ( e ) { return arguments . length ? ( h = e , C ) : h } , C . clipEdge = function ( e ) { return arguments . length ? ( l = e , C ) : l } , C . color = function ( t ) { return arguments . length ? ( p = e . utils . getColor ( t ) , C ) : p } , C . barColor = function ( t ) { return arguments . length ? ( v = e . utils . getColor ( t ) , C ) : v } , C . disabled = function ( e ) { return arguments . length ? ( m = e , C ) : m } , C . id = function ( e ) { return arguments . length ? ( o = e , C ) : o } , C . hideable = function ( e ) { return arguments . length ? ( d = e , C ) : d } , C . delay = function ( e ) { return arguments . length ? ( g = e , C ) : g } , C . groupSpacing = function ( e ) { return arguments . length ? ( S = e , C ) : S } , C } , e . models . multiBarChart = function ( ) { "use strict" ; function A ( e ) { return e . each ( function ( e ) { var b = d3 . select ( this ) , O = this , M = ( u || parseInt ( b . style ( "width" ) ) || 960 ) - o . left - o . right , _ = ( a || parseInt ( b . style ( "height" ) ) || 400 ) - o . top - o . bottom ; A . update = function ( ) { b . transition ( ) . duration ( k ) . call ( A ) } , A . container = this , S . disabled = e . map ( function ( e ) { return ! ! e . disabled } ) ; if ( ! x ) { var D ; x = { } ; for ( D in S ) S [ D ] instanceof Array ? x [ D ] = S [ D ] . slice ( 0 ) : x [ D ] = S [ D ] } if ( ! e || ! e . length || ! e . filter ( function ( e ) { return e . values . length } ) . length ) { var P = b . selectAll ( ".nv-noData" ) . data ( [ T ] ) ; return P . enter ( ) . append ( "text" ) . attr ( "class" , "nvd3 nv-noData" ) . attr ( "dy" , "-.7em" ) . style ( "text-anchor" , "middle" ) , P . attr ( "x" , o . left + M / 2 ) . attr ( "y" , o . top + _ / 2 ) . text ( function ( e ) { return e } ) , A } b . selectAll ( ".nv-noData" ) . remove ( ) , w = t . xScale ( ) , E = t . yScale ( ) ; var H = b . selectAll ( "g.nv-wrap.nv-multiBarWithLegend" ) . data ( [ e ] ) , B = H . enter ( ) . append ( "g" ) . attr ( "class" , "nvd3 nv-wrap nv-multiBarWithLegend" ) . append ( "g" ) , j = H . select ( "g" ) ; B . append ( "g" ) . attr ( "class" , "nv-x nv-axis" ) , B . append ( "g" ) . attr ( "class" , "nv-y nv-axis" ) , B . ap
. length ? ( n = e , x ) : n } , x . height = function ( e ) { return arguments . length ? ( r = e , x ) : r } , x . xScale = function ( e ) { return arguments . length ? ( s = e , x ) : s } , x . yScale = function ( e ) { return arguments . length ? ( o = e , x ) : o } , x . xDomain = function ( e ) { return arguments . length ? ( y = e , x ) : y } , x . yDomain = function ( e ) { return arguments . length ? ( b = e , x ) : b } , x . xRange = function ( e ) { return arguments . length ? ( w = e , x ) : w } , x . yRange = function ( e ) { return arguments . length ? ( E = e , x ) : E } , x . forceX = function ( e ) { return arguments . length ? ( p = e , x ) : p } , x . forceY = function ( e ) { return arguments . length ? ( d = e , x ) : d } , x . padData = function ( e ) { return arguments . length ? ( v = e , x ) : v } , x . clipEdge = function ( e ) { return arguments . length ? ( m = e , x ) : m } , x . color = function ( t ) { return arguments . length ? ( g = e . utils . getColor ( t ) , x ) : g } , x . id = function ( e ) { return arguments . length ? ( i = e , x ) : i } , x } , e . models . pie = function ( ) { "use strict" ; function E ( e ) { return e . each ( function ( e ) { function P ( e ) { var t = ( e . startAngle + e . endAngle ) * 90 / Math . PI - 90 ; return t > 90 ? t - 180 : t } function H ( e ) { e . endAngle = isNaN ( e . endAngle ) ? 0 : e . endAngle , e . startAngle = isNaN ( e . startAngle ) ? 0 : e . startAngle , v || ( e . innerRadius = 0 ) ; var t = d3 . interpolate ( this . _current , e ) ; return this . _current = t ( 0 ) , function ( e ) { return L ( t ( e ) ) } } function B ( e ) { e . innerRadius = 0 ; var t = d3 . interpolate ( { startAngle : 0 , endAngle : 0 } , e ) ; return function ( e ) { return L ( t ( e ) ) } } var o = n - t . left - t . right , f = r - t . top - t . bottom , E = Math . min ( o , f ) / 2 , S = E - E / 5 , x = d3 . select ( this ) , T = x . selectAll ( ".nv-wrap.nv-pie" ) . data ( e ) , N = T . enter ( ) . append ( "g" ) . attr ( "class" , "nvd3 nv-wrap nv-pie nv-chart-" + u ) , C = N . append ( "g" ) , k = T . select ( "g" ) ; C . append ( "g" ) . attr ( "class" , "nv-pie" ) , T . attr ( "transform" , "translate(" + t . left + "," + t . top + ")" ) , k . select ( ".nv-pie" ) . attr ( "transform" , "translate(" + o / 2 + "," + f / 2 + ")" ) , x . on ( "click" , function ( e , t ) { w . chartClick ( { data : e , index : t , pos : d3 . event , id : u } ) } ) ; var L = d3 . svg . arc ( ) . outerRadius ( S ) ; g && L . startAngle ( g ) , y && L . endAngle ( y ) , v && L . innerRadius ( E * b ) ; var A = d3 . layout . pie ( ) . sort ( null ) . value ( function ( e ) { return e . disabled ? 0 : s ( e ) } ) , O = T . select ( ".nv-pie" ) . selectAll ( ".nv-slice" ) . data ( A ) ; O . exit ( ) . remove ( ) ; var M = O . enter ( ) . append ( "g" ) . attr ( "class" , "nv-slice" ) . on ( "mouseover" , function ( e , t ) { d3 . select ( this ) . classed ( "hover" , ! 0 ) , w . elementMouseover ( { label : i ( e . data ) , value : s ( e . data ) , point : e . data , pointIndex : t , pos : [ d3 . event . pageX , d3 . event . pageY ] , id : u } ) } ) . on ( "mouseout" , function ( e , t ) { d3 . select ( this ) . classed ( "hover" , ! 1 ) , w . elementMouseout ( { label : i ( e . data ) , value : s ( e . data ) , point : e . data , index : t , id : u } ) } ) . on ( "click" , function ( e , t ) { w . elementClick ( { label : i ( e . data ) , value : s ( e . data ) , point : e . data , index : t , pos : d3 . event , id : u } ) , d3 . event . stopPropagation ( ) } ) . on ( "dblclick" , function ( e , t ) { w . elementDblClick ( { label : i ( e . data ) , value : s ( e . data ) , point : e . data , index : t , pos : d3 . event , id : u } ) , d3 . event . stopPropagation ( ) } ) ; O . attr ( "fill" , function ( e , t ) { return a ( e , t ) } ) . attr ( "stroke" , function ( e , t ) { return a ( e , t ) } ) ; var _ = M . append ( "path" ) . each ( function ( e ) { this . _current = e } ) ; O . select ( "path" ) . transition ( ) . attr ( "d" , L ) . attrTween ( "d" , H ) ; if ( l ) { var D = d3 . svg . arc ( ) . innerRadius ( 0 ) ; c && ( D = L ) , h && ( D = d3 . svg . arc ( ) . outerRadius ( L . outerRadius ( ) ) ) , M . append ( "g" ) . classed ( "nv-label" , ! 0 ) . each ( function ( e , t ) { var n = d3 . select ( this ) ; n . attr ( "transform" , function ( e ) { if ( m ) { e . outerRadius = S + 10 , e . innerRadius = S + 15 ; var t = ( e . startAngle + e . endAngle ) / 2 * ( 180 / Math . PI ) ; return ( e . startAngle + e . endAngle ) / 2 < Math . PI ? t -= 90 : t += 90 , "translate(" + D . centroid ( e ) + ") rotate(" + t + ")" } return e . outerRadius = E + 10 , e . innerRadius = E + 15 , "translate(" + D . centroid ( e ) + ")" } ) , n . append ( "rect" ) . style ( "stroke" , "#fff" ) . style ( "fill" , "#fff" ) . attr ( "rx" , 3 ) . attr ( "ry" , 3 ) , n . append ( "text" ) . style ( "text-anchor" , m ? ( e . startAngle + e . endAngle ) / 2 < Math . PI ? "start" : "end" : "middle" ) . style ( "fill" , "#000" ) } ) , O . select ( ".nv-label" ) . transition ( ) . attr ( "transform" , function ( e ) { if ( m ) { e . outerRadius = S + 10 , e . innerRadius = S + 15 ; var t = ( e . startAngle + e . endAngle ) / 2 * ( 180 / Math . PI ) ; return ( e . startAngle + e . endAngle ) / 2 < Math . PI ? t -= 90 : t += 90 , "translate(" + D . centroid ( e ) + ") rotate(" + t + ")" } return e . outerRadius = E + 10 , e . innerRadius = E + 15 , "translate(" + D . centroid ( e ) + ")" } ) , O . each ( function ( e , t ) { var n = d3 . select ( this ) ; n . select ( ".nv-label text" ) . style ( "text-anchor" , m ? ( e . startAngle + e . endAngle ) / 2 < Math . PI ? "start" : "end" : "middle" ) . text ( function ( e , t ) { var n = ( e . endAngle - e . startAngle ) / ( 2 * Math . PI ) , r = { key : i ( e . dat
attr ( "y1" , e . pos [ 1 ] - j ) , d3 . select ( ".nv-chart-" + t . id ( ) + " .nv-series-" + e . seriesIndex + " .nv-disty-" + e . pointIndex ) . attr ( "x2" , e . pos [ 0 ] + o . size ( ) ) , e . pos = [ e . pos [ 0 ] + a . left , e . pos [ 1 ] + a . top ] , A . tooltipShow ( e ) } ) , A . on ( "tooltipShow" , function ( e ) { x && P ( e , N . parentNode ) } ) , A . on ( "changeState" , function ( t ) { typeof t . disabled != "undefined" && ( e . forEach ( function ( e , n ) { e . disabled = t . disabled [ n ] } ) , k . disabled = t . disabled ) , B . update ( ) } ) , _ = h . copy ( ) , D = p . copy ( ) } ) , B } var t = e . models . scatter ( ) , n = e . models . axis ( ) , r = e . models . axis ( ) , i = e . models . legend ( ) , s = e . models . legend ( ) , o = e . models . distribution ( ) , u = e . models . distribution ( ) , a = { top : 30 , right : 20 , bottom : 50 , left : 75 } , f = null , l = null , c = e . utils . defaultColor ( ) , h = d3 . fisheye ? d3 . fisheye . scale ( d3 . scale . linear ) . distortion ( 0 ) : t . xScale ( ) , p = d3 . fisheye ? d3 . fisheye . scale ( d3 . scale . linear ) . distortion ( 0 ) : t . yScale ( ) , d = ! 1 , v = ! 1 , m = ! 0 , g = ! 0 , y = ! 0 , b = ! 1 , w = ! ! d3 . fisheye , E = 0 , S = ! 1 , x = ! 0 , T = function ( e , t , n ) { return "<strong>" + t + "</strong>" } , N = function ( e , t , n ) { return "<strong>" + n + "</strong>" } , C = function ( e , t , n , r ) { return "<h3>" + e + "</h3>" + "<p>" + r + "</p>" } , k = { } , L = null , A = d3 . dispatch ( "tooltipShow" , "tooltipHide" , "stateChange" , "changeState" ) , O = "No Data Available." , M = 250 ; t . xScale ( h ) . yScale ( p ) , n . orient ( "bottom" ) . tickPadding ( 10 ) , r . orient ( b ? "right" : "left" ) . tickPadding ( 10 ) , o . axis ( "x" ) , u . axis ( "y" ) , s . updateState ( ! 1 ) ; var _ , D , P = function ( i , s ) { var o = i . pos [ 0 ] + ( s . offsetLeft || 0 ) , u = i . pos [ 1 ] + ( s . offsetTop || 0 ) , f = i . pos [ 0 ] + ( s . offsetLeft || 0 ) , l = p . range ( ) [ 0 ] + a . top + ( s . offsetTop || 0 ) , c = h . range ( ) [ 0 ] + a . left + ( s . offsetLeft || 0 ) , d = i . pos [ 1 ] + ( s . offsetTop || 0 ) , v = n . tickFormat ( ) ( t . x ( ) ( i . point , i . pointIndex ) ) , m = r . tickFormat ( ) ( t . y ( ) ( i . point , i . pointIndex ) ) ; T != null && e . tooltip . show ( [ f , l ] , T ( i . series . key , v , m , i , B ) , "n" , 1 , s , "x-nvtooltip" ) , N != null && e . tooltip . show ( [ c , d ] , N ( i . series . key , v , m , i , B ) , "e" , 1 , s , "y-nvtooltip" ) , C != null && e . tooltip . show ( [ o , u ] , C ( i . series . key , v , m , i . point . tooltip , i , B ) , i . value < 0 ? "n" : "s" , null , s ) } , H = [ { key : "Magnify" , disabled : ! 0 } ] ; return t . dispatch . on ( "elementMouseout.tooltip" , function ( e ) { A . tooltipHide ( e ) , d3 . select ( ".nv-chart-" + t . id ( ) + " .nv-series-" + e . seriesIndex + " .nv-distx-" + e . pointIndex ) . attr ( "y1" , 0 ) , d3 . select ( ".nv-chart-" + t . id ( ) + " .nv-series-" + e . seriesIndex + " .nv-disty-" + e . pointIndex ) . attr ( "x2" , u . size ( ) ) } ) , A . on ( "tooltipHide" , function ( ) { x && e . tooltip . cleanup ( ) } ) , B . dispatch = A , B . scatter = t , B . legend = i , B . controls = s , B . xAxis = n , B . yAxis = r , B . distX = o , B . distY = u , d3 . rebind ( B , t , "id" , "interactive" , "pointActive" , "x" , "y" , "shape" , "size" , "xScale" , "yScale" , "zScale" , "xDomain" , "yDomain" , "xRange" , "yRange" , "sizeDomain" , "sizeRange" , "forceX" , "forceY" , "forceSize" , "clipVoronoi" , "clipRadius" , "useVoronoi" ) , B . options = e . utils . optionsFunc . bind ( B ) , B . margin = function ( e ) { return arguments . length ? ( a . top = typeof e . top != "undefined" ? e . top : a . top , a . right = typeof e . right != "undefined" ? e . right : a . right , a . bottom = typeof e . bottom != "undefined" ? e . bottom : a . bottom , a . left = typeof e . left != "undefined" ? e . left : a . left , B ) : a } , B . width = function ( e ) { return arguments . length ? ( f = e , B ) : f } , B . height = function ( e ) { return arguments . length ? ( l = e , B ) : l } , B . color = function ( t ) { return arguments . length ? ( c = e . utils . getColor ( t ) , i . color ( c ) , o . color ( c ) , u . color ( c ) , B ) : c } , B . showDistX = function ( e ) { return arguments . length ? ( d = e , B ) : d } , B . showDistY = function ( e ) { return arguments . length ? ( v = e , B ) : v } , B . showControls = function ( e ) { return arguments . length ? ( w = e , B ) : w } , B . showLegend = function ( e ) { return arguments . length ? ( m = e , B ) : m } , B . showXAxis = function ( e ) { return arguments . length ? ( g = e , B ) : g } , B . showYAxis = function ( e ) { return arguments . length ? ( y = e , B ) : y } , B . rightAlignYAxis = function ( e ) { return arguments . length ? ( b = e , r . orient ( e ? "right" : "left" ) , B ) : b } , B . fisheye = function ( e ) { return arguments . length ? ( E = e , B ) : E } , B . tooltips = function ( e ) { return arguments . length ? ( x = e , B ) : x } , B . tooltipContent = function ( e ) { return arguments . length ? ( C = e , B ) : C } , B . tooltipXContent = function ( e ) { return arguments . length ? ( T = e , B ) : T } , B . tooltipYContent = function ( e ) { return arguments . length ? ( N = e , B ) : N } , B . state = function ( e ) { return arguments . length ? ( k = e , B ) : k } , B . defaultState = function ( e ) { return arguments . length ? ( L = e , B ) : L } , B . noData = function ( e ) { return arguments . length ? ( O = e , B ) : O } , B . transitionDuration = function ( e ) { return arguments . length ? ( M = e , B ) : M } , B } , e . models . sparkline = function ( ) { "use strict" ; function d ( e ) {