{"version":3,"file":"js/9371-eeb1530709eee893b296.js","mappings":"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","sources":["webpack://app/./node_modules/@splidejs/splide-extension-grid/dist/js/splide-extension-grid.esm.js","webpack://app/./node_modules/chartjs-plugin-annotation/src/annotation.js","webpack://app/./node_modules/chartjs-plugin-annotation/src/element.js","webpack://app/./node_modules/chartjs-plugin-annotation/src/events.js","webpack://app/./node_modules/chartjs-plugin-annotation/src/helpers.js","webpack://app/./node_modules/chartjs-plugin-annotation/src/types/box.js","webpack://app/./node_modules/chartjs-plugin-annotation/src/types/line.js","webpack://app/./node_modules/jxon/jxon.js","webpack://app/./node_modules/lozad/dist/lozad.min.js"],"sourcesContent":["/*!\n * @splidejs/splide-extension-grid\n * Version : 0.4.1\n * License : MIT\n * Copyright: 2022 Naotoshi Fujita\n */\nfunction empty$1(array) {\n array.length = 0;\n}\n\nfunction slice$1(arrayLike, start, end) {\n return Array.prototype.slice.call(arrayLike, start, end);\n}\n\nfunction apply$1(func) {\n return func.bind.apply(func, [null].concat(slice$1(arguments, 1)));\n}\n\nfunction typeOf$1(type, subject) {\n return typeof subject === type;\n}\n\nvar isArray$1 = Array.isArray;\napply$1(typeOf$1, \"function\");\napply$1(typeOf$1, \"string\");\napply$1(typeOf$1, \"undefined\");\n\nfunction toArray$1(value) {\n return isArray$1(value) ? value : [value];\n}\n\nfunction forEach$1(values, iteratee) {\n toArray$1(values).forEach(iteratee);\n}\n\nvar ownKeys$1 = Object.keys;\n\nfunction forOwn$1(object, iteratee, right) {\n if (object) {\n var keys = ownKeys$1(object);\n keys = right ? keys.reverse() : keys;\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (key !== \"__proto__\") {\n if (iteratee(object[key], key) === false) {\n break;\n }\n }\n }\n }\n\n return object;\n}\n\nfunction assign$1(object) {\n slice$1(arguments, 1).forEach(function (source) {\n forOwn$1(source, function (value, key) {\n object[key] = source[key];\n });\n });\n return object;\n}\n\nvar PROJECT_CODE$1 = \"splide\";\n\nfunction EventBinder() {\n var listeners = [];\n\n function bind(targets, events, callback, options) {\n forEachEvent(targets, events, function (target, event, namespace) {\n var isEventTarget = (\"addEventListener\" in target);\n var remover = isEventTarget ? target.removeEventListener.bind(target, event, callback, options) : target[\"removeListener\"].bind(target, callback);\n isEventTarget ? target.addEventListener(event, callback, options) : target[\"addListener\"](callback);\n listeners.push([target, event, namespace, callback, remover]);\n });\n }\n\n function unbind(targets, events, callback) {\n forEachEvent(targets, events, function (target, event, namespace) {\n listeners = listeners.filter(function (listener) {\n if (listener[0] === target && listener[1] === event && listener[2] === namespace && (!callback || listener[3] === callback)) {\n listener[4]();\n return false;\n }\n\n return true;\n });\n });\n }\n\n function dispatch(target, type, detail) {\n var e;\n var bubbles = true;\n\n if (typeof CustomEvent === \"function\") {\n e = new CustomEvent(type, {\n bubbles: bubbles,\n detail: detail\n });\n } else {\n e = document.createEvent(\"CustomEvent\");\n e.initCustomEvent(type, bubbles, false, detail);\n }\n\n target.dispatchEvent(e);\n return e;\n }\n\n function forEachEvent(targets, events, iteratee) {\n forEach$1(targets, function (target) {\n target && forEach$1(events, function (events2) {\n events2.split(\" \").forEach(function (eventNS) {\n var fragment = eventNS.split(\".\");\n iteratee(target, fragment[0], fragment[1]);\n });\n });\n });\n }\n\n function destroy() {\n listeners.forEach(function (data) {\n data[4]();\n });\n empty$1(listeners);\n }\n\n return {\n bind: bind,\n unbind: unbind,\n dispatch: dispatch,\n destroy: destroy\n };\n}\nvar EVENT_VISIBLE = \"visible\";\nvar EVENT_HIDDEN = \"hidden\";\nvar EVENT_REFRESH = \"refresh\";\nvar EVENT_UPDATED = \"updated\";\nvar EVENT_DESTROY = \"destroy\";\n\nfunction EventInterface(Splide2) {\n var bus = Splide2 ? Splide2.event.bus : document.createDocumentFragment();\n var binder = EventBinder();\n\n function on(events, callback) {\n binder.bind(bus, toArray$1(events).join(\" \"), function (e) {\n callback.apply(callback, isArray$1(e.detail) ? e.detail : []);\n });\n }\n\n function emit(event) {\n binder.dispatch(bus, event, slice$1(arguments, 1));\n }\n\n if (Splide2) {\n Splide2.event.on(EVENT_DESTROY, binder.destroy);\n }\n\n return assign$1(binder, {\n bus: bus,\n on: on,\n off: apply$1(binder.unbind, bus),\n emit: emit\n });\n}\nvar CLASS_ROOT = PROJECT_CODE$1;\nvar CLASS_SLIDE = PROJECT_CODE$1 + \"__slide\";\nvar CLASS_CONTAINER = CLASS_SLIDE + \"__container\";\n\nfunction empty(array) {\n array.length = 0;\n}\n\nfunction slice(arrayLike, start, end) {\n return Array.prototype.slice.call(arrayLike, start, end);\n}\n\nfunction apply(func) {\n return func.bind(null, ...slice(arguments, 1));\n}\n\nfunction typeOf(type, subject) {\n return typeof subject === type;\n}\nfunction isObject(subject) {\n return !isNull(subject) && typeOf(\"object\", subject);\n}\nconst isArray = Array.isArray;\napply(typeOf, \"function\");\nconst isString = apply(typeOf, \"string\");\nconst isUndefined = apply(typeOf, \"undefined\");\nfunction isNull(subject) {\n return subject === null;\n}\nfunction isHTMLElement(subject) {\n return subject instanceof HTMLElement;\n}\n\nfunction toArray(value) {\n return isArray(value) ? value : [value];\n}\n\nfunction forEach(values, iteratee) {\n toArray(values).forEach(iteratee);\n}\n\nfunction push(array, items) {\n array.push(...toArray(items));\n return array;\n}\n\nfunction toggleClass(elm, classes, add) {\n if (elm) {\n forEach(classes, (name) => {\n if (name) {\n elm.classList[add ? \"add\" : \"remove\"](name);\n }\n });\n }\n}\n\nfunction addClass(elm, classes) {\n toggleClass(elm, isString(classes) ? classes.split(\" \") : classes, true);\n}\n\nfunction append(parent, children) {\n forEach(children, parent.appendChild.bind(parent));\n}\n\nfunction matches(elm, selector) {\n return isHTMLElement(elm) && (elm[\"msMatchesSelector\"] || elm.matches).call(elm, selector);\n}\n\nfunction children(parent, selector) {\n const children2 = parent ? slice(parent.children) : [];\n return selector ? children2.filter((child) => matches(child, selector)) : children2;\n}\n\nfunction child(parent, selector) {\n return selector ? children(parent, selector)[0] : parent.firstElementChild;\n}\n\nconst ownKeys = Object.keys;\n\nfunction forOwn(object, iteratee, right) {\n if (object) {\n let keys = ownKeys(object);\n keys = right ? keys.reverse() : keys;\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (key !== \"__proto__\") {\n if (iteratee(object[key], key) === false) {\n break;\n }\n }\n }\n }\n return object;\n}\n\nfunction assign(object) {\n slice(arguments, 1).forEach((source) => {\n forOwn(source, (value, key) => {\n object[key] = source[key];\n });\n });\n return object;\n}\n\nfunction omit(object, keys) {\n toArray(keys || ownKeys(object)).forEach((key) => {\n delete object[key];\n });\n}\n\nfunction removeAttribute(elms, attrs) {\n forEach(elms, (elm) => {\n forEach(attrs, (attr) => {\n elm && elm.removeAttribute(attr);\n });\n });\n}\n\nfunction setAttribute(elms, attrs, value) {\n if (isObject(attrs)) {\n forOwn(attrs, (value2, name) => {\n setAttribute(elms, name, value2);\n });\n } else {\n forEach(elms, (elm) => {\n isNull(value) || value === \"\" ? removeAttribute(elm, attrs) : elm.setAttribute(attrs, String(value));\n });\n }\n}\n\nfunction create(tag, attrs, parent) {\n const elm = document.createElement(tag);\n if (attrs) {\n isString(attrs) ? addClass(elm, attrs) : setAttribute(elm, attrs);\n }\n parent && append(parent, elm);\n return elm;\n}\n\nfunction style(elm, prop, value) {\n if (isUndefined(value)) {\n return getComputedStyle(elm)[prop];\n }\n if (!isNull(value)) {\n elm.style[prop] = `${value}`;\n }\n}\n\nfunction hasClass(elm, className) {\n return elm && elm.classList.contains(className);\n}\n\nfunction remove(nodes) {\n forEach(nodes, (node) => {\n if (node && node.parentNode) {\n node.parentNode.removeChild(node);\n }\n });\n}\n\nfunction queryAll(parent, selector) {\n return selector ? slice(parent.querySelectorAll(selector)) : [];\n}\n\nfunction removeClass(elm, classes) {\n toggleClass(elm, classes, false);\n}\n\nfunction unit(value) {\n return isString(value) ? value : value ? `${value}px` : \"\";\n}\n\nconst PROJECT_CODE = \"splide\";\n\nfunction assert(condition, message) {\n if (!condition) {\n throw new Error(`[${PROJECT_CODE}] ${message || \"\"}`);\n }\n}\n\nconst { min, max, floor, ceil, abs } = Math;\n\nfunction pad(number) {\n return number < 10 ? `0${number}` : `${number}`;\n}\n\nconst CLASS_SLIDE_ROW = `${CLASS_SLIDE}__row`;\nconst CLASS_SLIDE_COL = `${CLASS_SLIDE}--col`;\n\nconst DEFAULTS = {\n rows: 1,\n cols: 1,\n dimensions: [],\n gap: {}\n};\n\nfunction Dimension(options) {\n function normalize() {\n const { rows, cols, dimensions } = options;\n return isArray(dimensions) && dimensions.length ? dimensions : [[rows, cols]];\n }\n function get(index) {\n const dimensions = normalize();\n return dimensions[min(index, dimensions.length - 1)];\n }\n function getAt(index) {\n const dimensions = normalize();\n let rows, cols, aggregator = 0;\n for (let i = 0; i < dimensions.length; i++) {\n const dimension = dimensions[i];\n rows = dimension[0] || 1;\n cols = dimension[1] || 1;\n aggregator += rows * cols;\n if (index < aggregator) {\n break;\n }\n }\n assert(rows && cols, \"Invalid dimension\");\n return [rows, cols];\n }\n return {\n get,\n getAt\n };\n}\n\nfunction Layout(Splide2, gridOptions, Dimension) {\n const { on, destroy: destroyEvent } = EventInterface(Splide2);\n const { Components, options } = Splide2;\n const { resolve } = Components.Direction;\n const { forEach } = Components.Slides;\n function mount() {\n layout();\n if (options.slideFocus) {\n on(EVENT_VISIBLE, onVisible);\n on(EVENT_HIDDEN, onHidden);\n }\n }\n function destroy() {\n forEach((Slide) => {\n const { slide } = Slide;\n toggleTabIndex(slide, false);\n getRowsIn(slide).forEach((cell) => {\n removeAttribute(cell, \"style\");\n });\n getColsIn(slide).forEach((colSlide) => {\n cover(colSlide, true);\n removeAttribute(colSlide, \"style\");\n });\n });\n destroyEvent();\n }\n function layout() {\n forEach((Slide) => {\n const { slide } = Slide;\n const [rows, cols] = Dimension.get(Slide.isClone ? Slide.slideIndex : Slide.index);\n layoutRow(rows, slide);\n layoutCol(cols, slide);\n getColsIn(Slide.slide).forEach((colSlide, index) => {\n colSlide.id = `${Slide.slide.id}-col${pad(index + 1)}`;\n if (Splide2.options.cover) {\n cover(colSlide);\n }\n });\n });\n }\n function layoutRow(rows, slide) {\n const { row: rowGap } = gridOptions.gap;\n const height = `calc(${100 / rows}%${rowGap ? ` - ${unit(rowGap)} * ${(rows - 1) / rows}` : \"\"})`;\n getRowsIn(slide).forEach((rowElm, index, rowElms) => {\n style(rowElm, \"height\", height);\n style(rowElm, \"display\", \"flex\");\n style(rowElm, \"margin\", `0 0 ${unit(rowGap)} 0`);\n style(rowElm, \"padding\", 0);\n if (index === rowElms.length - 1) {\n style(rowElm, \"marginBottom\", 0);\n }\n });\n }\n function layoutCol(cols, slide) {\n const { col: colGap } = gridOptions.gap;\n const width = `calc(${100 / cols}%${colGap ? ` - ${unit(colGap)} * ${(cols - 1) / cols}` : \"\"})`;\n getColsIn(slide).forEach((colElm, index, colElms) => {\n style(colElm, \"width\", width);\n if (index !== colElms.length - 1) {\n style(colElm, resolve(\"marginRight\"), unit(colGap));\n }\n });\n }\n function cover(colSlide, uncover) {\n const container = child(colSlide, `.${CLASS_CONTAINER}`);\n const img = child(container || colSlide, \"img\");\n if (img && img.src) {\n style(container || colSlide, \"background\", uncover ? \"\" : `center/cover no-repeat url(\"${img.src}\")`);\n style(img, \"display\", uncover ? \"\" : \"none\");\n }\n }\n function getRowsIn(slide) {\n return queryAll(slide, `.${CLASS_SLIDE_ROW}`);\n }\n function getColsIn(slide) {\n return queryAll(slide, `.${CLASS_SLIDE_COL}`);\n }\n function toggleTabIndex(slide, add) {\n getColsIn(slide).forEach((colSlide) => {\n setAttribute(colSlide, \"tabindex\", add ? 0 : null);\n });\n }\n function onVisible(Slide) {\n toggleTabIndex(Slide.slide, true);\n }\n function onHidden(Slide) {\n toggleTabIndex(Slide.slide, false);\n }\n return {\n mount,\n destroy\n };\n}\n\nfunction Grid(Splide2, Components2, options) {\n const { on, off } = EventInterface(Splide2);\n const { Elements } = Components2;\n const gridOptions = {};\n const Dimension$1 = Dimension(gridOptions);\n const Layout$1 = Layout(Splide2, gridOptions, Dimension$1);\n const modifier = `${CLASS_ROOT}--grid`;\n const originalSlides = [];\n function mount() {\n init();\n on(EVENT_UPDATED, init);\n }\n function init() {\n omit(gridOptions);\n assign(gridOptions, DEFAULTS, options.grid || {});\n if (shouldBuild()) {\n destroy();\n push(originalSlides, Elements.slides);\n addClass(Splide2.root, modifier);\n append(Elements.list, build());\n off(EVENT_REFRESH);\n on(EVENT_REFRESH, layout);\n refresh();\n } else if (isActive()) {\n destroy();\n refresh();\n }\n }\n function destroy() {\n if (isActive()) {\n const { slides } = Elements;\n Layout$1.destroy();\n originalSlides.forEach((slide) => {\n removeClass(slide, CLASS_SLIDE_COL);\n append(Elements.list, slide);\n });\n remove(slides);\n removeClass(Splide2.root, modifier);\n empty(slides);\n push(slides, originalSlides);\n empty(originalSlides);\n off(EVENT_REFRESH);\n }\n }\n function refresh() {\n Splide2.refresh();\n }\n function layout() {\n if (isActive()) {\n Layout$1.mount();\n }\n }\n function build() {\n const outerSlides = [];\n let row = 0, col = 0;\n let outerSlide, rowSlide;\n originalSlides.forEach((slide, index) => {\n const [rows, cols] = Dimension$1.getAt(index);\n if (!col) {\n if (!row) {\n outerSlide = create(slide.tagName, CLASS_SLIDE);\n outerSlides.push(outerSlide);\n }\n rowSlide = buildRow(rows, slide, outerSlide);\n }\n buildCol(cols, slide, rowSlide);\n if (++col >= cols) {\n col = 0;\n row = ++row >= rows ? 0 : row;\n }\n });\n return outerSlides;\n }\n function buildRow(rows, slide, outerSlide) {\n const tag = slide.tagName.toLowerCase() === \"li\" ? \"ul\" : \"div\";\n return create(tag, CLASS_SLIDE_ROW, outerSlide);\n }\n function buildCol(cols, slide, rowSlide) {\n addClass(slide, CLASS_SLIDE_COL);\n append(rowSlide, slide);\n return slide;\n }\n function shouldBuild() {\n if (options.grid) {\n const { rows, cols, dimensions } = gridOptions;\n return rows > 1 || cols > 1 || isArray(dimensions) && dimensions.length > 0;\n }\n return false;\n }\n function isActive() {\n return hasClass(Splide2.root, modifier);\n }\n return {\n mount,\n destroy\n };\n}\n\nexport { Grid };\n","module.exports = function(Chart) {\n\tvar chartHelpers = Chart.helpers;\n\n\tvar helpers = require('./helpers.js')(Chart);\n\tvar events = require('./events.js')(Chart);\n\n\tvar annotationTypes = Chart.Annotation.types;\n\n\tfunction setAfterDataLimitsHook(axisOptions) {\n\t\thelpers.decorate(axisOptions, 'afterDataLimits', function(previous, scale) {\n\t\t\tif (previous) previous(scale);\n\t\t\thelpers.adjustScaleRange(scale);\n\t\t});\n\t}\n\n\tfunction draw(drawTime) {\n\t\treturn function(chartInstance, easingDecimal) {\n\t\t\tvar defaultDrawTime = chartInstance.annotation.options.drawTime;\n\n\t\t\thelpers.elements(chartInstance)\n\t\t\t\t.filter(function(element) {\n\t\t\t\t\treturn drawTime === (element.options.drawTime || defaultDrawTime);\n\t\t\t\t})\n\t\t\t\t.forEach(function(element) {\n\t\t\t\t\telement.transition(easingDecimal).draw();\n\t\t\t\t});\n\t\t};\n\t}\n\n\treturn {\n\t\tbeforeInit: function(chartInstance) {\n\t\t\tvar chartOptions = chartInstance.options;\n\n\t\t\t// Initialize chart instance plugin namespace\n\t\t\tvar ns = chartInstance.annotation = {\n\t\t\t\telements: {},\n\t\t\t\toptions: helpers.initConfig(chartOptions.annotation || {}),\n\t\t\t\tonDestroy: [],\n\t\t\t\tfirstRun: true,\n\t\t\t\tsupported: false\n\t\t\t};\n\n\t\t\t// Add the annotation scale adjuster to each scale's afterDataLimits hook\n\t\t\tchartInstance.ensureScalesHaveIDs();\n\t\t\tif (chartOptions.scales) {\n\t\t\t\tns.supported = true;\n\t\t\t\tchartHelpers.each(chartOptions.scales.xAxes, setAfterDataLimitsHook);\n\t\t\t\tchartHelpers.each(chartOptions.scales.yAxes, setAfterDataLimitsHook);\n\t\t\t}\n\t\t},\n\t\tbeforeUpdate: function(chartInstance) {\n\t\t\tvar ns = chartInstance.annotation;\n\n\t\t\tif (!ns.supported) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!ns.firstRun) {\n\t\t\t\tns.options = helpers.initConfig(chartInstance.options.annotation || {});\n\t\t\t} else {\n\t\t\t\tns.firstRun = false;\n\t\t\t}\n\n\t\t\tvar elementIds = [];\n\n\t\t\t// Add new elements, or update existing ones\n\t\t\tns.options.annotations.forEach(function(annotation) {\n\t\t\t\tvar id = annotation.id || helpers.objectId();\n\t\t\t\t\n\t\t\t\t// No element with that ID exists, and it's a valid annotation type\n\t\t\t\tif (!ns.elements[id] && annotationTypes[annotation.type]) {\n\t\t\t\t\tvar cls = annotationTypes[annotation.type];\n\t\t\t\t\tvar element = new cls({\n\t\t\t\t\t\tid: id,\n\t\t\t\t\t\toptions: annotation,\n\t\t\t\t\t\tchartInstance: chartInstance,\n\t\t\t\t\t});\n\t\t\t\t\telement.initialize();\n\t\t\t\t\tns.elements[id] = element;\n\t\t\t\t\tannotation.id = id;\n\t\t\t\t\telementIds.push(id);\n\t\t\t\t} else if (ns.elements[id]) {\n\t\t\t\t\t// Nothing to do for update, since the element config references\n\t\t\t\t\t// the same object that exists in the chart annotation config\n\t\t\t\t\telementIds.push(id);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Delete removed elements\n\t\t\tObject.keys(ns.elements).forEach(function(id) {\n\t\t\t\tif (elementIds.indexOf(id) === -1) {\n\t\t\t\t\tns.elements[id].destroy();\n\t\t\t\t\tdelete ns.elements[id];\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tafterScaleUpdate: function(chartInstance) {\n\t\t\thelpers.elements(chartInstance).forEach(function(element) {\n\t\t\t\telement.configure();\n\t\t\t});\n\t\t},\n\t\tbeforeDatasetsDraw: draw('beforeDatasetsDraw'),\n\t\tafterDatasetsDraw: draw('afterDatasetsDraw'),\n\t\tafterDraw: draw('afterDraw'),\n\t\tafterInit: function(chartInstance) {\n\t\t\t// Detect and intercept events that happen on an annotation element\n\t\t\tvar watchFor = chartInstance.annotation.options.events;\n\t\t\tif (chartHelpers.isArray(watchFor) && watchFor.length > 0) {\n\t\t\t\tvar canvas = chartInstance.chart.canvas;\n\t\t\t\tvar eventHandler = events.dispatcher.bind(chartInstance);\n\t\t\t\tevents.collapseHoverEvents(watchFor).forEach(function(eventName) {\n\t\t\t\t\tchartHelpers.addEvent(canvas, eventName, eventHandler);\n\t\t\t\t\tchartInstance.annotation.onDestroy.push(function() {\n\t\t\t\t\t\tchartHelpers.removeEvent(canvas, eventName, eventHandler);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tdestroy: function(chartInstance) {\n\t\t\tvar deregisterers = chartInstance.annotation.onDestroy;\n\t\t\twhile (deregisterers.length > 0) {\n\t\t\t\tderegisterers.pop()();\n\t\t\t}\n\t\t}\n\t};\n};\n","module.exports = function(Chart) {\n\tvar chartHelpers = Chart.helpers;\n\t\n\tvar AnnotationElement = Chart.Element.extend({\n\t\tinitialize: function() {\n\t\t\tthis.hidden = false;\n\t\t\tthis.hovering = false;\n\t\t\tthis._model = chartHelpers.clone(this._model) || {};\n\t\t\tthis.setDataLimits();\n\t\t},\n\t\tdestroy: function() {},\n\t\tsetDataLimits: function() {},\n\t\tconfigure: function() {},\n\t\tinRange: function() {},\n\t\tgetCenterPoint: function() {},\n\t\tgetWidth: function() {},\n\t\tgetHeight: function() {},\n\t\tgetArea: function() {},\n\t\tdraw: function() {}\n\t});\n\n\treturn AnnotationElement;\n};\n","module.exports = function(Chart) {\n\tvar chartHelpers = Chart.helpers;\n\tvar helpers = require('./helpers.js')(Chart);\n\n\tfunction collapseHoverEvents(events) {\n\t\tvar hover = false;\n\t\tvar filteredEvents = events.filter(function(eventName) {\n\t\t\tswitch (eventName) {\n\t\t\t\tcase 'mouseenter':\n\t\t\t\tcase 'mouseover':\n\t\t\t\tcase 'mouseout':\n\t\t\t\tcase 'mouseleave':\n\t\t\t\t\thover = true;\n\t\t\t\t\treturn false;\n\n\t\t\t\tdefault:\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t});\n\t\tif (hover && filteredEvents.indexOf('mousemove') === -1) {\n\t\t\tfilteredEvents.push('mousemove');\n\t\t}\n\t\treturn filteredEvents;\n\t}\n\n\tfunction dispatcher(e) {\n\t\tvar ns = this.annotation;\n\t\tvar elements = helpers.elements(this);\n\t\tvar position = chartHelpers.getRelativePosition(e, this.chart);\n\t\tvar element = helpers.getNearestItems(elements, position);\n\t\tvar events = collapseHoverEvents(ns.options.events);\n\t\tvar dblClickSpeed = ns.options.dblClickSpeed;\n\t\tvar eventHandlers = [];\n\t\tvar eventHandlerName = helpers.getEventHandlerName(e.type);\n\t\tvar options = (element || {}).options;\n\n\t\t// Detect hover events\n\t\tif (e.type === 'mousemove') {\n\t\t\tif (element && !element.hovering) {\n\t\t\t\t// hover started\n\t\t\t\t['mouseenter', 'mouseover'].forEach(function(eventName) {\n\t\t\t\t\tvar eventHandlerName = helpers.getEventHandlerName(eventName);\n\t\t\t\t\tvar hoverEvent = helpers.createMouseEvent(eventName, e); // recreate the event to match the handler\n\t\t\t\t\telement.hovering = true;\n\t\t\t\t\tif (typeof options[eventHandlerName] === 'function') {\n\t\t\t\t\t\teventHandlers.push([ options[eventHandlerName], hoverEvent, element ]);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else if (!element) {\n\t\t\t\t// hover ended\n\t\t\t\telements.forEach(function(element) {\n\t\t\t\t\tif (element.hovering) {\n\t\t\t\t\t\telement.hovering = false;\n\t\t\t\t\t\tvar options = element.options;\n\t\t\t\t\t\t['mouseout', 'mouseleave'].forEach(function(eventName) {\n\t\t\t\t\t\t\tvar eventHandlerName = helpers.getEventHandlerName(eventName);\n\t\t\t\t\t\t\tvar hoverEvent = helpers.createMouseEvent(eventName, e); // recreate the event to match the handler\n\t\t\t\t\t\t\tif (typeof options[eventHandlerName] === 'function') {\n\t\t\t\t\t\t\t\teventHandlers.push([ options[eventHandlerName], hoverEvent, element ]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// Suppress duplicate click events during a double click\n\t\t// 1. click -> 2. click -> 3. dblclick\n\t\t//\n\t\t// 1: wait dblClickSpeed ms, then fire click\n\t\t// 2: cancel (1) if it is waiting then wait dblClickSpeed ms then fire click, else fire click immediately\n\t\t// 3: cancel (1) or (2) if waiting, then fire dblclick \n\t\tif (element && events.indexOf('dblclick') > -1 && typeof options.onDblclick === 'function') {\n\t\t\tif (e.type === 'click' && typeof options.onClick === 'function') {\n\t\t\t\tclearTimeout(element.clickTimeout);\n\t\t\t\telement.clickTimeout = setTimeout(function() {\n\t\t\t\t\tdelete element.clickTimeout;\n\t\t\t\t\toptions.onClick.call(element, e);\n\t\t\t\t}, dblClickSpeed);\n\t\t\t\te.stopImmediatePropagation();\n\t\t\t\te.preventDefault();\n\t\t\t\treturn;\n\t\t\t} else if (e.type === 'dblclick' && element.clickTimeout) {\n\t\t\t\tclearTimeout(element.clickTimeout);\n\t\t\t\tdelete element.clickTimeout;\n\t\t\t}\n\t\t}\n\n\t\t// Dispatch the event to the usual handler, but only if we haven't substituted it\n\t\tif (element && typeof options[eventHandlerName] === 'function' && eventHandlers.length === 0) {\n\t\t\teventHandlers.push([ options[eventHandlerName], e, element ]);\n\t\t}\n\n\t\tif (eventHandlers.length > 0) {\n\t\t\te.stopImmediatePropagation();\n\t\t\te.preventDefault();\n\t\t\teventHandlers.forEach(function(eventHandler) {\n\t\t\t\t// [handler, event, element]\n\t\t\t\teventHandler[0].call(eventHandler[2], eventHandler[1]);\n\t\t\t});\n\t\t}\n\t}\n\n\treturn {\n\t\tdispatcher: dispatcher,\n\t\tcollapseHoverEvents: collapseHoverEvents\n\t};\n};\n","function noop() {}\n\nfunction elements(chartInstance) {\n\t// Turn the elements object into an array of elements\n\tvar elements = chartInstance.annotation.elements;\n\treturn Object.keys(elements).map(function(id) {\n\t\treturn elements[id];\n\t});\n}\n\nfunction objectId() {\n\treturn Math.random().toString(36).substr(2, 6);\n}\n\nfunction isValid(rawValue) {\n\tif (rawValue === null || typeof rawValue === 'undefined') {\n\t\treturn false;\n\t} else if (typeof rawValue === 'number') {\n\t\treturn isFinite(rawValue);\n\t} else {\n\t\treturn !!rawValue;\n\t}\n}\n\nfunction decorate(obj, prop, func) {\n\tvar prefix = '$';\n\tif (!obj[prefix + prop]) {\n\t\tif (obj[prop]) {\n\t\t\tobj[prefix + prop] = obj[prop].bind(obj);\n\t\t\tobj[prop] = function() {\n\t\t\t\tvar args = [ obj[prefix + prop] ].concat(Array.prototype.slice.call(arguments));\n\t\t\t\treturn func.apply(obj, args);\n\t\t\t};\n\t\t} else {\n\t\t\tobj[prop] = function() {\n\t\t\t\tvar args = [ undefined ].concat(Array.prototype.slice.call(arguments));\n\t\t\t\treturn func.apply(obj, args);\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction callEach(fns, method) {\n\tfns.forEach(function(fn) {\n\t\t(method ? fn[method] : fn)();\n\t});\n}\n\nfunction getEventHandlerName(eventName) {\n\treturn 'on' + eventName[0].toUpperCase() + eventName.substring(1);\n}\n\nfunction createMouseEvent(type, previousEvent) {\n\ttry {\n\t\treturn new MouseEvent(type, previousEvent);\n\t} catch (exception) {\n\t\ttry {\n\t\t\tvar m = document.createEvent('MouseEvent');\n\t\t\tm.initMouseEvent(\n\t\t\t\ttype,\n\t\t\t\tpreviousEvent.canBubble,\n\t\t\t\tpreviousEvent.cancelable,\n\t\t\t\tpreviousEvent.view,\n\t\t\t\tpreviousEvent.detail,\n\t\t\t\tpreviousEvent.screenX,\n\t\t\t\tpreviousEvent.screenY,\n\t\t\t\tpreviousEvent.clientX,\n\t\t\t\tpreviousEvent.clientY,\n\t\t\t\tpreviousEvent.ctrlKey,\n\t\t\t\tpreviousEvent.altKey,\n\t\t\t\tpreviousEvent.shiftKey,\n\t\t\t\tpreviousEvent.metaKey,\n\t\t\t\tpreviousEvent.button,\n\t\t\t\tpreviousEvent.relatedTarget\n\t\t\t);\n\t\t\treturn m;\n\t\t} catch (exception2) {\n\t\t\tvar e = document.createEvent('Event');\n\t\t\te.initEvent(\n\t\t\t\ttype,\n\t\t\t\tpreviousEvent.canBubble,\n\t\t\t\tpreviousEvent.cancelable\n\t\t\t);\n\t\t\treturn e;\n\t\t}\n\t}\n}\n\nmodule.exports = function(Chart) {\n\tvar chartHelpers = Chart.helpers;\n\n\tfunction initConfig(config) {\n\t\tconfig = chartHelpers.configMerge(Chart.Annotation.defaults, config);\n\t\tif (chartHelpers.isArray(config.annotations)) {\n\t\t\tconfig.annotations.forEach(function(annotation) {\n\t\t\t\tannotation.label = chartHelpers.configMerge(Chart.Annotation.labelDefaults, annotation.label);\n\t\t\t});\n\t\t}\n\t\treturn config;\n\t}\n\n\tfunction getScaleLimits(scaleId, annotations, scaleMin, scaleMax) {\n\t\tvar ranges = annotations.filter(function(annotation) {\n\t\t\treturn !!annotation._model.ranges[scaleId];\n\t\t}).map(function(annotation) {\n\t\t\treturn annotation._model.ranges[scaleId];\n\t\t});\n\n\t\tvar min = ranges.map(function(range) {\n\t\t\treturn Number(range.min);\n\t\t}).reduce(function(a, b) {\n\t\t\treturn isFinite(b) && !isNaN(b) && b < a ? b : a;\n\t\t}, scaleMin);\n\n\t\tvar max = ranges.map(function(range) {\n\t\t\treturn Number(range.max);\n\t\t}).reduce(function(a, b) {\n\t\t\treturn isFinite(b) && !isNaN(b) && b > a ? b : a;\n\t\t}, scaleMax);\n\n\t\treturn {\n\t\t\tmin: min,\n\t\t\tmax: max\n\t\t};\n\t}\n\n\tfunction adjustScaleRange(scale) {\n\t\t// Adjust the scale range to include annotation values\n\t\tvar range = getScaleLimits(scale.id, elements(scale.chart), scale.min, scale.max);\n\t\tif (typeof scale.options.ticks.min === 'undefined' && typeof scale.options.ticks.suggestedMin === 'undefined') {\n\t\t\tscale.min = range.min;\n\t\t}\n\t\tif (typeof scale.options.ticks.max === 'undefined' && typeof scale.options.ticks.suggestedMax === 'undefined') {\n\t\t\tscale.max = range.max;\n\t\t}\n\t\tif (scale.handleTickRangeOptions) {\n\t\t\tscale.handleTickRangeOptions();\n\t\t}\n\t}\n\n\tfunction getNearestItems(annotations, position) {\n\t\tvar minDistance = Number.POSITIVE_INFINITY;\n\n\t\treturn annotations\n\t\t\t.filter(function(element) {\n\t\t\t\treturn element.inRange(position.x, position.y);\n\t\t\t})\n\t\t\t.reduce(function(nearestItems, element) {\n\t\t\t\tvar center = element.getCenterPoint();\n\t\t\t\tvar distance = chartHelpers.distanceBetweenPoints(position, center);\n\n\t\t\t\tif (distance < minDistance) {\n\t\t\t\t\tnearestItems = [element];\n\t\t\t\t\tminDistance = distance;\n\t\t\t\t} else if (distance === minDistance) {\n\t\t\t\t\t// Can have multiple items at the same distance in which case we sort by size\n\t\t\t\t\tnearestItems.push(element);\n\t\t\t\t}\n\n\t\t\t\treturn nearestItems;\n\t\t\t}, [])\n\t\t\t.sort(function(a, b) {\n\t\t\t\t// If there are multiple elements equally close,\n\t\t\t\t// sort them by size, then by index\n\t\t\t\tvar sizeA = a.getArea(), sizeB = b.getArea();\n\t\t\t\treturn (sizeA > sizeB || sizeA < sizeB) ? sizeA - sizeB : a._index - b._index;\n\t\t\t})\n\t\t\t.slice(0, 1)[0]; // return only the top item\n\t}\n\n\treturn {\n\t\tinitConfig: initConfig,\n\t\telements: elements,\n\t\tcallEach: callEach,\n\t\tnoop: noop,\n\t\tobjectId: objectId,\n\t\tisValid: isValid,\n\t\tdecorate: decorate,\n\t\tadjustScaleRange: adjustScaleRange,\n\t\tgetNearestItems: getNearestItems,\n\t\tgetEventHandlerName: getEventHandlerName,\n\t\tcreateMouseEvent: createMouseEvent\n\t};\n};\n\n","// Box Annotation implementation\nmodule.exports = function(Chart) {\n\tvar helpers = require('../helpers.js')(Chart);\n\t\n\tvar BoxAnnotation = Chart.Annotation.Element.extend({\n\t\tsetDataLimits: function() {\n\t\t\tvar model = this._model;\n\t\t\tvar options = this.options;\n\t\t\tvar chartInstance = this.chartInstance;\n\n\t\t\tvar xScale = chartInstance.scales[options.xScaleID];\n\t\t\tvar yScale = chartInstance.scales[options.yScaleID];\n\t\t\tvar chartArea = chartInstance.chartArea;\n\n\t\t\t// Set the data range for this annotation\n\t\t\tmodel.ranges = {};\n\t\t\t\n\t\t\tif (!chartArea) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tvar min = 0;\n\t\t\tvar max = 0;\n\t\t\t\n\t\t\tif (xScale) {\n\t\t\t\tmin = helpers.isValid(options.xMin) ? options.xMin : xScale.getPixelForValue(chartArea.left);\n\t\t\t\tmax = helpers.isValid(options.xMax) ? options.xMax : xScale.getPixelForValue(chartArea.right);\n\n\t\t\t\tmodel.ranges[options.xScaleID] = {\n\t\t\t\t\tmin: Math.min(min, max),\n\t\t\t\t\tmax: Math.max(min, max)\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (yScale) {\n\t\t\t\tmin = helpers.isValid(options.yMin) ? options.yMin : yScale.getPixelForValue(chartArea.bottom);\n\t\t\t\tmax = helpers.isValid(options.yMax) ? options.yMax : yScale.getPixelForValue(chartArea.top);\n\n\t\t\t\tmodel.ranges[options.yScaleID] = {\n\t\t\t\t\tmin: Math.min(min, max),\n\t\t\t\t\tmax: Math.max(min, max)\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\tconfigure: function() {\n\t\t\tvar model = this._model;\n\t\t\tvar options = this.options;\n\t\t\tvar chartInstance = this.chartInstance;\n\n\t\t\tvar xScale = chartInstance.scales[options.xScaleID];\n\t\t\tvar yScale = chartInstance.scales[options.yScaleID];\n\t\t\tvar chartArea = chartInstance.chartArea;\n\n\t\t\t// clip annotations to the chart area\n\t\t\tmodel.clip = {\n\t\t\t\tx1: chartArea.left,\n\t\t\t\tx2: chartArea.right,\n\t\t\t\ty1: chartArea.top,\n\t\t\t\ty2: chartArea.bottom\n\t\t\t};\n\n\t\t\tvar left = chartArea.left, \n\t\t\t\ttop = chartArea.top, \n\t\t\t\tright = chartArea.right, \n\t\t\t\tbottom = chartArea.bottom;\n\n\t\t\tvar min, max;\n\n\t\t\tif (xScale) {\n\t\t\t\tmin = helpers.isValid(options.xMin) ? xScale.getPixelForValue(options.xMin) : chartArea.left;\n\t\t\t\tmax = helpers.isValid(options.xMax) ? xScale.getPixelForValue(options.xMax) : chartArea.right;\n\t\t\t\tleft = Math.min(min, max);\n\t\t\t\tright = Math.max(min, max);\n\t\t\t}\n\n\t\t\tif (yScale) {\n\t\t\t\tmin = helpers.isValid(options.yMin) ? yScale.getPixelForValue(options.yMin) : chartArea.bottom;\n\t\t\t\tmax = helpers.isValid(options.yMax) ? yScale.getPixelForValue(options.yMax) : chartArea.top;\n\t\t\t\ttop = Math.min(min, max);\n\t\t\t\tbottom = Math.max(min, max);\n\t\t\t}\n\n\t\t\t// Ensure model has rect coordinates\n\t\t\tmodel.left = left;\n\t\t\tmodel.top = top;\n\t\t\tmodel.right = right;\n\t\t\tmodel.bottom = bottom;\n\n\t\t\t// Stylistic options\n\t\t\tmodel.borderColor = options.borderColor;\n\t\t\tmodel.borderWidth = options.borderWidth;\n\t\t\tmodel.backgroundColor = options.backgroundColor;\n\t\t},\n\t\tinRange: function(mouseX, mouseY) {\n\t\t\tvar model = this._model;\n\t\t\treturn model &&\n\t\t\t\tmouseX >= model.left && \n\t\t\t\tmouseX <= model.right && \n\t\t\t\tmouseY >= model.top && \n\t\t\t\tmouseY <= model.bottom;\n\t\t},\n\t\tgetCenterPoint: function() {\n\t\t\tvar model = this._model;\n\t\t\treturn {\n\t\t\t\tx: (model.right + model.left) / 2,\n\t\t\t\ty: (model.bottom + model.top) / 2\n\t\t\t};\n\t\t},\n\t\tgetWidth: function() {\n\t\t\tvar model = this._model;\n\t\t\treturn Math.abs(model.right - model.left);\n\t\t},\n\t\tgetHeight: function() {\n\t\t\tvar model = this._model;\n\t\t\treturn Math.abs(model.bottom - model.top);\n\t\t},\n\t\tgetArea: function() {\n\t\t\treturn this.getWidth() * this.getHeight();\n\t\t},\n\t\tdraw: function() {\n\t\t\tvar view = this._view;\n\t\t\tvar ctx = this.chartInstance.chart.ctx;\n\n\t\t\tctx.save();\n\n\t\t\t// Canvas setup\n\t\t\tctx.beginPath();\n\t\t\tctx.rect(view.clip.x1, view.clip.y1, view.clip.x2 - view.clip.x1, view.clip.y2 - view.clip.y1);\n\t\t\tctx.clip();\n\n\t\t\tctx.lineWidth = view.borderWidth;\n\t\t\tctx.strokeStyle = view.borderColor;\n\t\t\tctx.fillStyle = view.backgroundColor;\n\n\t\t\t// Draw\n\t\t\tvar width = view.right - view.left,\n\t\t\t\theight = view.bottom - view.top;\n\t\t\tctx.fillRect(view.left, view.top, width, height);\n\t\t\tctx.strokeRect(view.left, view.top, width, height);\n\n\t\t\tctx.restore();\n\t\t}\n\t});\n\n\treturn BoxAnnotation;\n};\n","// Line Annotation implementation\nmodule.exports = function(Chart) {\n\tvar chartHelpers = Chart.helpers;\n\tvar helpers = require('../helpers.js')(Chart);\n\n\tvar horizontalKeyword = 'horizontal';\n\tvar verticalKeyword = 'vertical';\n\n\tvar LineAnnotation = Chart.Annotation.Element.extend({\n\t\tsetDataLimits: function() {\n\t\t\tvar model = this._model;\n\t\t\tvar options = this.options;\n\n\t\t\t// Set the data range for this annotation\n\t\t\tmodel.ranges = {};\n\t\t\tmodel.ranges[options.scaleID] = {\n\t\t\t\tmin: options.value,\n\t\t\t\tmax: options.endValue || options.value\n\t\t\t};\n\t\t},\n\t\tconfigure: function() {\n\t\t\tvar model = this._model;\n\t\t\tvar options = this.options;\n\t\t\tvar chartInstance = this.chartInstance;\n\t\t\tvar ctx = chartInstance.chart.ctx;\n\n\t\t\tvar scale = chartInstance.scales[options.scaleID];\n\t\t\tvar pixel, endPixel;\n\t\t\tif (scale) {\n\t\t\t\tpixel = helpers.isValid(options.value) ? scale.getPixelForValue(options.value) : NaN;\n\t\t\t\tendPixel = helpers.isValid(options.endValue) ? scale.getPixelForValue(options.endValue) : pixel;\n\t\t\t}\n\n\t\t\tif (isNaN(pixel)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar chartArea = chartInstance.chartArea;\n\n\t\t\t// clip annotations to the chart area\n\t\t\tmodel.clip = {\n\t\t\t\tx1: chartArea.left,\n\t\t\t\tx2: chartArea.right,\n\t\t\t\ty1: chartArea.top,\n\t\t\t\ty2: chartArea.bottom\n\t\t\t};\n\n\t\t\tif (this.options.mode == horizontalKeyword) {\n\t\t\t\tmodel.x1 = chartArea.left;\n\t\t\t\tmodel.x2 = chartArea.right;\n\t\t\t\tmodel.y1 = pixel;\n\t\t\t\tmodel.y2 = endPixel;\n\t\t\t} else {\n\t\t\t\tmodel.y1 = chartArea.top;\n\t\t\t\tmodel.y2 = chartArea.bottom;\n\t\t\t\tmodel.x1 = pixel;\n\t\t\t\tmodel.x2 = endPixel;\n\t\t\t}\n\n\t\t\tmodel.line = new LineFunction(model);\n\t\t\tmodel.mode = options.mode;\n\n\t\t\t// Figure out the label:\n\t\t\tmodel.labelBackgroundColor = options.label.backgroundColor;\n\t\t\tmodel.labelFontFamily = options.label.fontFamily;\n\t\t\tmodel.labelFontSize = options.label.fontSize;\n\t\t\tmodel.labelFontStyle = options.label.fontStyle;\n\t\t\tmodel.labelFontColor = options.label.fontColor;\n\t\t\tmodel.labelXPadding = options.label.xPadding;\n\t\t\tmodel.labelYPadding = options.label.yPadding;\n\t\t\tmodel.labelCornerRadius = options.label.cornerRadius;\n\t\t\tmodel.labelPosition = options.label.position;\n\t\t\tmodel.labelXAdjust = options.label.xAdjust;\n\t\t\tmodel.labelYAdjust = options.label.yAdjust;\n\t\t\tmodel.labelEnabled = options.label.enabled;\n\t\t\tmodel.labelContent = options.label.content;\n\n\t\t\tctx.font = chartHelpers.fontString(model.labelFontSize, model.labelFontStyle, model.labelFontFamily);\n\t\t\tvar textWidth = ctx.measureText(model.labelContent).width;\n\t\t\tvar textHeight = ctx.measureText('M').width;\n\t\t\tvar labelPosition = calculateLabelPosition(model, textWidth, textHeight, model.labelXPadding, model.labelYPadding);\n\t\t\tmodel.labelX = labelPosition.x - model.labelXPadding;\n\t\t\tmodel.labelY = labelPosition.y - model.labelYPadding;\n\t\t\tmodel.labelWidth = textWidth + (2 * model.labelXPadding);\n\t\t\tmodel.labelHeight = textHeight + (2 * model.labelYPadding);\n\n\t\t\tmodel.borderColor = options.borderColor;\n\t\t\tmodel.borderWidth = options.borderWidth;\n\t\t\tmodel.borderDash = options.borderDash || [];\n\t\t\tmodel.borderDashOffset = options.borderDashOffset || 0;\n\t\t},\n\t\tinRange: function(mouseX, mouseY) {\n\t\t\tvar model = this._model;\n\t\t\t\n\t\t\treturn (\n\t\t\t\t// On the line\n\t\t\t\tmodel.line &&\n\t\t\t\tmodel.line.intersects(mouseX, mouseY, this.getHeight())\n\t\t\t) || (\n\t\t\t\t// On the label\n\t\t\t\tmodel.labelEnabled &&\n\t\t\t\tmodel.labelContent &&\n\t\t\t\tmouseX >= model.labelX && \n\t\t\t\tmouseX <= model.labelX + model.labelWidth && \n\t\t\t\tmouseY >= model.labelY && \n\t\t\t\tmouseY <= model.labelY + model.labelHeight\n\t\t\t);\n\t\t},\n\t\tgetCenterPoint: function() {\n\t\t\treturn {\n\t\t\t\tx: (this._model.x2 + this._model.x1) / 2,\n\t\t\t\ty: (this._model.y2 + this._model.y1) / 2\n\t\t\t};\n\t\t},\n\t\tgetWidth: function() {\n\t\t\treturn Math.abs(this._model.right - this._model.left);\n\t\t},\n\t\tgetHeight: function() {\n\t\t\treturn this._model.borderWidth || 1;\n\t\t},\n\t\tgetArea: function() {\n\t\t\treturn Math.sqrt(Math.pow(this.getWidth(), 2) + Math.pow(this.getHeight(), 2));\n\t\t},\n\t\tdraw: function() {\n\t\t\tvar view = this._view;\n\t\t\tvar ctx = this.chartInstance.chart.ctx;\n\n\t\t\tif (!view.clip) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tctx.save();\n\n\t\t\t// Canvas setup\n\t\t\tctx.beginPath();\n\t\t\tctx.rect(view.clip.x1, view.clip.y1, view.clip.x2 - view.clip.x1, view.clip.y2 - view.clip.y1);\n\t\t\tctx.clip();\n\n\t\t\tctx.lineWidth = view.borderWidth;\n\t\t\tctx.strokeStyle = view.borderColor;\n\n\t\t\tif (ctx.setLineDash) {\n\t\t\t\tctx.setLineDash(view.borderDash);\n\t\t\t}\n\t\t\tctx.lineDashOffset = view.borderDashOffset;\n\n\t\t\t// Draw\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(view.x1, view.y1);\n\t\t\tctx.lineTo(view.x2, view.y2);\n\t\t\tctx.stroke();\n\n\t\t\tif (view.labelEnabled && view.labelContent) {\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.rect(view.clip.x1, view.clip.y1, view.clip.x2 - view.clip.x1, view.clip.y2 - view.clip.y1);\n\t\t\t\tctx.clip();\n\n\t\t\t\tctx.fillStyle = view.labelBackgroundColor;\n\t\t\t\t// Draw the tooltip\n\t\t\t\tchartHelpers.drawRoundedRectangle(\n\t\t\t\t\tctx,\n\t\t\t\t\tview.labelX, // x\n\t\t\t\t\tview.labelY, // y\n\t\t\t\t\tview.labelWidth, // width\n\t\t\t\t\tview.labelHeight, // height\n\t\t\t\t\tview.labelCornerRadius // radius\n\t\t\t\t);\n\t\t\t\tctx.fill();\n\n\t\t\t\t// Draw the text\n\t\t\t\tctx.font = chartHelpers.fontString(\n\t\t\t\t\tview.labelFontSize,\n\t\t\t\t\tview.labelFontStyle,\n\t\t\t\t\tview.labelFontFamily\n\t\t\t\t);\n\t\t\t\tctx.fillStyle = view.labelFontColor;\n\t\t\t\tctx.textAlign = 'center';\n\t\t\t\tctx.textBaseline = 'middle';\n\t\t\t\tctx.fillText(\n\t\t\t\t\tview.labelContent,\n\t\t\t\t\tview.labelX + (view.labelWidth / 2),\n\t\t\t\t\tview.labelY + (view.labelHeight / 2)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tctx.restore();\n\t\t}\n\t});\n\n\tfunction LineFunction(view) {\n\t\t// Describe the line in slope-intercept form (y = mx + b).\n\t\t// Note that the axes are rotated 90° CCW, which causes the\n\t\t// x- and y-axes to be swapped.\n\t\tvar m = (view.x2 - view.x1) / (view.y2 - view.y1);\n\t\tvar b = view.x1 || 0;\n\n\t\tthis.m = m;\n\t\tthis.b = b;\n\n\t\tthis.getX = function(y) {\n\t\t\t// Coordinates are relative to the origin of the canvas\n\t\t\treturn m * (y - view.y1) + b;\n\t\t};\n\n\t\tthis.getY = function(x) {\n\t\t\treturn ((x - b) / m) + view.y1;\n\t\t};\n\n\t\tthis.intersects = function(x, y, epsilon) {\n\t\t\tepsilon = epsilon || 0.001;\n\t\t\tvar dy = this.getY(x),\n\t\t\t\tdx = this.getX(y);\n\t\t\treturn (\n\t\t\t\t(!isFinite(dy) || Math.abs(y - dy) < epsilon) &&\n\t\t\t\t(!isFinite(dx) || Math.abs(x - dx) < epsilon)\n\t\t\t);\n\t\t};\n\t}\n\n\tfunction calculateLabelPosition(view, width, height, padWidth, padHeight) {\n\t\tvar line = view.line;\n\t\tvar ret = {}, xa = 0, ya = 0;\n\n\t\tswitch (true) {\n\t\t\t// top align\n\t\t\tcase view.mode == verticalKeyword && view.labelPosition == \"top\":\n\t\t\t\tya = padHeight + view.labelYAdjust;\n\t\t\t\txa = (width / 2) + view.labelXAdjust;\n\t\t\t\tret.y = view.y1 + ya;\n\t\t\t\tret.x = (isFinite(line.m) ? line.getX(ret.y) : view.x1) - xa;\n\t\t\tbreak;\n\n\t\t\t// bottom align\n\t\t\tcase view.mode == verticalKeyword && view.labelPosition == \"bottom\":\n\t\t\t\tya = height + padHeight + view.labelYAdjust;\n\t\t\t\txa = (width / 2) + view.labelXAdjust;\n\t\t\t\tret.y = view.y2 - ya;\n\t\t\t\tret.x = (isFinite(line.m) ? line.getX(ret.y) : view.x1) - xa;\n\t\t\tbreak;\n\n\t\t\t// left align\n\t\t\tcase view.mode == horizontalKeyword && view.labelPosition == \"left\":\n\t\t\t\txa = padWidth + view.labelXAdjust;\n\t\t\t\tya = -(height / 2) + view.labelYAdjust;\n\t\t\t\tret.x = view.x1 + xa;\n\t\t\t\tret.y = line.getY(ret.x) + ya;\n\t\t\tbreak;\n\n\t\t\t// right align\n\t\t\tcase view.mode == horizontalKeyword && view.labelPosition == \"right\":\n\t\t\t\txa = width + padWidth + view.labelXAdjust;\n\t\t\t\tya = -(height / 2) + view.labelYAdjust;\n\t\t\t\tret.x = view.x2 - xa;\n\t\t\t\tret.y = line.getY(ret.x) + ya;\n\t\t\tbreak;\n\n\t\t\t// center align\n\t\t\tdefault:\n\t\t\t\tret.x = ((view.x1 + view.x2 - width) / 2) + view.labelXAdjust;\n\t\t\t\tret.y = ((view.y1 + view.y2 - height) / 2) + view.labelYAdjust;\n\t\t}\n\n\t\treturn ret;\n\t}\n\n\treturn LineAnnotation;\n};\n","/*\n * JXON framework - Copyleft 2011 by Mozilla Developer Network\n *\n * Revision #1 - September 5, 2014\n *\n * https://developer.mozilla.org/en-US/docs/JXON\n *\n * This framework is released under the GNU Public License, version 3 or later.\n * http://www.gnu.org/licenses/gpl-3.0-standalone.html\n *\n * small modifications performed by the iD project:\n * https://github.com/openstreetmap/iD/commits/18aa33ba97b52cacf454e95c65d154000e052a1f/js/lib/jxon.js\n *\n * small modifications performed by user @bugreport0\n * https://github.com/tyrasd/JXON/pull/2/commits\n *\n * some additions and modifications by user @igord\n * https://github.com/tyrasd/JXON/pull/5/commits\n *\n * bugfixes and code cleanup by user @laubstein\n * https://github.com/tyrasd/jxon/pull/32\n *\n * adapted for nodejs and npm by @tyrasd (Martin Raifer ) \n */\n\n(function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], factory(window));\n } else if (typeof exports === 'object') {\n if (typeof window === 'object' && window.DOMImplementation && window.XMLSerializer && window.DOMParser) {\n // Browserify. hardcode usage of browser's own XMLDom implementation\n // see https://github.com/tyrasd/jxon/issues/18\n\n module.exports = factory(window);\n } else {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n\n module.exports = factory(require('xmldom'), true);\n }\n } else {\n // Browser globals (root is window)\n\n root.JXON = factory(window);\n }\n}(this, function(xmlDom, isNodeJs) {\n var opts = {\n valueKey: '_',\n attrKey: '$',\n attrPrefix: '$',\n lowerCaseTags: false,\n trueIsEmpty: false,\n autoDate: false,\n ignorePrefixedNodes: false,\n parseValues: false\n };\n var aCache = [];\n var rIsNull = /^\\s*$/;\n var rIsBool = /^(?:true|false)$/i;\n var DOMParser;\n\n return new (function() {\n\n this.config = function(cfg) {\n for (var k in cfg) {\n\n opts[k] = cfg[k];\n }\n if (opts.parserErrorHandler) {\n DOMParser = new xmlDom.DOMParser({\n errorHandler: opts.parserErrorHandler,\n locator: {}\n });\n }\n };\n\n function parseText(sValue) {\n if (!opts.parseValues) {\n return sValue;\n }\n\n if (rIsNull.test(sValue)) {\n return null;\n }\n\n if (rIsBool.test(sValue)) {\n return sValue.toLowerCase() === 'true';\n }\n\n if (isFinite(sValue)) {\n return parseFloat(sValue);\n }\n\n if (opts.autoDate && isFinite(Date.parse(sValue))) {\n return new Date(sValue);\n }\n\n return sValue;\n }\n function EmptyTree() {\n }\n EmptyTree.prototype.toString = function() {\n return 'null';\n };\n\n EmptyTree.prototype.valueOf = function() {\n return null;\n };\n\n function objectify(vValue) {\n return vValue === null ? new EmptyTree() : vValue instanceof Object ? vValue : new vValue.constructor(vValue);\n }\n\n function createObjTree(oParentNode, nVerb, bFreeze, bNesteAttr) {\n var CDATA = 4,\n TEXT = 3,\n ELEMENT = 1,\n nLevelStart = aCache.length,\n bChildren = oParentNode.hasChildNodes(),\n bAttributes = oParentNode.nodeType === oParentNode.ELEMENT_NODE && oParentNode.hasAttributes(),\n bHighVerb = Boolean(nVerb & 2),\n nLength = 0,\n sCollectedTxt = '',\n vResult = bHighVerb ? {} : /* put here the default value for empty nodes: */ (opts.trueIsEmpty ? true : ''),\n sProp,\n vContent;\n\n if (bChildren) {\n for (var oNode, nItem = 0; nItem < oParentNode.childNodes.length; nItem++) {\n\n oNode = oParentNode.childNodes.item(nItem);\n if (oNode.nodeType === CDATA) {\n sCollectedTxt += oNode.nodeValue;\n } /* nodeType is \"CDATASection\" (4) */\n else if (oNode.nodeType === TEXT) {\n sCollectedTxt += oNode.nodeValue.trim();\n } /* nodeType is \"Text\" (3) */\n else if (oNode.nodeType === ELEMENT && !(opts.ignorePrefixedNodes && oNode.prefix)) {\n aCache.push(oNode);\n }\n /* nodeType is \"Element\" (1) */\n }\n }\n\n var nLevelEnd = aCache.length,\n vBuiltVal = parseText(sCollectedTxt);\n\n if (!bHighVerb && (bChildren || bAttributes)) {\n vResult = nVerb === 0 ? objectify(vBuiltVal) : {};\n }\n\n for (var nElId = nLevelStart; nElId < nLevelEnd; nElId++) {\n\n sProp = aCache[nElId].nodeName;\n if (opts.lowerCaseTags) {\n sProp = sProp.toLowerCase();\n }\n\n vContent = createObjTree(aCache[nElId], nVerb, bFreeze, bNesteAttr);\n if (vResult.hasOwnProperty(sProp)) {\n if (vResult[sProp].constructor !== Array) {\n vResult[sProp] = [vResult[sProp]];\n }\n\n vResult[sProp].push(vContent);\n } else {\n vResult[sProp] = vContent;\n\n nLength++;\n }\n }\n\n if (bAttributes) {\n var nAttrLen = oParentNode.attributes.length,\n sAPrefix = bNesteAttr ? '' : opts.attrPrefix,\n oAttrParent = bNesteAttr ? {} : vResult;\n\n for (var oAttrib, oAttribName, nAttrib = 0; nAttrib < nAttrLen; nLength++, nAttrib++) {\n\n oAttrib = oParentNode.attributes.item(nAttrib);\n\n oAttribName = oAttrib.name;\n if (opts.lowerCaseTags) {\n oAttribName = oAttribName.toLowerCase();\n }\n\n oAttrParent[sAPrefix + oAttribName] = parseText(oAttrib.value.trim());\n }\n\n if (bNesteAttr) {\n if (bFreeze) {\n Object.freeze(oAttrParent);\n }\n\n vResult[opts.attrKey] = oAttrParent;\n\n nLength -= nAttrLen - 1;\n }\n\n }\n\n if (nVerb === 3 || (nVerb === 2 || nVerb === 1 && nLength > 0) && sCollectedTxt) {\n vResult[opts.valueKey] = vBuiltVal;\n } else if (!bHighVerb && nLength === 0 && sCollectedTxt) {\n vResult = vBuiltVal;\n }\n if (bFreeze && (bHighVerb || nLength > 0)) {\n Object.freeze(vResult);\n }\n\n aCache.length = nLevelStart;\n\n return vResult;\n }\n function loadObjTree(oXMLDoc, oParentEl, oParentObj) {\n var vValue,\n oChild,\n elementNS;\n\n if (oParentObj.constructor === String || oParentObj.constructor === Number || oParentObj.constructor === Boolean) {\n oParentEl.appendChild(oXMLDoc.createTextNode(oParentObj.toString())); /* verbosity level is 0 or 1 */\n if (oParentObj === oParentObj.valueOf()) {\n return;\n }\n\n } else if (oParentObj.constructor === Date) {\n oParentEl.appendChild(oXMLDoc.createTextNode(oParentObj.toISOString()));\n }\n for (var sName in oParentObj) {\n\n vValue = oParentObj[sName];\n if ( vValue === undefined ) {\n continue;\n }\n if ( vValue === null ) {\n vValue = {};\n }\n\n if (isFinite(sName) || vValue instanceof Function) {\n continue;\n }\n\n /* verbosity level is 0 */\n if (sName === opts.valueKey) {\n if (vValue !== null && vValue !== true) {\n oParentEl.appendChild(oXMLDoc.createTextNode(vValue.constructor === Date ? vValue.toISOString() : String(vValue)));\n }\n\n } else if (sName === opts.attrKey) { /* verbosity level is 3 */\n for (var sAttrib in vValue) {\n oParentEl.setAttribute(sAttrib, vValue[sAttrib]);\n }\n } else if (sName === opts.attrPrefix + 'xmlns') {\n if (isNodeJs) {\n oParentEl.setAttribute(sName.slice(1), vValue);\n }\n // do nothing: special handling of xml namespaces is done via createElementNS()\n } else if (sName.charAt(0) === opts.attrPrefix) {\n oParentEl.setAttribute(sName.slice(1), vValue);\n } else if (vValue.constructor === Array) {\n for (var nItem in vValue) {\n if (!vValue.hasOwnProperty(nItem)) continue;\n elementNS = (vValue[nItem] && vValue[nItem][opts.attrPrefix + 'xmlns']) || oParentEl.namespaceURI;\n if (elementNS) {\n oChild = oXMLDoc.createElementNS(elementNS, sName);\n } else {\n oChild = oXMLDoc.createElement(sName);\n }\n\n loadObjTree(oXMLDoc, oChild, vValue[nItem] || {});\n oParentEl.appendChild(oChild);\n }\n } else {\n elementNS = (vValue || {})[opts.attrPrefix + 'xmlns'] || oParentEl.namespaceURI;\n if (elementNS) {\n oChild = oXMLDoc.createElementNS(elementNS, sName);\n } else {\n oChild = oXMLDoc.createElement(sName);\n }\n if (vValue instanceof Object) {\n loadObjTree(oXMLDoc, oChild, vValue);\n } else if (vValue !== null && (vValue !== true || !opts.trueIsEmpty)) {\n oChild.appendChild(oXMLDoc.createTextNode(vValue.toString()));\n }\n oParentEl.appendChild(oChild);\n }\n }\n }\n this.xmlToJs = this.build = function(oXMLParent, nVerbosity /* optional */ , bFreeze /* optional */ , bNesteAttributes /* optional */ ) {\n var _nVerb = arguments.length > 1 && typeof nVerbosity === 'number' ? nVerbosity & 3 : /* put here the default verbosity level: */ 1;\n return createObjTree(oXMLParent, _nVerb, bFreeze || false, arguments.length > 3 ? bNesteAttributes : _nVerb === 3);\n };\n\n this.jsToXml = this.unbuild = function(oObjTree, sNamespaceURI /* optional */ , sQualifiedName /* optional */ , oDocumentType /* optional */ ) {\n var documentImplementation = xmlDom.document && xmlDom.document.implementation || new xmlDom.DOMImplementation();\n var oNewDoc = documentImplementation.createDocument(sNamespaceURI || null, sQualifiedName || '', oDocumentType || null);\n loadObjTree(oNewDoc, oNewDoc.documentElement || oNewDoc, oObjTree);\n return oNewDoc;\n };\n\n this.stringToXml = function(xmlStr) {\n if (!DOMParser) {\n DOMParser = new xmlDom.DOMParser();\n }\n\n return DOMParser.parseFromString(xmlStr, 'application/xml');\n };\n\n this.xmlToString = function(xmlObj) {\n if (typeof xmlObj.xml !== 'undefined') {\n return xmlObj.xml;\n } else {\n return (new xmlDom.XMLSerializer()).serializeToString(xmlObj);\n }\n };\n\n this.stringToJs = function(str) {\n var xmlObj = this.stringToXml(str);\n return this.xmlToJs(xmlObj);\n };\n\n this.jsToString = this.stringify = function(oObjTree, sNamespaceURI /* optional */ , sQualifiedName /* optional */ , oDocumentType /* optional */ ) {\n return this.xmlToString(\n this.jsToXml(oObjTree, sNamespaceURI, sQualifiedName, oDocumentType)\n );\n };\n\n this.each = function(arr, func, thisArg) {\n if (arr instanceof Array) {\n arr.forEach(func, thisArg);\n } else {\n [arr].forEach(func, thisArg);\n }\n };\n })();\n\n}\n\n));\n","/*! lozad.js - v1.16.0 - 2020-09-06\n* https://github.com/ApoorvSaxena/lozad.js\n* Copyright (c) 2020 Apoorv Saxena; Licensed MIT */\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):t.lozad=e()}(this,function(){\"use strict\";\n/**\n * Detect IE browser\n * @const {boolean}\n * @private\n */var g=\"undefined\"!=typeof document&&document.documentMode,f={rootMargin:\"0px\",threshold:0,load:function(t){if(\"picture\"===t.nodeName.toLowerCase()){var e=t.querySelector(\"img\"),r=!1;null===e&&(e=document.createElement(\"img\"),r=!0),g&&t.getAttribute(\"data-iesrc\")&&(e.src=t.getAttribute(\"data-iesrc\")),t.getAttribute(\"data-alt\")&&(e.alt=t.getAttribute(\"data-alt\")),r&&t.append(e)}if(\"video\"===t.nodeName.toLowerCase()&&!t.getAttribute(\"data-src\")&&t.children){for(var a=t.children,o=void 0,i=0;i<=a.length-1;i++)(o=a[i].getAttribute(\"data-src\"))&&(a[i].src=o);t.load()}t.getAttribute(\"data-poster\")&&(t.poster=t.getAttribute(\"data-poster\")),t.getAttribute(\"data-src\")&&(t.src=t.getAttribute(\"data-src\")),t.getAttribute(\"data-srcset\")&&t.setAttribute(\"srcset\",t.getAttribute(\"data-srcset\"));var n=\",\";if(t.getAttribute(\"data-background-delimiter\")&&(n=t.getAttribute(\"data-background-delimiter\")),t.getAttribute(\"data-background-image\"))t.style.backgroundImage=\"url('\"+t.getAttribute(\"data-background-image\").split(n).join(\"'),url('\")+\"')\";else if(t.getAttribute(\"data-background-image-set\")){var d=t.getAttribute(\"data-background-image-set\").split(n),u=d[0].substr(0,d[0].indexOf(\" \"))||d[0];// Substring before ... 1x\nu=-1===u.indexOf(\"url(\")?\"url(\"+u+\")\":u,1===d.length?t.style.backgroundImage=u:t.setAttribute(\"style\",(t.getAttribute(\"style\")||\"\")+\"background-image: \"+u+\"; background-image: -webkit-image-set(\"+d+\"); background-image: image-set(\"+d+\")\")}t.getAttribute(\"data-toggle-class\")&&t.classList.toggle(t.getAttribute(\"data-toggle-class\"))},loaded:function(){}};function A(t){t.setAttribute(\"data-loaded\",!0)}var m=function(t){return\"true\"===t.getAttribute(\"data-loaded\")},v=function(t){var e=1