{"version":3,"sources":["webpack:///./graphql_shared/constants.js","webpack:///./vue_shared/mixins/timeago.js","webpack:////build/source/node_modules/d3-array/src/ascending.js","webpack:////build/source/node_modules/d3-array/src/bisector.js","webpack:////build/source/node_modules/d3-array/src/bisect.js","webpack:////build/source/node_modules/d3-array/src/cross.js","webpack:////build/source/node_modules/d3-array/src/number.js","webpack:////build/source/node_modules/d3-array/src/extent.js","webpack:////build/source/node_modules/d3-array/src/array.js","webpack:////build/source/node_modules/d3-array/src/range.js","webpack:////build/source/node_modules/d3-array/src/ticks.js","webpack:////build/source/node_modules/d3-array/src/threshold/sturges.js","webpack:////build/source/node_modules/d3-array/src/quantile.js","webpack:////build/source/node_modules/d3-array/src/max.js","webpack:////build/source/node_modules/d3-array/src/min.js","webpack:////build/source/node_modules/d3-array/src/sum.js","webpack:////build/source/node_modules/d3-path/src/index.js","webpack:////build/source/node_modules/d3-selection/src/matcher.js","webpack:////build/source/node_modules/visibilityjs/index.js","webpack:////build/source/node_modules/d3-selection/src/selector.js","webpack:///./vue_shared/components/time_ago_tooltip.vue","webpack:///./vue_shared/components/time_ago_tooltip.vue?3039","webpack:///vue_shared/components/time_ago_tooltip.vue","webpack:///./vue_shared/components/time_ago_tooltip.vue?f6d8","webpack:///./graphql_shared/utils.js","webpack:////build/source/node_modules/d3-selection/src/selection/style.js","webpack:///./ci/pipeline_details/graphql/mutations/cancel_pipeline.mutation.graphql","webpack:////build/source/node_modules/d3-axis/src/array.js","webpack:////build/source/node_modules/d3-dispatch/src/dispatch.js","webpack:////build/source/node_modules/d3-color/src/define.js","webpack:////build/source/node_modules/d3-color/src/color.js","webpack:////build/source/node_modules/d3-interpolate/src/basis.js","webpack:////build/source/node_modules/d3-interpolate/src/constant.js","webpack:////build/source/node_modules/d3-interpolate/src/color.js","webpack:////build/source/node_modules/d3-interpolate/src/rgb.js","webpack:////build/source/node_modules/d3-interpolate/src/basisClosed.js","webpack:////build/source/node_modules/d3-interpolate/src/date.js","webpack:////build/source/node_modules/d3-interpolate/src/number.js","webpack:////build/source/node_modules/d3-interpolate/src/string.js","webpack:////build/source/node_modules/d3-timer/src/timer.js","webpack:////build/source/node_modules/d3-timer/src/timeout.js","webpack:////build/source/node_modules/d3-transition/src/transition/schedule.js","webpack:////build/source/node_modules/d3-transition/src/interrupt.js","webpack:////build/source/node_modules/d3-interpolate/src/transform/parse.js","webpack:////build/source/node_modules/d3-interpolate/src/transform/decompose.js","webpack:////build/source/node_modules/d3-interpolate/src/transform/index.js","webpack:////build/source/node_modules/d3-transition/src/transition/tween.js","webpack:////build/source/node_modules/d3-transition/src/transition/interpolate.js","webpack:////build/source/node_modules/d3-transition/src/transition/attr.js","webpack:////build/source/node_modules/d3-transition/src/transition/attrTween.js","webpack:////build/source/node_modules/d3-transition/src/transition/delay.js","webpack:////build/source/node_modules/d3-transition/src/transition/duration.js","webpack:////build/source/node_modules/d3-transition/src/transition/ease.js","webpack:////build/source/node_modules/d3-transition/src/transition/on.js","webpack:////build/source/node_modules/d3-transition/src/transition/remove.js","webpack:////build/source/node_modules/d3-transition/src/transition/selection.js","webpack:////build/source/node_modules/d3-transition/src/transition/style.js","webpack:////build/source/node_modules/d3-transition/src/transition/styleTween.js","webpack:////build/source/node_modules/d3-transition/src/transition/textTween.js","webpack:////build/source/node_modules/d3-transition/src/transition/index.js","webpack:////build/source/node_modules/d3-transition/src/transition/select.js","webpack:////build/source/node_modules/d3-transition/src/transition/selectAll.js","webpack:////build/source/node_modules/d3-transition/src/transition/filter.js","webpack:////build/source/node_modules/d3-transition/src/transition/merge.js","webpack:////build/source/node_modules/d3-transition/src/transition/transition.js","webpack:////build/source/node_modules/d3-transition/src/transition/text.js","webpack:////build/source/node_modules/d3-transition/src/transition/end.js","webpack:////build/source/node_modules/d3-transition/src/selection/transition.js","webpack:////build/source/node_modules/d3-ease/src/cubic.js","webpack:////build/source/node_modules/d3-transition/src/selection/index.js","webpack:////build/source/node_modules/d3-transition/src/selection/interrupt.js","webpack:////build/source/node_modules/d3-brush/src/brush.js","webpack:////build/source/node_modules/d3-chord/src/math.js","webpack:////build/source/node_modules/d3-chord/src/array.js","webpack:////build/source/node_modules/d3-collection/src/map.js","webpack:////build/source/node_modules/d3-collection/src/set.js","webpack:////build/source/node_modules/d3-contour/src/array.js","webpack:////build/source/node_modules/d3-quadtree/src/add.js","webpack:////build/source/node_modules/d3-quadtree/src/cover.js","webpack:////build/source/node_modules/d3-quadtree/src/quad.js","webpack:////build/source/node_modules/d3-quadtree/src/x.js","webpack:////build/source/node_modules/d3-quadtree/src/y.js","webpack:////build/source/node_modules/d3-quadtree/src/quadtree.js","webpack:////build/source/node_modules/d3-quadtree/src/data.js","webpack:////build/source/node_modules/d3-quadtree/src/extent.js","webpack:////build/source/node_modules/d3-quadtree/src/find.js","webpack:////build/source/node_modules/d3-quadtree/src/remove.js","webpack:////build/source/node_modules/d3-quadtree/src/root.js","webpack:////build/source/node_modules/d3-quadtree/src/size.js","webpack:////build/source/node_modules/d3-quadtree/src/visit.js","webpack:////build/source/node_modules/d3-quadtree/src/visitAfter.js","webpack:////build/source/node_modules/d3-force/src/simulation.js","webpack:////build/source/node_modules/d3-random/src/defaultSource.js","webpack:////build/source/node_modules/d3-random/src/normal.js","webpack:////build/source/node_modules/d3-random/src/uniform.js","webpack:////build/source/node_modules/d3-random/src/irwinHall.js","webpack:////build/source/node_modules/d3-random/src/logNormal.js","webpack:////build/source/node_modules/d3-random/src/bates.js","webpack:////build/source/node_modules/d3-random/src/exponential.js","webpack:////build/source/node_modules/d3-scale/src/array.js","webpack:////build/source/node_modules/d3-format/src/formatSpecifier.js","webpack:////build/source/node_modules/d3-format/src/formatDecimal.js","webpack:////build/source/node_modules/d3-format/src/exponent.js","webpack:////build/source/node_modules/d3-format/src/formatPrefixAuto.js","webpack:////build/source/node_modules/d3-format/src/defaultLocale.js","webpack:////build/source/node_modules/d3-format/src/formatRounded.js","webpack:////build/source/node_modules/d3-format/src/formatTypes.js","webpack:////build/source/node_modules/d3-format/src/identity.js","webpack:////build/source/node_modules/d3-format/src/locale.js","webpack:////build/source/node_modules/d3-format/src/formatGroup.js","webpack:////build/source/node_modules/d3-format/src/formatNumerals.js","webpack:////build/source/node_modules/d3-format/src/formatTrim.js","webpack:////build/source/node_modules/d3-time/src/interval.js","webpack:////build/source/node_modules/d3-time/src/year.js","webpack:////build/source/node_modules/d3-time/src/month.js","webpack:////build/source/node_modules/d3-time/src/week.js","webpack:////build/source/node_modules/d3-time/src/duration.js","webpack:////build/source/node_modules/d3-time/src/day.js","webpack:////build/source/node_modules/d3-time/src/hour.js","webpack:////build/source/node_modules/d3-time/src/minute.js","webpack:////build/source/node_modules/d3-time/src/second.js","webpack:////build/source/node_modules/d3-time/src/millisecond.js","webpack:////build/source/node_modules/d3-time/src/utcWeek.js","webpack:////build/source/node_modules/d3-time/src/utcDay.js","webpack:////build/source/node_modules/d3-time/src/utcYear.js","webpack:////build/source/node_modules/d3-time-format/src/locale.js","webpack:////build/source/node_modules/d3-time-format/src/defaultLocale.js","webpack:////build/source/node_modules/d3-scale/src/time.js","webpack:////build/source/node_modules/d3-time/src/utcMonth.js","webpack:////build/source/node_modules/d3-time/src/utcHour.js","webpack:////build/source/node_modules/d3-time/src/utcMinute.js","webpack:////build/source/node_modules/d3-voronoi/src/RedBlackTree.js","webpack:////build/source/node_modules/d3-voronoi/src/Edge.js","webpack:////build/source/node_modules/d3-voronoi/src/Cell.js","webpack:////build/source/node_modules/d3-voronoi/src/Circle.js","webpack:////build/source/node_modules/d3-voronoi/src/Beach.js","webpack:////build/source/node_modules/d3-voronoi/src/Diagram.js","webpack:////build/source/node_modules/d3-interpolate/src/zoom.js","webpack:////build/source/node_modules/d3-zoom/src/transform.js","webpack:////build/source/node_modules/d3-sankey/src/align.js","webpack:////build/source/node_modules/d3-sankey/src/constant.js","webpack:////build/source/node_modules/d3-sankey/src/sankey.js","webpack:////build/source/node_modules/d3-shape/src/array.js","webpack:////build/source/node_modules/d3-shape/src/constant.js","webpack:////build/source/node_modules/d3-shape/src/point.js","webpack:////build/source/node_modules/d3-shape/src/link/index.js","webpack:////build/source/node_modules/d3-sankey/src/sankeyLinkHorizontal.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/directives/modal/modal.js","webpack:////build/source/node_modules/d3-path/src/path.js","webpack:////build/source/node_modules/visibilityjs/lib/visibility.timers.js","webpack:///./ci/pipeline_details/graphql/mutations/delete_pipeline.mutation.graphql","webpack:///./ci/pipeline_details/graphql/mutations/retry_pipeline.mutation.graphql","webpack:///./ci/pipeline_details/header/graphql/queries/get_pipeline_header_data.query.graphql","webpack:////build/source/node_modules/d3-selection/src/selection/sparse.js","webpack:////build/source/node_modules/d3-selection/src/selection/enter.js","webpack:////build/source/node_modules/d3-selection/src/selection/data.js","webpack:////build/source/node_modules/d3-selection/src/selection/sort.js","webpack:////build/source/node_modules/d3-selection/src/selection/call.js","webpack:////build/source/node_modules/d3-selection/src/selection/attr.js","webpack:////build/source/node_modules/d3-selection/src/selection/property.js","webpack:////build/source/node_modules/d3-selection/src/selection/classed.js","webpack:////build/source/node_modules/d3-selection/src/selection/text.js","webpack:////build/source/node_modules/d3-selection/src/selection/html.js","webpack:////build/source/node_modules/d3-selection/src/selection/raise.js","webpack:////build/source/node_modules/d3-selection/src/selection/lower.js","webpack:////build/source/node_modules/d3-selection/src/creator.js","webpack:////build/source/node_modules/d3-selection/src/selection/insert.js","webpack:////build/source/node_modules/d3-selection/src/selection/remove.js","webpack:////build/source/node_modules/d3-selection/src/selection/clone.js","webpack:////build/source/node_modules/d3-selection/src/selection/dispatch.js","webpack:////build/source/node_modules/d3-selection/src/selection/index.js","webpack:////build/source/node_modules/d3-selection/src/selection/select.js","webpack:////build/source/node_modules/d3-selection/src/selection/selectAll.js","webpack:////build/source/node_modules/d3-selection/src/selection/filter.js","webpack:////build/source/node_modules/d3-selection/src/constant.js","webpack:////build/source/node_modules/d3-selection/src/selection/exit.js","webpack:////build/source/node_modules/d3-selection/src/selection/join.js","webpack:////build/source/node_modules/d3-selection/src/selection/merge.js","webpack:////build/source/node_modules/d3-selection/src/selection/order.js","webpack:////build/source/node_modules/d3-selection/src/selection/nodes.js","webpack:////build/source/node_modules/d3-selection/src/selection/node.js","webpack:////build/source/node_modules/d3-selection/src/selection/size.js","webpack:////build/source/node_modules/d3-selection/src/selection/empty.js","webpack:////build/source/node_modules/d3-selection/src/selection/each.js","webpack:////build/source/node_modules/d3-selection/src/selection/append.js","webpack:////build/source/node_modules/d3-selection/src/selection/datum.js","webpack:///./ci/pipeline_details/header/components/header_actions.vue","webpack:///./ci/pipeline_details/header/components/header_actions.vue?6845","webpack:///ci/pipeline_details/header/components/header_actions.vue","webpack:///./ci/pipeline_details/header/constants.js","webpack:///./ci/pipeline_details/header/components/header_actions.vue?ea4c","webpack:///./ci/pipeline_details/header/components/header_badges.vue?d5ca","webpack:///ci/pipeline_details/header/components/header_badges.vue","webpack:///./ci/pipeline_details/header/components/header_badges.vue?a56e","webpack:///./ci/pipeline_details/header/components/header_badges.vue","webpack:///./ci/pipeline_details/header/pipeline_header.vue?bb5a","webpack:///ci/pipeline_details/header/pipeline_header.vue","webpack:///./ci/pipeline_details/header/pipeline_header.vue?a787","webpack:///./ci/pipeline_details/header/pipeline_header.vue","webpack:///./ci/pipeline_details/pipeline_header.js","webpack:///./ci/pipeline_details/pipeline_shared_client.js","webpack:///./ci/pipeline_details/pipeline_details_bundle.js","webpack:////build/source/node_modules/d3-selection/src/namespace.js","webpack:////build/source/ee/app/assets/javascripts/ci/pipeline_details/header/graphql/fragments/pipeline_header.fragment.graphql","webpack:////build/source/node_modules/d3-selection/src/namespaces.js","webpack:////build/source/node_modules/d3-selection/src/window.js","webpack:///./ci/pipeline_details/graph/constants.js","webpack:///./ci/constants.js","webpack:////build/source/node_modules/visibilityjs/lib/visibility.core.js","webpack:////build/source/node_modules/vue-router/dist/vue-router.esm.js","webpack:///./ci/utils.js","webpack:////build/source/node_modules/d3-selection/src/select.js","webpack:////build/source/node_modules/d3-selection/src/selectorAll.js","webpack:////build/source/node_modules/d3-selection/src/selection/on.js"],"names":["MINIMUM_SEARCH_LENGTH","TYPENAME_BOARD","TYPENAME_CI_BUILD","TYPENAME_CI_RUNNER","TYPENAME_CI_PIPELINE","TYPENAME_CI_STAGE","TYPENAME_CI_TRIGGER","TYPENAME_CI_VARIABLE","TYPENAME_COMMIT_STATUS","TYPENAME_CONTAINER_REPOSITORY","TYPENAME_CRM_CONTACT","TYPENAME_CRM_ORGANIZATION","TYPENAME_DESIGN_VERSION","TYPENAME_DISCUSSION","TYPENAME_DISCUSSION_NOTE","TYPENAME_EPIC","TYPENAME_EPIC_BOARD","TYPENAME_FEATURE_FLAG","TYPENAME_GROUP","TYPENAME_ISSUE","TYPENAME_ITERATION","TYPENAME_ITERATIONS_CADENCE","TYPENAME_LABEL","TYPENAME_MEMBER_ROLE","TYPENAME_MERGE_REQUEST","TYPENAME_MILESTONE","TYPENAME_NOTE","TYPENAME_PACKAGES_PACKAGE","TYPENAME_PROJECT","TYPENAME_SCANNER_PROFILE","TYPENAME_SITE_PROFILE","TYPENAME_TODO","TYPENAME_USER","TYPENAME_VULNERABILITY","TYPENAME_WORK_ITEM","TYPENAME_WORK_ITEM_RELATED_BRANCH","TYPE_ORGANIZATION","TYPE_USERS_SAVED_REPLY","TYPE_WORKSPACE","TYPE_COMPLIANCE_FRAMEWORK","QUERY_PARAM_START_CURSOR","QUERY_PARAM_END_CURSOR","methods","timeFormatted","time","format","getTimeago","newDate","timeagoLanguageCode","tooltipTitle","localeDateFormat","asDateTimeFull","a","b","NaN","f","compare","length","d","x","ascending","left","lo","hi","mid","right","ascendingBisect","bisector","bisectRight","bisect","value","min","max","n","values","i","valueof","Array","prototype","slice","map","start","stop","step","arguments","Math","ceil","range","e10","sqrt","e5","e2","reverse","ticks","count","tickIncrement","isFinite","floor","power","log","LN10","error","pow","tickStep","step0","abs","step1","LN2","number","p","i0","value0","sum","this","matches","selector","module","exports","none","querySelector","directives","GlTooltip","GlTooltipDirective","components","GlTruncate","mixins","timeagoMixin","props","type","String","Number","Date","required","tooltipPlacement","default","cssClass","dateTimeFormat","DEFAULT_DATE_TIME_FORMAT","validator","timeFormat","DATE_TIME_FORMATS","includes","enableTruncation","Boolean","computed","timeAgo","tooltipText","undefined","component","_vm","_c","_self","name","rawName","placement","expression","modifiers","class","attrs","_t","_v","_s","isGid","id","startsWith","parseGid","gid","replace","split","getIdFromGraphQLId","rawId","parseInt","isInteger","getTypeFromGraphQLId","mutationOperationMode","append","remove","convertToGraphQLId","TypeError","convertToGraphQLIds","ids","convertNodeIdsFromGraphQLIds","nodes","_isArray","node","getNodesOrDefault","queryData","nodesField","_queryData$nodesField","toggleQueryPollingByVisibility","queryRef","interval","stopStartQuery","query","Visibility","hidden","stopPolling","startPolling","change","bind","etagQueryHeaders","featureCorrelation","etagResource","fetchOptions","method","headers","calculateGraphQLPaginationQueryParams","startCursor","endCursor","routeQuery","start_cursor","end_cursor","styleRemove","style","removeProperty","styleConstant","priority","setProperty","styleFunction","v","apply","styleValue","getPropertyValue","getComputedStyle","each","doc","loc","source","definitionRefs","findOperation","definitions","element","forEach","def","refs","Set","collectFragmentReferences","kind","add","selectionSet","selections","selection","variableDefinitions","operationName","newDoc","hasOwnProperty","opRefs","allRefs","newRefs","refName","size","prevRefs","has","childRef","op","push","oneQuery","noop","dispatch","t","_","test","Error","Dispatch","parseTypenames","typenames","types","trim","indexOf","get","c","set","callback","concat","constructor","on","typename","T","copy","call","that","args","factory","extend","parent","definition","Object","create","key","Color","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","m","l","toLowerCase","exec","rgbn","Rgb","rgba","hsla","r","g","rgbConvert","o","opacity","rgb_formatHex","hex","rgb_formatRgb","isNaN","round","toString","h","s","Hsl","hslConvert","hsl2rgb","m1","m2","basis","t1","v0","v1","v2","v3","t2","t3","define","channels","assign","displayable","formatHsl","brighter","k","darker","linear","gamma","y","nogamma","exponential","constant","color","end","rgbGamma","rgbSpline","spline","colors","reA","reB","taskHead","taskTail","am","bm","bs","bi","lastIndex","q","index","one","join","timeout","clockLast","clockNow","clockSkew","clock","performance","now","setFrame","window","requestAnimationFrame","setTimeout","clearNow","Timer","_call","_time","_next","timer","delay","restart","wake","e","timerFlush","t0","Infinity","sleep","nap","poke","clearTimeout","clearInterval","setInterval","elapsed","emptyOn","emptyTween","schedules","__transition","self","tween","j","state","__data__","group","tick","duration","ease","timing","init","schedule","cssNode","cssRoot","cssView","svgNode","active","empty","degrees","PI","translateX","translateY","rotate","skewX","scaleX","scaleY","atan2","atan","interpolateTransform","parse","pxComma","pxParen","degParen","pop","xa","ya","xb","yb","translate","scale","interpolateTransformCss","document","createElement","documentElement","defaultView","transform","appendChild","removeChild","decompose","interpolateTransformSvg","createElementNS","setAttribute","baseVal","consolidate","matrix","tweenRemove","tween0","tween1","splice","tweenFunction","tweenValue","transition","_id","attrRemove","removeAttribute","attrRemoveNS","fullname","removeAttributeNS","space","local","attrConstant","interpolate","value1","string00","interpolate0","string1","string0","getAttribute","attrConstantNS","getAttributeNS","attrFunction","string10","attrFunctionNS","attrInterpolate","attrInterpolateNS","setAttributeNS","attrTweenNS","_value","attrTween","delayFunction","delayConstant","durationFunction","durationConstant","easeConstant","onFunction","listener","on0","on1","sit","every","Selection","styleInterpolate","styleTween","textInterpolate","textContent","textTween","Transition","groups","parents","_groups","_parents","_name","newId","selection_prototype","select","subgroups","subnode","subgroup","selectAll","selectorAll","child","children","inherit","filter","match","matcher","merge","groups0","groups1","m0","merges","group0","group1","id0","id1","attr","namespace","styleNull","listener0","event","styleMaybeRemove","text","textFunction","textConstant","parentNode","Promise","resolve","reject","cancel","interrupt","defaultTiming","number1","number2","cos","sin","Map","object","isArray","property","clear","keys","entries","proto","tree","xm","ym","xp","yp","bottom","_root","leaf","data","x0","_x0","y0","_y0","x1","_x1","y1","_y1","_x","_y","next","quadtree","Quadtree","addAll","leaf_copy","treeProto","target","cover","xz","yz","z","visit","extent","find","x2","y2","x3","y3","quads","radius","dx","dy","d2","retainer","previous","removeAll","root","visitAfter","random","randomUniform","sourceRandomUniform","randomNormal","mu","sigma","sourceRandomNormal","randomLogNormal","normal","exp","sourceRandomLogNormal","randomIrwinHall","sourceRandomIrwinHall","randomBates","irwinHall","sourceRandomBates","randomExponential","lambda","sourceRandomExponential","re","formatSpecifier","specifier","FormatSpecifier","fill","align","sign","symbol","zero","width","comma","precision","formatDecimalParts","toExponential","coefficient","prefixExponent","exponent","toFixed","toLocaleString","toPrecision","formatRounded","toUpperCase","prefixes","locale","grouping","thousands","substring","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","percent","minus","nan","newFormat","formatTypes","prefix","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","out","i1","formatTrim","charCodeAt","padding","formatPrefix","newInterval","floori","offseti","field","date","d0","d1","offset","setTime","setMonth","setHours","setFullYear","getFullYear","setDate","getMonth","weekday","getDate","getDay","getTimezoneOffset","sunday","monday","tuesday","wednesday","thursday","friday","saturday","getMilliseconds","getSeconds","getMinutes","getHours","getUTCSeconds","utcWeekday","setUTCDate","getUTCDate","getUTCDay","setUTCHours","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcDay","utcYear","setUTCMonth","setUTCFullYear","getUTCFullYear","localDate","H","M","S","L","utcDate","UTC","pads","numberRe","percentRe","requoteRe","pad","string","requote","formatRe","names","formatLookup","parseWeekdayNumberSunday","w","parseWeekdayNumberMonday","u","parseWeekNumberSunday","U","parseWeekNumberISO","V","parseWeekNumberMonday","W","parseFullYear","parseYear","parseZone","Z","parseQuarter","parseMonthNumber","parseDayOfMonth","parseDayOfYear","parseHour24","parseMinutes","parseSeconds","parseMilliseconds","parseMicroseconds","parseLiteralPercent","parseUnixTimestamp","Q","parseUnixTimestampSeconds","formatDayOfMonth","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMicroseconds","formatMonthNumber","formatMinutes","formatSeconds","formatWeekdayNumberMonday","day","formatWeekNumberSunday","dISO","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYearISO","formatFullYear","formatFullYearISO","formatZone","formatUTCDayOfMonth","formatUTCHour24","getUTCHours","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","getUTCMilliseconds","formatUTCMicroseconds","formatUTCMonthNumber","getUTCMonth","formatUTCMinutes","getUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","dow","formatUTCWeekNumberSunday","UTCdISO","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCYearISO","formatUTCFullYear","formatUTCFullYearISO","formatUTCZone","formatLiteralPercent","formatUnixTimestamp","formatUnixTimestampSeconds","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","utcFormats","parses","parseSpecifier","charAt","newParse","week","X","utcFormat","utcParse","formatLocale","utcMonth","utcHour","setUTCMinutes","utcMinute","setUTCSeconds","RedBlackTree","RedBlackNode","C","R","P","N","RedBlackRotateLeft","RedBlackRotateRight","RedBlackFirst","insert","after","grandpa","uncle","sibling","createEdge","edge","setEdgeEnd","cells","halfedges","createBorderEdge","vertex","clipEdge","ax","ay","connectEdge","fm","fb","lx","ly","rx","ry","fx","fy","cellHalfedgeAngle","cell","site","va","vb","cellHalfedgeStart","cellHalfedgeEnd","firstCircle","circlePool","Circle","arc","cy","attachCircle","lArc","rArc","lSite","cSite","rSite","bx","by","cx","epsilon2","ha","hc","circle","before","circles","detachCircle","beachPool","Beach","createBeach","beach","detachBeach","beaches","removeBeach","disappearing","unshift","iArc","nArcs","addBeach","dxl","dxr","directrix","leftBreakPoint","rightBreakPoint","createCell","newArc","hb","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","lexicographic","Diagram","sites","sort","array","sortCellHalfedges","clipEdges","iCell","iHalfedge","nHalfedges","startX","startY","endX","endY","nCells","dc","v00","v01","v11","v10","clipCells","edges","polygons","polygon","triangles","s0","e1","s1","links","_found","vx","vy","SQRT2","Transform","point","applyX","applyY","invert","location","invertX","invertY","rescaleX","domain","rescaleY","targetDepth","depth","height","justify","sourceLinks","center","targetLinks","ascendingSourceBreadth","ascendingBreadth","ascendingTargetBreadth","defaultId","defaultNodes","graph","defaultLinks","nodeById","computeLinkBreadths","link","Sankey","py","linkSort","iterations","sankey","computeNodeLinks","computeNodeValues","computeNodeDepths","computeNodeHeights","computeNodeBreadths","fixedValue","current","columns","kx","layer","column","computeNodeLayers","ky","reorderLinks","initializeNodeBreadths","alpha","beta","relaxRightToLeft","relaxLeftToRight","targetTop","reorderNodeLinks","resolveCollisions","sourceTop","subject","resolveCollisionsBottomToTop","resolveCollisionsTopToBottom","update","nodeId","nodeAlign","nodeSort","nodeWidth","nodePadding","linkSource","linkTarget","curve","context","buffer","argv","path","curveHorizontal","moveTo","bezierCurveTo","horizontalSource","horizontalTarget","ROOT_ACTION_EVENT_NAME_SHOW","PROPERTY","getTarget","_ref","arg","getTriggerElement","el","setRole","trigger","tagName","unbind","oldProp","handler","componentUpdated","binding","vnode","currentTarget","keyCode","$emit","VBModal","inserted","updated","pi","tau","tauEpsilon","Path","closePath","lineTo","quadraticCurveTo","arcTo","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","a0","a1","ccw","cw","da","rect","lastTimer","install","hiddenInterval","_timers","visible","_run","isSupported","_listen","_stop","_timed","_wasHidden","_stopRun","runNow","runner","last","isHidden","wasHidden","EnterNode","datum","ownerDocument","namespaceURI","_parent","insertBefore","querySelectorAll","bindIndex","enter","exit","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","propertyRemove","propertyConstant","propertyFunction","classArray","classList","ClassList","_node","_names","classedAdd","list","classedRemove","classedTrue","classedFalse","classedFunction","contains","textRemove","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","lower","previousSibling","firstChild","creatorInherit","uri","creatorFixed","constantNull","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","dispatchEvent","params","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","enterGroup","updateGroup","_enter","_exit","sparse","onenter","onupdate","onexit","order","compareDocumentPosition","compareNode","sortgroups","sortgroup","classed","html","creator","deep","BUTTON_TOOLTIP_CANCEL","BUTTON_TOOLTIP_DELETE","BUTTON_TOOLTIP_RETRY","modal","actionPrimary","__","attributes","variant","actionCancel","GlButton","GlModal","GlModalDirective","pipeline","isRetrying","isDeleting","isCanceling","canRetryPipeline","retryable","userPermissions","updatePipeline","canCancelPipeline","cancelPipeline","staticClass","$options","$event","_e","destroyPipeline","GlBadge","GlSprintf","GlLink","isScheduledPipeline","mergeRequestEventType","isMergeTrainPipeline","isMergedResultsPipeline","isDetachedPipeline","failureReason","isAutoDevopsPipeline","configSource","yamlErrorMessages","_this$pipeline","triggeredByPath","_this$pipeline2","badges","invalid","yamlErrors","latest","mergeTrainPipeline","mergedResultsPipeline","detached","failed","autoDevops","stuck","s__","scopedSlots","_u","fn","content","pipelineCancel","pipelineRetry","finishedStatuses","CiIcon","ClipboardButton","GlAlert","GlIcon","GlLoadingIcon","HeaderActions","HeaderBadges","TimeAgoTooltip","PipelineAccountVerificationAlert","HeaderMergeTrainsLink","SafeHtml","errorTexts","LOAD_FAILURE","POST_FAILURE","DELETE_FAILURE","DEFAULT","inject","graphqlResourceEtag","paths","pipelineIid","apollo","getQueryHeaders","getPipelineQuery","variables","fullPath","fullProject","iid","project","reportFailure","reportToSentry","pollInterval","POLL_INTERVAL","watchLoading","isLoading","failureMessages","failureType","loading","$apollo","queries","hasError","hasPipelineData","isLoadingInitialQuery","detailedStatus","status","isFinished","shouldRenderContent","failure","user","_this$pipeline3","userId","_this$user","shortId","_this$pipeline4","commit","commitSha","_this$pipeline5","sha","commitPath","_this$pipeline6","webPath","commitTitle","_this$pipeline7","title","totalJobsText","_this$pipeline8","totalJobs","sprintf","n__","jobs","triggeredText","inProgress","_this$pipeline9","showDuration","durationFormatted","timeIntervalInWords","queuedDuration","_this$pipeline10","inProgressText","formatNumber","durationText","computeMinutes","_this$pipeline11","showComputeMinutes","pipelineName","_this$pipeline12","refText","_this$pipeline13","errorType","errorMessages","mutation","errors","mutate","refetch","postPipelineAction","cancelPipelineMutation","retryPipeline","retryPipelineMutation","pipelineDestroy","deletePipelineMutation","visitUrl","setUrlFragment","pipelinesPath","_l","failureMessage","webUrl","username","createdAt","finishedAt","deletePipeline","Vue","use","VueApollo","createPipelineHeaderApp","elSelector","apolloProvider","identityVerificationPath","identityVerificationRequired","mergeTrainsAvailable","canReadMergeTrain","mergeTrainsPath","dataset","provide","parseBoolean","render","PipelineHeader","defaultClient","createDefaultClient","SELECTORS","async","initPipelineDetailsBundle","headerSelector","headerApp","headerEl","headerDataset","createAlert","message","tabsEl","dismissalDescriptions","JSON","createAppOptions","createPipelineTabs","routes","securityRoute","route","router","VueRouter","mode","base","pipelinePath","pathname","endsWith","pipelineTabName","xhtml","svg","xlink","xml","xmlns","DOWNSTREAM","MAIN","UPSTREAM","ONE_COL_WIDTH","STAGE_VIEW","LAYER_VIEW","SKIP_RETRY_MODAL_KEY","VIEW_TYPE_KEY","SINGLE_JOB","JOB_DROPDOWN","BUILD_KIND","BRIDGE_KIND","ACTION_FAILURE","IID_FAILURE","RETRY_ACTION_TITLE","forwardDeploymentFailureModalId","FILTER_TAG_IDENTIFIER","JOB_GRAPHQL_ERRORS","jobMutationErrorText","jobQueryErrorText","ICONS","TAG","MR","BRANCH","RETRY","SUCCESS","SUCCESS_STATUS","PASSED_STATUS","MANUAL_STATUS","PIPELINE_ID_KEY","PIPELINE_IID_KEY","RAW_TEXT_WARNING","TRACKING_CATEGORIES","table","tabs","search","tests","listbox","PIPELINE_POLL_INTERVAL_DEFAULT","PIPELINE_POLL_INTERVAL_BACKOFF","FOUR_MINUTES_IN_MS","NETWORK_STATUS_READY","global","lastId","onVisible","support","_callbacks","afterPrerendering","_doc","webkitHidden","visibilityState","webkitVisibilityState","_change","_init","addEventListener","attachEvent","encodeReserveRE","encodeReserveReplacer","commaRE","encode","str","encodeURIComponent","decode","decodeURIComponent","err","castQueryParamValue","parseQuery","res","param","parts","shift","val","stringifyQuery","obj","result","val2","trailingSlashRE","createRoute","record","redirectedFrom","options","meta","hash","getFullPath","matched","formatMatch","freeze","START","ref","_stringifyQuery","isSameRoute","onlyPath","isObjectEqual","aKeys","bKeys","aVal","bVal","handleRouteEntered","instances","instance","cbs","enteredCbs","i$1","_isBeingDestroyed","View","functional","routerView","$createElement","$route","cache","_routerViewCache","inactive","_routerRoot","vnodeData","$vnode","keepAlive","_directInactive","_inactive","$parent","routerViewDepth","cachedData","cachedComponent","configProps","fillPropsinData","registerRouteInstance","vm","hook","prepatch","componentInstance","propsToPass","config","resolveProps","resolvePath","relative","firstChar","stack","segments","segment","cleanPath","isarray","arr","pathToRegexp_1","pathToRegexp","parse_1","compile_1","tokensToFunction","tokensToFunction_1","tokensToRegExp_1","tokensToRegExp","PATH_REGEXP","tokens","defaultDelimiter","delimiter","escaped","capture","modifier","asterisk","partial","repeat","optional","pattern","escapeGroup","escapeString","substr","encodeURIComponentPretty","encodeURI","flags","opts","pretty","token","stringify","attachKeys","sensitive","strict","endsWithDelimiter","regexpToRegexp","arrayToRegexp","stringToRegexp","compile","regexpCompileCache","fillParams","routeMsg","filler","pathMatch","normalizeLocation","raw","_normalized","params$1","rawPath","parsedPath","hashIndex","queryIndex","parsePath","basePath","extraQuery","_parseQuery","parsedQuery","resolveQuery","_Vue","Link","to","tag","custom","exact","exactPath","activeClass","exactActiveClass","ariaCurrentValue","this$1$1","$router","href","classes","globalActiveClass","linkActiveClass","globalExactActiveClass","linkExactActiveClass","activeClassFallback","exactActiveClassFallback","compareTarget","queryIncludes","isIncludedRoute","guardEvent","click","scopedSlot","$scopedSlots","$hasNormal","navigate","isActive","isExactActive","findAnchor","$slots","isStatic","aData","handler$1","event$1","aAttrs","metaKey","altKey","ctrlKey","shiftKey","defaultPrevented","button","preventDefault","inBrowser","createRouteMap","oldPathList","oldPathMap","oldNameMap","parentRoute","pathList","pathMap","nameMap","addRouteRecord","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","caseSensitive","regex","compileRouteRegex","alias","redirect","beforeEnter","childMatchAs","aliases","aliasRoute","createMatcher","currentRoute","_createRoute","paramNames","record$1","matchRoute","originalRedirect","resolveRecordPath","aliasedMatch","aliasedRecord","addRoute","parentOrRoute","getRoutes","addRoutes","len","Time","genStateKey","_key","getStateKey","setStateKey","positionStore","setupScroll","history","scrollRestoration","protocolAndPath","protocol","host","absolutePath","stateCopy","replaceState","handlePopState","removeEventListener","handleScroll","from","isPop","app","behavior","scrollBehavior","$nextTick","position","getScrollPosition","shouldScroll","then","scrollToPosition","catch","saveScrollPosition","pageXOffset","pageYOffset","isValidPosition","isNumber","normalizePosition","hashStartsWithNumberRE","isObject","getElementById","docRect","getBoundingClientRect","elRect","top","getElementPosition","scrollTo","ua","supportsPushState","navigator","userAgent","pushState","url","NavigationFailureType","redirected","aborted","cancelled","duplicated","createNavigationRedirectedError","createRouterError","propertiesToLog","createNavigationCancelledError","_isRouter","isError","isNavigationFailure","runQueue","queue","cb","resolveAsyncComponents","hasAsync","pending","flatMapComponents","cid","once","resolvedDef","__esModule","hasSymbol","Symbol","toStringTag","resolved","reason","msg","comp","flatten","called","History","baseEl","normalizeBase","ready","readyCbs","readyErrorCbs","errorCbs","listeners","extractGuards","records","guards","guard","extractGuard","bindGuard","listen","onReady","errorCb","onError","transitionTo","onComplete","onAbort","prev","confirmTransition","updateRoute","ensureURL","afterHooks","abort","console","lastRouteIndex","lastCurrentIndex","activated","deactivated","resolveQueue","extractLeaveGuards","beforeHooks","extractUpdateHooks","iterator","createNavigationAbortedError","bindEnterGuard","extractEnterGuards","resolveHooks","setupListeners","teardown","cleanupListener","HTML5History","_startLocation","getLocation","__proto__","expectScroll","supportsScroll","handleRoutingEvent","go","fromRoute","getCurrentLocation","pathLowerCase","baseLowerCase","HashHistory","fallback","checkFallback","ensureSlash","getHash","replaceHash","eventType","pushHash","getUrl","AbstractHistory","targetIndex","apps","prototypeAccessors","configurable","$once","routeOrError","handleInitialScroll","_route","beforeEach","registerHook","beforeResolve","afterEach","back","forward","getMatchedComponents","createHref","normalizedTo","defineProperties","VueRouter$1","installed","isDef","registerInstance","callVal","_parentVnode","mixin","beforeCreate","_router","util","defineReactive","destroyed","defineProperty","strats","optionMergeStrategies","beforeRouteEnter","beforeRouteLeave","beforeRouteUpdate","created","version","START_LOCATION","Sentry","tags","filterEvents","mouseenter","mouseleave","filterContextListener","contextListener","related","relatedTarget","event1","event0","onRemove","__on","onAdd","wrap","customEvent","sourceEvent"],"mappings":"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","file":"commons-pages.projects.pipelines.builds-pages.projects.pipelines.codequality_report-pages.projects.p-f64b4b8f.c4a9a8b6.chunk.js","sourcesContent":["export const MINIMUM_SEARCH_LENGTH = 3;\n\nexport const TYPENAME_BOARD = 'Board';\nexport const TYPENAME_CI_BUILD = 'Ci::Build';\nexport const TYPENAME_CI_RUNNER = 'Ci::Runner';\nexport const TYPENAME_CI_PIPELINE = 'Ci::Pipeline';\nexport const TYPENAME_CI_STAGE = 'Ci::Stage';\nexport const TYPENAME_CI_TRIGGER = 'Ci::Trigger';\nexport const TYPENAME_CI_VARIABLE = 'Ci::Variable';\nexport const TYPENAME_COMMIT_STATUS = 'CommitStatus';\nexport const TYPENAME_CONTAINER_REPOSITORY = 'ContainerRepository';\nexport const TYPENAME_CRM_CONTACT = 'CustomerRelations::Contact';\nexport const TYPENAME_CRM_ORGANIZATION = 'CustomerRelations::Organization';\nexport const TYPENAME_DESIGN_VERSION = 'DesignManagement::Version';\nexport const TYPENAME_DISCUSSION = 'Discussion';\nexport const TYPENAME_DISCUSSION_NOTE = 'DiscussionNote';\nexport const TYPENAME_EPIC = 'Epic';\nexport const TYPENAME_EPIC_BOARD = 'Boards::EpicBoard';\nexport const TYPENAME_FEATURE_FLAG = 'FeatureFlag';\nexport const TYPENAME_GROUP = 'Group';\nexport const TYPENAME_ISSUE = 'Issue';\nexport const TYPENAME_ITERATION = 'Iteration';\nexport const TYPENAME_ITERATIONS_CADENCE = 'Iterations::Cadence';\nexport const TYPENAME_LABEL = 'Label';\nexport const TYPENAME_MEMBER_ROLE = 'MemberRole';\nexport const TYPENAME_MERGE_REQUEST = 'MergeRequest';\nexport const TYPENAME_MILESTONE = 'Milestone';\nexport const TYPENAME_NOTE = 'Note';\nexport const TYPENAME_PACKAGES_PACKAGE = 'Packages::Package';\nexport const TYPENAME_PROJECT = 'Project';\nexport const TYPENAME_SCANNER_PROFILE = 'DastScannerProfile';\nexport const TYPENAME_SITE_PROFILE = 'DastSiteProfile';\nexport const TYPENAME_TODO = 'Todo';\nexport const TYPENAME_USER = 'User';\nexport const TYPENAME_VULNERABILITY = 'Vulnerability';\nexport const TYPENAME_WORK_ITEM = 'WorkItem';\nexport const TYPENAME_WORK_ITEM_RELATED_BRANCH = 'WorkItemRelatedBranch';\nexport const TYPE_ORGANIZATION = 'Organizations::Organization';\nexport const TYPE_USERS_SAVED_REPLY = 'Users::SavedReply';\nexport const TYPE_WORKSPACE = 'RemoteDevelopment::Workspace';\nexport const TYPE_COMPLIANCE_FRAMEWORK = 'ComplianceManagement::Framework';\n\nexport const QUERY_PARAM_START_CURSOR = 'start_cursor';\nexport const QUERY_PARAM_END_CURSOR = 'end_cursor';\n","import {\n getTimeago,\n localeDateFormat,\n newDate,\n timeagoLanguageCode,\n} from '~/lib/utils/datetime_utility';\n\n/**\n * Mixin with time ago methods used in some vue components\n */\nexport default {\n methods: {\n timeFormatted(time, format) {\n const timeago = getTimeago(format);\n\n return timeago.format(newDate(time), timeagoLanguageCode);\n },\n\n tooltipTitle(time) {\n return localeDateFormat.asDateTimeFull.format(newDate(time));\n },\n },\n};\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = pair;\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n}\n","export default function(x) {\n return x === null ? NaN : +x;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n return [min, max];\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","import number from \"./number\";\n\nexport default function(values, p, valueof) {\n if (valueof == null) valueof = number;\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n return max;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n return min;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n }\n }\n\n else {\n while (++i < n) {\n if (value = +valueof(values[i], i, values)) sum += value;\n }\n }\n\n return sum;\n}\n","export {default as path} from \"./path.js\";\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n","module.exports = require('./lib/visibility.timers.js')\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('time',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.viewport\",value:({ placement: _vm.tooltipPlacement }),expression:\"{ placement: tooltipPlacement }\",modifiers:{\"viewport\":true}}],class:_vm.cssClass,attrs:{\"title\":_vm.tooltipText,\"datetime\":_vm.time}},[_vm._t(\"default\",function(){return [(_vm.enableTruncation)?[_c('gl-truncate',{attrs:{\"text\":_vm.timeAgo,\"with-tooltip\":\"\"}})]:[_vm._v(_vm._s(_vm.timeAgo))]]},{\"timeAgo\":_vm.timeAgo})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./time_ago_tooltip.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./time_ago_tooltip.vue?vue&type=script&lang=js\"","<script>\nimport { GlTruncate, GlTooltipDirective } from '@gitlab/ui';\n\nimport { DATE_TIME_FORMATS, DEFAULT_DATE_TIME_FORMAT } from '~/lib/utils/datetime_utility';\nimport timeagoMixin from '../mixins/timeago';\n\n/**\n * Port of ruby helper time_ago_with_tooltip\n */\n\nexport default {\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n components: {\n GlTruncate,\n },\n mixins: [timeagoMixin],\n props: {\n time: {\n type: [String, Number, Date],\n required: true,\n },\n tooltipPlacement: {\n type: String,\n required: false,\n default: 'top',\n },\n cssClass: {\n type: String,\n required: false,\n default: '',\n },\n dateTimeFormat: {\n type: String,\n required: false,\n default: DEFAULT_DATE_TIME_FORMAT,\n validator: (timeFormat) => DATE_TIME_FORMATS.includes(timeFormat),\n },\n enableTruncation: {\n type: Boolean,\n required: false,\n default: false,\n },\n },\n computed: {\n timeAgo() {\n return this.timeFormatted(this.time, this.dateTimeFormat);\n },\n tooltipText() {\n return this.enableTruncation ? undefined : this.tooltipTitle(this.time);\n },\n },\n};\n</script>\n<template>\n <time\n v-gl-tooltip.viewport=\"{ placement: tooltipPlacement }\"\n :class=\"cssClass\"\n :title=\"tooltipText\"\n :datetime=\"time\"\n ><slot :time-ago=\"timeAgo\"\n ><template v-if=\"enableTruncation\"><gl-truncate :text=\"timeAgo\" with-tooltip /></template\n ><template v-else>{{ timeAgo }}</template></slot\n ></time\n >\n</template>\n","import { render, staticRenderFns } from \"./time_ago_tooltip.vue?vue&type=template&id=26d04390\"\nimport script from \"./time_ago_tooltip.vue?vue&type=script&lang=js\"\nexport * from \"./time_ago_tooltip.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { isArray } from 'lodash';\nimport Visibility from 'visibilityjs';\nimport { QUERY_PARAM_START_CURSOR, QUERY_PARAM_END_CURSOR } from './constants';\n\n/**\n * Ids generated by GraphQL endpoints are usually in the format\n * gid://gitlab/Environments/123. This method checks if the passed id follows that format\n *\n * @param {String|Number} id The id value\n * @returns {Boolean}\n */\nexport const isGid = (id) => {\n if (typeof id === 'string' && id.startsWith('gid://gitlab/')) {\n return true;\n }\n\n return false;\n};\n\nexport const parseGid = (gid) => {\n const [type, id] = `${gid}`.replace(/gid:\\/\\/gitlab\\//g, '').split('/');\n return { type, id };\n};\n\n/**\n * Ids generated by GraphQL endpoints are usually in the format\n * gid://gitlab/Environments/123. This method extracts Id number\n * from the Id path\n *\n * @param {String} gid GraphQL global ID\n * @returns {Number}\n */\nexport const getIdFromGraphQLId = (gid = '') => {\n const rawId = isGid(gid) ? parseGid(gid).id : gid;\n const id = parseInt(rawId, 10);\n return Number.isInteger(id) ? id : null;\n};\n\n/**\n * Ids generated by GraphQL endpoints are usually in the format\n * gid://gitlab/Environments/123. This method extracts Type string\n * from the Id path\n *\n * @param {String} gid GraphQL global ID\n * @returns {String}\n */\nexport const getTypeFromGraphQLId = (gid = '') => {\n if (!isGid(gid)) return null;\n\n const { type } = parseGid(gid);\n return type || null;\n};\n\nexport const mutationOperationMode = {\n append: 'APPEND',\n remove: 'REMOVE',\n replace: 'REPLACE',\n};\n\n/**\n * Ids generated by GraphQL endpoints are usually in the format\n * gid://gitlab/Groups/123. This method takes a type and an id\n * and interpolates the 2 values into the expected GraphQL ID format.\n *\n * @param {String} type The entity type\n * @param {String|Number} id The id value\n * @returns {String}\n */\nexport const convertToGraphQLId = (type, id) => {\n if (typeof type !== 'string') {\n throw new TypeError(`type must be a string; got ${typeof type}`);\n }\n\n if (!['number', 'string'].includes(typeof id)) {\n throw new TypeError(`id must be a number or string; got ${typeof id}`);\n }\n\n if (isGid(id)) {\n return id;\n }\n\n return `gid://gitlab/${type}/${id}`;\n};\n\n/**\n * Ids generated by GraphQL endpoints are usually in the format\n * gid://gitlab/Groups/123. This method takes a type and an\n * array of ids and tranforms the array values into the expected\n * GraphQL ID format.\n *\n * @param {String} type The entity type\n * @param {Array} ids An array of id values\n * @returns {Array}\n */\nexport const convertToGraphQLIds = (type, ids) => ids.map((id) => convertToGraphQLId(type, id));\n\n/**\n * Ids generated by GraphQL endpoints are usually in the format\n * gid://gitlab/Groups/123. This method takes an array of\n * GraphQL Ids and converts them to a number.\n *\n * @param {Array} ids An array of GraphQL IDs\n * @returns {Array}\n */\nexport const convertFromGraphQLIds = (ids) => {\n if (!isArray(ids)) {\n throw new TypeError(`ids must be an array; got ${typeof ids}`);\n }\n\n return ids.map((id) => getIdFromGraphQLId(id));\n};\n\n/**\n * Ids generated by GraphQL endpoints are usually in the format\n * gid://gitlab/Groups/123. This method takes an array of nodes\n * and converts the `id` properties from a GraphQL Id to a number.\n *\n * @param {Array} nodes An array of nodes with an `id` property\n * @returns {Array}\n */\nexport const convertNodeIdsFromGraphQLIds = (nodes) => {\n if (!isArray(nodes)) {\n throw new TypeError(`nodes must be an array; got ${typeof nodes}`);\n }\n\n return nodes.map((node) => (node.id ? { ...node, id: getIdFromGraphQLId(node.id) } : node));\n};\n\n/**\n * This function takes a GraphQL query data as a required argument and\n * the field name to resolve as an optional argument\n * and returns resolved field's data or an empty array\n * @param {Object} queryData\n * @param {String} nodesField (in most cases it will be 'nodes')\n * @returns {Array}\n */\nexport const getNodesOrDefault = (queryData, nodesField = 'nodes') => {\n return queryData?.[nodesField] ?? [];\n};\n\nexport const toggleQueryPollingByVisibility = (queryRef, interval = 10000) => {\n const stopStartQuery = (query) => {\n if (!Visibility.hidden()) {\n query.startPolling(interval);\n } else {\n query.stopPolling();\n }\n };\n\n stopStartQuery(queryRef);\n Visibility.change(stopStartQuery.bind(null, queryRef));\n};\n\nexport const etagQueryHeaders = (featureCorrelation, etagResource = '') => {\n return {\n fetchOptions: {\n method: 'GET',\n },\n headers: {\n 'X-GITLAB-GRAPHQL-FEATURE-CORRELATION': featureCorrelation,\n 'X-GITLAB-GRAPHQL-RESOURCE-ETAG': etagResource,\n 'X-Requested-With': 'XMLHttpRequest',\n },\n };\n};\n\nexport const calculateGraphQLPaginationQueryParams = ({\n startCursor,\n endCursor,\n routeQuery: { start_cursor, end_cursor, ...routeQuery },\n}) => {\n if (startCursor) {\n return {\n ...routeQuery,\n [QUERY_PARAM_START_CURSOR]: startCursor,\n };\n }\n\n if (endCursor) {\n return {\n ...routeQuery,\n [QUERY_PARAM_END_CURSOR]: endCursor,\n };\n }\n\n return routeQuery;\n};\n","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"cancelPipeline\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiPipelineID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pipelineCancel\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":102}};\n doc.loc.source = {\"body\":\"mutation cancelPipeline($id: CiPipelineID!) {\\n pipelineCancel(input: { id: $id }) {\\n errors\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"cancelPipeline\"] = oneQuery(doc, \"cancelPipeline\");\n \n","export var slice = Array.prototype.slice;\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(function(elapsed) {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nexport function parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n end: transition_end\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n return defaultTiming.time = now(), defaultTiming;\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {customEvent, event, touch, mouse, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nfunction toucher(identifier) {\n return function(target) {\n return touch(target, event.touches, identifier);\n };\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection) {\n if (group.selection) {\n group\n .on(\"start.brush\", function() { emitter(this, arguments).beforestart().start(); })\n .on(\"interrupt.brush end.brush\", function() { emitter(this, arguments).end(); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start().brush().end();\n });\n }\n };\n\n brush.clear = function(group) {\n brush.move(group, null);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n var emit = that.__brush.emitter;\n return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n }\n\n function Emitter(that, args, clean) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n this.clean = clean;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function() {\n if (this.starting) this.starting = false, this.emit(\"start\");\n else this.emit(\"brush\");\n return this;\n },\n brush: function() {\n this.emit(\"brush\");\n return this;\n },\n end: function() {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\");\n return this;\n },\n emit: function(type) {\n customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function started() {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n pointer = event.touches ? toucher(event.changedTouches[0].identifier) : mouse,\n point0 = pointer(that),\n point = point0,\n emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n state.selection = selection = [\n [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],\n [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]\n ];\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n nopropagation();\n interrupt(that);\n redraw.call(that);\n emit.start();\n\n function moved() {\n var point1 = pointer(that);\n if (shifting && !lockX && !lockY) {\n if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;\n else lockX = true;\n }\n point = point1;\n moving = true;\n noevent();\n move();\n }\n\n function move() {\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));\n if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush();\n }\n }\n\n function ended() {\n nopropagation();\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end();\n }\n\n function keydowned() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move();\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n\n function keyupped() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move();\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move();\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n }\n\n function touchmoved() {\n emitter(this, arguments).moved();\n }\n\n function touchended() {\n emitter(this, arguments).ended();\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","export var cos = Math.cos;\nexport var sin = Math.sin;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = pi * 2;\nexport var max = Math.max;\n","export var slice = Array.prototype.slice;\n","export var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n constructor: Map,\n has: function(key) {\n return (prefix + key) in this;\n },\n get: function(key) {\n return this[prefix + key];\n },\n set: function(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function() {\n for (var property in this) if (property[0] === prefix) delete this[property];\n },\n keys: function() {\n var keys = [];\n for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n return keys;\n },\n values: function() {\n var values = [];\n for (var property in this) if (property[0] === prefix) values.push(this[property]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n return entries;\n },\n size: function() {\n var size = 0;\n for (var property in this) if (property[0] === prefix) ++size;\n return size;\n },\n empty: function() {\n for (var property in this) if (property[0] === prefix) return false;\n return true;\n },\n each: function(f) {\n for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n};\n\nfunction map(object, f) {\n var map = new Map;\n\n // Copy constructor.\n if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f(o = object[i], i, object), o);\n }\n\n // Convert object to map.\n else if (object) for (var key in object) map.set(key, object[key]);\n\n return map;\n}\n\nexport default map;\n","import {default as map, prefix} from \"./map\";\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function(value) {\n value += \"\";\n this[prefix + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n};\n\nfunction set(object, f) {\n var set = new Set;\n\n // Copy constructor.\n if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1, n = object.length;\n if (f == null) while (++i < n) set.add(object[i]);\n else while (++i < n) set.add(f(object[i], i, object));\n }\n\n return set;\n}\n\nexport default set;\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(d) {\n var x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {map} from \"d3-collection\";\nimport {timer} from \"d3-timer\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\");\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.each(function (force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","export default function() {\n return Math.random();\n}\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomNormal(source) {\n function randomNormal(mu, sigma) {\n var x, r;\n mu = mu == null ? 0 : +mu;\n sigma = sigma == null ? 1 : +sigma;\n return function() {\n var y;\n\n // If available, use the second previously-generated uniform random.\n if (x != null) y = x, x = null;\n\n // Otherwise, generate a new x and y.\n else do {\n x = source() * 2 - 1;\n y = source() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n\n return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n };\n }\n\n randomNormal.source = sourceRandomNormal;\n\n return randomNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomUniform(source) {\n function randomUniform(min, max) {\n min = min == null ? 0 : +min;\n max = max == null ? 1 : +max;\n if (arguments.length === 1) max = min, min = 0;\n else max -= min;\n return function() {\n return source() * max + min;\n };\n }\n\n randomUniform.source = sourceRandomUniform;\n\n return randomUniform;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomIrwinHall(source) {\n function randomIrwinHall(n) {\n return function() {\n for (var sum = 0, i = 0; i < n; ++i) sum += source();\n return sum;\n };\n }\n\n randomIrwinHall.source = sourceRandomIrwinHall;\n\n return randomIrwinHall;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport normal from \"./normal\";\n\nexport default (function sourceRandomLogNormal(source) {\n function randomLogNormal() {\n var randomNormal = normal.source(source).apply(this, arguments);\n return function() {\n return Math.exp(randomNormal());\n };\n }\n\n randomLogNormal.source = sourceRandomLogNormal;\n\n return randomLogNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport irwinHall from \"./irwinHall\";\n\nexport default (function sourceRandomBates(source) {\n function randomBates(n) {\n var randomIrwinHall = irwinHall.source(source)(n);\n return function() {\n return randomIrwinHall() / n;\n };\n }\n\n randomBates.source = sourceRandomBates;\n\n return randomBates;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomExponential(source) {\n function randomExponential(lambda) {\n return function() {\n return -Math.log(1 - source()) / lambda;\n };\n }\n\n randomExponential.source = sourceRandomExponential;\n\n return randomExponential;\n})(defaultSource);\n","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"],\n minus: \"-\"\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": formatDecimal,\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"-\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport {map} from \"./array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport nice from \"./nice\";\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(identity, identity),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(map.call(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","function RedBlackTree() {\n this._ = null; // root node\n}\n\nexport function RedBlackNode(node) {\n node.U = // parent node\n node.C = // color - true for red, false for black\n node.L = // left node\n node.R = // right node\n node.P = // previous node\n node.N = null; // next node\n}\n\nRedBlackTree.prototype = {\n constructor: RedBlackTree,\n\n insert: function(after, node) {\n var parent, grandpa, uncle;\n\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = RedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n RedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n RedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n\n var parent = node.U,\n sibling,\n left = node.L,\n right = node.R,\n next,\n red;\n\n if (!left) next = right;\n else if (!right) next = left;\n else next = RedBlackFirst(right);\n\n if (parent) {\n if (parent.L === node) parent.L = next;\n else parent.R = next;\n } else {\n this._ = next;\n }\n\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) { node.C = false; return; }\n\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n RedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n RedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n RedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n RedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n\n if (node) node.C = false;\n }\n};\n\nfunction RedBlackRotateLeft(tree, node) {\n var p = node,\n q = node.R,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n}\n\nfunction RedBlackRotateRight(tree, node) {\n var p = node,\n q = node.L,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n}\n\nfunction RedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n}\n\nexport default RedBlackTree;\n","import {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createEdge(left, right, v0, v1) {\n var edge = [null, null],\n index = edges.push(edge) - 1;\n edge.left = left;\n edge.right = right;\n if (v0) setEdgeEnd(edge, left, right, v0);\n if (v1) setEdgeEnd(edge, right, left, v1);\n cells[left.index].halfedges.push(index);\n cells[right.index].halfedges.push(index);\n return edge;\n}\n\nexport function createBorderEdge(left, v0, v1) {\n var edge = [v0, v1];\n edge.left = left;\n return edge;\n}\n\nexport function setEdgeEnd(edge, left, right, vertex) {\n if (!edge[0] && !edge[1]) {\n edge[0] = vertex;\n edge.left = left;\n edge.right = right;\n } else if (edge.left === right) {\n edge[1] = vertex;\n } else {\n edge[0] = vertex;\n }\n}\n\n// Liang–Barsky line clipping.\nfunction clipEdge(edge, x0, y0, x1, y1) {\n var a = edge[0],\n b = edge[1],\n ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?\n\n if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];\n if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];\n return true;\n}\n\nfunction connectEdge(edge, x0, y0, x1, y1) {\n var v1 = edge[1];\n if (v1) return true;\n\n var v0 = edge[0],\n left = edge.left,\n right = edge.right,\n lx = left[0],\n ly = left[1],\n rx = right[0],\n ry = right[1],\n fx = (lx + rx) / 2,\n fy = (ly + ry) / 2,\n fm,\n fb;\n\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!v0) v0 = [fx, y0];\n else if (v0[1] >= y1) return;\n v1 = [fx, y1];\n } else {\n if (!v0) v0 = [fx, y1];\n else if (v0[1] < y0) return;\n v1 = [fx, y0];\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!v0) v0 = [(y0 - fb) / fm, y0];\n else if (v0[1] >= y1) return;\n v1 = [(y1 - fb) / fm, y1];\n } else {\n if (!v0) v0 = [(y1 - fb) / fm, y1];\n else if (v0[1] < y0) return;\n v1 = [(y0 - fb) / fm, y0];\n }\n } else {\n if (ly < ry) {\n if (!v0) v0 = [x0, fm * x0 + fb];\n else if (v0[0] >= x1) return;\n v1 = [x1, fm * x1 + fb];\n } else {\n if (!v0) v0 = [x1, fm * x1 + fb];\n else if (v0[0] < x0) return;\n v1 = [x0, fm * x0 + fb];\n }\n }\n }\n\n edge[0] = v0;\n edge[1] = v1;\n return true;\n}\n\nexport function clipEdges(x0, y0, x1, y1) {\n var i = edges.length,\n edge;\n\n while (i--) {\n if (!connectEdge(edge = edges[i], x0, y0, x1, y1)\n || !clipEdge(edge, x0, y0, x1, y1)\n || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon\n || Math.abs(edge[0][1] - edge[1][1]) > epsilon)) {\n delete edges[i];\n }\n }\n}\n","import {createBorderEdge} from \"./Edge\";\nimport {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createCell(site) {\n return cells[site.index] = {\n site: site,\n halfedges: []\n };\n}\n\nfunction cellHalfedgeAngle(cell, edge) {\n var site = cell.site,\n va = edge.left,\n vb = edge.right;\n if (site === vb) vb = va, va = site;\n if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);\n if (site === va) va = edge[1], vb = edge[0];\n else va = edge[0], vb = edge[1];\n return Math.atan2(va[0] - vb[0], vb[1] - va[1]);\n}\n\nexport function cellHalfedgeStart(cell, edge) {\n return edge[+(edge.left !== cell.site)];\n}\n\nexport function cellHalfedgeEnd(cell, edge) {\n return edge[+(edge.left === cell.site)];\n}\n\nexport function sortCellHalfedges() {\n for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) {\n if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) {\n var index = new Array(m),\n array = new Array(m);\n for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]);\n index.sort(function(i, j) { return array[j] - array[i]; });\n for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];\n for (j = 0; j < m; ++j) halfedges[j] = array[j];\n }\n }\n}\n\nexport function clipCells(x0, y0, x1, y1) {\n var nCells = cells.length,\n iCell,\n cell,\n site,\n iHalfedge,\n halfedges,\n nHalfedges,\n start,\n startX,\n startY,\n end,\n endX,\n endY,\n cover = true;\n\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n halfedges = cell.halfedges;\n iHalfedge = halfedges.length;\n\n // Remove any dangling clipped edges.\n while (iHalfedge--) {\n if (!edges[halfedges[iHalfedge]]) {\n halfedges.splice(iHalfedge, 1);\n }\n }\n\n // Insert any border edges as necessary.\n iHalfedge = 0, nHalfedges = halfedges.length;\n while (iHalfedge < nHalfedges) {\n end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];\n start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];\n if (Math.abs(endX - startX) > epsilon || Math.abs(endY - startY) > epsilon) {\n halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end,\n Math.abs(endX - x0) < epsilon && y1 - endY > epsilon ? [x0, Math.abs(startX - x0) < epsilon ? startY : y1]\n : Math.abs(endY - y1) < epsilon && x1 - endX > epsilon ? [Math.abs(startY - y1) < epsilon ? startX : x1, y1]\n : Math.abs(endX - x1) < epsilon && endY - y0 > epsilon ? [x1, Math.abs(startX - x1) < epsilon ? startY : y0]\n : Math.abs(endY - y0) < epsilon && endX - x0 > epsilon ? [Math.abs(startY - y0) < epsilon ? startX : x0, y0]\n : null)) - 1);\n ++nHalfedges;\n }\n }\n\n if (nHalfedges) cover = false;\n }\n }\n\n // If there weren’t any edges, have the closest site cover the extent.\n // It doesn’t matter which corner of the extent we measure!\n if (cover) {\n var dx, dy, d2, dc = Infinity;\n\n for (iCell = 0, cover = null; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n dx = site[0] - x0;\n dy = site[1] - y0;\n d2 = dx * dx + dy * dy;\n if (d2 < dc) dc = d2, cover = cell;\n }\n }\n\n if (cover) {\n var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];\n cover.halfedges.push(\n edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1,\n edges.push(createBorderEdge(site, v01, v11)) - 1,\n edges.push(createBorderEdge(site, v11, v10)) - 1,\n edges.push(createBorderEdge(site, v10, v00)) - 1\n );\n }\n }\n\n // Lastly delete any cells with no edges; these were entirely clipped.\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n if (!cell.halfedges.length) {\n delete cells[iCell];\n }\n }\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {circles, epsilon2} from \"./Diagram\";\n\nvar circlePool = [];\n\nexport var firstCircle;\n\nfunction Circle() {\n RedBlackNode(this);\n this.x =\n this.y =\n this.arc =\n this.site =\n this.cy = null;\n}\n\nexport function attachCircle(arc) {\n var lArc = arc.P,\n rArc = arc.N;\n\n if (!lArc || !rArc) return;\n\n var lSite = lArc.site,\n cSite = arc.site,\n rSite = rArc.site;\n\n if (lSite === rSite) return;\n\n var bx = cSite[0],\n by = cSite[1],\n ax = lSite[0] - bx,\n ay = lSite[1] - by,\n cx = rSite[0] - bx,\n cy = rSite[1] - by;\n\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -epsilon2) return;\n\n var ha = ax * ax + ay * ay,\n hc = cx * cx + cy * cy,\n x = (cy * ha - ay * hc) / d,\n y = (ax * hc - cx * ha) / d;\n\n var circle = circlePool.pop() || new Circle;\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom\n\n arc.circle = circle;\n\n var before = null,\n node = circles._;\n\n while (node) {\n if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {\n if (node.L) node = node.L;\n else { before = node.P; break; }\n } else {\n if (node.R) node = node.R;\n else { before = node; break; }\n }\n }\n\n circles.insert(before, circle);\n if (!before) firstCircle = circle;\n}\n\nexport function detachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) firstCircle = circle.N;\n circles.remove(circle);\n circlePool.push(circle);\n RedBlackNode(circle);\n arc.circle = null;\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {createCell} from \"./Cell\";\nimport {attachCircle, detachCircle} from \"./Circle\";\nimport {createEdge, setEdgeEnd} from \"./Edge\";\nimport {beaches, epsilon} from \"./Diagram\";\n\nvar beachPool = [];\n\nfunction Beach() {\n RedBlackNode(this);\n this.edge =\n this.site =\n this.circle = null;\n}\n\nfunction createBeach(site) {\n var beach = beachPool.pop() || new Beach;\n beach.site = site;\n return beach;\n}\n\nfunction detachBeach(beach) {\n detachCircle(beach);\n beaches.remove(beach);\n beachPool.push(beach);\n RedBlackNode(beach);\n}\n\nexport function removeBeach(beach) {\n var circle = beach.circle,\n x = circle.x,\n y = circle.cy,\n vertex = [x, y],\n previous = beach.P,\n next = beach.N,\n disappearing = [beach];\n\n detachBeach(beach);\n\n var lArc = previous;\n while (lArc.circle\n && Math.abs(x - lArc.circle.x) < epsilon\n && Math.abs(y - lArc.circle.cy) < epsilon) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n detachBeach(lArc);\n lArc = previous;\n }\n\n disappearing.unshift(lArc);\n detachCircle(lArc);\n\n var rArc = next;\n while (rArc.circle\n && Math.abs(x - rArc.circle.x) < epsilon\n && Math.abs(y - rArc.circle.cy) < epsilon) {\n next = rArc.N;\n disappearing.push(rArc);\n detachBeach(rArc);\n rArc = next;\n }\n\n disappearing.push(rArc);\n detachCircle(rArc);\n\n var nArcs = disappearing.length,\n iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = createEdge(lArc.site, rArc.site, null, vertex);\n\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nexport function addBeach(site) {\n var x = site[0],\n directrix = site[1],\n lArc,\n rArc,\n dxl,\n dxr,\n node = beaches._;\n\n while (node) {\n dxl = leftBreakPoint(node, directrix) - x;\n if (dxl > epsilon) node = node.L; else {\n dxr = x - rightBreakPoint(node, directrix);\n if (dxr > epsilon) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -epsilon) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -epsilon) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n\n createCell(site);\n var newArc = createBeach(site);\n beaches.insert(lArc, newArc);\n\n if (!lArc && !rArc) return;\n\n if (lArc === rArc) {\n detachCircle(lArc);\n rArc = createBeach(lArc.site);\n beaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site);\n attachCircle(lArc);\n attachCircle(rArc);\n return;\n }\n\n if (!rArc) { // && lArc\n newArc.edge = createEdge(lArc.site, newArc.site);\n return;\n }\n\n // else lArc !== rArc\n detachCircle(lArc);\n detachCircle(rArc);\n\n var lSite = lArc.site,\n ax = lSite[0],\n ay = lSite[1],\n bx = site[0] - ax,\n by = site[1] - ay,\n rSite = rArc.site,\n cx = rSite[0] - ax,\n cy = rSite[1] - ay,\n d = 2 * (bx * cy - by * cx),\n hb = bx * bx + by * by,\n hc = cx * cx + cy * cy,\n vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];\n\n setEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = createEdge(lSite, site, null, vertex);\n rArc.edge = createEdge(site, rSite, null, vertex);\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nfunction leftBreakPoint(arc, directrix) {\n var site = arc.site,\n rfocx = site[0],\n rfocy = site[1],\n pby2 = rfocy - directrix;\n\n if (!pby2) return rfocx;\n\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n\n site = lArc.site;\n var lfocx = site[0],\n lfocy = site[1],\n plby2 = lfocy - directrix;\n\n if (!plby2) return lfocx;\n\n var hl = lfocx - rfocx,\n aby2 = 1 / pby2 - 1 / plby2,\n b = hl / plby2;\n\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\n return (rfocx + lfocx) / 2;\n}\n\nfunction rightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return leftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site[1] === directrix ? site[0] : Infinity;\n}\n","import {addBeach, removeBeach} from \"./Beach\";\nimport {sortCellHalfedges, cellHalfedgeStart, clipCells} from \"./Cell\";\nimport {firstCircle} from \"./Circle\";\nimport {clipEdges} from \"./Edge\";\nimport RedBlackTree from \"./RedBlackTree\";\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var beaches;\nexport var cells;\nexport var circles;\nexport var edges;\n\nfunction triangleArea(a, b, c) {\n return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);\n}\n\nfunction lexicographic(a, b) {\n return b[1] - a[1]\n || b[0] - a[0];\n}\n\nexport default function Diagram(sites, extent) {\n var site = sites.sort(lexicographic).pop(),\n x,\n y,\n circle;\n\n edges = [];\n cells = new Array(sites.length);\n beaches = new RedBlackTree;\n circles = new RedBlackTree;\n\n while (true) {\n circle = firstCircle;\n if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {\n if (site[0] !== x || site[1] !== y) {\n addBeach(site);\n x = site[0], y = site[1];\n }\n site = sites.pop();\n } else if (circle) {\n removeBeach(circle.arc);\n } else {\n break;\n }\n }\n\n sortCellHalfedges();\n\n if (extent) {\n var x0 = +extent[0][0],\n y0 = +extent[0][1],\n x1 = +extent[1][0],\n y1 = +extent[1][1];\n clipEdges(x0, y0, x1, y1);\n clipCells(x0, y0, x1, y1);\n }\n\n this.edges = edges;\n this.cells = cells;\n\n beaches =\n circles =\n edges =\n cells = null;\n}\n\nDiagram.prototype = {\n constructor: Diagram,\n\n polygons: function() {\n var edges = this.edges;\n\n return this.cells.map(function(cell) {\n var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); });\n polygon.data = cell.site.data;\n return polygon;\n });\n },\n\n triangles: function() {\n var triangles = [],\n edges = this.edges;\n\n this.cells.forEach(function(cell, i) {\n if (!(m = (halfedges = cell.halfedges).length)) return;\n var site = cell.site,\n halfedges,\n j = -1,\n m,\n s0,\n e1 = edges[halfedges[m - 1]],\n s1 = e1.left === site ? e1.right : e1.left;\n\n while (++j < m) {\n s0 = s1;\n e1 = edges[halfedges[j]];\n s1 = e1.left === site ? e1.right : e1.left;\n if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {\n triangles.push([site.data, s0.data, s1.data]);\n }\n }\n });\n\n return triangles;\n },\n\n links: function() {\n return this.edges.filter(function(edge) {\n return edge.right;\n }).map(function(edge) {\n return {\n source: edge.left.data,\n target: edge.right.data\n };\n });\n },\n\n find: function(x, y, radius) {\n var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;\n\n // Use the previously-found cell, or start with an arbitrary one.\n while (!(cell = that.cells[i1])) if (++i1 >= n) return null;\n var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;\n\n // Traverse the half-edges to find a closer cell, if any.\n do {\n cell = that.cells[i0 = i1], i1 = null;\n cell.halfedges.forEach(function(e) {\n var edge = that.edges[e], v = edge.left;\n if ((v === cell.site || !v) && !(v = edge.right)) return;\n var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;\n if (v2 < d2) d2 = v2, i1 = v.index;\n });\n } while (i1 !== null);\n\n that._found = i0;\n\n return radius == null || d2 <= radius * radius ? cell.site : null;\n }\n}\n","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","import {min} from \"d3-array\";\n\nfunction targetDepth(d) {\n return d.target.depth;\n}\n\nexport function left(node) {\n return node.depth;\n}\n\nexport function right(node, n) {\n return n - 1 - node.height;\n}\n\nexport function justify(node, n) {\n return node.sourceLinks.length ? node.depth : n - 1;\n}\n\nexport function center(node) {\n return node.targetLinks.length ? node.depth\n : node.sourceLinks.length ? min(node.sourceLinks, targetDepth) - 1\n : 0;\n}\n","export default function constant(x) {\n return function() {\n return x;\n };\n}\n","import {max, min, sum} from \"d3-array\";\nimport {justify} from \"./align.js\";\nimport constant from \"./constant.js\";\n\nfunction ascendingSourceBreadth(a, b) {\n return ascendingBreadth(a.source, b.source) || a.index - b.index;\n}\n\nfunction ascendingTargetBreadth(a, b) {\n return ascendingBreadth(a.target, b.target) || a.index - b.index;\n}\n\nfunction ascendingBreadth(a, b) {\n return a.y0 - b.y0;\n}\n\nfunction value(d) {\n return d.value;\n}\n\nfunction defaultId(d) {\n return d.index;\n}\n\nfunction defaultNodes(graph) {\n return graph.nodes;\n}\n\nfunction defaultLinks(graph) {\n return graph.links;\n}\n\nfunction find(nodeById, id) {\n const node = nodeById.get(id);\n if (!node) throw new Error(\"missing: \" + id);\n return node;\n}\n\nfunction computeLinkBreadths({nodes}) {\n for (const node of nodes) {\n let y0 = node.y0;\n let y1 = y0;\n for (const link of node.sourceLinks) {\n link.y0 = y0 + link.width / 2;\n y0 += link.width;\n }\n for (const link of node.targetLinks) {\n link.y1 = y1 + link.width / 2;\n y1 += link.width;\n }\n }\n}\n\nexport default function Sankey() {\n let x0 = 0, y0 = 0, x1 = 1, y1 = 1; // extent\n let dx = 24; // nodeWidth\n let dy = 8, py; // nodePadding\n let id = defaultId;\n let align = justify;\n let sort;\n let linkSort;\n let nodes = defaultNodes;\n let links = defaultLinks;\n let iterations = 6;\n\n function sankey() {\n const graph = {nodes: nodes.apply(null, arguments), links: links.apply(null, arguments)};\n computeNodeLinks(graph);\n computeNodeValues(graph);\n computeNodeDepths(graph);\n computeNodeHeights(graph);\n computeNodeBreadths(graph);\n computeLinkBreadths(graph);\n return graph;\n }\n\n sankey.update = function(graph) {\n computeLinkBreadths(graph);\n return graph;\n };\n\n sankey.nodeId = function(_) {\n return arguments.length ? (id = typeof _ === \"function\" ? _ : constant(_), sankey) : id;\n };\n\n sankey.nodeAlign = function(_) {\n return arguments.length ? (align = typeof _ === \"function\" ? _ : constant(_), sankey) : align;\n };\n\n sankey.nodeSort = function(_) {\n return arguments.length ? (sort = _, sankey) : sort;\n };\n\n sankey.nodeWidth = function(_) {\n return arguments.length ? (dx = +_, sankey) : dx;\n };\n\n sankey.nodePadding = function(_) {\n return arguments.length ? (dy = py = +_, sankey) : dy;\n };\n\n sankey.nodes = function(_) {\n return arguments.length ? (nodes = typeof _ === \"function\" ? _ : constant(_), sankey) : nodes;\n };\n\n sankey.links = function(_) {\n return arguments.length ? (links = typeof _ === \"function\" ? _ : constant(_), sankey) : links;\n };\n\n sankey.linkSort = function(_) {\n return arguments.length ? (linkSort = _, sankey) : linkSort;\n };\n\n sankey.size = function(_) {\n return arguments.length ? (x0 = y0 = 0, x1 = +_[0], y1 = +_[1], sankey) : [x1 - x0, y1 - y0];\n };\n\n sankey.extent = function(_) {\n return arguments.length ? (x0 = +_[0][0], x1 = +_[1][0], y0 = +_[0][1], y1 = +_[1][1], sankey) : [[x0, y0], [x1, y1]];\n };\n\n sankey.iterations = function(_) {\n return arguments.length ? (iterations = +_, sankey) : iterations;\n };\n\n function computeNodeLinks({nodes, links}) {\n for (const [i, node] of nodes.entries()) {\n node.index = i;\n node.sourceLinks = [];\n node.targetLinks = [];\n }\n const nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d]));\n for (const [i, link] of links.entries()) {\n link.index = i;\n let {source, target} = link;\n if (typeof source !== \"object\") source = link.source = find(nodeById, source);\n if (typeof target !== \"object\") target = link.target = find(nodeById, target);\n source.sourceLinks.push(link);\n target.targetLinks.push(link);\n }\n if (linkSort != null) {\n for (const {sourceLinks, targetLinks} of nodes) {\n sourceLinks.sort(linkSort);\n targetLinks.sort(linkSort);\n }\n }\n }\n\n function computeNodeValues({nodes}) {\n for (const node of nodes) {\n node.value = node.fixedValue === undefined\n ? Math.max(sum(node.sourceLinks, value), sum(node.targetLinks, value))\n : node.fixedValue;\n }\n }\n\n function computeNodeDepths({nodes}) {\n const n = nodes.length;\n let current = new Set(nodes);\n let next = new Set;\n let x = 0;\n while (current.size) {\n for (const node of current) {\n node.depth = x;\n for (const {target} of node.sourceLinks) {\n next.add(target);\n }\n }\n if (++x > n) throw new Error(\"circular link\");\n current = next;\n next = new Set;\n }\n }\n\n function computeNodeHeights({nodes}) {\n const n = nodes.length;\n let current = new Set(nodes);\n let next = new Set;\n let x = 0;\n while (current.size) {\n for (const node of current) {\n node.height = x;\n for (const {source} of node.targetLinks) {\n next.add(source);\n }\n }\n if (++x > n) throw new Error(\"circular link\");\n current = next;\n next = new Set;\n }\n }\n\n function computeNodeLayers({nodes}) {\n const x = max(nodes, d => d.depth) + 1;\n const kx = (x1 - x0 - dx) / (x - 1);\n const columns = new Array(x);\n for (const node of nodes) {\n const i = Math.max(0, Math.min(x - 1, Math.floor(align.call(null, node, x))));\n node.layer = i;\n node.x0 = x0 + i * kx;\n node.x1 = node.x0 + dx;\n if (columns[i]) columns[i].push(node);\n else columns[i] = [node];\n }\n if (sort) for (const column of columns) {\n column.sort(sort);\n }\n return columns;\n }\n\n function initializeNodeBreadths(columns) {\n const ky = min(columns, c => (y1 - y0 - (c.length - 1) * py) / sum(c, value));\n for (const nodes of columns) {\n let y = y0;\n for (const node of nodes) {\n node.y0 = y;\n node.y1 = y + node.value * ky;\n y = node.y1 + py;\n for (const link of node.sourceLinks) {\n link.width = link.value * ky;\n }\n }\n y = (y1 - y + py) / (nodes.length + 1);\n for (let i = 0; i < nodes.length; ++i) {\n const node = nodes[i];\n node.y0 += y * (i + 1);\n node.y1 += y * (i + 1);\n }\n reorderLinks(nodes);\n }\n }\n\n function computeNodeBreadths(graph) {\n const columns = computeNodeLayers(graph);\n py = Math.min(dy, (y1 - y0) / (max(columns, c => c.length) - 1));\n initializeNodeBreadths(columns);\n for (let i = 0; i < iterations; ++i) {\n const alpha = Math.pow(0.99, i);\n const beta = Math.max(1 - alpha, (i + 1) / iterations);\n relaxRightToLeft(columns, alpha, beta);\n relaxLeftToRight(columns, alpha, beta);\n }\n }\n\n // Reposition each node based on its incoming (target) links.\n function relaxLeftToRight(columns, alpha, beta) {\n for (let i = 1, n = columns.length; i < n; ++i) {\n const column = columns[i];\n for (const target of column) {\n let y = 0;\n let w = 0;\n for (const {source, value} of target.targetLinks) {\n let v = value * (target.layer - source.layer);\n y += targetTop(source, target) * v;\n w += v;\n }\n if (!(w > 0)) continue;\n let dy = (y / w - target.y0) * alpha;\n target.y0 += dy;\n target.y1 += dy;\n reorderNodeLinks(target);\n }\n if (sort === undefined) column.sort(ascendingBreadth);\n resolveCollisions(column, beta);\n }\n }\n\n // Reposition each node based on its outgoing (source) links.\n function relaxRightToLeft(columns, alpha, beta) {\n for (let n = columns.length, i = n - 2; i >= 0; --i) {\n const column = columns[i];\n for (const source of column) {\n let y = 0;\n let w = 0;\n for (const {target, value} of source.sourceLinks) {\n let v = value * (target.layer - source.layer);\n y += sourceTop(source, target) * v;\n w += v;\n }\n if (!(w > 0)) continue;\n let dy = (y / w - source.y0) * alpha;\n source.y0 += dy;\n source.y1 += dy;\n reorderNodeLinks(source);\n }\n if (sort === undefined) column.sort(ascendingBreadth);\n resolveCollisions(column, beta);\n }\n }\n\n function resolveCollisions(nodes, alpha) {\n const i = nodes.length >> 1;\n const subject = nodes[i];\n resolveCollisionsBottomToTop(nodes, subject.y0 - py, i - 1, alpha);\n resolveCollisionsTopToBottom(nodes, subject.y1 + py, i + 1, alpha);\n resolveCollisionsBottomToTop(nodes, y1, nodes.length - 1, alpha);\n resolveCollisionsTopToBottom(nodes, y0, 0, alpha);\n }\n\n // Push any overlapping nodes down.\n function resolveCollisionsTopToBottom(nodes, y, i, alpha) {\n for (; i < nodes.length; ++i) {\n const node = nodes[i];\n const dy = (y - node.y0) * alpha;\n if (dy > 1e-6) node.y0 += dy, node.y1 += dy;\n y = node.y1 + py;\n }\n }\n\n // Push any overlapping nodes up.\n function resolveCollisionsBottomToTop(nodes, y, i, alpha) {\n for (; i >= 0; --i) {\n const node = nodes[i];\n const dy = (node.y1 - y) * alpha;\n if (dy > 1e-6) node.y0 -= dy, node.y1 -= dy;\n y = node.y0 - py;\n }\n }\n\n function reorderNodeLinks({sourceLinks, targetLinks}) {\n if (linkSort === undefined) {\n for (const {source: {sourceLinks}} of targetLinks) {\n sourceLinks.sort(ascendingTargetBreadth);\n }\n for (const {target: {targetLinks}} of sourceLinks) {\n targetLinks.sort(ascendingSourceBreadth);\n }\n }\n }\n\n function reorderLinks(nodes) {\n if (linkSort === undefined) {\n for (const {sourceLinks, targetLinks} of nodes) {\n sourceLinks.sort(ascendingTargetBreadth);\n targetLinks.sort(ascendingSourceBreadth);\n }\n }\n }\n\n // Returns the target.y0 that would produce an ideal link from source to target.\n function targetTop(source, target) {\n let y = source.y0 - (source.sourceLinks.length - 1) * py / 2;\n for (const {target: node, width} of source.sourceLinks) {\n if (node === target) break;\n y += width + py;\n }\n for (const {source: node, width} of target.targetLinks) {\n if (node === source) break;\n y -= width;\n }\n return y;\n }\n\n // Returns the source.y0 that would produce an ideal link from source to target.\n function sourceTop(source, target) {\n let y = target.y0 - (target.targetLinks.length - 1) * py / 2;\n for (const {source: node, width} of target.targetLinks) {\n if (node === source) break;\n y += width + py;\n }\n for (const {target: node, width} of source.sourceLinks) {\n if (node === target) break;\n y -= width;\n }\n return y;\n }\n\n return sankey;\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport {slice} from \"../array.js\";\nimport constant from \"../constant.js\";\nimport {x as pointX, y as pointY} from \"../point.js\";\nimport pointRadial from \"../pointRadial.js\";\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nfunction link(curve) {\n var source = linkSource,\n target = linkTarget,\n x = pointX,\n y = pointY,\n context = null;\n\n function link() {\n var buffer, argv = slice.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n if (!context) context = buffer = path();\n curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n link.source = function(_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function(_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n };\n\n link.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n };\n\n link.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), link) : context;\n };\n\n return link;\n}\n\nfunction curveHorizontal(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n}\n\nfunction curveVertical(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n}\n\nfunction curveRadial(context, x0, y0, x1, y1) {\n var p0 = pointRadial(x0, y0),\n p1 = pointRadial(x0, y0 = (y0 + y1) / 2),\n p2 = pointRadial(x1, y0),\n p3 = pointRadial(x1, y1);\n context.moveTo(p0[0], p0[1]);\n context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\nexport function linkHorizontal() {\n return link(curveHorizontal);\n}\n\nexport function linkVertical() {\n return link(curveVertical);\n}\n\nexport function linkRadial() {\n var l = link(curveRadial);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}\n","import {linkHorizontal} from \"d3-shape\";\n\nfunction horizontalSource(d) {\n return [d.source.x1, d.y0];\n}\n\nfunction horizontalTarget(d) {\n return [d.target.x0, d.y1];\n}\n\nexport default function() {\n return linkHorizontal()\n .source(horizontalSource)\n .target(horizontalTarget);\n}\n","import { NAME_MODAL } from '../../constants/components';\nimport { EVENT_NAME_SHOW, EVENT_OPTIONS_PASSIVE } from '../../constants/events';\nimport { CODE_ENTER, CODE_SPACE } from '../../constants/key-codes';\nimport { matches, select, hasAttr, setAttr, getAttr, isDisabled } from '../../utils/dom';\nimport { getRootActionEventName, eventOff, eventOn } from '../../utils/events';\nimport { isString } from '../../utils/inspect';\nimport { keys } from '../../utils/object';\nimport { getEventRoot } from '../../utils/get-event-root';\nimport { getInstanceFromDirective } from '../../utils/get-instance-from-directive';\n\n// Emitted show event for modal\nconst ROOT_ACTION_EVENT_NAME_SHOW = getRootActionEventName(NAME_MODAL, EVENT_NAME_SHOW);\n\n// Prop name we use to store info on root element\nconst PROPERTY = '__bv_modal_directive__';\nconst getTarget = _ref => {\n let {\n modifiers = {},\n arg,\n value\n } = _ref;\n // Try value, then arg, otherwise pick last modifier\n return isString(value) ? value : isString(arg) ? arg : keys(modifiers).reverse()[0];\n};\nconst getTriggerElement = el => {\n // If root element is a dropdown-item or nav-item, we\n // need to target the inner link or button instead\n return el && matches(el, '.dropdown-menu > li, li.nav-item') ? select('a, button', el) || el : el;\n};\nconst setRole = trigger => {\n // Ensure accessibility on non button elements\n if (trigger && trigger.tagName !== 'BUTTON') {\n // Only set a role if the trigger element doesn't have one\n if (!hasAttr(trigger, 'role')) {\n setAttr(trigger, 'role', 'button');\n }\n // Add a tabindex is not a button or link, and tabindex is not provided\n if (trigger.tagName !== 'A' && !hasAttr(trigger, 'tabindex')) {\n setAttr(trigger, 'tabindex', '0');\n }\n }\n};\nconst bind = (el, binding, vnode) => {\n const target = getTarget(binding);\n const trigger = getTriggerElement(el);\n if (target && trigger) {\n const handler = event => {\n // `currentTarget` is the element with the listener on it\n const currentTarget = event.currentTarget;\n if (!isDisabled(currentTarget)) {\n const type = event.type;\n const key = event.keyCode;\n // Open modal only if trigger is not disabled\n if (type === 'click' || type === 'keydown' && (key === CODE_ENTER || key === CODE_SPACE)) {\n getEventRoot(getInstanceFromDirective(vnode, binding)).$emit(ROOT_ACTION_EVENT_NAME_SHOW, target, currentTarget);\n }\n }\n };\n el[PROPERTY] = {\n handler,\n target,\n trigger\n };\n // If element is not a button, we add `role=\"button\"` for accessibility\n setRole(trigger);\n // Listen for click events\n eventOn(trigger, 'click', handler, EVENT_OPTIONS_PASSIVE);\n if (trigger.tagName !== 'BUTTON' && getAttr(trigger, 'role') === 'button') {\n // If trigger isn't a button but has role button,\n // we also listen for `keydown.space` && `keydown.enter`\n eventOn(trigger, 'keydown', handler, EVENT_OPTIONS_PASSIVE);\n }\n }\n};\nconst unbind = el => {\n const oldProp = el[PROPERTY] || {};\n const trigger = oldProp.trigger;\n const handler = oldProp.handler;\n if (trigger && handler) {\n eventOff(trigger, 'click', handler, EVENT_OPTIONS_PASSIVE);\n eventOff(trigger, 'keydown', handler, EVENT_OPTIONS_PASSIVE);\n eventOff(el, 'click', handler, EVENT_OPTIONS_PASSIVE);\n eventOff(el, 'keydown', handler, EVENT_OPTIONS_PASSIVE);\n }\n delete el[PROPERTY];\n};\nconst componentUpdated = (el, binding, vnode) => {\n const oldProp = el[PROPERTY] || {};\n const target = getTarget(binding);\n const trigger = getTriggerElement(el);\n if (target !== oldProp.target || trigger !== oldProp.trigger) {\n // We bind and rebind if the target or trigger changes\n unbind(el);\n bind(el, binding, vnode);\n }\n // If trigger element is not a button, ensure `role=\"button\"`\n // is still set for accessibility\n setRole(trigger);\n};\nconst updated = () => {};\n\n/*\n * Export our directive\n */\nconst VBModal = {\n inserted: componentUpdated,\n updated,\n componentUpdated,\n unbind\n};\n\nexport { VBModal };\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n",";(function (window) {\n \"use strict\";\n\n var lastTimer = -1;\n\n var install = function (Visibility) {\n\n // Run callback every `interval` milliseconds if page is visible and\n // every `hiddenInterval` milliseconds if page is hidden.\n //\n // Visibility.every(60 * 1000, 5 * 60 * 1000, function () {\n // checkNewMails();\n // });\n //\n // You can skip `hiddenInterval` and callback will be called only if\n // page is visible.\n //\n // Visibility.every(1000, function () {\n // updateCountdown();\n // });\n //\n // It is analog of `setInterval(callback, interval)` but use visibility\n // state.\n //\n // It return timer ID, that you can use in `Visibility.stop(id)` to stop\n // timer (`clearInterval` analog).\n // Warning: timer ID is different from interval ID from `setInterval`,\n // so don’t use it in `clearInterval`.\n //\n // On change state from hidden to visible timers will be execute.\n Visibility.every = function (interval, hiddenInterval, callback) {\n Visibility._time();\n\n if ( !callback ) {\n callback = hiddenInterval;\n hiddenInterval = null;\n }\n\n lastTimer += 1;\n var number = lastTimer;\n\n Visibility._timers[number] = {\n visible: interval,\n hidden: hiddenInterval,\n callback: callback\n };\n Visibility._run(number, false);\n\n if ( Visibility.isSupported() ) {\n Visibility._listen();\n }\n return number;\n };\n\n // Stop timer from `every` method by it ID (`every` method return it).\n //\n // slideshow = Visibility.every(5 * 1000, function () {\n // changeSlide();\n // });\n // $('.stopSlideshow').click(function () {\n // Visibility.stop(slideshow);\n // });\n Visibility.stop = function(id) {\n if ( !Visibility._timers[id] ) {\n return false;\n }\n Visibility._stop(id);\n delete Visibility._timers[id];\n return true;\n };\n\n // Callbacks and intervals added by `every` method.\n Visibility._timers = { };\n\n // Initialize variables on page loading.\n Visibility._time = function () {\n if ( Visibility._timed ) {\n return;\n }\n Visibility._timed = true;\n Visibility._wasHidden = Visibility.hidden();\n\n Visibility.change(function () {\n Visibility._stopRun();\n Visibility._wasHidden = Visibility.hidden();\n });\n };\n\n // Try to run timer from every method by it’s ID. It will be use\n // `interval` or `hiddenInterval` depending on visibility state.\n // If page is hidden and `hiddenInterval` is null,\n // it will not run timer.\n //\n // Argument `runNow` say, that timers must be execute now too.\n Visibility._run = function (id, runNow) {\n var interval,\n timer = Visibility._timers[id];\n\n if ( Visibility.hidden() ) {\n if ( null === timer.hidden ) {\n return;\n }\n interval = timer.hidden;\n } else {\n interval = timer.visible;\n }\n\n var runner = function () {\n timer.last = new Date();\n timer.callback.call(window);\n }\n\n if ( runNow ) {\n var now = new Date();\n var last = now - timer.last ;\n\n if ( interval > last ) {\n timer.delay = setTimeout(function () {\n timer.id = setInterval(runner, interval);\n runner();\n }, interval - last);\n } else {\n timer.id = setInterval(runner, interval);\n runner();\n }\n\n } else {\n timer.id = setInterval(runner, interval);\n }\n };\n\n // Stop timer from `every` method by it’s ID.\n Visibility._stop = function (id) {\n var timer = Visibility._timers[id];\n clearInterval(timer.id);\n clearTimeout(timer.delay);\n delete timer.id;\n delete timer.delay;\n };\n\n // Listener for `visibilitychange` event.\n Visibility._stopRun = function (event) {\n var isHidden = Visibility.hidden(),\n wasHidden = Visibility._wasHidden;\n\n if ( (isHidden && !wasHidden) || (!isHidden && wasHidden) ) {\n for ( var i in Visibility._timers ) {\n Visibility._stop(i);\n Visibility._run(i, !isHidden);\n }\n }\n };\n\n return Visibility;\n }\n\n if ( typeof(module) != 'undefined' && module.exports ) {\n module.exports = install(require('./visibility.core'));\n } else {\n install(window.Visibility)\n }\n\n})(window);\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"deletePipeline\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiPipelineID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pipelineDestroy\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":103}};\n doc.loc.source = {\"body\":\"mutation deletePipeline($id: CiPipelineID!) {\\n pipelineDestroy(input: { id: $id }) {\\n errors\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"deletePipeline\"] = oneQuery(doc, \"deletePipeline\");\n \n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"retryPipeline\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiPipelineID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pipelineRetry\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":100}};\n doc.loc.source = {\"body\":\"mutation retryPipeline($id: CiPipelineID!) {\\n pipelineRetry(input: { id: $id }) {\\n errors\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"retryPipeline\"] = oneQuery(doc, \"retryPipeline\");\n \n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getPipelineHeaderData\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"project\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pipeline\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"retryable\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cancelable\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"userPermissions\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"destroyPipeline\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"updatePipeline\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cancelPipeline\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailedStatus\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailsPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"icon\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"group\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"text\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"user\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"username\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"email\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"avatarUrl\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"message\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"emoji\"},\"arguments\":[],\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"commit\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"sha\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"shortId\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webPath\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"finishedAt\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"queuedDuration\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalJobs\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"refText\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"triggeredByPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"stuck\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"child\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"complete\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"latest\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeRequestEventType\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"configSource\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"failureReason\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"source\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"yamlErrors\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"yamlErrorMessages\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"trigger\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PipelineHeaderData\"},\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":1110}};\n doc.loc.source = {\"body\":\"#import \\\"ee_else_ce/ci/pipeline_details/header/graphql/fragments/pipeline_header.fragment.graphql\\\"\\n\\nquery getPipelineHeaderData($fullPath: ID!, $iid: ID!) {\\n project(fullPath: $fullPath) {\\n id\\n pipeline(iid: $iid) {\\n status\\n retryable\\n cancelable\\n userPermissions {\\n destroyPipeline\\n updatePipeline\\n cancelPipeline\\n }\\n detailedStatus {\\n id\\n detailsPath\\n icon\\n group\\n text\\n }\\n createdAt\\n user {\\n id\\n name\\n username\\n webPath\\n webUrl\\n email\\n avatarUrl\\n status {\\n message\\n emoji\\n }\\n }\\n commit {\\n id\\n sha\\n shortId\\n title\\n webPath\\n }\\n finishedAt\\n queuedDuration\\n duration\\n name\\n totalJobs\\n refText\\n triggeredByPath\\n stuck\\n child\\n complete\\n latest\\n mergeRequestEventType\\n configSource\\n failureReason\\n source\\n yamlErrors\\n yamlErrorMessages\\n trigger\\n ...PipelineHeaderData\\n }\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n doc.definitions = doc.definitions.concat(unique(require(\"ee_else_ce/ci/pipeline_details/header/graphql/fragments/pipeline_header.fragment.graphql\").definitions));\n\n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"getPipelineHeaderData\"] = oneQuery(doc, \"getPipelineHeaderData\");\n \n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nexport default selection;\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"gl-mt-5 gl-flex gl-items-start gl-gap-3 lg:gl-mt-0\"},[(_vm.canRetryPipeline)?_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"aria-label\":_vm.$options.BUTTON_TOOLTIP_RETRY,\"title\":_vm.$options.BUTTON_TOOLTIP_RETRY,\"loading\":_vm.isRetrying,\"disabled\":_vm.isRetrying,\"variant\":\"confirm\",\"data-testid\":\"retry-pipeline\"},on:{\"click\":function($event){return _vm.$emit('retryPipeline', _vm.pipeline.id)}}},[_vm._v(\"\\n \"+_vm._s(_vm.__('Retry'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.canCancelPipeline)?_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"aria-label\":_vm.$options.BUTTON_TOOLTIP_CANCEL,\"title\":_vm.$options.BUTTON_TOOLTIP_CANCEL,\"loading\":_vm.isCanceling,\"disabled\":_vm.isCanceling,\"variant\":\"danger\",\"data-testid\":\"cancel-pipeline\"},on:{\"click\":function($event){return _vm.$emit('cancelPipeline', _vm.pipeline.id)}}},[_vm._v(\"\\n \"+_vm._s(_vm.__('Cancel pipeline'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.pipeline.userPermissions.destroyPipeline)?_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"},{name:\"gl-modal\",rawName:\"v-gl-modal\",value:(_vm.$options.modal.id),expression:\"$options.modal.id\"}],attrs:{\"aria-label\":_vm.$options.BUTTON_TOOLTIP_DELETE,\"title\":_vm.$options.BUTTON_TOOLTIP_DELETE,\"loading\":_vm.isDeleting,\"disabled\":_vm.isDeleting,\"variant\":\"danger\",\"category\":\"secondary\",\"data-testid\":\"delete-pipeline\"}},[_vm._v(\"\\n \"+_vm._s(_vm.__('Delete'))+\"\\n \")]):_vm._e()],1),_vm._v(\" \"),_c('gl-modal',{attrs:{\"modal-id\":_vm.$options.modal.id,\"title\":_vm.__('Delete pipeline'),\"action-primary\":_vm.$options.modal.actionPrimary,\"action-cancel\":_vm.$options.modal.actionCancel},on:{\"primary\":function($event){return _vm.$emit('deletePipeline', _vm.pipeline.id)}}},[_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.__(\n 'Are you sure you want to delete this pipeline? Doing so will expire all pipeline caches and delete all related objects, such as builds, logs, artifacts, and triggers. This action cannot be undone.',\n ))+\"\\n \")])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header_actions.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header_actions.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton, GlModal, GlModalDirective, GlTooltipDirective } from '@gitlab/ui';\nimport { BUTTON_TOOLTIP_CANCEL, BUTTON_TOOLTIP_DELETE, BUTTON_TOOLTIP_RETRY } from '~/ci/constants';\nimport { __ } from '~/locale';\nimport { DELETE_MODAL_ID } from '../constants';\n\nexport default {\n name: 'HeaderActions',\n BUTTON_TOOLTIP_CANCEL,\n BUTTON_TOOLTIP_DELETE,\n BUTTON_TOOLTIP_RETRY,\n modal: {\n id: DELETE_MODAL_ID,\n actionPrimary: {\n text: __('Delete pipeline'),\n attributes: {\n variant: 'danger',\n },\n },\n actionCancel: {\n text: __('Cancel'),\n },\n },\n components: {\n GlButton,\n GlModal,\n },\n directives: {\n GlModal: GlModalDirective,\n GlTooltip: GlTooltipDirective,\n },\n props: {\n pipeline: {\n type: Object,\n required: true,\n },\n isRetrying: {\n type: Boolean,\n required: true,\n },\n isDeleting: {\n type: Boolean,\n required: true,\n },\n isCanceling: {\n type: Boolean,\n required: true,\n },\n },\n computed: {\n canRetryPipeline() {\n const { retryable, userPermissions } = this.pipeline;\n\n return retryable && userPermissions.updatePipeline;\n },\n canCancelPipeline() {\n const { cancelable, userPermissions } = this.pipeline;\n\n return cancelable && userPermissions.cancelPipeline;\n },\n },\n};\n</script>\n\n<template>\n <div>\n <div class=\"gl-mt-5 gl-flex gl-items-start gl-gap-3 lg:gl-mt-0\">\n <gl-button\n v-if=\"canRetryPipeline\"\n v-gl-tooltip\n :aria-label=\"$options.BUTTON_TOOLTIP_RETRY\"\n :title=\"$options.BUTTON_TOOLTIP_RETRY\"\n :loading=\"isRetrying\"\n :disabled=\"isRetrying\"\n variant=\"confirm\"\n data-testid=\"retry-pipeline\"\n @click=\"$emit('retryPipeline', pipeline.id)\"\n >\n {{ __('Retry') }}\n </gl-button>\n\n <gl-button\n v-if=\"canCancelPipeline\"\n v-gl-tooltip\n :aria-label=\"$options.BUTTON_TOOLTIP_CANCEL\"\n :title=\"$options.BUTTON_TOOLTIP_CANCEL\"\n :loading=\"isCanceling\"\n :disabled=\"isCanceling\"\n variant=\"danger\"\n data-testid=\"cancel-pipeline\"\n @click=\"$emit('cancelPipeline', pipeline.id)\"\n >\n {{ __('Cancel pipeline') }}\n </gl-button>\n\n <gl-button\n v-if=\"pipeline.userPermissions.destroyPipeline\"\n v-gl-tooltip\n v-gl-modal=\"$options.modal.id\"\n :aria-label=\"$options.BUTTON_TOOLTIP_DELETE\"\n :title=\"$options.BUTTON_TOOLTIP_DELETE\"\n :loading=\"isDeleting\"\n :disabled=\"isDeleting\"\n variant=\"danger\"\n category=\"secondary\"\n data-testid=\"delete-pipeline\"\n >\n {{ __('Delete') }}\n </gl-button>\n </div>\n\n <gl-modal\n :modal-id=\"$options.modal.id\"\n :title=\"__('Delete pipeline')\"\n :action-primary=\"$options.modal.actionPrimary\"\n :action-cancel=\"$options.modal.actionCancel\"\n @primary=\"$emit('deletePipeline', pipeline.id)\"\n >\n <p>\n {{\n __(\n 'Are you sure you want to delete this pipeline? Doing so will expire all pipeline caches and delete all related objects, such as builds, logs, artifacts, and triggers. This action cannot be undone.',\n )\n }}\n </p>\n </gl-modal>\n </div>\n</template>\n","export const DELETE_MODAL_ID = 'pipeline-delete-modal';\n\nexport const SCHEDULE_SOURCE = 'schedule';\nexport const AUTO_DEVOPS_SOURCE = 'AUTO_DEVOPS_SOURCE';\nexport const DETACHED_EVENT_TYPE = 'DETACHED';\nexport const MERGED_RESULT_EVENT_TYPE = 'MERGED_RESULT';\nexport const MERGE_TRAIN_EVENT_TYPE = 'MERGE_TRAIN';\n","import { render, staticRenderFns } from \"./header_actions.vue?vue&type=template&id=75f262e2\"\nimport script from \"./header_actions.vue?vue&type=script&lang=js\"\nexport * from \"./header_actions.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header_badges.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header_badges.vue?vue&type=script&lang=js\"","<script>\nimport { GlBadge, GlSprintf, GlLink, GlTooltipDirective } from '@gitlab/ui';\nimport {\n DETACHED_EVENT_TYPE,\n AUTO_DEVOPS_SOURCE,\n SCHEDULE_SOURCE,\n MERGE_TRAIN_EVENT_TYPE,\n MERGED_RESULT_EVENT_TYPE,\n} from '../constants';\n\nexport default {\n name: 'HeaderBadges',\n components: {\n GlBadge,\n GlSprintf,\n GlLink,\n },\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n props: {\n pipeline: {\n type: Object,\n required: true,\n },\n },\n computed: {\n isScheduledPipeline() {\n return this.pipeline.source === SCHEDULE_SOURCE;\n },\n mergeRequestEventType() {\n return this.pipeline.mergeRequestEventType;\n },\n isMergeTrainPipeline() {\n return this.mergeRequestEventType === MERGE_TRAIN_EVENT_TYPE;\n },\n isMergedResultsPipeline() {\n return this.mergeRequestEventType === MERGED_RESULT_EVENT_TYPE;\n },\n isDetachedPipeline() {\n return this.mergeRequestEventType === DETACHED_EVENT_TYPE;\n },\n failureReason() {\n return this.pipeline.failureReason;\n },\n isAutoDevopsPipeline() {\n return this.pipeline.configSource === AUTO_DEVOPS_SOURCE;\n },\n yamlErrorMessages() {\n return this.pipeline?.yamlErrorMessages || '';\n },\n triggeredByPath() {\n return this.pipeline?.triggeredByPath;\n },\n badges() {\n return {\n schedule: this.isScheduledPipeline,\n trigger: this.pipeline.trigger,\n invalid: this.pipeline.yamlErrors,\n child: this.pipeline.child,\n latest: this.pipeline.latest,\n mergeTrainPipeline: this.isMergeTrainPipeline,\n mergedResultsPipeline: this.isMergedResultsPipeline,\n detached: this.isDetachedPipeline,\n failed: Boolean(this.failureReason),\n autoDevops: this.isAutoDevopsPipeline,\n stuck: this.pipeline.stuck,\n };\n },\n },\n};\n</script>\n\n<template>\n <div class=\"gl-mb-3 gl-inline-block\">\n <gl-badge\n v-if=\"badges.schedule\"\n v-gl-tooltip\n :title=\"__('This pipeline was created by a schedule')\"\n variant=\"info\"\n >\n {{ s__('Pipelines|Scheduled') }}\n </gl-badge>\n <gl-badge\n v-if=\"badges.trigger\"\n v-gl-tooltip\n :title=\"__('This pipeline was created by an API call authenticated with a trigger token')\"\n variant=\"info\"\n >\n {{ __('trigger token') }}\n </gl-badge>\n <gl-badge\n v-if=\"badges.child\"\n v-gl-tooltip\n :title=\"__('This is a child pipeline within the parent pipeline')\"\n variant=\"info\"\n >\n <gl-sprintf :message=\"s__('Pipelines|Child pipeline (%{linkStart}parent%{linkEnd})')\">\n <template #link=\"{ content }\">\n <gl-link :href=\"triggeredByPath\" target=\"_blank\">\n {{ content }}\n </gl-link>\n </template>\n </gl-sprintf>\n </gl-badge>\n <gl-badge\n v-if=\"badges.latest\"\n v-gl-tooltip\n :title=\"__('Latest pipeline for the most recent commit on this branch')\"\n variant=\"success\"\n >\n {{ s__('Pipelines|latest') }}\n </gl-badge>\n <gl-badge\n v-if=\"badges.mergeTrainPipeline\"\n v-gl-tooltip\n :title=\"\n s__(\n 'Pipelines|This pipeline ran on the contents of the merge request combined with the contents of all other merge requests queued for merging into the target branch.',\n )\n \"\n variant=\"info\"\n >\n {{ s__('Pipelines|merge train') }}\n </gl-badge>\n <gl-badge v-if=\"badges.invalid\" v-gl-tooltip :title=\"yamlErrorMessages\" variant=\"danger\">\n {{ s__('Pipelines|yaml invalid') }}\n </gl-badge>\n <gl-badge v-if=\"badges.failed\" v-gl-tooltip :title=\"failureReason\" variant=\"danger\">\n {{ s__('Pipelines|error') }}\n </gl-badge>\n <gl-badge\n v-if=\"badges.autoDevops\"\n v-gl-tooltip\n :title=\"\n __('This pipeline makes use of a predefined CI/CD configuration enabled by Auto DevOps.')\n \"\n variant=\"info\"\n >\n {{ s__('Pipelines|Auto DevOps') }}\n </gl-badge>\n <gl-badge\n v-if=\"badges.detached\"\n v-gl-tooltip\n :title=\"\n s__(\n 'Pipelines|This pipeline ran on the contents of the merge requests source branch, not the target branch.',\n )\n \"\n variant=\"info\"\n >\n {{ s__('Pipelines|merge request') }}\n </gl-badge>\n <gl-badge\n v-if=\"badges.mergedResultsPipeline\"\n v-gl-tooltip\n :title=\"\n s__(\n 'Pipelines|This pipeline ran on the contents of the merge request combined with the contents of the target branch.',\n )\n \"\n variant=\"info\"\n >\n {{ s__('Pipelines|merged results') }}\n </gl-badge>\n <gl-badge\n v-if=\"badges.stuck\"\n v-gl-tooltip\n :title=\"s__('Pipelines|This pipeline is stuck')\"\n variant=\"warning\"\n >\n {{ s__('Pipelines|stuck') }}\n </gl-badge>\n </div>\n</template>\n","import { render, staticRenderFns } from \"./header_badges.vue?vue&type=template&id=afb83dd4\"\nimport script from \"./header_badges.vue?vue&type=script&lang=js\"\nexport * from \"./header_badges.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-mb-3 gl-inline-block\"},[(_vm.badges.schedule)?_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.__('This pipeline was created by a schedule'),\"variant\":\"info\"}},[_vm._v(\"\\n \"+_vm._s(_vm.s__('Pipelines|Scheduled'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.badges.trigger)?_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.__('This pipeline was created by an API call authenticated with a trigger token'),\"variant\":\"info\"}},[_vm._v(\"\\n \"+_vm._s(_vm.__('trigger token'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.badges.child)?_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.__('This is a child pipeline within the parent pipeline'),\"variant\":\"info\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.s__('Pipelines|Child pipeline (%{linkStart}parent%{linkEnd})')},scopedSlots:_vm._u([{key:\"link\",fn:function({ content }){return [_c('gl-link',{attrs:{\"href\":_vm.triggeredByPath,\"target\":\"_blank\"}},[_vm._v(\"\\n \"+_vm._s(content)+\"\\n \")])]}}],null,false,1774858083)})],1):_vm._e(),_vm._v(\" \"),(_vm.badges.latest)?_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.__('Latest pipeline for the most recent commit on this branch'),\"variant\":\"success\"}},[_vm._v(\"\\n \"+_vm._s(_vm.s__('Pipelines|latest'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.badges.mergeTrainPipeline)?_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.s__(\n 'Pipelines|This pipeline ran on the contents of the merge request combined with the contents of all other merge requests queued for merging into the target branch.',\n ),\"variant\":\"info\"}},[_vm._v(\"\\n \"+_vm._s(_vm.s__('Pipelines|merge train'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.badges.invalid)?_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.yamlErrorMessages,\"variant\":\"danger\"}},[_vm._v(\"\\n \"+_vm._s(_vm.s__('Pipelines|yaml invalid'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.badges.failed)?_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.failureReason,\"variant\":\"danger\"}},[_vm._v(\"\\n \"+_vm._s(_vm.s__('Pipelines|error'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.badges.autoDevops)?_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.__('This pipeline makes use of a predefined CI/CD configuration enabled by Auto DevOps.'),\"variant\":\"info\"}},[_vm._v(\"\\n \"+_vm._s(_vm.s__('Pipelines|Auto DevOps'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.badges.detached)?_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.s__(\n 'Pipelines|This pipeline ran on the contents of the merge requests source branch, not the target branch.',\n ),\"variant\":\"info\"}},[_vm._v(\"\\n \"+_vm._s(_vm.s__('Pipelines|merge request'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.badges.mergedResultsPipeline)?_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.s__(\n 'Pipelines|This pipeline ran on the contents of the merge request combined with the contents of the target branch.',\n ),\"variant\":\"info\"}},[_vm._v(\"\\n \"+_vm._s(_vm.s__('Pipelines|merged results'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.badges.stuck)?_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.s__('Pipelines|This pipeline is stuck'),\"variant\":\"warning\"}},[_vm._v(\"\\n \"+_vm._s(_vm.s__('Pipelines|stuck'))+\"\\n \")]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_header.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_header.vue?vue&type=script&lang=js\"","<script>\nimport { GlAlert, GlIcon, GlLink, GlLoadingIcon, GlSprintf, GlTooltipDirective } from '@gitlab/ui';\nimport { BUTTON_TOOLTIP_RETRY, BUTTON_TOOLTIP_CANCEL } from '~/ci/constants';\nimport { timeIntervalInWords } from '~/lib/utils/datetime_utility';\nimport { setUrlFragment, visitUrl } from '~/lib/utils/url_utility';\nimport { __, n__, sprintf, formatNumber } from '~/locale';\nimport { getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport { reportToSentry } from '~/ci/utils';\nimport ClipboardButton from '~/vue_shared/components/clipboard_button.vue';\nimport CiIcon from '~/vue_shared/components/ci_icon/ci_icon.vue';\nimport TimeAgoTooltip from '~/vue_shared/components/time_ago_tooltip.vue';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\nimport { LOAD_FAILURE, POST_FAILURE, DELETE_FAILURE, DEFAULT } from '../constants';\nimport cancelPipelineMutation from '../graphql/mutations/cancel_pipeline.mutation.graphql';\nimport deletePipelineMutation from '../graphql/mutations/delete_pipeline.mutation.graphql';\nimport retryPipelineMutation from '../graphql/mutations/retry_pipeline.mutation.graphql';\nimport { getQueryHeaders } from '../graph/utils';\nimport { POLL_INTERVAL } from '../graph/constants';\nimport { MERGE_TRAIN_EVENT_TYPE } from './constants';\nimport HeaderActions from './components/header_actions.vue';\nimport HeaderBadges from './components/header_badges.vue';\nimport getPipelineQuery from './graphql/queries/get_pipeline_header_data.query.graphql';\n\nexport default {\n name: 'PipelineHeader',\n BUTTON_TOOLTIP_RETRY,\n BUTTON_TOOLTIP_CANCEL,\n pipelineCancel: 'pipelineCancel',\n pipelineRetry: 'pipelineRetry',\n finishedStatuses: ['FAILED', 'SUCCESS', 'CANCELED'],\n components: {\n CiIcon,\n ClipboardButton,\n GlAlert,\n GlIcon,\n GlLink,\n GlLoadingIcon,\n GlSprintf,\n HeaderActions,\n HeaderBadges,\n TimeAgoTooltip,\n PipelineAccountVerificationAlert: () =>\n import('ee_component/vue_shared/components/pipeline_account_verification_alert.vue'),\n HeaderMergeTrainsLink: () =>\n import('ee_component/ci/pipeline_details/header/components/header_merge_trains_link.vue'),\n },\n directives: {\n GlTooltip: GlTooltipDirective,\n SafeHtml,\n },\n errorTexts: {\n [LOAD_FAILURE]: __('We are currently unable to fetch data for the pipeline header.'),\n [POST_FAILURE]: __('An error occurred while making the request.'),\n [DELETE_FAILURE]: __('An error occurred while deleting the pipeline.'),\n [DEFAULT]: __('An unknown error occurred.'),\n },\n inject: {\n graphqlResourceEtag: {\n default: '',\n },\n paths: {\n default: {},\n },\n pipelineIid: {\n default: '',\n },\n },\n apollo: {\n pipeline: {\n context() {\n return getQueryHeaders(this.graphqlResourceEtag);\n },\n query: getPipelineQuery,\n variables() {\n return {\n fullPath: this.paths.fullProject,\n iid: this.pipelineIid,\n };\n },\n update(data) {\n return data.project.pipeline;\n },\n error(error) {\n this.reportFailure(LOAD_FAILURE);\n reportToSentry(this.$options.name, error);\n },\n pollInterval: POLL_INTERVAL,\n watchLoading(isLoading) {\n if (!isLoading) {\n // To ensure apollo has updated the cache,\n // we only remove the loading state in sync with GraphQL\n this.isCanceling = false;\n this.isRetrying = false;\n }\n },\n },\n },\n data() {\n return {\n pipeline: null,\n failureMessages: [],\n failureType: null,\n isCanceling: false,\n isRetrying: false,\n isDeleting: false,\n };\n },\n computed: {\n loading() {\n return this.$apollo.queries.pipeline.loading;\n },\n hasError() {\n return this.failureType;\n },\n hasPipelineData() {\n return Boolean(this.pipeline);\n },\n isLoadingInitialQuery() {\n return this.$apollo.queries.pipeline.loading && !this.hasPipelineData;\n },\n detailedStatus() {\n return this.pipeline?.detailedStatus || {};\n },\n status() {\n return this.pipeline?.status;\n },\n isFinished() {\n return this.$options.finishedStatuses.includes(this.status);\n },\n shouldRenderContent() {\n return !this.isLoadingInitialQuery && this.hasPipelineData;\n },\n failure() {\n switch (this.failureType) {\n case LOAD_FAILURE:\n return {\n text: this.$options.errorTexts[LOAD_FAILURE],\n variant: 'danger',\n };\n case POST_FAILURE:\n return {\n text: this.$options.errorTexts[POST_FAILURE],\n variant: 'danger',\n };\n case DELETE_FAILURE:\n return {\n text: this.$options.errorTexts[DELETE_FAILURE],\n variant: 'danger',\n };\n default:\n return {\n text: this.$options.errorTexts[DEFAULT],\n variant: 'danger',\n };\n }\n },\n user() {\n return this.pipeline?.user;\n },\n userId() {\n return getIdFromGraphQLId(this.user?.id);\n },\n shortId() {\n return this.pipeline?.commit?.shortId || '';\n },\n commitSha() {\n return this.pipeline?.commit?.sha || '';\n },\n commitPath() {\n return this.pipeline?.commit?.webPath || '';\n },\n commitTitle() {\n return this.pipeline?.commit?.title || '';\n },\n totalJobsText() {\n const totalJobs = this.pipeline?.totalJobs || 0;\n\n return sprintf(n__('%{jobs} job', '%{jobs} jobs', totalJobs), {\n jobs: totalJobs,\n });\n },\n triggeredText() {\n return sprintf(__('created pipeline for commit %{linkStart}%{shortId}%{linkEnd}'), {\n shortId: this.shortId,\n });\n },\n inProgress() {\n return this.status === 'RUNNING';\n },\n duration() {\n return this.pipeline?.duration || 0;\n },\n showDuration() {\n return this.duration && this.isFinished;\n },\n durationFormatted() {\n return timeIntervalInWords(this.duration);\n },\n queuedDuration() {\n return this.pipeline?.queuedDuration || 0;\n },\n inProgressText() {\n return sprintf(__('In progress, queued for %{queuedDuration} seconds'), {\n queuedDuration: formatNumber(this.queuedDuration),\n });\n },\n durationText() {\n return sprintf(__('%{duration}, queued for %{queuedDuration} seconds'), {\n duration: this.durationFormatted,\n queuedDuration: formatNumber(this.queuedDuration),\n });\n },\n computeMinutes() {\n return this.pipeline?.computeMinutes;\n },\n showComputeMinutes() {\n return this.isFinished && this.computeMinutes;\n },\n pipelineName() {\n return this.pipeline?.name;\n },\n refText() {\n return this.pipeline?.refText;\n },\n isMergeTrainPipeline() {\n return this.pipeline.mergeRequestEventType === MERGE_TRAIN_EVENT_TYPE;\n },\n },\n methods: {\n reportFailure(errorType, errorMessages = []) {\n this.failureType = errorType;\n this.failureMessages = errorMessages;\n },\n async postPipelineAction(name, mutation, id) {\n try {\n const {\n data: {\n [name]: { errors },\n },\n } = await this.$apollo.mutate({\n mutation,\n variables: { id },\n });\n\n if (errors.length > 0) {\n this.isRetrying = false;\n\n this.reportFailure(POST_FAILURE, errors);\n } else {\n await this.$apollo.queries.pipeline.refetch();\n if (!this.isFinished) {\n this.$apollo.queries.pipeline.startPolling(POLL_INTERVAL);\n }\n }\n } catch (error) {\n this.isRetrying = false;\n\n this.reportFailure(POST_FAILURE);\n reportToSentry(this.$options.name, error);\n }\n },\n cancelPipeline(id) {\n this.isCanceling = true;\n this.postPipelineAction(this.$options.pipelineCancel, cancelPipelineMutation, id);\n },\n retryPipeline(id) {\n this.isRetrying = true;\n this.postPipelineAction(this.$options.pipelineRetry, retryPipelineMutation, id);\n },\n async deletePipeline(id) {\n this.isDeleting = true;\n this.$apollo.queries.pipeline.stopPolling();\n\n try {\n const {\n data: {\n pipelineDestroy: { errors },\n },\n } = await this.$apollo.mutate({\n mutation: deletePipelineMutation,\n variables: {\n id,\n },\n });\n\n if (errors.length > 0) {\n this.reportFailure(DELETE_FAILURE, errors);\n this.isDeleting = false;\n } else {\n visitUrl(setUrlFragment(this.paths.pipelinesPath, 'delete_success'));\n }\n } catch (error) {\n this.$apollo.queries.pipeline.startPolling(POLL_INTERVAL);\n\n this.isDeleting = false;\n\n this.reportFailure(DELETE_FAILURE);\n reportToSentry(this.$options.name, error);\n }\n },\n },\n};\n</script>\n\n<template>\n <div class=\"gl-my-4\" data-testid=\"pipeline-header\">\n <gl-alert\n v-if=\"hasError\"\n class=\"gl-mb-4\"\n :title=\"failure.text\"\n :variant=\"failure.variant\"\n :dismissible=\"false\"\n data-testid=\"error-alert\"\n >\n <div v-for=\"(failureMessage, index) in failureMessages\" :key=\"`failure-message-${index}`\">\n {{ failureMessage }}\n </div>\n </gl-alert>\n\n <gl-loading-icon v-if=\"loading\" class=\"gl-text-left\" size=\"lg\" />\n\n <div v-else class=\"gl-flex gl-flex-wrap gl-justify-between\">\n <div>\n <h3 v-if=\"pipelineName\" class=\"gl-mb-3 gl-mt-0\" data-testid=\"pipeline-name\">\n {{ pipelineName }}\n </h3>\n <h3 v-else class=\"gl-mb-3 gl-mt-0\" data-testid=\"pipeline-commit-title\">\n {{ commitTitle }}\n </h3>\n <div>\n <ci-icon :status=\"detailedStatus\" show-status-text :show-link=\"false\" class=\"gl-mb-3\" />\n <div class=\"gl-mb-3 gl-ml-2 gl-inline-block gl-h-6\">\n <gl-link\n v-if=\"user\"\n :href=\"user.webUrl\"\n class=\"js-user-link gl-inline-block gl-font-bold gl-text-default\"\n :data-user-id=\"userId\"\n :data-username=\"user.username\"\n data-testid=\"pipeline-user-link\"\n >\n {{ user.name }}\n </gl-link>\n <gl-sprintf :message=\"triggeredText\">\n <template #link=\"{ content }\">\n <gl-link\n :href=\"commitPath\"\n class=\"commit-sha-container\"\n data-testid=\"commit-link\"\n target=\"_blank\"\n >\n {{ content }}\n </gl-link>\n </template>\n </gl-sprintf>\n </div>\n <div class=\"gl-mb-3 gl-inline-block\">\n <clipboard-button\n :text=\"commitSha\"\n category=\"tertiary\"\n :title=\"__('Copy commit SHA')\"\n data-testid=\"commit-copy-sha\"\n size=\"small\"\n />\n <time-ago-tooltip\n v-if=\"inProgress\"\n :time=\"pipeline.createdAt\"\n data-testid=\"pipeline-created-time-ago\"\n />\n <template v-if=\"isFinished\">\n <time-ago-tooltip\n :time=\"pipeline.createdAt\"\n data-testid=\"pipeline-finished-created-time-ago\"\n />, {{ s__('Pipelines|finished') }}\n <time-ago-tooltip\n :time=\"pipeline.finishedAt\"\n data-testid=\"pipeline-finished-time-ago\"\n />\n </template>\n </div>\n </div>\n <div v-safe-html=\"refText\" class=\"gl-mb-3\" data-testid=\"pipeline-ref-text\"></div>\n <div>\n <header-badges :pipeline=\"pipeline\" />\n\n <div class=\"gl-inline-block\">\n <span\n v-gl-tooltip\n :title=\"s__('Pipelines|Total number of jobs for the pipeline')\"\n class=\"gl-ml-2\"\n data-testid=\"total-jobs\"\n >\n <gl-icon name=\"pipeline\" />\n {{ totalJobsText }}\n </span>\n <span\n v-if=\"showComputeMinutes\"\n v-gl-tooltip\n :title=\"s__('Pipelines|Total amount of compute minutes used for the pipeline')\"\n class=\"gl-ml-2\"\n data-testid=\"compute-minutes\"\n >\n <gl-icon name=\"quota\" />\n {{ computeMinutes }}\n </span>\n <span v-if=\"inProgress\" class=\"gl-ml-2\" data-testid=\"pipeline-running-text\">\n <gl-icon name=\"timer\" />\n {{ inProgressText }}\n </span>\n <span v-if=\"showDuration\" class=\"gl-ml-2\" data-testid=\"pipeline-duration-text\">\n <gl-icon name=\"timer\" />\n {{ durationText }}\n </span>\n </div>\n </div>\n <div v-if=\"isMergeTrainPipeline\" class=\"gl-mt-2\">\n <header-merge-trains-link />\n </div>\n </div>\n\n <header-actions\n :pipeline=\"pipeline\"\n :is-retrying=\"isRetrying\"\n :is-canceling=\"isCanceling\"\n :is-deleting=\"isDeleting\"\n @retryPipeline=\"retryPipeline($event)\"\n @cancelPipeline=\"cancelPipeline($event)\"\n @deletePipeline=\"deletePipeline($event)\"\n />\n </div>\n\n <pipeline-account-verification-alert class=\"gl-mt-4\" />\n </div>\n</template>\n","import { render, staticRenderFns } from \"./pipeline_header.vue?vue&type=template&id=24aae9d3\"\nimport script from \"./pipeline_header.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_header.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-my-4\",attrs:{\"data-testid\":\"pipeline-header\"}},[(_vm.hasError)?_c('gl-alert',{staticClass:\"gl-mb-4\",attrs:{\"title\":_vm.failure.text,\"variant\":_vm.failure.variant,\"dismissible\":false,\"data-testid\":\"error-alert\"}},_vm._l((_vm.failureMessages),function(failureMessage,index){return _c('div',{key:`failure-message-${index}`},[_vm._v(\"\\n \"+_vm._s(failureMessage)+\"\\n \")])}),0):_vm._e(),_vm._v(\" \"),(_vm.loading)?_c('gl-loading-icon',{staticClass:\"gl-text-left\",attrs:{\"size\":\"lg\"}}):_c('div',{staticClass:\"gl-flex gl-flex-wrap gl-justify-between\"},[_c('div',[(_vm.pipelineName)?_c('h3',{staticClass:\"gl-mb-3 gl-mt-0\",attrs:{\"data-testid\":\"pipeline-name\"}},[_vm._v(\"\\n \"+_vm._s(_vm.pipelineName)+\"\\n \")]):_c('h3',{staticClass:\"gl-mb-3 gl-mt-0\",attrs:{\"data-testid\":\"pipeline-commit-title\"}},[_vm._v(\"\\n \"+_vm._s(_vm.commitTitle)+\"\\n \")]),_vm._v(\" \"),_c('div',[_c('ci-icon',{staticClass:\"gl-mb-3\",attrs:{\"status\":_vm.detailedStatus,\"show-status-text\":\"\",\"show-link\":false}}),_vm._v(\" \"),_c('div',{staticClass:\"gl-mb-3 gl-ml-2 gl-inline-block gl-h-6\"},[(_vm.user)?_c('gl-link',{staticClass:\"js-user-link gl-inline-block gl-font-bold gl-text-default\",attrs:{\"href\":_vm.user.webUrl,\"data-user-id\":_vm.userId,\"data-username\":_vm.user.username,\"data-testid\":\"pipeline-user-link\"}},[_vm._v(\"\\n \"+_vm._s(_vm.user.name)+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('gl-sprintf',{attrs:{\"message\":_vm.triggeredText},scopedSlots:_vm._u([{key:\"link\",fn:function({ content }){return [_c('gl-link',{staticClass:\"commit-sha-container\",attrs:{\"href\":_vm.commitPath,\"data-testid\":\"commit-link\",\"target\":\"_blank\"}},[_vm._v(\"\\n \"+_vm._s(content)+\"\\n \")])]}}])})],1),_vm._v(\" \"),_c('div',{staticClass:\"gl-mb-3 gl-inline-block\"},[_c('clipboard-button',{attrs:{\"text\":_vm.commitSha,\"category\":\"tertiary\",\"title\":_vm.__('Copy commit SHA'),\"data-testid\":\"commit-copy-sha\",\"size\":\"small\"}}),_vm._v(\" \"),(_vm.inProgress)?_c('time-ago-tooltip',{attrs:{\"time\":_vm.pipeline.createdAt,\"data-testid\":\"pipeline-created-time-ago\"}}):_vm._e(),_vm._v(\" \"),(_vm.isFinished)?[_c('time-ago-tooltip',{attrs:{\"time\":_vm.pipeline.createdAt,\"data-testid\":\"pipeline-finished-created-time-ago\"}}),_vm._v(\", \"+_vm._s(_vm.s__('Pipelines|finished'))+\"\\n \"),_c('time-ago-tooltip',{attrs:{\"time\":_vm.pipeline.finishedAt,\"data-testid\":\"pipeline-finished-time-ago\"}})]:_vm._e()],2)],1),_vm._v(\" \"),_c('div',{directives:[{name:\"safe-html\",rawName:\"v-safe-html\",value:(_vm.refText),expression:\"refText\"}],staticClass:\"gl-mb-3\",attrs:{\"data-testid\":\"pipeline-ref-text\"}}),_vm._v(\" \"),_c('div',[_c('header-badges',{attrs:{\"pipeline\":_vm.pipeline}}),_vm._v(\" \"),_c('div',{staticClass:\"gl-inline-block\"},[_c('span',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"gl-ml-2\",attrs:{\"title\":_vm.s__('Pipelines|Total number of jobs for the pipeline'),\"data-testid\":\"total-jobs\"}},[_c('gl-icon',{attrs:{\"name\":\"pipeline\"}}),_vm._v(\"\\n \"+_vm._s(_vm.totalJobsText)+\"\\n \")],1),_vm._v(\" \"),(_vm.showComputeMinutes)?_c('span',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"gl-ml-2\",attrs:{\"title\":_vm.s__('Pipelines|Total amount of compute minutes used for the pipeline'),\"data-testid\":\"compute-minutes\"}},[_c('gl-icon',{attrs:{\"name\":\"quota\"}}),_vm._v(\"\\n \"+_vm._s(_vm.computeMinutes)+\"\\n \")],1):_vm._e(),_vm._v(\" \"),(_vm.inProgress)?_c('span',{staticClass:\"gl-ml-2\",attrs:{\"data-testid\":\"pipeline-running-text\"}},[_c('gl-icon',{attrs:{\"name\":\"timer\"}}),_vm._v(\"\\n \"+_vm._s(_vm.inProgressText)+\"\\n \")],1):_vm._e(),_vm._v(\" \"),(_vm.showDuration)?_c('span',{staticClass:\"gl-ml-2\",attrs:{\"data-testid\":\"pipeline-duration-text\"}},[_c('gl-icon',{attrs:{\"name\":\"timer\"}}),_vm._v(\"\\n \"+_vm._s(_vm.durationText)+\"\\n \")],1):_vm._e()])],1),_vm._v(\" \"),(_vm.isMergeTrainPipeline)?_c('div',{staticClass:\"gl-mt-2\"},[_c('header-merge-trains-link')],1):_vm._e()]),_vm._v(\" \"),_c('header-actions',{attrs:{\"pipeline\":_vm.pipeline,\"is-retrying\":_vm.isRetrying,\"is-canceling\":_vm.isCanceling,\"is-deleting\":_vm.isDeleting},on:{\"retryPipeline\":function($event){return _vm.retryPipeline($event)},\"cancelPipeline\":function($event){return _vm.cancelPipeline($event)},\"deletePipeline\":function($event){return _vm.deletePipeline($event)}}})],1),_vm._v(\" \"),_c('pipeline-account-verification-alert',{staticClass:\"gl-mt-4\"})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nimport VueApollo from 'vue-apollo';\nimport { parseBoolean } from '~/lib/utils/common_utils';\nimport PipelineHeader from './header/pipeline_header.vue';\n\nVue.use(VueApollo);\n\nexport const createPipelineHeaderApp = (elSelector, apolloProvider, graphqlResourceEtag) => {\n const el = document.querySelector(elSelector);\n\n if (!el) {\n return;\n }\n\n const {\n fullPath,\n pipelineIid,\n pipelinesPath,\n identityVerificationPath,\n identityVerificationRequired,\n mergeTrainsAvailable,\n canReadMergeTrain,\n mergeTrainsPath,\n } = el.dataset;\n\n // eslint-disable-next-line no-new\n new Vue({\n el,\n name: 'PipelineHeaderApp',\n apolloProvider,\n provide: {\n paths: {\n fullProject: fullPath,\n graphqlResourceEtag,\n pipelinesPath,\n },\n pipelineIid,\n identityVerificationPath,\n identityVerificationRequired: parseBoolean(identityVerificationRequired),\n mergeTrainsAvailable: parseBoolean(mergeTrainsAvailable),\n canReadMergeTrain: parseBoolean(canReadMergeTrain),\n mergeTrainsPath,\n },\n render(createElement) {\n return createElement(PipelineHeader);\n },\n });\n};\n","import VueApollo from 'vue-apollo';\nimport createDefaultClient from '~/lib/graphql';\n\nexport const apolloProvider = new VueApollo({\n defaultClient: createDefaultClient(),\n});\n","import VueRouter from 'vue-router';\nimport { createAlert } from '~/alert';\nimport { __ } from '~/locale';\nimport { pipelineTabName } from './constants';\nimport { createPipelineHeaderApp } from './pipeline_header';\nimport { apolloProvider } from './pipeline_shared_client';\n\nconst SELECTORS = {\n PIPELINE_HEADER: '#js-pipeline-header-vue',\n PIPELINE_TABS: '#js-pipeline-tabs',\n};\n\nexport default async function initPipelineDetailsBundle() {\n const headerSelector = SELECTORS.PIPELINE_HEADER;\n\n const headerApp = createPipelineHeaderApp;\n\n const headerEl = document.querySelector(headerSelector);\n\n if (headerEl) {\n const { dataset: headerDataset } = headerEl;\n\n try {\n headerApp(headerSelector, apolloProvider, headerDataset.graphqlResourceEtag);\n } catch {\n createAlert({\n message: __('An error occurred while loading a section of this page.'),\n });\n }\n }\n\n const tabsEl = document.querySelector(SELECTORS.PIPELINE_TABS);\n\n if (tabsEl) {\n const { dataset } = tabsEl;\n const dismissalDescriptions = JSON.parse(dataset.dismissalDescriptions || '{}');\n const { createAppOptions } = await import('ee_else_ce/ci/pipeline_details/pipeline_tabs');\n const { createPipelineTabs } = await import('./pipeline_tabs');\n const { routes } = await import('ee_else_ce/ci/pipeline_details/routes');\n\n const securityRoute = routes.find((route) => route.path === '/security');\n if (securityRoute) {\n securityRoute.props = { dismissalDescriptions };\n }\n\n const router = new VueRouter({\n mode: 'history',\n base: dataset.pipelinePath,\n routes,\n });\n\n // We handle the shortcut `pipelines/latest` by forwarding the user to the pipeline graph\n // tab and changing the route to the correct `pipelines/:id`\n if (window.location.pathname.endsWith('latest')) {\n router.replace({ name: pipelineTabName });\n }\n\n try {\n const appOptions = createAppOptions(SELECTORS.PIPELINE_TABS, apolloProvider, router);\n createPipelineTabs(appOptions);\n } catch {\n createAlert({\n message: __('An error occurred while loading a section of this page.'),\n });\n }\n }\n}\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PipelineHeaderData\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Pipeline\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"computeMinutes\"},\"arguments\":[],\"directives\":[]}]}}],\"loc\":{\"start\":0,\"end\":72}};\n doc.loc.source = {\"body\":\"fragment PipelineHeaderData on Pipeline {\\n id\\n iid\\n computeMinutes\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"PipelineHeaderData\"] = oneQuery(doc, \"PipelineHeaderData\");\n \n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","export const DOWNSTREAM = 'downstream';\nexport const MAIN = 'main';\nexport const UPSTREAM = 'upstream';\n\n/*\n this value is based on the gl-pipeline-job-width class\n plus some extra for the margins\n*/\nexport const ONE_COL_WIDTH = 180;\n\nexport const STAGE_VIEW = 'stage';\nexport const LAYER_VIEW = 'layer';\n\nexport const SKIP_RETRY_MODAL_KEY = 'skip_retry_modal';\nexport const VIEW_TYPE_KEY = 'pipeline_graph_view_type';\n\nexport const SINGLE_JOB = 'single_job';\nexport const JOB_DROPDOWN = 'job_dropdown';\n\nexport const BUILD_KIND = 'BUILD';\nexport const BRIDGE_KIND = 'BRIDGE';\n\nexport const ACTION_FAILURE = 'action_failure';\nexport const IID_FAILURE = 'missing_iid';\n\nexport const RETRY_ACTION_TITLE = 'Retry';\nexport const MANUAL_ACTION_TITLE = 'Run';\n\n/*\n this poll interval is shared between the graph,\n pipeline header, jobs tab and failed jobs tab to\n keep all the data relatively in sync\n*/\nexport const POLL_INTERVAL = 10000;\n","import { __, s__ } from '~/locale';\n\nexport const forwardDeploymentFailureModalId = 'forward-deployment-failure';\n\nexport const BUTTON_TOOLTIP_RETRY = __('Retry all failed or cancelled jobs');\nexport const BUTTON_TOOLTIP_CANCEL = __('Cancel the running pipeline');\nexport const BUTTON_TOOLTIP_DELETE = __('Delete the pipeline');\n\nexport const FILTER_TAG_IDENTIFIER = 'tag';\n\nexport const JOB_GRAPHQL_ERRORS = {\n jobMutationErrorText: __('There was an error running the job. Please try again.'),\n jobQueryErrorText: __('There was an error fetching the job.'),\n};\n\nexport const ICONS = {\n TAG: 'tag',\n MR: 'merge-request',\n BRANCH: 'branch',\n RETRY: 'retry',\n SUCCESS: 'success',\n};\n\nexport const SUCCESS_STATUS = 'SUCCESS';\nexport const PASSED_STATUS = 'passed';\nexport const MANUAL_STATUS = 'manual';\n\nexport const PIPELINE_ID_KEY = 'id';\nexport const PIPELINE_IID_KEY = 'iid';\n\nexport const RAW_TEXT_WARNING = s__(\n 'Pipeline|Raw text search is not currently supported. Please use the available search tokens.',\n);\n\nexport const TRACKING_CATEGORIES = {\n table: 'pipelines_table_component',\n tabs: 'pipelines_filter_tabs',\n search: 'pipelines_filtered_search',\n failed: 'pipeline_failed_jobs_tab',\n tests: 'pipeline_tests_tab',\n listbox: 'pipeline_id_iid_listbox',\n};\n\n// For pipeline polling\nexport const PIPELINE_POLL_INTERVAL_DEFAULT = 1000 * 8;\nexport const PIPELINE_POLL_INTERVAL_BACKOFF = 1.2;\nexport const FOUR_MINUTES_IN_MS = 1000 * 60 * 4;\n\nexport const NETWORK_STATUS_READY = 7;\n",";(function (global) {\n \"use strict\";\n\n var lastId = -1;\n\n // Visibility.js allow you to know, that your web page is in the background\n // tab and thus not visible to the user. This library is wrap under\n // Page Visibility API. It fix problems with different vendor prefixes and\n // add high-level useful functions.\n var self = {\n\n // Call callback only when page become to visible for user or\n // call it now if page is visible now or Page Visibility API\n // doesn’t supported.\n //\n // Return false if API isn’t supported, true if page is already visible\n // or listener ID (you can use it in `unbind` method) if page isn’t\n // visible now.\n //\n // Visibility.onVisible(function () {\n // startIntroAnimation();\n // });\n onVisible: function (callback) {\n var support = self.isSupported();\n if ( !support || !self.hidden() ) {\n callback();\n return support;\n }\n\n var listener = self.change(function (e, state) {\n if ( !self.hidden() ) {\n self.unbind(listener);\n callback();\n }\n });\n return listener;\n },\n\n // Call callback when visibility will be changed. First argument for\n // callback will be original event object, second will be visibility\n // state name.\n //\n // Return listener ID to unbind listener by `unbind` method.\n //\n // If Page Visibility API doesn’t supported method will be return false\n // and callback never will be called.\n //\n // Visibility.change(function(e, state) {\n // Statistics.visibilityChange(state);\n // });\n //\n // It is just proxy to `visibilitychange` event, but use vendor prefix.\n change: function (callback) {\n if ( !self.isSupported() ) {\n return false;\n }\n lastId += 1;\n var number = lastId;\n self._callbacks[number] = callback;\n self._listen();\n return number;\n },\n\n // Remove `change` listener by it ID.\n //\n // var id = Visibility.change(function(e, state) {\n // firstChangeCallback();\n // Visibility.unbind(id);\n // });\n unbind: function (id) {\n delete self._callbacks[id];\n },\n\n // Call `callback` in any state, expect “prerender”. If current state\n // is “prerender” it will wait until state will be changed.\n // If Page Visibility API doesn’t supported, it will call `callback`\n // immediately.\n //\n // Return false if API isn’t supported, true if page is already after\n // prerendering or listener ID (you can use it in `unbind` method)\n // if page is prerended now.\n //\n // Visibility.afterPrerendering(function () {\n // Statistics.countVisitor();\n // });\n afterPrerendering: function (callback) {\n var support = self.isSupported();\n var prerender = 'prerender';\n\n if ( !support || prerender != self.state() ) {\n callback();\n return support;\n }\n\n var listener = self.change(function (e, state) {\n if ( prerender != state ) {\n self.unbind(listener);\n callback();\n }\n });\n return listener;\n },\n\n // Return true if page now isn’t visible to user.\n //\n // if ( !Visibility.hidden() ) {\n // VideoPlayer.play();\n // }\n //\n // It is just proxy to `document.hidden`, but use vendor prefix.\n hidden: function () {\n return !!(self._doc.hidden || self._doc.webkitHidden);\n },\n\n // Return visibility state: 'visible', 'hidden' or 'prerender'.\n //\n // if ( 'prerender' == Visibility.state() ) {\n // Statistics.pageIsPrerendering();\n // }\n //\n // Don’t use `Visibility.state()` to detect, is page visible, because\n // visibility states can extend in next API versions.\n // Use more simpler and general `Visibility.hidden()` for this cases.\n //\n // It is just proxy to `document.visibilityState`, but use\n // vendor prefix.\n state: function () {\n return self._doc.visibilityState ||\n self._doc.webkitVisibilityState ||\n 'visible';\n },\n\n // Return true if browser support Page Visibility API.\n //\n // if ( Visibility.isSupported() ) {\n // Statistics.startTrackingVisibility();\n // Visibility.change(function(e, state)) {\n // Statistics.trackVisibility(state);\n // });\n // }\n isSupported: function () {\n return !!(self._doc.visibilityState ||\n self._doc.webkitVisibilityState);\n },\n\n // Link to document object to change it in tests.\n _doc: document || {},\n\n // Callbacks from `change` method, that wait visibility changes.\n _callbacks: { },\n\n // Listener for `visibilitychange` event.\n _change: function(event) {\n var state = self.state();\n\n for ( var i in self._callbacks ) {\n self._callbacks[i].call(self._doc, event, state);\n }\n },\n\n // Set listener for `visibilitychange` event.\n _listen: function () {\n if ( self._init ) {\n return;\n }\n\n var event = 'visibilitychange';\n if ( self._doc.webkitVisibilityState ) {\n event = 'webkit' + event;\n }\n\n var listener = function () {\n self._change.apply(self, arguments);\n };\n if ( self._doc.addEventListener ) {\n self._doc.addEventListener(event, listener);\n } else {\n self._doc.attachEvent(event, listener);\n }\n self._init = true;\n }\n\n };\n\n if ( typeof(module) != 'undefined' && module.exports ) {\n module.exports = self;\n } else {\n global.Visibility = self;\n }\n\n})(this);\n","/*!\n * vue-router v3.6.5\n * (c) 2022 Evan You\n * @license MIT\n */\n/* */\n\nfunction assert (condition, message) {\n if (!condition) {\n throw new Error((\"[vue-router] \" + message))\n }\n}\n\nfunction warn (condition, message) {\n if (!condition) {\n typeof console !== 'undefined' && console.warn((\"[vue-router] \" + message));\n }\n}\n\nfunction extend (a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a\n}\n\n/* */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) { return encodeURIComponent(str)\n .replace(encodeReserveRE, encodeReserveReplacer)\n .replace(commaRE, ','); };\n\nfunction decode (str) {\n try {\n return decodeURIComponent(str)\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"Error decoding \\\"\" + str + \"\\\". Leaving it intact.\"));\n }\n }\n return str\n}\n\nfunction resolveQuery (\n query,\n extraQuery,\n _parseQuery\n) {\n if ( extraQuery === void 0 ) extraQuery = {};\n\n var parse = _parseQuery || parseQuery;\n var parsedQuery;\n try {\n parsedQuery = parse(query || '');\n } catch (e) {\n process.env.NODE_ENV !== 'production' && warn(false, e.message);\n parsedQuery = {};\n }\n for (var key in extraQuery) {\n var value = extraQuery[key];\n parsedQuery[key] = Array.isArray(value)\n ? value.map(castQueryParamValue)\n : castQueryParamValue(value);\n }\n return parsedQuery\n}\n\nvar castQueryParamValue = function (value) { return (value == null || typeof value === 'object' ? value : String(value)); };\n\nfunction parseQuery (query) {\n var res = {};\n\n query = query.trim().replace(/^(\\?|#|&)/, '');\n\n if (!query) {\n return res\n }\n\n query.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = decode(parts.shift());\n var val = parts.length > 0 ? decode(parts.join('=')) : null;\n\n if (res[key] === undefined) {\n res[key] = val;\n } else if (Array.isArray(res[key])) {\n res[key].push(val);\n } else {\n res[key] = [res[key], val];\n }\n });\n\n return res\n}\n\nfunction stringifyQuery (obj) {\n var res = obj\n ? Object.keys(obj)\n .map(function (key) {\n var val = obj[key];\n\n if (val === undefined) {\n return ''\n }\n\n if (val === null) {\n return encode(key)\n }\n\n if (Array.isArray(val)) {\n var result = [];\n val.forEach(function (val2) {\n if (val2 === undefined) {\n return\n }\n if (val2 === null) {\n result.push(encode(key));\n } else {\n result.push(encode(key) + '=' + encode(val2));\n }\n });\n return result.join('&')\n }\n\n return encode(key) + '=' + encode(val)\n })\n .filter(function (x) { return x.length > 0; })\n .join('&')\n : null;\n return res ? (\"?\" + res) : ''\n}\n\n/* */\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n record,\n location,\n redirectedFrom,\n router\n) {\n var stringifyQuery = router && router.options.stringifyQuery;\n\n var query = location.query || {};\n try {\n query = clone(query);\n } catch (e) {}\n\n var route = {\n name: location.name || (record && record.name),\n meta: (record && record.meta) || {},\n path: location.path || '/',\n hash: location.hash || '',\n query: query,\n params: location.params || {},\n fullPath: getFullPath(location, stringifyQuery),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery);\n }\n return Object.freeze(route)\n}\n\nfunction clone (value) {\n if (Array.isArray(value)) {\n return value.map(clone)\n } else if (value && typeof value === 'object') {\n var res = {};\n for (var key in value) {\n res[key] = clone(value[key]);\n }\n return res\n } else {\n return value\n }\n}\n\n// the starting route that represents the initial state\nvar START = createRoute(null, {\n path: '/'\n});\n\nfunction formatMatch (record) {\n var res = [];\n while (record) {\n res.unshift(record);\n record = record.parent;\n }\n return res\n}\n\nfunction getFullPath (\n ref,\n _stringifyQuery\n) {\n var path = ref.path;\n var query = ref.query; if ( query === void 0 ) query = {};\n var hash = ref.hash; if ( hash === void 0 ) hash = '';\n\n var stringify = _stringifyQuery || stringifyQuery;\n return (path || '/') + stringify(query) + hash\n}\n\nfunction isSameRoute (a, b, onlyPath) {\n if (b === START) {\n return a === b\n } else if (!b) {\n return false\n } else if (a.path && b.path) {\n return a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && (onlyPath ||\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query))\n } else if (a.name && b.name) {\n return (\n a.name === b.name &&\n (onlyPath || (\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query) &&\n isObjectEqual(a.params, b.params))\n )\n )\n } else {\n return false\n }\n}\n\nfunction isObjectEqual (a, b) {\n if ( a === void 0 ) a = {};\n if ( b === void 0 ) b = {};\n\n // handle null value #1566\n if (!a || !b) { return a === b }\n var aKeys = Object.keys(a).sort();\n var bKeys = Object.keys(b).sort();\n if (aKeys.length !== bKeys.length) {\n return false\n }\n return aKeys.every(function (key, i) {\n var aVal = a[key];\n var bKey = bKeys[i];\n if (bKey !== key) { return false }\n var bVal = b[key];\n // query values can be null and undefined\n if (aVal == null || bVal == null) { return aVal === bVal }\n // check nested equality\n if (typeof aVal === 'object' && typeof bVal === 'object') {\n return isObjectEqual(aVal, bVal)\n }\n return String(aVal) === String(bVal)\n })\n}\n\nfunction isIncludedRoute (current, target) {\n return (\n current.path.replace(trailingSlashRE, '/').indexOf(\n target.path.replace(trailingSlashRE, '/')\n ) === 0 &&\n (!target.hash || current.hash === target.hash) &&\n queryIncludes(current.query, target.query)\n )\n}\n\nfunction queryIncludes (current, target) {\n for (var key in target) {\n if (!(key in current)) {\n return false\n }\n }\n return true\n}\n\nfunction handleRouteEntered (route) {\n for (var i = 0; i < route.matched.length; i++) {\n var record = route.matched[i];\n for (var name in record.instances) {\n var instance = record.instances[name];\n var cbs = record.enteredCbs[name];\n if (!instance || !cbs) { continue }\n delete record.enteredCbs[name];\n for (var i$1 = 0; i$1 < cbs.length; i$1++) {\n if (!instance._isBeingDestroyed) { cbs[i$1](instance); }\n }\n }\n }\n}\n\nvar View = {\n name: 'RouterView',\n functional: true,\n props: {\n name: {\n type: String,\n default: 'default'\n }\n },\n render: function render (_, ref) {\n var props = ref.props;\n var children = ref.children;\n var parent = ref.parent;\n var data = ref.data;\n\n // used by devtools to display a router-view badge\n data.routerView = true;\n\n // directly use parent context's createElement() function\n // so that components rendered by router-view can resolve named slots\n var h = parent.$createElement;\n var name = props.name;\n var route = parent.$route;\n var cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n // determine current view depth, also check to see if the tree\n // has been toggled inactive but kept-alive.\n var depth = 0;\n var inactive = false;\n while (parent && parent._routerRoot !== parent) {\n var vnodeData = parent.$vnode ? parent.$vnode.data : {};\n if (vnodeData.routerView) {\n depth++;\n }\n if (vnodeData.keepAlive && parent._directInactive && parent._inactive) {\n inactive = true;\n }\n parent = parent.$parent;\n }\n data.routerViewDepth = depth;\n\n // render previous view if the tree is inactive and kept-alive\n if (inactive) {\n var cachedData = cache[name];\n var cachedComponent = cachedData && cachedData.component;\n if (cachedComponent) {\n // #2301\n // pass props\n if (cachedData.configProps) {\n fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps);\n }\n return h(cachedComponent, data, children)\n } else {\n // render previous empty view\n return h()\n }\n }\n\n var matched = route.matched[depth];\n var component = matched && matched.components[name];\n\n // render empty node if no matched route or no config component\n if (!matched || !component) {\n cache[name] = null;\n return h()\n }\n\n // cache component\n cache[name] = { component: component };\n\n // attach instance registration hook\n // this will be called in the instance's injected lifecycle hooks\n data.registerRouteInstance = function (vm, val) {\n // val could be undefined for unregistration\n var current = matched.instances[name];\n if (\n (val && current !== vm) ||\n (!val && current === vm)\n ) {\n matched.instances[name] = val;\n }\n }\n\n // also register instance in prepatch hook\n // in case the same component instance is reused across different routes\n ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n matched.instances[name] = vnode.componentInstance;\n };\n\n // register instance in init hook\n // in case kept-alive component be actived when routes changed\n data.hook.init = function (vnode) {\n if (vnode.data.keepAlive &&\n vnode.componentInstance &&\n vnode.componentInstance !== matched.instances[name]\n ) {\n matched.instances[name] = vnode.componentInstance;\n }\n\n // if the route transition has already been confirmed then we weren't\n // able to call the cbs during confirmation as the component was not\n // registered yet, so we call it here.\n handleRouteEntered(route);\n };\n\n var configProps = matched.props && matched.props[name];\n // save route and configProps in cache\n if (configProps) {\n extend(cache[name], {\n route: route,\n configProps: configProps\n });\n fillPropsinData(component, data, route, configProps);\n }\n\n return h(component, data, children)\n }\n};\n\nfunction fillPropsinData (component, data, route, configProps) {\n // resolve props\n var propsToPass = data.props = resolveProps(route, configProps);\n if (propsToPass) {\n // clone to prevent mutation\n propsToPass = data.props = extend({}, propsToPass);\n // pass non-declared props as attrs\n var attrs = data.attrs = data.attrs || {};\n for (var key in propsToPass) {\n if (!component.props || !(key in component.props)) {\n attrs[key] = propsToPass[key];\n delete propsToPass[key];\n }\n }\n }\n}\n\nfunction resolveProps (route, config) {\n switch (typeof config) {\n case 'undefined':\n return\n case 'object':\n return config\n case 'function':\n return config(route)\n case 'boolean':\n return config ? route.params : undefined\n default:\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n \"props in \\\"\" + (route.path) + \"\\\" is a \" + (typeof config) + \", \" +\n \"expecting an object, function or boolean.\"\n );\n }\n }\n}\n\n/* */\n\nfunction resolvePath (\n relative,\n base,\n append\n) {\n var firstChar = relative.charAt(0);\n if (firstChar === '/') {\n return relative\n }\n\n if (firstChar === '?' || firstChar === '#') {\n return base + relative\n }\n\n var stack = base.split('/');\n\n // remove trailing segment if:\n // - not appending\n // - appending to trailing slash (last segment is empty)\n if (!append || !stack[stack.length - 1]) {\n stack.pop();\n }\n\n // resolve relative path\n var segments = relative.replace(/^\\//, '').split('/');\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n if (segment === '..') {\n stack.pop();\n } else if (segment !== '.') {\n stack.push(segment);\n }\n }\n\n // ensure leading slash\n if (stack[0] !== '') {\n stack.unshift('');\n }\n\n return stack.join('/')\n}\n\nfunction parsePath (path) {\n var hash = '';\n var query = '';\n\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex);\n path = path.slice(0, hashIndex);\n }\n\n var queryIndex = path.indexOf('?');\n if (queryIndex >= 0) {\n query = path.slice(queryIndex + 1);\n path = path.slice(0, queryIndex);\n }\n\n return {\n path: path,\n query: query,\n hash: hash\n }\n}\n\nfunction cleanPath (path) {\n return path.replace(/\\/(?:\\s*\\/)+/g, '/')\n}\n\nvar isarray = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var defaultDelimiter = options && options.delimiter || '/';\n var res;\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n continue\n }\n\n var next = str[index];\n var prefix = res[2];\n var name = res[3];\n var capture = res[4];\n var group = res[5];\n var modifier = res[6];\n var asterisk = res[7];\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n }\n\n var partial = prefix != null && next != null && next !== prefix;\n var repeat = modifier === '+' || modifier === '*';\n var optional = modifier === '?' || modifier === '*';\n var delimiter = res[2] || defaultDelimiter;\n var pattern = capture || group;\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n });\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index);\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path);\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length);\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options));\n }\n }\n\n return function (obj, opts) {\n var path = '';\n var data = obj || {};\n var options = opts || {};\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n path += token;\n\n continue\n }\n\n var value = data[token.name];\n var segment;\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix;\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j]);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment;\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys;\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n });\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = [];\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n var strict = options.strict;\n var end = options.end !== false;\n var route = '';\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n var prefix = escapeString(token.prefix);\n var capture = '(?:' + token.pattern + ')';\n\n keys.push(token);\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*';\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?';\n } else {\n capture = prefix + '(' + capture + ')?';\n }\n } else {\n capture = prefix + '(' + capture + ')';\n }\n\n route += capture;\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/');\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\n }\n\n if (end) {\n route += '$';\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/* */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n path,\n params,\n routeMsg\n) {\n params = params || {};\n try {\n var filler =\n regexpCompileCache[path] ||\n (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n\n // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}\n // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string\n if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; }\n\n return filler(params, { pretty: true })\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n // Fix #3072 no warn if `pathMatch` is string\n warn(typeof params.pathMatch === 'string', (\"missing param for \" + routeMsg + \": \" + (e.message)));\n }\n return ''\n } finally {\n // delete the 0 if it was added\n delete params[0];\n }\n}\n\n/* */\n\nfunction normalizeLocation (\n raw,\n current,\n append,\n router\n) {\n var next = typeof raw === 'string' ? { path: raw } : raw;\n // named target\n if (next._normalized) {\n return next\n } else if (next.name) {\n next = extend({}, raw);\n var params = next.params;\n if (params && typeof params === 'object') {\n next.params = extend({}, params);\n }\n return next\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = extend({}, next);\n next._normalized = true;\n var params$1 = extend(extend({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params$1;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params$1, (\"path \" + (current.path)));\n } else if (process.env.NODE_ENV !== 'production') {\n warn(false, \"relative params navigation requires a current route.\");\n }\n return next\n }\n\n var parsedPath = parsePath(next.path || '');\n var basePath = (current && current.path) || '/';\n var path = parsedPath.path\n ? resolvePath(parsedPath.path, basePath, append || next.append)\n : basePath;\n\n var query = resolveQuery(\n parsedPath.query,\n next.query,\n router && router.options.parseQuery\n );\n\n var hash = next.hash || parsedPath.hash;\n if (hash && hash.charAt(0) !== '#') {\n hash = \"#\" + hash;\n }\n\n return {\n _normalized: true,\n path: path,\n query: query,\n hash: hash\n }\n}\n\n/* */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar noop = function () {};\n\nvar warnedCustomSlot;\nvar warnedTagProp;\nvar warnedEventProp;\n\nvar Link = {\n name: 'RouterLink',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n custom: Boolean,\n exact: Boolean,\n exactPath: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n ariaCurrentValue: {\n type: String,\n default: 'page'\n },\n event: {\n type: eventTypes,\n default: 'click'\n }\n },\n render: function render (h) {\n var this$1$1 = this;\n\n var router = this.$router;\n var current = this.$route;\n var ref = router.resolve(\n this.to,\n current,\n this.append\n );\n var location = ref.location;\n var route = ref.route;\n var href = ref.href;\n\n var classes = {};\n var globalActiveClass = router.options.linkActiveClass;\n var globalExactActiveClass = router.options.linkExactActiveClass;\n // Support global empty active class\n var activeClassFallback =\n globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n var exactActiveClassFallback =\n globalExactActiveClass == null\n ? 'router-link-exact-active'\n : globalExactActiveClass;\n var activeClass =\n this.activeClass == null ? activeClassFallback : this.activeClass;\n var exactActiveClass =\n this.exactActiveClass == null\n ? exactActiveClassFallback\n : this.exactActiveClass;\n\n var compareTarget = route.redirectedFrom\n ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router)\n : route;\n\n classes[exactActiveClass] = isSameRoute(current, compareTarget, this.exactPath);\n classes[activeClass] = this.exact || this.exactPath\n ? classes[exactActiveClass]\n : isIncludedRoute(current, compareTarget);\n\n var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null;\n\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1$1.replace) {\n router.replace(location, noop);\n } else {\n router.push(location, noop);\n }\n }\n };\n\n var on = { click: guardEvent };\n if (Array.isArray(this.event)) {\n this.event.forEach(function (e) {\n on[e] = handler;\n });\n } else {\n on[this.event] = handler;\n }\n\n var data = { class: classes };\n\n var scopedSlot =\n !this.$scopedSlots.$hasNormal &&\n this.$scopedSlots.default &&\n this.$scopedSlots.default({\n href: href,\n route: route,\n navigate: handler,\n isActive: classes[activeClass],\n isExactActive: classes[exactActiveClass]\n });\n\n if (scopedSlot) {\n if (process.env.NODE_ENV !== 'production' && !this.custom) {\n !warnedCustomSlot && warn(false, 'In Vue Router 4, the v-slot API will by default wrap its content with an <a> element. Use the custom prop to remove this warning:\\n<router-link v-slot=\"{ navigate, href }\" custom></router-link>\\n');\n warnedCustomSlot = true;\n }\n if (scopedSlot.length === 1) {\n return scopedSlot[0]\n } else if (scopedSlot.length > 1 || !scopedSlot.length) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n (\"<router-link> with to=\\\"\" + (this.to) + \"\\\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.\")\n );\n }\n return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot)\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if ('tag' in this.$options.propsData && !warnedTagProp) {\n warn(\n false,\n \"<router-link>'s tag prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedTagProp = true;\n }\n if ('event' in this.$options.propsData && !warnedEventProp) {\n warn(\n false,\n \"<router-link>'s event prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedEventProp = true;\n }\n }\n\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = { href: href, 'aria-current': ariaCurrentValue };\n } else {\n // find the first <a> child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the <a> is a static node\n a.isStatic = false;\n var aData = (a.data = extend({}, a.data));\n aData.on = aData.on || {};\n // transform existing events in both objects into arrays so we can push later\n for (var event in aData.on) {\n var handler$1 = aData.on[event];\n if (event in on) {\n aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1];\n }\n }\n // append new listeners for router-link\n for (var event$1 in on) {\n if (event$1 in aData.on) {\n // on[event] is always a function\n aData.on[event$1].push(on[event$1]);\n } else {\n aData.on[event$1] = handler;\n }\n }\n\n var aAttrs = (a.data.attrs = extend({}, a.data.attrs));\n aAttrs.href = href;\n aAttrs['aria-current'] = ariaCurrentValue;\n } else {\n // doesn't have <a> child, apply listener to self\n data.on = on;\n }\n }\n\n return h(this.tag, data, this.$slots.default)\n }\n};\n\nfunction guardEvent (e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) { return }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) { return }\n // don't redirect if `target=\"_blank\"`\n if (e.currentTarget && e.currentTarget.getAttribute) {\n var target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target)) { return }\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault) {\n e.preventDefault();\n }\n return true\n}\n\nfunction findAnchor (children) {\n if (children) {\n var child;\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n if (child.tag === 'a') {\n return child\n }\n if (child.children && (child = findAnchor(child.children))) {\n return child\n }\n }\n }\n}\n\nvar _Vue;\n\nfunction install (Vue) {\n if (install.installed && _Vue === Vue) { return }\n install.installed = true;\n\n _Vue = Vue;\n\n var isDef = function (v) { return v !== undefined; };\n\n var registerInstance = function (vm, callVal) {\n var i = vm.$options._parentVnode;\n if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n i(vm, callVal);\n }\n };\n\n Vue.mixin({\n beforeCreate: function beforeCreate () {\n if (isDef(this.$options.router)) {\n this._routerRoot = this;\n this._router = this.$options.router;\n this._router.init(this);\n Vue.util.defineReactive(this, '_route', this._router.history.current);\n } else {\n this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\n }\n registerInstance(this, this);\n },\n destroyed: function destroyed () {\n registerInstance(this);\n }\n });\n\n Object.defineProperty(Vue.prototype, '$router', {\n get: function get () { return this._routerRoot._router }\n });\n\n Object.defineProperty(Vue.prototype, '$route', {\n get: function get () { return this._routerRoot._route }\n });\n\n Vue.component('RouterView', View);\n Vue.component('RouterLink', Link);\n\n var strats = Vue.config.optionMergeStrategies;\n // use the same hook merging strategy for route hooks\n strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/* */\n\nvar inBrowser = typeof window !== 'undefined';\n\n/* */\n\nfunction createRouteMap (\n routes,\n oldPathList,\n oldPathMap,\n oldNameMap,\n parentRoute\n) {\n // the path list is used to control path matching priority\n var pathList = oldPathList || [];\n // $flow-disable-line\n var pathMap = oldPathMap || Object.create(null);\n // $flow-disable-line\n var nameMap = oldNameMap || Object.create(null);\n\n routes.forEach(function (route) {\n addRouteRecord(pathList, pathMap, nameMap, route, parentRoute);\n });\n\n // ensure wildcard routes are always at the end\n for (var i = 0, l = pathList.length; i < l; i++) {\n if (pathList[i] === '*') {\n pathList.push(pathList.splice(i, 1)[0]);\n l--;\n i--;\n }\n }\n\n if (process.env.NODE_ENV === 'development') {\n // warn if routes do not include leading slashes\n var found = pathList\n // check for missing leading slash\n .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; });\n\n if (found.length > 0) {\n var pathNames = found.map(function (path) { return (\"- \" + path); }).join('\\n');\n warn(false, (\"Non-nested routes must include a leading slash character. Fix the following routes: \\n\" + pathNames));\n }\n }\n\n return {\n pathList: pathList,\n pathMap: pathMap,\n nameMap: nameMap\n }\n}\n\nfunction addRouteRecord (\n pathList,\n pathMap,\n nameMap,\n route,\n parent,\n matchAs\n) {\n var path = route.path;\n var name = route.name;\n if (process.env.NODE_ENV !== 'production') {\n assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n assert(\n typeof route.component !== 'string',\n \"route config \\\"component\\\" for path: \" + (String(\n path || name\n )) + \" cannot be a \" + \"string id. Use an actual component instead.\"\n );\n\n warn(\n // eslint-disable-next-line no-control-regex\n !/[^\\u0000-\\u007F]+/.test(path),\n \"Route with path \\\"\" + path + \"\\\" contains unencoded characters, make sure \" +\n \"your path is correctly encoded before passing it to the router. Use \" +\n \"encodeURI to encode static segments of your path.\"\n );\n }\n\n var pathToRegexpOptions =\n route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\n\n if (typeof route.caseSensitive === 'boolean') {\n pathToRegexpOptions.sensitive = route.caseSensitive;\n }\n\n var record = {\n path: normalizedPath,\n regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n components: route.components || { default: route.component },\n alias: route.alias\n ? typeof route.alias === 'string'\n ? [route.alias]\n : route.alias\n : [],\n instances: {},\n enteredCbs: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props:\n route.props == null\n ? {}\n : route.components\n ? route.props\n : { default: route.props }\n };\n\n if (route.children) {\n // Warn if route is named, does not redirect and has a default child route.\n // If users navigate to this route by name, the default child will\n // not be rendered (GH Issue #629)\n if (process.env.NODE_ENV !== 'production') {\n if (\n route.name &&\n !route.redirect &&\n route.children.some(function (child) { return /^\\/?$/.test(child.path); })\n ) {\n warn(\n false,\n \"Named Route '\" + (route.name) + \"' has a default child route. \" +\n \"When navigating to this named route (:to=\\\"{name: '\" + (route.name) + \"'}\\\"), \" +\n \"the default child route will not be rendered. Remove the name from \" +\n \"this route and use the name of the default child route for named \" +\n \"links instead.\"\n );\n }\n }\n route.children.forEach(function (child) {\n var childMatchAs = matchAs\n ? cleanPath((matchAs + \"/\" + (child.path)))\n : undefined;\n addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n });\n }\n\n if (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n\n if (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];\n for (var i = 0; i < aliases.length; ++i) {\n var alias = aliases[i];\n if (process.env.NODE_ENV !== 'production' && alias === path) {\n warn(\n false,\n (\"Found an alias with the same value as the path: \\\"\" + path + \"\\\". You have to remove that alias. It will be ignored in development.\")\n );\n // skip in dev to make it work\n continue\n }\n\n var aliasRoute = {\n path: alias,\n children: route.children\n };\n addRouteRecord(\n pathList,\n pathMap,\n nameMap,\n aliasRoute,\n parent,\n record.path || '/' // matchAs\n );\n }\n }\n\n if (name) {\n if (!nameMap[name]) {\n nameMap[name] = record;\n } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n warn(\n false,\n \"Duplicate named routes definition: \" +\n \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + (record.path) + \"\\\" }\"\n );\n }\n }\n}\n\nfunction compileRouteRegex (\n path,\n pathToRegexpOptions\n) {\n var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n if (process.env.NODE_ENV !== 'production') {\n var keys = Object.create(null);\n regex.keys.forEach(function (key) {\n warn(\n !keys[key.name],\n (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\")\n );\n keys[key.name] = true;\n });\n }\n return regex\n}\n\nfunction normalizePath (\n path,\n parent,\n strict\n) {\n if (!strict) { path = path.replace(/\\/$/, ''); }\n if (path[0] === '/') { return path }\n if (parent == null) { return path }\n return cleanPath(((parent.path) + \"/\" + path))\n}\n\n/* */\n\n\n\nfunction createMatcher (\n routes,\n router\n) {\n var ref = createRouteMap(routes);\n var pathList = ref.pathList;\n var pathMap = ref.pathMap;\n var nameMap = ref.nameMap;\n\n function addRoutes (routes) {\n createRouteMap(routes, pathList, pathMap, nameMap);\n }\n\n function addRoute (parentOrRoute, route) {\n var parent = (typeof parentOrRoute !== 'object') ? nameMap[parentOrRoute] : undefined;\n // $flow-disable-line\n createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent);\n\n // add aliases of parent\n if (parent && parent.alias.length) {\n createRouteMap(\n // $flow-disable-line route is defined if parent is\n parent.alias.map(function (alias) { return ({ path: alias, children: [route] }); }),\n pathList,\n pathMap,\n nameMap,\n parent\n );\n }\n }\n\n function getRoutes () {\n return pathList.map(function (path) { return pathMap[path]; })\n }\n\n function match (\n raw,\n currentRoute,\n redirectedFrom\n ) {\n var location = normalizeLocation(raw, currentRoute, false, router);\n var name = location.name;\n\n if (name) {\n var record = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n warn(record, (\"Route with name '\" + name + \"' does not exist\"));\n }\n if (!record) { return _createRoute(null, location) }\n var paramNames = record.regex.keys\n .filter(function (key) { return !key.optional; })\n .map(function (key) { return key.name; });\n\n if (typeof location.params !== 'object') {\n location.params = {};\n }\n\n if (currentRoute && typeof currentRoute.params === 'object') {\n for (var key in currentRoute.params) {\n if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n location.params[key] = currentRoute.params[key];\n }\n }\n }\n\n location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n return _createRoute(record, location, redirectedFrom)\n } else if (location.path) {\n location.params = {};\n for (var i = 0; i < pathList.length; i++) {\n var path = pathList[i];\n var record$1 = pathMap[path];\n if (matchRoute(record$1.regex, location.path, location.params)) {\n return _createRoute(record$1, location, redirectedFrom)\n }\n }\n }\n // no match\n return _createRoute(null, location)\n }\n\n function redirect (\n record,\n location\n ) {\n var originalRedirect = record.redirect;\n var redirect = typeof originalRedirect === 'function'\n ? originalRedirect(createRoute(record, location, null, router))\n : originalRedirect;\n\n if (typeof redirect === 'string') {\n redirect = { path: redirect };\n }\n\n if (!redirect || typeof redirect !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false, (\"invalid redirect option: \" + (JSON.stringify(redirect)))\n );\n }\n return _createRoute(null, location)\n }\n\n var re = redirect;\n var name = re.name;\n var path = re.path;\n var query = location.query;\n var hash = location.hash;\n var params = location.params;\n query = re.hasOwnProperty('query') ? re.query : query;\n hash = re.hasOwnProperty('hash') ? re.hash : hash;\n params = re.hasOwnProperty('params') ? re.params : params;\n\n if (name) {\n // resolved named direct\n var targetRecord = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n assert(targetRecord, (\"redirect failed: named route \\\"\" + name + \"\\\" not found.\"));\n }\n return match({\n _normalized: true,\n name: name,\n query: query,\n hash: hash,\n params: params\n }, undefined, location)\n } else if (path) {\n // 1. resolve relative redirect\n var rawPath = resolveRecordPath(path, record);\n // 2. resolve params\n var resolvedPath = fillParams(rawPath, params, (\"redirect route with path \\\"\" + rawPath + \"\\\"\"));\n // 3. rematch with existing query and hash\n return match({\n _normalized: true,\n path: resolvedPath,\n query: query,\n hash: hash\n }, undefined, location)\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"invalid redirect option: \" + (JSON.stringify(redirect))));\n }\n return _createRoute(null, location)\n }\n }\n\n function alias (\n record,\n location,\n matchAs\n ) {\n var aliasedPath = fillParams(matchAs, location.params, (\"aliased route with path \\\"\" + matchAs + \"\\\"\"));\n var aliasedMatch = match({\n _normalized: true,\n path: aliasedPath\n });\n if (aliasedMatch) {\n var matched = aliasedMatch.matched;\n var aliasedRecord = matched[matched.length - 1];\n location.params = aliasedMatch.params;\n return _createRoute(aliasedRecord, location)\n }\n return _createRoute(null, location)\n }\n\n function _createRoute (\n record,\n location,\n redirectedFrom\n ) {\n if (record && record.redirect) {\n return redirect(record, redirectedFrom || location)\n }\n if (record && record.matchAs) {\n return alias(record, location, record.matchAs)\n }\n return createRoute(record, location, redirectedFrom, router)\n }\n\n return {\n match: match,\n addRoute: addRoute,\n getRoutes: getRoutes,\n addRoutes: addRoutes\n }\n}\n\nfunction matchRoute (\n regex,\n path,\n params\n) {\n var m = path.match(regex);\n\n if (!m) {\n return false\n } else if (!params) {\n return true\n }\n\n for (var i = 1, len = m.length; i < len; ++i) {\n var key = regex.keys[i - 1];\n if (key) {\n // Fix #1994: using * with props: true generates a param named 0\n params[key.name || 'pathMatch'] = typeof m[i] === 'string' ? decode(m[i]) : m[i];\n }\n }\n\n return true\n}\n\nfunction resolveRecordPath (path, record) {\n return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/* */\n\n// use User Timing api (if present) for more accurate key precision\nvar Time =\n inBrowser && window.performance && window.performance.now\n ? window.performance\n : Date;\n\nfunction genStateKey () {\n return Time.now().toFixed(3)\n}\n\nvar _key = genStateKey();\n\nfunction getStateKey () {\n return _key\n}\n\nfunction setStateKey (key) {\n return (_key = key)\n}\n\n/* */\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n // Prevent browser scroll behavior on History popstate\n if ('scrollRestoration' in window.history) {\n window.history.scrollRestoration = 'manual';\n }\n // Fix for #1585 for Firefox\n // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with\n // window.location.protocol + '//' + window.location.host\n // location.host contains the port and location.hostname doesn't\n var protocolAndPath = window.location.protocol + '//' + window.location.host;\n var absolutePath = window.location.href.replace(protocolAndPath, '');\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, window.history.state);\n stateCopy.key = getStateKey();\n window.history.replaceState(stateCopy, '', absolutePath);\n window.addEventListener('popstate', handlePopState);\n return function () {\n window.removeEventListener('popstate', handlePopState);\n }\n}\n\nfunction handleScroll (\n router,\n to,\n from,\n isPop\n) {\n if (!router.app) {\n return\n }\n\n var behavior = router.options.scrollBehavior;\n if (!behavior) {\n return\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n }\n\n // wait until re-render finishes before scrolling\n router.app.$nextTick(function () {\n var position = getScrollPosition();\n var shouldScroll = behavior.call(\n router,\n to,\n from,\n isPop ? position : null\n );\n\n if (!shouldScroll) {\n return\n }\n\n if (typeof shouldScroll.then === 'function') {\n shouldScroll\n .then(function (shouldScroll) {\n scrollToPosition((shouldScroll), position);\n })\n .catch(function (err) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, err.toString());\n }\n });\n } else {\n scrollToPosition(shouldScroll, position);\n }\n });\n}\n\nfunction saveScrollPosition () {\n var key = getStateKey();\n if (key) {\n positionStore[key] = {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n }\n}\n\nfunction handlePopState (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n}\n\nfunction getScrollPosition () {\n var key = getStateKey();\n if (key) {\n return positionStore[key]\n }\n}\n\nfunction getElementPosition (el, offset) {\n var docEl = document.documentElement;\n var docRect = docEl.getBoundingClientRect();\n var elRect = el.getBoundingClientRect();\n return {\n x: elRect.left - docRect.left - offset.x,\n y: elRect.top - docRect.top - offset.y\n }\n}\n\nfunction isValidPosition (obj) {\n return isNumber(obj.x) || isNumber(obj.y)\n}\n\nfunction normalizePosition (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n y: isNumber(obj.y) ? obj.y : window.pageYOffset\n }\n}\n\nfunction normalizeOffset (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : 0,\n y: isNumber(obj.y) ? obj.y : 0\n }\n}\n\nfunction isNumber (v) {\n return typeof v === 'number'\n}\n\nvar hashStartsWithNumberRE = /^#\\d/;\n\nfunction scrollToPosition (shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n // getElementById would still fail if the selector contains a more complicated query like #main[data-attr]\n // but at the same time, it doesn't make much sense to select an element with an id and an extra selector\n var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line\n ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line\n : document.querySelector(shouldScroll.selector);\n\n if (el) {\n var offset =\n shouldScroll.offset && typeof shouldScroll.offset === 'object'\n ? shouldScroll.offset\n : {};\n offset = normalizeOffset(offset);\n position = getElementPosition(el, offset);\n } else if (isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n } else if (isObject && isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n\n if (position) {\n // $flow-disable-line\n if ('scrollBehavior' in document.documentElement.style) {\n window.scrollTo({\n left: position.x,\n top: position.y,\n // $flow-disable-line\n behavior: shouldScroll.behavior\n });\n } else {\n window.scrollTo(position.x, position.y);\n }\n }\n}\n\n/* */\n\nvar supportsPushState =\n inBrowser &&\n (function () {\n var ua = window.navigator.userAgent;\n\n if (\n (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\n ua.indexOf('Mobile Safari') !== -1 &&\n ua.indexOf('Chrome') === -1 &&\n ua.indexOf('Windows Phone') === -1\n ) {\n return false\n }\n\n return window.history && typeof window.history.pushState === 'function'\n })();\n\nfunction pushState (url, replace) {\n saveScrollPosition();\n // try...catch the pushState call to get around Safari\n // DOM Exception 18 where it limits to 100 pushState calls\n var history = window.history;\n try {\n if (replace) {\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, history.state);\n stateCopy.key = getStateKey();\n history.replaceState(stateCopy, '', url);\n } else {\n history.pushState({ key: setStateKey(genStateKey()) }, '', url);\n }\n } catch (e) {\n window.location[replace ? 'replace' : 'assign'](url);\n }\n}\n\nfunction replaceState (url) {\n pushState(url, true);\n}\n\n// When changing thing, also edit router.d.ts\nvar NavigationFailureType = {\n redirected: 2,\n aborted: 4,\n cancelled: 8,\n duplicated: 16\n};\n\nfunction createNavigationRedirectedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.redirected,\n (\"Redirected when going from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (stringifyRoute(\n to\n )) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createNavigationDuplicatedError (from, to) {\n var error = createRouterError(\n from,\n to,\n NavigationFailureType.duplicated,\n (\"Avoided redundant navigation to current location: \\\"\" + (from.fullPath) + \"\\\".\")\n );\n // backwards compatible with the first introduction of Errors\n error.name = 'NavigationDuplicated';\n return error\n}\n\nfunction createNavigationCancelledError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.cancelled,\n (\"Navigation cancelled from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" with a new navigation.\")\n )\n}\n\nfunction createNavigationAbortedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.aborted,\n (\"Navigation aborted from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createRouterError (from, to, type, message) {\n var error = new Error(message);\n error._isRouter = true;\n error.from = from;\n error.to = to;\n error.type = type;\n\n return error\n}\n\nvar propertiesToLog = ['params', 'query', 'hash'];\n\nfunction stringifyRoute (to) {\n if (typeof to === 'string') { return to }\n if ('path' in to) { return to.path }\n var location = {};\n propertiesToLog.forEach(function (key) {\n if (key in to) { location[key] = to[key]; }\n });\n return JSON.stringify(location, null, 2)\n}\n\nfunction isError (err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction isNavigationFailure (err, errorType) {\n return (\n isError(err) &&\n err._isRouter &&\n (errorType == null || err.type === errorType)\n )\n}\n\n/* */\n\nfunction runQueue (queue, fn, cb) {\n var step = function (index) {\n if (index >= queue.length) {\n cb();\n } else {\n if (queue[index]) {\n fn(queue[index], function () {\n step(index + 1);\n });\n } else {\n step(index + 1);\n }\n }\n };\n step(0);\n}\n\n/* */\n\nfunction resolveAsyncComponents (matched) {\n return function (to, from, next) {\n var hasAsync = false;\n var pending = 0;\n var error = null;\n\n flatMapComponents(matched, function (def, _, match, key) {\n // if it's a function and doesn't have cid attached,\n // assume it's an async component resolve function.\n // we are not using Vue's default async resolving mechanism because\n // we want to halt the navigation until the incoming component has been\n // resolved.\n if (typeof def === 'function' && def.cid === undefined) {\n hasAsync = true;\n pending++;\n\n var resolve = once(function (resolvedDef) {\n if (isESModule(resolvedDef)) {\n resolvedDef = resolvedDef.default;\n }\n // save resolved on async factory in case it's used elsewhere\n def.resolved = typeof resolvedDef === 'function'\n ? resolvedDef\n : _Vue.extend(resolvedDef);\n match.components[key] = resolvedDef;\n pending--;\n if (pending <= 0) {\n next();\n }\n });\n\n var reject = once(function (reason) {\n var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n process.env.NODE_ENV !== 'production' && warn(false, msg);\n if (!error) {\n error = isError(reason)\n ? reason\n : new Error(msg);\n next(error);\n }\n });\n\n var res;\n try {\n res = def(resolve, reject);\n } catch (e) {\n reject(e);\n }\n if (res) {\n if (typeof res.then === 'function') {\n res.then(resolve, reject);\n } else {\n // new syntax in Vue 2.3\n var comp = res.component;\n if (comp && typeof comp.then === 'function') {\n comp.then(resolve, reject);\n }\n }\n }\n }\n });\n\n if (!hasAsync) { next(); }\n }\n}\n\nfunction flatMapComponents (\n matched,\n fn\n) {\n return flatten(matched.map(function (m) {\n return Object.keys(m.components).map(function (key) { return fn(\n m.components[key],\n m.instances[key],\n m, key\n ); })\n }))\n}\n\nfunction flatten (arr) {\n return Array.prototype.concat.apply([], arr)\n}\n\nvar hasSymbol =\n typeof Symbol === 'function' &&\n typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once (fn) {\n var called = false;\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (called) { return }\n called = true;\n return fn.apply(this, args)\n }\n}\n\n/* */\n\nvar History = function History (router, base) {\n this.router = router;\n this.base = normalizeBase(base);\n // start with a route object that stands for \"nowhere\"\n this.current = START;\n this.pending = null;\n this.ready = false;\n this.readyCbs = [];\n this.readyErrorCbs = [];\n this.errorCbs = [];\n this.listeners = [];\n};\n\nHistory.prototype.listen = function listen (cb) {\n this.cb = cb;\n};\n\nHistory.prototype.onReady = function onReady (cb, errorCb) {\n if (this.ready) {\n cb();\n } else {\n this.readyCbs.push(cb);\n if (errorCb) {\n this.readyErrorCbs.push(errorCb);\n }\n }\n};\n\nHistory.prototype.onError = function onError (errorCb) {\n this.errorCbs.push(errorCb);\n};\n\nHistory.prototype.transitionTo = function transitionTo (\n location,\n onComplete,\n onAbort\n) {\n var this$1$1 = this;\n\n var route;\n // catch redirect option https://github.com/vuejs/vue-router/issues/3201\n try {\n route = this.router.match(location, this.current);\n } catch (e) {\n this.errorCbs.forEach(function (cb) {\n cb(e);\n });\n // Exception should still be thrown\n throw e\n }\n var prev = this.current;\n this.confirmTransition(\n route,\n function () {\n this$1$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1$1.ensureURL();\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n\n // fire ready cbs once\n if (!this$1$1.ready) {\n this$1$1.ready = true;\n this$1$1.readyCbs.forEach(function (cb) {\n cb(route);\n });\n }\n },\n function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1$1.ready) {\n // Initial redirection should not mark the history as ready yet\n // because it's triggered by the redirection instead\n // https://github.com/vuejs/vue-router/issues/3225\n // https://github.com/vuejs/vue-router/issues/3331\n if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) {\n this$1$1.ready = true;\n this$1$1.readyErrorCbs.forEach(function (cb) {\n cb(err);\n });\n }\n }\n }\n );\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n var this$1$1 = this;\n\n var current = this.current;\n this.pending = route;\n var abort = function (err) {\n // changed after adding errors with\n // https://github.com/vuejs/vue-router/pull/3047 before that change,\n // redirect and aborted navigation would produce an err == null\n if (!isNavigationFailure(err) && isError(err)) {\n if (this$1$1.errorCbs.length) {\n this$1$1.errorCbs.forEach(function (cb) {\n cb(err);\n });\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'uncaught error during route navigation:');\n }\n console.error(err);\n }\n }\n onAbort && onAbort(err);\n };\n var lastRouteIndex = route.matched.length - 1;\n var lastCurrentIndex = current.matched.length - 1;\n if (\n isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n lastRouteIndex === lastCurrentIndex &&\n route.matched[lastRouteIndex] === current.matched[lastCurrentIndex]\n ) {\n this.ensureURL();\n if (route.hash) {\n handleScroll(this.router, current, route, false);\n }\n return abort(createNavigationDuplicatedError(current, route))\n }\n\n var ref = resolveQueue(\n this.current.matched,\n route.matched\n );\n var updated = ref.updated;\n var deactivated = ref.deactivated;\n var activated = ref.activated;\n\n var queue = [].concat(\n // in-component leave guards\n extractLeaveGuards(deactivated),\n // global before hooks\n this.router.beforeHooks,\n // in-component update hooks\n extractUpdateHooks(updated),\n // in-config enter guards\n activated.map(function (m) { return m.beforeEnter; }),\n // async components\n resolveAsyncComponents(activated)\n );\n\n var iterator = function (hook, next) {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n try {\n hook(route, current, function (to) {\n if (to === false) {\n // next(false) -> abort navigation, ensure current URL\n this$1$1.ensureURL(true);\n abort(createNavigationAbortedError(current, route));\n } else if (isError(to)) {\n this$1$1.ensureURL(true);\n abort(to);\n } else if (\n typeof to === 'string' ||\n (typeof to === 'object' &&\n (typeof to.path === 'string' || typeof to.name === 'string'))\n ) {\n // next('/') or next({ path: '/' }) -> redirect\n abort(createNavigationRedirectedError(current, route));\n if (typeof to === 'object' && to.replace) {\n this$1$1.replace(to);\n } else {\n this$1$1.push(to);\n }\n } else {\n // confirm transition and pass on the value\n next(to);\n }\n });\n } catch (e) {\n abort(e);\n }\n };\n\n runQueue(queue, iterator, function () {\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated);\n var queue = enterGuards.concat(this$1$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n this$1$1.pending = null;\n onComplete(route);\n if (this$1$1.router.app) {\n this$1$1.router.app.$nextTick(function () {\n handleRouteEntered(route);\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n this.current = route;\n this.cb && this.cb(route);\n};\n\nHistory.prototype.setupListeners = function setupListeners () {\n // Default implementation is empty\n};\n\nHistory.prototype.teardown = function teardown () {\n // clean up event listeners\n // https://github.com/vuejs/vue-router/issues/2341\n this.listeners.forEach(function (cleanupListener) {\n cleanupListener();\n });\n this.listeners = [];\n\n // reset current history route\n // https://github.com/vuejs/vue-router/issues/3294\n this.current = START;\n this.pending = null;\n};\n\nfunction normalizeBase (base) {\n if (!base) {\n if (inBrowser) {\n // respect <base> tag\n var baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n } else {\n base = '/';\n }\n }\n // make sure there's the starting slash\n if (base.charAt(0) !== '/') {\n base = '/' + base;\n }\n // remove trailing slash\n return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n current,\n next\n) {\n var i;\n var max = Math.max(current.length, next.length);\n for (i = 0; i < max; i++) {\n if (current[i] !== next[i]) {\n break\n }\n }\n return {\n updated: next.slice(0, i),\n activated: next.slice(i),\n deactivated: current.slice(i)\n }\n}\n\nfunction extractGuards (\n records,\n name,\n bind,\n reverse\n) {\n var guards = flatMapComponents(records, function (def, instance, match, key) {\n var guard = extractGuard(def, name);\n if (guard) {\n return Array.isArray(guard)\n ? guard.map(function (guard) { return bind(guard, instance, match, key); })\n : bind(guard, instance, match, key)\n }\n });\n return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n def,\n key\n) {\n if (typeof def !== 'function') {\n // extend now so that global mixins are applied.\n def = _Vue.extend(def);\n }\n return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n if (instance) {\n return function boundRouteGuard () {\n return guard.apply(instance, arguments)\n }\n }\n}\n\nfunction extractEnterGuards (\n activated\n) {\n return extractGuards(\n activated,\n 'beforeRouteEnter',\n function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key)\n }\n )\n}\n\nfunction bindEnterGuard (\n guard,\n match,\n key\n) {\n return function routeEnterGuard (to, from, next) {\n return guard(to, from, function (cb) {\n if (typeof cb === 'function') {\n if (!match.enteredCbs[key]) {\n match.enteredCbs[key] = [];\n }\n match.enteredCbs[key].push(cb);\n }\n next(cb);\n })\n }\n}\n\n/* */\n\nvar HTML5History = /*@__PURE__*/(function (History) {\n function HTML5History (router, base) {\n History.call(this, router, base);\n\n this._startLocation = getLocation(this.base);\n }\n\n if ( History ) HTML5History.__proto__ = History;\n HTML5History.prototype = Object.create( History && History.prototype );\n HTML5History.prototype.constructor = HTML5History;\n\n HTML5History.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n\n // Avoiding first `popstate` event dispatched in some browsers but first\n // history route not updated since async guard at the same time.\n var location = getLocation(this$1$1.base);\n if (this$1$1.current === START && location === this$1$1._startLocation) {\n return\n }\n\n this$1$1.transitionTo(location, function (route) {\n if (supportsScroll) {\n handleScroll(router, route, current, true);\n }\n });\n };\n window.addEventListener('popstate', handleRoutingEvent);\n this.listeners.push(function () {\n window.removeEventListener('popstate', handleRoutingEvent);\n });\n };\n\n HTML5History.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HTML5History.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.ensureURL = function ensureURL (push) {\n if (getLocation(this.base) !== this.current.fullPath) {\n var current = cleanPath(this.base + this.current.fullPath);\n push ? pushState(current) : replaceState(current);\n }\n };\n\n HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {\n return getLocation(this.base)\n };\n\n return HTML5History;\n}(History));\n\nfunction getLocation (base) {\n var path = window.location.pathname;\n var pathLowerCase = path.toLowerCase();\n var baseLowerCase = base.toLowerCase();\n // base=\"/a\" shouldn't turn path=\"/app\" into \"/a/pp\"\n // https://github.com/vuejs/vue-router/issues/3555\n // so we ensure the trailing slash in the base\n if (base && ((pathLowerCase === baseLowerCase) ||\n (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) {\n path = path.slice(base.length);\n }\n return (path || '/') + window.location.search + window.location.hash\n}\n\n/* */\n\nvar HashHistory = /*@__PURE__*/(function (History) {\n function HashHistory (router, base, fallback) {\n History.call(this, router, base);\n // check history fallback deeplinking\n if (fallback && checkFallback(this.base)) {\n return\n }\n ensureSlash();\n }\n\n if ( History ) HashHistory.__proto__ = History;\n HashHistory.prototype = Object.create( History && History.prototype );\n HashHistory.prototype.constructor = HashHistory;\n\n // this is delayed until the app mounts\n // to avoid the hashchange listener being fired too early\n HashHistory.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n if (!ensureSlash()) {\n return\n }\n this$1$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n };\n var eventType = supportsPushState ? 'popstate' : 'hashchange';\n window.addEventListener(\n eventType,\n handleRoutingEvent\n );\n this.listeners.push(function () {\n window.removeEventListener(eventType, handleRoutingEvent);\n });\n };\n\n HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HashHistory.prototype.ensureURL = function ensureURL (push) {\n var current = this.current.fullPath;\n if (getHash() !== current) {\n push ? pushHash(current) : replaceHash(current);\n }\n };\n\n HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n return getHash()\n };\n\n return HashHistory;\n}(History));\n\nfunction checkFallback (base) {\n var location = getLocation(base);\n if (!/^\\/#/.test(location)) {\n window.location.replace(cleanPath(base + '/#' + location));\n return true\n }\n}\n\nfunction ensureSlash () {\n var path = getHash();\n if (path.charAt(0) === '/') {\n return true\n }\n replaceHash('/' + path);\n return false\n}\n\nfunction getHash () {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var index = href.indexOf('#');\n // empty path\n if (index < 0) { return '' }\n\n href = href.slice(index + 1);\n\n return href\n}\n\nfunction getUrl (path) {\n var href = window.location.href;\n var i = href.indexOf('#');\n var base = i >= 0 ? href.slice(0, i) : href;\n return (base + \"#\" + path)\n}\n\nfunction pushHash (path) {\n if (supportsPushState) {\n pushState(getUrl(path));\n } else {\n window.location.hash = path;\n }\n}\n\nfunction replaceHash (path) {\n if (supportsPushState) {\n replaceState(getUrl(path));\n } else {\n window.location.replace(getUrl(path));\n }\n}\n\n/* */\n\nvar AbstractHistory = /*@__PURE__*/(function (History) {\n function AbstractHistory (router, base) {\n History.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n\n if ( History ) AbstractHistory.__proto__ = History;\n AbstractHistory.prototype = Object.create( History && History.prototype );\n AbstractHistory.prototype.constructor = AbstractHistory;\n\n AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index + 1).concat(route);\n this$1$1.index++;\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index).concat(route);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.go = function go (n) {\n var this$1$1 = this;\n\n var targetIndex = this.index + n;\n if (targetIndex < 0 || targetIndex >= this.stack.length) {\n return\n }\n var route = this.stack[targetIndex];\n this.confirmTransition(\n route,\n function () {\n var prev = this$1$1.current;\n this$1$1.index = targetIndex;\n this$1$1.updateRoute(route);\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n },\n function (err) {\n if (isNavigationFailure(err, NavigationFailureType.duplicated)) {\n this$1$1.index = targetIndex;\n }\n }\n );\n };\n\n AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n var current = this.stack[this.stack.length - 1];\n return current ? current.fullPath : '/'\n };\n\n AbstractHistory.prototype.ensureURL = function ensureURL () {\n // noop\n };\n\n return AbstractHistory;\n}(History));\n\n/* */\n\n\n\nvar VueRouter = function VueRouter (options) {\n if ( options === void 0 ) options = {};\n\n if (process.env.NODE_ENV !== 'production') {\n warn(this instanceof VueRouter, \"Router must be called with the new operator.\");\n }\n this.app = null;\n this.apps = [];\n this.options = options;\n this.beforeHooks = [];\n this.resolveHooks = [];\n this.afterHooks = [];\n this.matcher = createMatcher(options.routes || [], this);\n\n var mode = options.mode || 'hash';\n this.fallback =\n mode === 'history' && !supportsPushState && options.fallback !== false;\n if (this.fallback) {\n mode = 'hash';\n }\n if (!inBrowser) {\n mode = 'abstract';\n }\n this.mode = mode;\n\n switch (mode) {\n case 'history':\n this.history = new HTML5History(this, options.base);\n break\n case 'hash':\n this.history = new HashHistory(this, options.base, this.fallback);\n break\n case 'abstract':\n this.history = new AbstractHistory(this, options.base);\n break\n default:\n if (process.env.NODE_ENV !== 'production') {\n assert(false, (\"invalid mode: \" + mode));\n }\n }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (raw, current, redirectedFrom) {\n return this.matcher.match(raw, current, redirectedFrom)\n};\n\nprototypeAccessors.currentRoute.get = function () {\n return this.history && this.history.current\n};\n\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\n var this$1$1 = this;\n\n process.env.NODE_ENV !== 'production' &&\n assert(\n install.installed,\n \"not installed. Make sure to call `Vue.use(VueRouter)` \" +\n \"before creating root instance.\"\n );\n\n this.apps.push(app);\n\n // set up app destroyed handler\n // https://github.com/vuejs/vue-router/issues/2639\n app.$once('hook:destroyed', function () {\n // clean out app from this.apps array once destroyed\n var index = this$1$1.apps.indexOf(app);\n if (index > -1) { this$1$1.apps.splice(index, 1); }\n // ensure we still have a main app or null if no apps\n // we do not release the router so it can be reused\n if (this$1$1.app === app) { this$1$1.app = this$1$1.apps[0] || null; }\n\n if (!this$1$1.app) { this$1$1.history.teardown(); }\n });\n\n // main app previously initialized\n // return as we don't need to set up new history listener\n if (this.app) {\n return\n }\n\n this.app = app;\n\n var history = this.history;\n\n if (history instanceof HTML5History || history instanceof HashHistory) {\n var handleInitialScroll = function (routeOrError) {\n var from = history.current;\n var expectScroll = this$1$1.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll && 'fullPath' in routeOrError) {\n handleScroll(this$1$1, routeOrError, from, false);\n }\n };\n var setupListeners = function (routeOrError) {\n history.setupListeners();\n handleInitialScroll(routeOrError);\n };\n history.transitionTo(\n history.getCurrentLocation(),\n setupListeners,\n setupListeners\n );\n }\n\n history.listen(function (route) {\n this$1$1.apps.forEach(function (app) {\n app._route = route;\n });\n });\n};\n\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\n return registerHook(this.beforeHooks, fn)\n};\n\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\n return registerHook(this.resolveHooks, fn)\n};\n\nVueRouter.prototype.afterEach = function afterEach (fn) {\n return registerHook(this.afterHooks, fn)\n};\n\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\n this.history.onReady(cb, errorCb);\n};\n\nVueRouter.prototype.onError = function onError (errorCb) {\n this.history.onError(errorCb);\n};\n\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.push(location, resolve, reject);\n })\n } else {\n this.history.push(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.replace(location, resolve, reject);\n })\n } else {\n this.history.replace(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.go = function go (n) {\n this.history.go(n);\n};\n\nVueRouter.prototype.back = function back () {\n this.go(-1);\n};\n\nVueRouter.prototype.forward = function forward () {\n this.go(1);\n};\n\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {\n var route = to\n ? to.matched\n ? to\n : this.resolve(to).route\n : this.currentRoute;\n if (!route) {\n return []\n }\n return [].concat.apply(\n [],\n route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key]\n })\n })\n )\n};\n\nVueRouter.prototype.resolve = function resolve (\n to,\n current,\n append\n) {\n current = current || this.history.current;\n var location = normalizeLocation(to, current, append, this);\n var route = this.match(location, current);\n var fullPath = route.redirectedFrom || route.fullPath;\n var base = this.history.base;\n var href = createHref(base, fullPath, this.mode);\n return {\n location: location,\n route: route,\n href: href,\n // for backwards compat\n normalizedTo: location,\n resolved: route\n }\n};\n\nVueRouter.prototype.getRoutes = function getRoutes () {\n return this.matcher.getRoutes()\n};\n\nVueRouter.prototype.addRoute = function addRoute (parentOrRoute, route) {\n this.matcher.addRoute(parentOrRoute, route);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'router.addRoutes() is deprecated and has been removed in Vue Router 4. Use router.addRoute() instead.');\n }\n this.matcher.addRoutes(routes);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\n\nvar VueRouter$1 = VueRouter;\n\nfunction registerHook (list, fn) {\n list.push(fn);\n return function () {\n var i = list.indexOf(fn);\n if (i > -1) { list.splice(i, 1); }\n }\n}\n\nfunction createHref (base, fullPath, mode) {\n var path = mode === 'hash' ? '#' + fullPath : fullPath;\n return base ? cleanPath(base + '/' + path) : path\n}\n\n// We cannot remove this as it would be a breaking change\nVueRouter.install = install;\nVueRouter.version = '3.6.5';\nVueRouter.isNavigationFailure = isNavigationFailure;\nVueRouter.NavigationFailureType = NavigationFailureType;\nVueRouter.START_LOCATION = START;\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nvar version = '3.6.5';\n\nexport { NavigationFailureType, Link as RouterLink, View as RouterView, START as START_LOCATION, VueRouter$1 as default, isNavigationFailure, version };\n","import * as Sentry from '~/sentry/sentry_browser_wrapper';\n\nexport const reportToSentry = (component, failureType) => {\n Sentry.captureException(failureType, {\n tags: {\n component,\n },\n });\n};\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n"],"sourceRoot":""}