{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/core-js/internals/global.js","webpack:///./node_modules/core-js/internals/fails.js","webpack:///./node_modules/core-js/internals/well-known-symbol.js","webpack:///./node_modules/core-js/internals/export.js","webpack:///./node_modules/core-js/internals/has.js","webpack:///./node_modules/core-js/internals/is-object.js","webpack:///./node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./node_modules/core-js/internals/descriptors.js","webpack:///./node_modules/core-js/internals/an-object.js","webpack:///./node_modules/core-js/internals/object-define-property.js","webpack:///./node_modules/core-js/internals/to-indexed-object.js","webpack:///./node_modules/core-js/internals/to-length.js","webpack:///./node_modules/core-js/internals/shared.js","webpack:///./node_modules/core-js/internals/require-object-coercible.js","webpack:///./node_modules/core-js/internals/redefine.js","webpack:///./node_modules/core-js/internals/to-integer.js","webpack:///./node_modules/core-js/internals/to-object.js","webpack:///./node_modules/core-js/internals/classof-raw.js","webpack:///./node_modules/core-js/internals/create-property-descriptor.js","webpack:///./node_modules/core-js/internals/hidden-keys.js","webpack:///./node_modules/core-js/internals/to-primitive.js","webpack:///./node_modules/core-js/internals/set-global.js","webpack:///./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./node_modules/core-js/internals/array-iteration.js","webpack:///./node_modules/core-js/internals/shared-key.js","webpack:///./node_modules/core-js/internals/enum-bug-keys.js","webpack:///./node_modules/core-js/internals/uid.js","webpack:///./node_modules/core-js/internals/indexed-object.js","webpack:///./node_modules/core-js/internals/internal-state.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./node_modules/core-js/internals/is-pure.js","webpack:///./node_modules/core-js/internals/is-array.js","webpack:///./node_modules/core-js/internals/get-built-in.js","webpack:///./node_modules/core-js/internals/object-create.js","webpack:///./node_modules/core-js/internals/ie8-dom-define.js","webpack:///./node_modules/core-js/internals/function-to-string.js","webpack:///./node_modules/core-js/internals/document-create-element.js","webpack:///./node_modules/core-js/internals/object-keys-internal.js","webpack:///./node_modules/core-js/internals/to-absolute-index.js","webpack:///./node_modules/core-js/internals/array-includes.js","webpack:///./node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///./node_modules/core-js/internals/object-keys.js","webpack:///./node_modules/core-js/internals/array-species-create.js","webpack:///./node_modules/core-js/modules/es.array.find.js","webpack:///./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./node_modules/core-js/internals/array-method-has-species-support.js","webpack:///./node_modules/core-js/internals/path.js","webpack:///./node_modules/core-js/internals/native-symbol.js","webpack:///./node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./node_modules/core-js/internals/a-function.js","webpack:///./node_modules/core-js/internals/is-forced.js","webpack:///./node_modules/core-js/internals/sloppy-array-method.js","webpack:///./node_modules/core-js/internals/add-to-unscopables.js","webpack:///./node_modules/core-js/internals/own-keys.js","webpack:///./node_modules/core-js/modules/es.array.iterator.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/core-js/internals/regexp-exec.js","webpack:///./node_modules/core-js/internals/shared-store.js","webpack:///./node_modules/core-js/internals/native-weak-map.js","webpack:///./node_modules/core-js/internals/set-to-string-tag.js","webpack:///./node_modules/core-js/internals/iterators.js","webpack:///./node_modules/core-js/internals/bind-context.js","webpack:///./node_modules/core-js/modules/es.object.to-string.js","webpack:///./node_modules/core-js/internals/object-define-properties.js","webpack:///./node_modules/core-js/internals/html.js","webpack:///./node_modules/core-js/internals/array-buffer-view-core.js","webpack:///./node_modules/core-js/modules/es.array.index-of.js","webpack:///./node_modules/core-js/internals/create-property.js","webpack:///./node_modules/core-js/modules/es.symbol.js","webpack:///./node_modules/core-js/modules/es.regexp.exec.js","webpack:///./node_modules/core-js/modules/es.symbol.description.js","webpack:///./node_modules/core-js/modules/es.symbol.iterator.js","webpack:///./node_modules/core-js/modules/es.string.iterator.js","webpack:///./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack:///./node_modules/core-js/internals/whitespaces.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./node_modules/core-js/internals/wrapped-well-known-symbol.js","webpack:///./node_modules/core-js/internals/define-well-known-symbol.js","webpack:///./node_modules/core-js/modules/es.array.join.js","webpack:///./node_modules/core-js/internals/string-multibyte.js","webpack:///./node_modules/core-js/internals/object-get-prototype-of.js","webpack:///./node_modules/core-js/internals/regexp-flags.js","webpack:///./node_modules/core-js/modules/es.array.concat.js","webpack:///./node_modules/core-js/internals/object-set-prototype-of.js","webpack:///./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack:///./node_modules/core-js/internals/regexp-exec-abstract.js","webpack:///./node_modules/core-js/modules/es.date.to-string.js","webpack:///./node_modules/core-js/modules/es.string.replace.js","webpack:///./node_modules/core-js/internals/define-iterator.js","webpack:///./node_modules/core-js/internals/iterators-core.js","webpack:///./node_modules/core-js/internals/string-trim.js","webpack:///./node_modules/core-js/modules/es.array.filter.js","webpack:///./node_modules/core-js/internals/advance-string-index.js","webpack:///./node_modules/core-js/internals/dom-iterables.js","webpack:///./node_modules/core-js/internals/classof.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///./node_modules/core-js/modules/es.array.map.js","webpack:///./node_modules/core-js/modules/es.regexp.to-string.js","webpack:///./node_modules/core-js/modules/es.string.split.js","webpack:///./node_modules/core-js/internals/a-possible-prototype.js","webpack:///./node_modules/core-js/modules/es.array.slice.js","webpack:///./node_modules/core-js/internals/object-to-string.js","webpack:///./node_modules/core-js/internals/is-regexp.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names-external.js","webpack:///./node_modules/core-js/internals/create-iterator-constructor.js","webpack:///./node_modules/core-js/internals/correct-prototype-getter.js","webpack:///./node_modules/core-js/internals/species-constructor.js","webpack:///./node_modules/core-js/modules/es.array.for-each.js","webpack:///./node_modules/core-js/modules/es.array.splice.js","webpack:///./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack:///./node_modules/core-js/internals/array-for-each.js","webpack:///./node_modules/core-js/modules/es.number.constructor.js","webpack:///./node_modules/core-js/modules/es.string.trim.js","webpack:///./node_modules/core-js/modules/es.object.keys.js","webpack:///./node_modules/core-js/internals/inherit-if-required.js","webpack:///./node_modules/core-js/modules/es.parse-float.js","webpack:///external \"jQuery\"","webpack:///./node_modules/core-js/modules/es.string.match.js","webpack:///./node_modules/core-js/modules/es.function.name.js","webpack:///./node_modules/core-js/modules/es.parse-int.js","webpack:///./node_modules/core-js/internals/forced-string-trim-method.js","webpack:///./src/js/pro/material-select/material-select-view-renderer.js","webpack:///./node_modules/core-js/modules/es.array.includes.js","webpack:///./node_modules/core-js/modules/es.string.includes.js","webpack:///./node_modules/core-js/internals/parse-float.js","webpack:///./node_modules/core-js/internals/array-reduce.js","webpack:///./src/js/pro/material-select/material-select-view.js","webpack:///./node_modules/core-js/modules/es.regexp.constructor.js","webpack:///./node_modules/core-js/internals/set-species.js","webpack:///./node_modules/core-js/internals/not-a-regexp.js","webpack:///./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack:///./node_modules/core-js/modules/es.array.sort.js","webpack:///./node_modules/core-js/internals/array-last-index-of.js","webpack:///./node_modules/core-js/modules/es.array.reverse.js","webpack:///./node_modules/core-js/modules/es.number.to-fixed.js","webpack:///./node_modules/core-js/internals/this-number-value.js","webpack:///./node_modules/core-js/internals/string-repeat.js","webpack:///./node_modules/core-js/internals/parse-int.js","webpack:///./node_modules/core-js/modules/es.object.values.js","webpack:///./node_modules/core-js/internals/object-to-array.js","webpack:///./node_modules/core-js/internals/array-fill.js","webpack:///./node_modules/core-js/modules/es.array.reduce.js","webpack:///./node_modules/core-js/internals/array-buffer.js","webpack:///./node_modules/core-js/internals/an-instance.js","webpack:///./node_modules/core-js/internals/to-index.js","webpack:///./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack:///./node_modules/core-js/internals/to-offset.js","webpack:///./node_modules/core-js/internals/get-iterator-method.js","webpack:///./node_modules/core-js/internals/is-array-iterator-method.js","webpack:///./src/js/free/forms-free.js","webpack:///./src/js/free/scrolling-navbar.js","webpack:///./src/js/free/treeview.js","webpack:///./src/js/free/wow.js","webpack:///./node_modules/core-js/modules/es.string.search.js","webpack:///./node_modules/core-js/internals/same-value.js","webpack:///./src/js/pro/buttons.js","webpack:///./src/js/pro/cards.js","webpack:///./src/js/pro/character-counter.js","webpack:///./src/js/pro/collapsible.js","webpack:///./src/js/pro/file-input.js","webpack:///./src/js/pro/mdb-autocomplete.js","webpack:///./src/js/pro/preloading.js","webpack:///./src/js/pro/range-input.js","webpack:///./src/js/pro/sidenav.js","webpack:///./src/js/pro/smooth-scroll.js","webpack:///./src/js/pro/dropdown/dropdown.js","webpack:///./node_modules/core-js/modules/es.object.get-own-property-descriptor.js","webpack:///./node_modules/core-js/modules/es.object.get-own-property-descriptors.js","webpack:///./src/js/pro/dropdown/dropdown-searchable.js","webpack:///./src/js/pro/material-select/material-select.js","webpack:///./node_modules/core-js/modules/es.array.fill.js","webpack:///./src/js/vendor/free/enhanced-modals.js","webpack:///./src/js/vendor/free/jquery.easing.js","webpack:///./src/js/vendor/free/velocity.js","webpack:///./node_modules/core-js/modules/es.array-buffer.slice.js","webpack:///./node_modules/core-js/internals/redefine-all.js","webpack:///./node_modules/core-js/modules/es.typed-array.float32-array.js","webpack:///./node_modules/core-js/internals/typed-array-constructor.js","webpack:///./node_modules/core-js/internals/typed-arrays-constructors-requires-wrappers.js","webpack:///./node_modules/core-js/internals/to-positive-integer.js","webpack:///./node_modules/core-js/internals/typed-array-from.js","webpack:///./node_modules/core-js/modules/es.typed-array.copy-within.js","webpack:///./node_modules/core-js/internals/array-copy-within.js","webpack:///./node_modules/core-js/modules/es.typed-array.every.js","webpack:///./node_modules/core-js/modules/es.typed-array.fill.js","webpack:///./node_modules/core-js/modules/es.typed-array.filter.js","webpack:///./node_modules/core-js/modules/es.typed-array.find.js","webpack:///./node_modules/core-js/modules/es.typed-array.find-index.js","webpack:///./node_modules/core-js/modules/es.typed-array.for-each.js","webpack:///./node_modules/core-js/modules/es.typed-array.includes.js","webpack:///./node_modules/core-js/modules/es.typed-array.index-of.js","webpack:///./node_modules/core-js/modules/es.typed-array.iterator.js","webpack:///./node_modules/core-js/modules/es.typed-array.join.js","webpack:///./node_modules/core-js/modules/es.typed-array.last-index-of.js","webpack:///./node_modules/core-js/modules/es.typed-array.map.js","webpack:///./node_modules/core-js/modules/es.typed-array.reduce.js","webpack:///./node_modules/core-js/modules/es.typed-array.reduce-right.js","webpack:///./node_modules/core-js/modules/es.typed-array.reverse.js","webpack:///./node_modules/core-js/modules/es.typed-array.set.js","webpack:///./node_modules/core-js/modules/es.typed-array.slice.js","webpack:///./node_modules/core-js/modules/es.typed-array.some.js","webpack:///./node_modules/core-js/modules/es.typed-array.sort.js","webpack:///./node_modules/core-js/modules/es.typed-array.subarray.js","webpack:///./node_modules/core-js/modules/es.typed-array.to-locale-string.js","webpack:///./node_modules/core-js/modules/es.typed-array.to-string.js","webpack:///./src/js/vendor/free/waves.js","webpack:///./src/js/vendor/pro/jquery.sticky.js","webpack:///./src/js/vendor/pro/scrollbar.js","webpack:///./node_modules/core-js/modules/es.array.every.js","webpack:///./src/js/vendor/pro/toastr.js","webpack:///./src/js/pro/chips.js","webpack:///./node_modules/core-js/modules/es.array.some.js","webpack:///./node_modules/core-js/modules/es.object.assign.js","webpack:///./node_modules/core-js/internals/object-assign.js","webpack:///./src/js/pro/sticky.js","webpack:///./node_modules/core-js/modules/es.number.max-safe-integer.js","webpack:///./node_modules/core-js/modules/es.number.min-safe-integer.js","webpack:///./node_modules/core-js/modules/es.symbol.to-string-tag.js","webpack:///./node_modules/core-js/modules/es.json.to-string-tag.js","webpack:///./node_modules/core-js/modules/es.math.to-string-tag.js","webpack:///./src/js/vendor/pro/picker.js","webpack:///./src/js/pro/picker.js","webpack:///./src/js/vendor/free/bs-custom-file-input.js","webpack:///./src/js/vendor/free/chart.js","webpack:///./node_modules/core-js/modules/es.array.find-index.js","webpack:///./node_modules/core-js/modules/es.math.log10.js","webpack:///./node_modules/core-js/modules/es.math.sign.js","webpack:///./node_modules/core-js/internals/math-sign.js","webpack:///./node_modules/core-js/modules/es.number.epsilon.js","webpack:///./src/js/vendor/free/chartjs-datalabels.js","webpack:///./node_modules/core-js/modules/es.string.anchor.js","webpack:///./node_modules/core-js/internals/create-html.js","webpack:///./node_modules/core-js/internals/forced-string-html-method.js","webpack:///external \"chart\"","webpack:///./src/js/vendor/pro/lightbox.js","webpack:///./src/js/vendor/pro/picker-date.js","webpack:///./src/js/vendor/pro/vector-map.js","webpack:///./src/js/vendor/pro/vector-map-world-mill.js","webpack:///./src/js/pro/picker-date.js","webpack:///./src/js/vendor/pro/jarallax.js","webpack:///./src/js/vendor/pro/jarallax-video.js","webpack:///./src/js/vendor/pro/ofi.js","webpack:///./src/js/vendor/pro/picker-time.js","webpack:///./src/js/vendor/pro/picker-date-time.js","webpack:///./src/js/pro/picker-time.js","webpack:///./src/js/pro/sidenav2.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","it","Math","check","globalThis","window","self","global","Function","exec","error","shared","uid","NATIVE_SYMBOL","store","getOwnPropertyDescriptor","f","createNonEnumerableProperty","redefine","setGlobal","copyConstructorProperties","isForced","options","source","target","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","STATIC","stat","noTargetGet","forced","undefined","sham","DESCRIPTORS","definePropertyModule","createPropertyDescriptor","fails","a","isObject","TypeError","String","IE8_DOM_DEFINE","anObject","toPrimitive","nativeDefineProperty","O","P","Attributes","IndexedObject","requireObjectCoercible","toInteger","min","argument","IS_PURE","push","version","copyright","has","nativeFunctionToString","InternalStateModule","getInternalState","enforceInternalState","enforce","TEMPLATE","split","unsafe","simple","join","this","ceil","floor","isNaN","toString","slice","bitmap","configurable","writable","input","PREFERRED_STRING","fn","val","valueOf","propertyIsEnumerableModule","toIndexedObject","nativeGetOwnPropertyDescriptor","toObject","toLength","arraySpeciesCreate","createMethod","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","$this","callbackfn","that","specificCreate","result","boundFunction","length","index","forEach","map","filter","some","every","find","findIndex","keys","id","postfix","random","classof","propertyIsEnumerable","set","NATIVE_WEAK_MAP","objectHas","sharedKey","hiddenKeys","WeakMap","wmget","wmhas","wmset","metadata","STATE","getterFor","state","type","internalObjectKeys","concat","getOwnPropertyNames","Array","isArray","arg","path","aFunction","variable","namespace","method","arguments","defineProperties","enumBugKeys","html","documentCreateElement","IE_PROTO","Empty","createDict","iframeDocument","iframe","style","display","appendChild","src","contentWindow","document","open","write","lt","close","F","Properties","createElement","EXISTS","indexOf","names","max","integer","toAbsoluteIndex","IS_INCLUDES","el","fromIndex","includes","nativePropertyIsEnumerable","NASHORN_BUG","1","V","SPECIES","wellKnownSymbol","originalArray","C","constructor","$","$find","addToUnscopables","SKIPS_HOLES","proto","getOwnPropertySymbols","METHOD_NAME","array","foo","Boolean","ownKeys","getOwnPropertyDescriptorModule","replacement","feature","detection","data","normalize","POLYFILL","NATIVE","string","replace","toLowerCase","UNSCOPABLES","ArrayPrototype","getBuiltIn","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","Iterators","defineIterator","setInternalState","iterated","kind","done","Arguments","g","e","re1","re2","regexpFlags","nativeExec","RegExp","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","lastIndex","NPCG_INCLUDED","str","reCopy","match","re","test","TO_STRING_TAG","TAG","b","apply","ObjectPrototype","objectKeys","NAME","getPrototypeOf","setPrototypeOf","DataView","DataViewPrototype","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","isPrototypeOf","TYPED_ARRAY_TAG","NATIVE_ARRAY_BUFFER","ArrayBuffer","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQIRED","TypedArrayConstructorsList","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","isTypedArray","aTypedArray","aTypedArrayConstructor","ARRAY","TypedArrayConstructor","exportProto","KEY","exportStatic","isView","klass","$indexOf","sloppyArrayMethod","nativeIndexOf","NEGATIVE_ZERO","SLOPPY_METHOD","searchElement","propertyKey","nativeObjectCreate","getOwnPropertyNamesExternal","wrappedWellKnownSymbolModule","defineWellKnownSymbol","setToStringTag","$forEach","HIDDEN","TO_PRIMITIVE","$Symbol","JSON","nativeJSONStringify","stringify","nativeGetOwnPropertyNames","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","WellKnownSymbolsStore","QObject","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","wrap","tag","description","symbol","isSymbol","iterator","$defineProperty","$defineProperties","properties","$getOwnPropertySymbols","$propertyIsEnumerable","$getOwnPropertyDescriptor","$getOwnPropertyNames","IS_OBJECT_PROTOTYPE","setter","keyFor","sym","useSetter","useSimple","replacer","$replacer","args","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","symbolPrototype","symbolToString","native","regexp","desc","charAt","point","DOMIterables","ArrayIteratorMethods","ITERATOR","ArrayValues","values","COLLECTION_NAME","Collection","CollectionPrototype","__webpack_amd_options__","nativeJoin","ES3_STRINGS","separator","CONVERT_TO_STRING","pos","first","second","S","position","size","charCodeAt","codeAt","CORRECT_PROTOTYPE_GETTER","ignoreCase","multiline","dotAll","unicode","sticky","createProperty","arrayMethodHasSpeciesSupport","IS_CONCAT_SPREADABLE","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","k","len","E","A","aPossiblePrototype","CORRECT_SETTER","__proto__","regexpExec","REPLACE_SUPPORTS_NAMED_GROUPS","groups","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","methods","nativeMethod","arg2","forceStringMethod","stringMethod","regexMethod","R","DatePrototype","Date","nativeDateToString","getTime","NaN","fixRegExpWellKnownSymbolLogic","advanceStringIndex","regExpExec","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","REPLACE","maybeCallNative","searchValue","replaceValue","res","rx","functionalReplace","fullUnicode","results","accumulatedResult","nextSourcePosition","matched","captures","j","namedCaptures","replacerArgs","getSubstitution","tailPos","symbols","ch","capture","createIteratorConstructor","IteratorsCore","IteratorPrototype","BUGGY_SAFARI_ITERATORS","returnThis","Iterable","IteratorConstructor","next","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","PrototypeOfArrayIteratorPrototype","arrayIterator","whitespace","ltrim","rtrim","start","end","trim","$filter","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","classofRaw","CORRECT_ARGUMENTS","tryGet","callee","originalModule","webpackPolyfill","children","$map","flags","RegExpPrototype","nativeToString","NOT_GENERIC","INCORRECT_NAME","rf","isRegExp","speciesConstructor","callRegExpExec","arrayPush","SUPPORTS_Y","SPLIT","nativeSplit","internalSplit","limit","lim","lastLength","output","lastLastIndex","separatorCopy","splitter","unicodeMatching","q","z","nativeSlice","Constructor","fin","MATCH","windowNames","getWindowNames","defaultConstructor","splice","deleteCount","insertCount","actualDeleteCount","from","to","actualStart","argumentsLength","inheritIfRequired","NativeNumber","NumberPrototype","BROKEN_CLASSOF","toNumber","third","radix","maxCode","digits","code","parseInt","NumberWrapper","dummy","$trim","forcedStringTrimMethod","nativeKeys","Wrapper","NewTarget","NewTargetPrototype","parseFloatImplementation","parseFloat","jQuery","nativeMatch","matcher","matchStr","FunctionPrototype","FunctionPrototypeToString","nameRE","parseIntImplementation","whitespaces","MaterialSelectViewRenderer","view","currentUuid","$nativeSelect","removeClass","parent","remove","hasClass","unwrap","setWrapperClasses","setMaterialSelectInitialValue","before","$selectWrapper","showResetButton","appendResetButton","appendDropdownIcon","appendMaterialSelect","appendMaterialOptionsList","appendNativeSelect","appendSelectLabel","appendCustomTemplateParts","shouldValidate","appendValidationFeedbackElements","isRequired","enableValidation","isDisabled","setMaterialOptionsListMaxHeight","dropdown","$materialSelect","hover","closeOnClick","resetScroll","shouldInheritTabindex","attr","isDefaultMaterialInput","$mainLabel","css","isCustomSelect","width","height","padding","fontSize","lineHeight","backgroundColor","border","addAccessibilityAttributes","markInitialized","addClass","marginTop","marginBottom","placeholder","prepend","sanitizedLabelHtml","$materialSelectInitialOption","$dropdownIcon","append","$btnReset","selectedIndex","hide","isSearchable","appendSearchInputOption","isEditable","appendAddOptionBtn","buildMaterialOptions","isMultiple","appendToggleAllCheckbox","$materialOptionsList","appendTo","$customTemplateParts","each","_","element","$btnSave","clone","$validFeedback","insertAfter","$invalidFeedback","top","left","opacity","$tempWrapper","visibility","show","$optionsListClone","multiplier","visibleOptions","additionalHeight","$materialOptions","not","optionHeight","text","eq","optionsCount","$searchInput","$toggleAll","maxHeight","role","divClass","inputClass","on","stopPropagation","$addOptionBtn","$nativeSelectChildren","option","is","buildSingleOption","$materialOptgroup","optgroupOption","firstOption","prop","after","$newOption","$nativeSelectChild","disabled","active","optgroupClass","iconUrl","fas","fasClasses","far","farClasses","fab","fabClasses","classes","iconHtml","checkboxHtml","secondaryText","copyClassesOption","validate","defaultMaterialInput","$includes","notARegExp","correctIsRegExpLogic","searchString","nativeParseFloat","Infinity","trimmedString","IS_RIGHT","memo","right","MaterialSelectView","_copyOptions","$noSearchResultsInfo","labels","noSearchResults","selectAll","_jQueryFallback","nextUntil","validFeedback","invalidFeedback","keyCodes","tab","enter","shift","alt","esc","space","home","arrowUp","arrowDown","renderer","navigator","userAgent","destroy","render","handler","_isPlaceholderPresent","$preselectedOption","indexOfPreselectedOption","preventDefault","_toggleResetButton","trigger","addNewOption","label","$selectedOption","_selectSingleOption","which","_updateDropdownScrollTop","isTab","isArrowUp","isArrowDown","isEnter","isEsc","isAltWithArrowDown","altKey","isAltWithArrowUp","isHome","isEnd","isSpace","isDropdownExpanded","_handleTabKey","_handleClosedArrowUpDownKey","_handleArrowUpDownKey","_handleHomeKey","_handleEndKey","_handleEnterKey","_handleLetterKey","checkbox","currentState","isToggleChecked","materialOptionIndex","materialOption","$materialOption","$optionCheckbox","toggleClass","_selectOption","_triggerChangeOnNativeSelect","removeData","scrollHeight","offsetHeight","selected","oldPropertyValue","hasOptgroup","thisIndex","_isToggleAllPresent","prevAll","_updateToggleAllOption","last","childNodes","ariaSelected","selectedOptionIndex","isEnterWithShift","shiftKey","focus","$ul","closest","$options","isOptionInList","$option","outerHTML","liValue","textContent","_handleEnterWithShiftKey","updatePosition","siblings","isMobileDevice","clientX","clientWidth","clientY","clientHeight","previousValue","$allOptionsButToggleAll","$checkedOptionsButToggleAll","isToggleAllChecked","_handleEscKey","_removeKeyboardActiveClass","keyCode","_getArrowMatchedActiveOptions","$matchedMaterialOption","$activeOption","keyboardActiveClass","scrollTop","closedDropdown","visible","$availableOptions","$firstOption","$lastOption","anySelected","$currentOption","$prevOption","prev","$nextOption","_selectBoundaryOption","firstOrLast","$boundaryOption","isLetter","isNumber","isBackspace","filterQueryString","letter","fromCharCode","nonLetters","keyboardEvt","KeyboardEvent","bubbles","cancelable","dispatchEvent","newOption","$preselected","scrollTo","extend","$lastElem","getFlags","setSpecies","NativeRegExp","CORRECT_NEW","RegExpWrapper","pattern","thisIsRegExp","patternIsRegExp","flagsAreUndefined","proxy","CONSTRUCTOR_NAME","nativeSort","sort","FAILS_ON_UNDEFINED","FAILS_ON_NULL","comparefn","nativeLastIndexOf","lastIndexOf","nativeReverse","reverse","thisNumberValue","repeat","nativeToFixed","toFixed","pow","x","acc","fractionDigits","number","fractDigits","sign","multiply","c2","divide","dataToString","RangeError","x2","log","count","nativeParseInt","hex","$values","TO_ENTRIES","endPos","$reduce","reduce","redefineAll","anInstance","toIndex","arrayFill","NativeArrayBuffer","$ArrayBuffer","$DataView","abs","LN2","packIEEE754","mantissaLength","bytes","exponent","mantissa","buffer","exponentLength","eMax","eBias","rt","unpackIEEE754","nBits","unpackInt32","packInt8","packInt16","packInt32","packFloat32","packFloat64","addGetter","isLittleEndian","intIndex","byteLength","byteOffset","pack","conversion","ArrayBufferPrototype","testView","nativeSetInt8","setInt8","getInt8","setUint8","bufferLength","offset","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","SAFE_CLOSING","called","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","toPositiveInteger","BYTES","inputSelector","selector","textAreaSelector","$text","$body","$document","observe","attachEvent","event","addEventListener","resize","delayedResize","setTimeout","isNotValid","validity","badInput","updateTextFields","toggleActiveClass","addOnFocusEvent","addOnBlurEvent","addOnChangeEvent","addOnResetEvent","appendHiddenDiv","makeActiveAutofocus","textAreaAutoResize","action","selectors","noValue","isValid","noPlaceholder","validateField","$formReset","noDefaultValue","select","$select","$visibleInput","defaultValue","$hiddenDiv","$input","hasValue","hasPlaceholder","addOrRemove","valid","Number","$textarea","fontFamily","content","init","$navbar","mdbTreeview","off","treeviewToggle","$elements","$closed","$target","$pointer","slideUp","slideDown","treeviewAnimated","$header","$pointerPlus","$pointerMinus","treeviewColorful","WOW","wow","MDBWow","$wowElement","customization","animated","assignElementCustomization","scroll","mdbWow","appear","animationName","iteration","fallback","or","duration","delay","shouldElementBeVisible","countRemoveTime","thisElementOffset","getOffset","thisElementHeight","documentHeight","windowHeight","innerHeight","scrollY","isElementTopVisible","isElementBottomVisible","isScrolledToTop","isScrolledToBottom","isDocumentHeightEqual","isOffsetHigherThanDocument","isElementBottomHidden","isScrolledOverTop","isNotScrolledToTop","isScrolledOverElement","defaultAnimationTime","removeTime","checkOptionsStringFormat","valueToReturn","console","box","getBoundingClientRect","body","docEl","documentElement","pageYOffset","clientTop","round","_value","sameValue","SEARCH","nativeSearch","searcher","previousLastIndex","y","isTouchDevice","toggleOpen","btn","querySelectorAll","classList","$btn","currentTarget","openFAB","closeFAB","$reveal","$clickedElem","isTitleClicked","isTitleIconClicked","isActivatorClicked","isActivatorIconClicked","takeRevealDown","takeRevealUp","revealElem","velocity","translateY","queue","easing","complete","$cardWrapper","$front","$back","$frontHeight","outerHeight","$backHeight","updateCounter","maxLength","actualLength","isValidLength","inputHasInvalidClass","addInputStyle","removeCounterElement","characterCounter","$counterElement","ready","accordionOpen","$collapsible","$panelHeaders","expandableOpen","stop","isChildOfPanelHeader","getPanelHeader","collapsible","defaults","accordion","collapsibleType","$pathInput","files","fileNames","file","MdbAutocomplete","dataColor","closeColor","closeBlurColor","inputFocus","inputBlur","inputFocusShadow","inputBlurShadow","enterCharCode","homeCharCode","endCharCode","arrowUpCharCode","arrowDownCharCode","tabCharCode","shiftCharCode","nextScrollHeight","assignOptions","$clearButton","$autocompleteWrap","handleEvents","setData","inputKeyupData","inputTabPrevent","inputLiClick","clearAutocomplete","setAutocompleteWrapHeight","changeSVGcolors","empty","$inputValue","appendOptions","$ulList","$ulItems","nextItemHeight","previousItemHeight","homeHandler","endHandler","arrowDownHandler","arrowUpHandler","item","fillSVG","color","mdbAutocomplete","windowLoaded","preloaderFading","fadeOut","removeAttr","load","rangeType","thumbHtml","rangeMousedown","updateThumbPosition","$thumb","minValue","maxValue","widthThumb","oneStep","leftPosition","thumbAnimation","tHeight","tWidth","tTop","tMarginLeft","tDuration","tEasing","marginLeft","showThumb","hideThumb","noThumb","isRightClick","addThumb","SideNav","settings","menuLeftMinBorder","menuLeftMaxBorder","menuRightMinBorder","menuRightMaxBorder","menuVelocityOffset","menuWidth","edge","breakpoint","timeDurationOpen","timeDurationClose","timeDurationOverlayOpen","timeDurationOverlayClose","easingOpen","easingClose","showOverlay","showCloseButton","slim","onOpen","onClose","$element","$elementCloned","menuOut","lastTouchVelocity","startPosition","startTime","endPosition","endTime","$menu","$sidenavOverlay","$dragTarget","newOptions","setMenuWidth","setMenuTranslation","openOnClick","bindTouchEvents","inputOnClick","handleSlim","removeMenu","$sidenavBg","innerWidth","xValue","callback","showSidenavOverlay","translateX","touchmoveEventHandler","touches","now","touchendEventHandler","borderTop","restoreMenu","overflow","hideSidenavOverlay","transition","touch","touchX","disableScrolling","buildSidenavOverlay","translateSidenavX","updateOverlayOpacity","changedTouches","velocityX","calculateTouchVelocityX","leftPos","rightPos","translateMenuX","enableScrolling","oldWidth","fromTo","isRightDirection","isLeftDirection","overlayPercentage","sideNav","elAttr","animate","setHash","parentsUntil","history","replaceState","Dropdown","$activator","$activates","inDuration","outDuration","easingEffectIn","easingEffectOut","constrainWidth","gutter","belowOrigin","alignment","isFocused","bindMultiLevelDropdownEvents","bindBootstrapEvents","submenu","$dropdown","effects","_getDropdownEffects","_dropdownEffectStart","effectIn","effectOut","_dropdownEffectEnd","mediaQuery","matchMedia","matches","defaultInEffect","defaultOutEffect","$dropdownMenu","$parentUl","parents","effectToStart","one","appendDropdownToActivator","handleHoverableDropdown","handleClickableDropdown","bindEvents","opened","unbind","placeDropdown","toEl","toElement","relatedTarget","hideDropdown","activatorClicked","activatorActive","dropdownContentClicked","eventType","outerWidth","showDropdown","durations","originHeight","offsetTop","currAlignment","_getHorizontalAlignment","gutterSpacing","$wrapper","verticalOffset","scrollOffset","doesNotFitFromBottom","doesNotFitFromTop","adjustedHeight","offsetLeft","elem","instances","returnPublicInterface","initAnimations","mdbDropdownAutoInit","FAILS_ON_PRIMITIVES","getOwnPropertyDescriptors","DropdownSearchable","$searchWrappers","fontWeight","borderRadius","borderColor","margin","bindSearchEvents","mdbDropSearch","originalVal","MaterialSelect","selectId","optionsSelected","maxSelectedOptions","uuid","_randomUUID","selectedOptionsIndexes","mutationObservers","observer","disconnect","customStatus","materialSelect","isInitialized","selectPreselectedOptions","optionIndex","_toggleSelectedValue","bindMutationObserverChange","bindResetButtonClick","_resetSelection","bindAddNewOptionClick","bindMaterialSelectFocus","bindMaterialSelectClick","bindMaterialSelectBlur","bindMaterialOptionsListTouchstart","bindMaterialSelectKeydown","bindMaterialSelectDropdownToggle","bindToggleAllClick","bindMaterialOptionMousedown","bindMaterialOptionClick","bindSingleMaterialOptionClick","bindSearchInputKeyup","bindHtmlClick","bindMobileDevicesMousedown","bindSaveBtnClick","MutationObserver","_onMutationObserverChange","attributes","childList","characterData","subtree","customId","clearMutationObservers","mutationsList","mutation","selectedValueIndex","isSelected","_setValueToMaterialSelect","selectedValuesCount","substring","ret","mdbSelectAutoInit","fill","$modal_dialog","def","swing","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","PI","easeOutSine","sin","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","sqrt","easeOutCirc","easeInOutCirc","easeInElastic","asin","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","Velocity","isWindow","nodeType","isPlainObject","expando","u","dequeue","unshift","Error","pageXOffset","scrollLeft","clientLeft","offsetParent","nodeName","borderTopWidth","borderLeftWidth","Utilities","isWrapped","isNode","h","v","w","isFinite","getControlPoints","T","isString","Easings","State","calls","setPropertyValue","endValue","startValue","currentValue","Hooks","registered","H","getRoot","N","rootPropertyValueCache","rootPropertyValue","L","unitType","scrollData","Normalizations","mobileHA","transformCache","translate3d","flushTransformCache","progress","isTicking","loop","isAnimating","Lists","transforms3D","Values","tweensContainer","documentMode","innerHTML","getElementsByTagName","webkitRequestAnimationFrame","mozRequestAnimationFrame","isFunction","isNodeList","jquery","Zepto","zepto","isZ","isSVG","SVGElement","isEmptyObject","isMobile","isAndroid","isGingerbread","isChrome","chrome","isFirefox","prefixElement","prefixMatches","scrollAnchor","scrollPropertyLeft","scrollPropertyTop","CSS","Redirects","Promise","begin","_cacheValues","computedStyle","hook","mock","major","minor","patch","debug","parentNode","tension","friction","dx","dv","linear","spring","exp","RegEx","isHex","valueUnwrap","wrappedValueAlreadyExtracted","valueSplit","colors","transformsBase","templates","textShadow","boxShadow","clip","backgroundPosition","transformOrigin","perspectiveOrigin","register","cleanRootPropertyValue","isCSSNullValue","extractValue","injectValue","blur","zoom","substr","black","blue","gray","green","red","white","hexToRgb","Names","camelCase","toUpperCase","SVGAttribute","prefixCheck","getUnitType","getDisplayType","tagName","add","className","getPropertyValue","offsetWidth","getComputedStyle","getBBox","getAttribute","container","direction","alternateValue","setAttribute","translate","skewX","skewY","scale","rotate","promise","myParent","lastPosition","lastParent","lastFontSize","emToPx","lastEmToPx","percentToPxWidth","lastPercentToPxWidth","percentToPxHeight","lastPercentToPxHeight","createElementNS","removeChild","remToPx","vwToPx","vhToPx","axis","opts","M","I","B","W","G","Y","D","Q","resolver","velocityQueueEntryFlag","delayTimer","elements","rejecter","clearTimeout","backwards","stagger","drag","requestAnimationFrame","hidden","paddingTop","paddingBottom","define","ArrayBufferModule","nativeArrayBufferSlice","viewSource","viewTarget","typedArrayConstructor","TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS","ArrayBufferViewCore","toOffset","typedArrayFrom","fromList","list","isArrayBuffer","isTypedArrayIndex","wrappedGetOwnPropertyDescriptor","wrappedDefineProperty","wrapper","CLAMPED","GETTER","SETTER","NativeTypedArrayConstructor","TypedArrayConstructorPrototype","exported","addElement","typedArrayOffset","$length","$len","checkCorrectnessOfIteration","iterable","getIteratorMethod","isArrayIteratorMethod","step","mapfn","mapping","iteratorMethod","$copyWithin","copyWithin","inc","$every","$fill","predicate","$findIndex","ArrayIterators","arrayValues","arrayKeys","arrayEntries","nativeTypedArrayIterator","CORRECT_ITER_NAME","typedArrayValues","$join","$lastIndexOf","$reduceRight","middle","arrayLike","$slice","$some","$sort","beginIndex","BYTES_PER_ELEMENT","$toLocaleString","toLocaleString","TO_LOCALE_STRING_BUG","Uint8ArrayPrototype","arrayToString","arrayJoin","factory","Waves","$$","isTouchAvailable","getWavesElements","nodes","obj","stringRepr","docElem","win","doc","ownerDocument","defaultView","getWindow","convertStyle","styleObj","Effect","button","ripple","relativeY","relativeX","pageY","pageX","rippleStyle","transform","ripples","getElementsByClassName","removeRipple","removeEventListener","TagWrapper","contains","replaceChild","img","TouchHandler","allowEvent","allow","registerEvent","eType","showEffect","srcElement","parentElement","getWavesEffectElement","timer","hideEffect","hideEvent","removeListeners","touchMove","moveEvent","attach","elementsLen","wait","centre","mousedown","hideRipple","mouseup","calm","displayEffect","topSpacing","zIndex","stopper","stickyClass","hasIndex","hasStopper","thisHeight","thisWidth","pushPoint","$window","stickyScroll","windowTop","stopPoint","parentWidth","diff","div","elMatches","Element","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","query","queryChildren","child","cls","main","rtl","thumb","rail","consuming","clicking","scrolling","scrollingClassTimeout","addScrollingClass","removeScrollingClass","isAlive","scrollingThreshold","EventElement","handlers","prototypeAccessors","isEmpty","eventName","this$1","unbindAll","EventManager","eventElements","createEvent","CustomEvent","evt","initCustomEvent","processScrollDiff","useScrollingClass","forceFireReachEvent","fields","ref","contentHeight","containerHeight","up","down","reach","setScrollingClassInstantly","processScrollDiff$1","toInt","eventElement","ee","once","onceHandler","env","isWebKit","supportsTouch","maxTouchPoints","DocumentTouch","supportsIePointer","msMaxTouchPoints","updateGeometry","roundedScrollTop","rect","containerWidth","contentWidth","scrollWidth","scrollbarXRail","scrollbarYRail","suppressScrollX","scrollXMarginOffset","scrollbarXActive","railXWidth","railXMarginWidth","railXRatio","scrollbarXWidth","getThumbSize","scrollbarXLeft","negativeScrollAdjustment","suppressScrollY","scrollYMarginOffset","scrollbarYActive","railYHeight","railYMarginHeight","railYRatio","scrollbarYHeight","scrollbarYTop","xRailOffset","isRtl","isScrollbarXUsingBottom","bottom","scrollbarXBottom","scrollbarXTop","yRailOffset","isScrollbarYUsingRight","scrollbarYRight","scrollbarYOuterWidth","scrollbarYLeft","scrollbarX","railBorderXWidth","scrollbarY","railBorderYWidth","updateCss","thumbSize","minScrollbarLength","maxScrollbarLength","bindMouseScrollHandler","startingScrollTop","startingMousePageY","scrollBy","mouseMoveHandler","mouseUpHandler","bindMoves","touchMode","keyboard","isDefaultPrevented","defaultPrevented","activeElement","contentDocument","shadowRoot","deltaX","deltaY","metaKey","wheelPropagation","shouldPreventDefault","wheel","mousewheelHandler","wheelDeltaX","wheelDeltaY","deltaMode","wheelDelta","getDeltaFromEvent","querySelector","cursor","overflowY","maxScrollTop","overflowX","maxScrollLeft","shouldBeConsumedByChild","shouldPrevent","useBothWheelAxes","wheelSpeed","isTop","isBottom","isLeft","isRight","ctrlKey","onwheel","onmousewheel","startOffset","speed","easingLoop","touchStart","touchEnd","PointerEvent","MSPointerEvent","applyTouchMove","differenceX","differenceY","getTouch","targetTouches","shouldHandle","pointerType","buttons","MSPOINTER_TYPE_MOUSE","clearInterval","currentOffset","currentTime","timeGap","magnitudeX","magnitudeY","swipeEasing","setInterval","PerfectScrollbar","userSettings","originalScrollLeft","isNegativeScroll","railXStyle","borderRightWidth","marginRight","railYStyle","styles","paddingLeft","paddingRight","borderBottomWidth","handlerName","lastScrollTop","lastScrollLeft","onScroll","update","removePsClasses","$container","listener","previousToast","toastId","toastType","info","success","warning","toastr","clear","$toastElement","clearOptions","getOptions","getContainer","clearToast","toastsToClear","clearContainer","removeToast","message","title","optionsOverride","notify","iconClass","iconClasses","subscribe","containerId","positionClass","createContainer","force","hideMethod","hideDuration","hideEasing","publish","preventDuplicates","shouldExit","intervalId","$titleElement","$messageElement","$progressElement","$closeElement","closeHtml","progressBar","hideEta","maxHideTime","response","toastClass","titleClass","messageClass","closeButton","newestOnTop","showMethod","showDuration","showEasing","onShown","timeOut","hideToast","updateProgress","stickAround","delayedHideToast","onclick","tapToDismiss","click","cancelBubble","override","onHidden","extendedTimeOut","percentage","deps","require","MaterialChips","$chipsWrapper","dataChip","secondaryPlaceholder","sortAutocompleteData","autocompleteDataCompareFn","$autocompleteList","backspace","arrowLeft","arrowRight","delete","comma","isPublicInterfaceCall","chips","initialized","renderChips","assign","bindChipsWrapperClick","bindChipsWrapperBlur","bindSingleChipClick","bindChipsWrapperKeydown","bindChipsInputClick","bindChipsInputFocusout","bindChipsInputKeydown","bindDeleteButtonClick","bindAutocompleteInputKeyup","bindAutocompleteOptionClick","getSelectedChip","chipIndex","selectChip","backspacePressed","deletePressed","leftArrowPressed","rightArrowPressed","nextIndex","deleteSelectedChip","selectLeftChip","selectRightChip","$chipsInput","enterPressed","commaPressed","addChip","lastChipIndex","deleteChip","lastChipText","$li","$selectedChip","siblingsLength","selectIndex","selectLeftRightChip","currentIndex","getSingleChipTemplate","setPlaceholder","chip","image","$newChip","insertBefore","$chip","materialChip","materialChips","nativeAssign","chr","Sticky","startScrolling","minWidth","elementWidth","elementHeight","initialScrollTop","$placeholder","setPushPoint","setStopperPosition","isScreenHeightEnough","$pushPoint","handleResize","$parent","appendPlaceholder","stickyStart","stickyEnd","hasZIndex","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","$html","supportsTransitions","PickerConstructor","ELEMENT","COMPONENT","OPTIONS","IS_DEFAULT_THEME","handlingOpen","SETTINGS","CLASSES","klasses","$ELEMENT","OPENCOUNTER","PickerInstance","$node","autofocus","getActiveElement","readOnly","editable","component","$root","picker","aria","$holder","createWrappedComponent","prepareElementHolder","formatSubmit","hiddenName","hiddenPrefix","hiddenSuffix","_hidden","format","func","context","later","timeout","immediate","callNow","handleKeydownEvent","haspopup","expanded","readonly","owns","containerHidden","onStart","onRender","onStop","onSet","currentStyle","theme","entireComponent","dontGiveFocus","getScrollbarWidth","frame","getRealEventTarget","isSimulated","keycode","keycodeToMove","go","highlighted","highlight","closeOnSelect","giveFocus","handleFocusToOpenEvent","focused","thing","thingItem","thingValue","thingIsObject","thingObject","updateInput","muted","formats","internal","thingName","thingMethod","namesCount","_trigger","methodList","node","holder","keydown","focusin","targetData","targetDisabled","navDisabled","href","nav","pick","closeOnClear","isKeycodeDelete","$outer","widthWithoutScroll","widthWithScroll","originalEvent","attribute","ariaSet","err","prefix","group","groupObject","loopObjectScope","nodesList","counter","lead","scope","isDate","isInteger","getDate","ariaAttr","attrVal","Component","componentData","Picker","inline","Popper","placement","modifiers","enabled","currentView","selectYear","buttonOk","Selector","CUSTOMFILE","CUSTOMFILELABEL","FORM","INPUT","getDefaultText","defaultText","findFirstChildNode","restoreDefaultText","bsCustomFileInput","fileApi","File","getSelectedFiles","hasAttribute","splittedValue","handleInputChange","inputValue","handleFormReset","customFileList","Event","formSelector","customFileInputList","formList","_i","_len","form","_i2","_len2","Chart","2","colorNames","getRgba","rgb","getHsla","alpha","getHwb","rgbaString","rgba","percentaString","hslaString","hsla","num","hexDouble","getRgb","getHsl","getAlpha","vals","hexString","rgbString","percentString","hslString","hwbString","hwb","keyword","reverseNames","3","convert","Color","hsl","hsv","cmyk","setValues","lightness","whiteness","cyan","setSpace","rgbArray","hslArray","hsvArray","hwbArray","cmykArray","rgbaArray","hslaArray","setChannel","hue","saturation","saturationv","blackness","magenta","yellow","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","level","contrastRatio","dark","light","negate","lighten","ratio","darken","saturate","desaturate","whiten","blacken","greyscale","clearer","opaquer","degrees","mix","mixinColor","weight","w1","w2","toJSON","spaces","maxes","getValues","capped","chans","sname","svalues","4","rgb2hsl","delta","rgb2hsv","rgb2hwb","rgb2cmyk","rgb2keyword","reverseKeywords","rgb2xyz","rgb2lab","xyz","hsl2rgb","t1","t2","t3","hsv2rgb","hi","hwb2rgb","wh","bl","cmyk2rgb","xyz2rgb","xyz2lab","lab2xyz","lab","y2","lab2lch","atan2","lab2rgb","lch2lab","lch","hr","keyword2rgb","cssKeywords","rgb2lch","hsl2hsv","hsl2hwb","hsl2cmyk","hsl2keyword","hsv2hsl","sl","hsv2hwb","hsv2cmyk","hsv2keyword","hwb2hsl","hwb2hsv","hwb2cmyk","hwb2keyword","cmyk2hsl","cmyk2hsv","cmyk2hwb","cmyk2keyword","keyword2hsl","keyword2hsv","keyword2hwb","keyword2cmyk","keyword2lab","keyword2xyz","xyz2lch","lch2xyz","lch2rgb","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","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","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","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","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellowgreen","5","conversions","Converter","pair","convs","routeSpace","fspace","6","7","helpers","Animation","animationService","Interaction","layouts","platform","plugins","Scale","scaleService","Ticks","Tooltip","initialize","Legend","legend","_element","Title","pluginService","PluginBase","canvasHelpers","canvas","layoutService","8","Bar","config","9","Bubble","10","Doughnut","11","Line","12","PolarArea","13","Radar","14","Scatter","15","_set","scales","xAxes","categoryPercentage","barPercentage","gridLines","offsetGridLines","yAxes","rectangle","borderSkipped","tooltips","callbacks","yLabel","datasets","datasetIndex","xLabel","controllers","bar","DatasetController","dataElementType","Rectangle","meta","me","getMeta","stack","getDataset","reset","ilen","rects","_ruler","getRuler","updateElement","chart","dataset","custom","rectangleOptions","_xScale","getScaleForId","xAxisID","_yScale","yAxisID","_datasetIndex","_index","_model","datasetLabel","valueAtIndexOrDefault","borderWidth","updateElementGeometry","pivot","model","vscale","getValueScale","base","getBasePixel","horizontal","isHorizontal","ruler","vpixels","calculateBarValuePixels","ipixels","calculateBarIndexPixels","head","center","getValueScaleId","getIndexScaleId","getIndexScale","_getStacks","stacked","stacks","getDatasetMeta","isDatasetVisible","getStackCount","getStackIndex","stackCount","pixels","getPixelForValue","isNullOrUndef","barThickness","curr","ticks","getTicks","getPixelForTick","computeMinSampleSize","imeta","ivalue","getRightValue","controller","range","percent","chunk","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","valueOrDefault","maxBarThickness","draw","clipArea","ctx","chartArea","unclipArea","horizontalBar","16","dataPoint","bubble","Point","points","xScale","yScale","_resolveElementOptions","dsIndex","getPixelForDecimal","_options","hitRadius","pointStyle","rotation","radius","skip","setHoverStyle","$previousStyle","hoverBackgroundColor","getHoverColor","hoverBorderColor","hoverBorderWidth","hoverRadius","resolve","dataIndex","17","animation","animateRotate","animateScale","legendCallback","generateLabels","ds","arc","arcOpts","fillStyle","strokeStyle","lineWidth","onClick","legendItem","cutoutPercentage","circumference","tooltipItem","dataLabel","doughnut","pie","Arc","linkScales","noop","getRingIndex","ringIndex","availableWidth","availableHeight","minSize","startAngle","endAngle","contains0","contains90","contains180","contains270","cutout","getMaxBorderWidth","outerRadius","innerRadius","radiusLength","getVisibleDatasetCount","offsetX","offsetY","total","calculateTotal","animationOpts","centerX","centerY","calculateCircumference","elementOpts","arcs","hoverWidth","_chart","18","showLines","spanGaps","lineEnabled","showLine","line","datasetElementType","lineElementOptions","lineTension","_scale","_children","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","steppedLine","stepped","cubicInterpolationMode","updateBezierControlPoints","getPointBackgroundColor","pointBackgroundColor","getPointBorderColor","pointBorderColor","getPointBorderWidth","pointBorderWidth","getPointRotation","pointRotation","pointOptions","pointRadius","pointHitRadius","calculatePointY","dsMeta","sumPos","sumNeg","stackedRightValue","rightValue","controlPoints","area","capControlPoint","pt","splineCurveMonotone","splineCurve","previousItem","nextItem","controlPointPreviousX","previous","controlPointPreviousY","controlPointNextX","controlPointNextY","capBezierPoints","halfBorderWidth","pointHoverBackgroundColor","pointHoverBorderColor","pointHoverBorderWidth","pointHoverRadius","19","angleLines","circular","pointLabels","beginAtZero","polarArea","angle","starts","_starts","angles","_angles","_updateRadius","countVisibleElements","_computeAngle","xCenter","yCenter","datasetStartAngle","distance","getDistanceFromCenterForValue","resetRadius","20","radar","_loop","pointElementOptions","pointPosition","getPointPositionForValue","21","scatter","22","currentStep","numSteps","onAnimationProgress","onAnimationComplete","23","onProgress","onComplete","frameDuration","animations","dropFrames","request","addAnimation","lazy","animating","cancelAnimation","requestAnimFrame","startDigest","framesToDrop","advance","24","updateConfig","removeBox","configMerge","ensureScalesHaveIDs","buildOrUpdateScales","tooltip","positionIsHorizontal","types","construct","initConfig","acquireContext","aspectRatio","_bufferedRender","retinaScale","devicePixelRatio","responsive","initToolTip","silent","maintainAspectRatio","newWidth","getMaximumWidth","newHeight","getMaximumHeight","newSize","onResize","responsiveAnimationDuration","scalesOptions","scaleOptions","xAxisOptions","yAxisOptions","items","updated","dtype","dposition","isDefault","scaleType","scaleClass","getScaleConstructor","mergeTicksOptions","hasUpdated","addScalesToLayout","buildOrUpdateControllers","newControllers","destroyDatasetMeta","updateIndex","ControllerClass","resetElements","_invalidate","_data","buildOrUpdateElements","updateLayout","updateDatasets","lastActive","_bufferedRequest","updateDataset","animationOptions","animationObject","easingFunction","stepDecimal","easingValue","boxes","drawDatasets","_drawTooltip","drawDataset","getElementAtEvent","modes","single","getElementsAtEvent","intersect","getElementsAtXAxis","getElementsAtEventForMode","getDatasetAtEvent","_meta","generateLegend","unbindEvents","releaseContext","toBase64Image","toDataURL","_chartInstance","listeners","_listeners","eventHandler","events","updateHoverStyle","changed","handleEvent","_start","bufferedRequest","animationDuration","hoverOptions","onHover","arrayEquals","Controller","25","arrayEvents","unlistenArrayEvents","stub","_chartjs","addElements","scaleID","createMetaDataset","createMetaData","metaData","addElementAndReset","resyncElements","removeHoverStyle","merge","numMeta","numData","insertElements","onDataPush","onDataPop","pop","onDataShift","onDataSplice","onDataUnshift","inherits","26","27","configuration","_view","ease","actual","origin","c0","c1","interpolate","tooltipPosition","28","parseMaxStyle","styleValue","parentProperty","valueInPixels","isConstrainedValue","getConstraintDimension","domNode","maxStyle","percentageProperty","_getParentNode","constrainedNode","constrainedContainer","hasCNode","hasCContainer","infinity","POSITIVE_INFINITY","merger","tval","sval","scaleMerge","getScaleDefaults","_merger","slen","where","collection","filterCallback","filtered","findNextWhere","arrayToSearch","startIndex","currentItem","findPreviousWhere","almostEquals","epsilon","almostWhole","rounded","NEGATIVE_INFINITY","log10","LOG10E","powerOf10","toRadians","toDegrees","radians","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","distanceBetweenPoints","pt1","pt2","aliasPixel","pixelWidth","firstPoint","middlePoint","afterPoint","current","d01","d12","s01","s12","fa","fb","EPSILON","pointBefore","pointCurrent","pointAfter","alphaK","betaK","tauK","squaredMagnitude","pointsWithTangents","deltaK","mK","pointsLen","slopeDeltaX","niceNum","fraction","oRequestAnimationFrame","msRequestAnimationFrame","getRelativePosition","mouseX","mouseY","boundingRect","getStyle","currentDevicePixelRatio","getConstraintWidth","getConstraintHeight","_calculatePadding","parentDimension","host","cw","forceRatio","pixelRatio","fontString","pixelSize","fontStyle","longestText","font","arrayOfThings","cache","gc","garbageCollect","longest","measureText","nestedThing","gcLen","textWidth","numberOfLabelLines","numberOfLines","CanvasGradient","defaultColor","colorValue","CanvasPattern","29","parseVisibleItems","jlen","getIntersectItems","inRange","getNearestItems","distanceMetric","minDistance","nearestItems","getCenterPoint","getDistanceMetricForAxis","useX","useY","indexMode","nearest","getArea","intersectsItem","inXRange","inYRange","30","defaultFontColor","defaultFontFamily","defaultFontSize","defaultFontStyle","layout","31","filterByPosition","sortByWeight","_tmpIndex_","v0","v1","addBox","fullWidth","layoutItem","configure","props","layoutOptions","toPadding","leftPadding","rightPadding","topPadding","bottomPadding","leftBoxes","rightBoxes","topBoxes","bottomBoxes","chartAreaBoxes","chartWidth","chartHeight","chartAreaHeight","verticalBoxWidth","horizontalBoxHeight","maxChartAreaWidth","maxChartAreaHeight","minBoxSizes","maxHorizontalLeftPadding","maxHorizontalRightPadding","maxVerticalTopPadding","maxVerticalBottomPadding","horizontalBox","getPadding","boxPadding","verticalBox","totalLeftBoxesWidth","totalRightBoxesWidth","totalTopBoxesHeight","totalBottomBoxesHeight","fitBox","minBoxSize","scaleMargin","leftPaddingAddition","topPaddingAddition","newMaxChartAreaHeight","newMaxChartAreaWidth","placeBox","minBox","32","_plugins","_cacheId","plugin","unregister","idx","getAll","params","descriptors","$plugins","33","labelsFromTicks","getLineValue","lineValue","computeTextSize","tick","parseFontOptions","globalDefaults","family","parseLineHeight","toLineHeight","drawBorder","drawOnChartArea","drawTicks","tickMarkLength","zeroLineWidth","zeroLineColor","zeroLineBorderDash","zeroLineBorderDashOffset","scaleLabel","labelString","minRotation","maxRotation","mirror","autoSkip","autoSkipPadding","labelOffset","formatters","_ticks","beforeUpdate","maxWidth","margins","longestTextCache","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","beforeTickToLabelConversion","convertTicksToLabels","afterTickToLabelConversion","beforeCalculateTickRotation","calculateTickRotation","afterCalculateTickRotation","beforeFit","fit","afterFit","afterUpdate","tickOpts","userCallback","tickFont","labelRotation","cosRotation","originalLabelWidth","labelWidth","tickWidth","angleRadians","scaleLabelOpts","gridLineOpts","isFullWidth","deltaHeight","largestTextWidth","tallestLabelHeightInLines","lineSpace","tickPadding","longestLabelWidth","labelHeight","firstLabelWidth","lastLabelWidth","handleMargins","rawValue","getLabelForIndex","getValueForPixel","pixel","finalVal","decimal","valueOffset","getBaseValue","_autoSkip","skipRatio","maxTicks","optionTicks","tickCount","labelRotationRadians","longestRotatedLabel","maxTicksLimit","optionMajorTicks","isRotated","tickFontColor","fontColor","majorTickFontColor","majorTickFont","tl","scaleLabelFontColor","scaleLabelFont","scaleLabelPadding","itemsToDraw","axisWidth","xTickStart","xTickEnd","yTickStart","yTickEnd","lineColor","tx1","ty1","tx2","ty2","x1","y1","labelX","labelY","zeroLineIndex","textAlign","textBaseline","labelYOffset","xLineValue","labelXOffset","yLineValue","glWidth","glColor","glBorderDash","glBorderDashOffset","itemToDraw","save","setLineDash","lineDashOffset","beginPath","moveTo","lineTo","stroke","restore","lineCount","fillText","scaleLabelX","scaleLabelY","halfLineHeight","34","constructors","registerScaleType","scaleConstructor","scaleDefaults","updateScaleDefaults","additions","35","tickValue","logDelta","tickString","logTick","toExponential","numDecimal","logarithmic","remain","36","titleFontStyle","titleSpacing","titleMarginBottom","titleFontColor","titleAlign","bodySpacing","bodyFontColor","bodyAlign","footerFontStyle","footerSpacing","footerMarginTop","footerFontColor","footerAlign","yPadding","xPadding","caretPadding","caretSize","cornerRadius","multiKeyBackground","displayColors","beforeTitle","tooltipItems","labelCount","afterTitle","beforeBody","beforeLabel","labelColor","labelTextColor","afterLabel","afterBody","beforeFooter","footer","afterFooter","positioners","average","eventPosition","nearestElement","tp","mergeOpacity","colorString","pushOrConcat","toPush","splitNewlines","getBaseModel","tooltipOpts","xAlign","yAlign","_bodyFontFamily","bodyFontFamily","_bodyFontStyle","bodyFontStyle","_bodyAlign","bodyFontSize","_titleFontFamily","titleFontFamily","_titleFontStyle","titleFontSize","_titleAlign","_footerFontFamily","footerFontFamily","_footerFontStyle","footerFontSize","_footerAlign","legendColorBackground","getBeforeAfterBodyLines","_lastActive","getTitle","lines","getBeforeBody","getBody","bodyItems","bodyItem","getAfterBody","getFooter","existingModel","_active","backgroundPoint","tooltipSize","caretX","caretY","labelColors","labelTextColors","_eventPosition","itemSort","dataPoints","combinedBodyLength","titleLineCount","footerLineCount","widthPadding","maxLineWidth","getTooltipSize","vm","paddingAndSize","radiusAndPadding","getBackgroundPoint","lf","olf","orf","yf","midX","midY","determineAlignment","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","tmp","drawTitle","drawBody","xLinePadding","fillLineOfText","drawColorBoxes","textColor","fillRect","strokeRect","drawFooter","drawBackground","quadraticCurveTo","closePath","hasTooltipContent","37","inLabelRange","chartX","chartY","pointRelativePosition","betweenAngles","withinRadius","halfAngle","halfRadius","centreAngle","rangeFromCentre","sA","eA","lineJoin","38","currentVM","globalOptionLineElements","lastDrawnIndex","lineCap","39","xRange","drawPoint","40","isVertical","getBarBounds","halfWidth","halfHeight","signX","signY","barSize","halfStroke","borderLeft","borderRight","borderBottom","corners","startCorner","cornerAt","corner","bounds","41","42","clearRect","roundedRect","arcTo","edgeLength","xOffset","yOffset","SQRT2","leftX","topY","sideSize","drawImage","flip","bezierCurveTo","drawRoundedRectangle","43","thisArg","loopable","a0","a1","klen","_mergerIf","mergeIf","sources","setFn","extensions","ChartElement","Surrogate","__super__","callCallback","getValueOrDefault","getValueAtIndexOrDefault","44","easingEffects","45","inputs","46","47","getContext","48","EXPANDO_KEY","CSS_PREFIX","CSS_RENDER_MONITOR","CSS_RENDER_ANIMATION","ANIMATION_START_EVENTS","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","readUsedSize","eventListenerOptions","supports","passive","nativeEvent","addResizeListener","ticking","resizer","cssText","expand","shrink","_reset","createResizer","renderProxy","reflow","watchForRender","firstChild","removeResizeListener","unwatchForRender","_enabled","keyframes","_style","createTextNode","getElementById","renderHeight","renderWidth","initial","displayWidth","displayHeight","initCanvas","removeAttribute","proxies","fromNativeEvent","addEvent","removeEvent","49","basic","dom","implementation","50","filler","51","propagate","mappers","boundary","decodeFill","computeBoundary","scaleBottom","scaleTop","scaleZero","getBasePosition","resolveTarget","visited","createMapper","isDrawable","drawArea","curve0","curve1","len0","len1","afterDatasetsUpdate","$filler","mapper","beforeDatasetDraw","p0","p1","d0","d1","span","doFill","52","getBoxWidth","labelOpts","usePointStyle","boxWidth","ci","lineDash","legendHitBoxes","doughnutMode","beforeBuildLabels","buildLabels","afterBuildLabels","legendItems","globalDefault","labelFont","hitboxes","lineWidths","totalHeight","vPadding","columnWidths","totalWidth","currentColWidth","currentColHeight","itemHeight","itemWidth","lineDefault","legendWidth","isLineWidthZero","offSet","drawLegendBox","halfFontSize","xLeft","yMiddle","lh","hitBox","createNewLegendAndAttach","legendOpts","beforeInit","afterEvent","53","textSize","titleX","titleY","titleFont","createNewTitleBlockAndAttach","titleOpts","titleBlock","54","DatasetScale","getLabels","xLabels","yLabels","minIndex","maxIndex","valueCategory","offsetAmt","valueWidth","widthOffset","valueHeight","heightOffset","horz","valueDimension","55","defaultConfig","LinearScale","LinearScaleBase","IDMatches","hasStacks","valuesPerStack","positiveValues","negativeValues","relativePoints","valuesForType","minVal","maxVal","handleTickRangeOptions","getTickLimit","tickFontSize","handleDirectionalChanges","innerDimension","ticksAsNumbers","56","minSign","maxSign","setMin","suggestedMin","setMax","suggestedMax","numericGeneratorOptions","precision","stepSize","fixedStepSize","generationOptions","dataRange","factor","spacing","niceRange","niceMin","niceMax","numSpaces","generateTicks","57","LogarithmicScale","minNotZero","significand","tickVal","endExp","endSignificand","lastTick","tickValues","_getFirstTickValue","firstTickValue","58","showLabelBackdrop","backdropColor","backdropPaddingY","backdropPaddingX","getValueCount","getPointLabelFontOptions","pointLabelOptions","determineLimits","getTextAlignForAngle","adjustPointPositionForLabelHeight","numberOrZero","param","LinearRadialScale","drawingArea","largestPossibleRadius","plFont","furthestLimits","furthestAngles","_pointLabelSizes","valueCount","getPointPosition","getIndexAngle","hLimits","vLimits","setReductions","fitWithPointLabels","setCenterPoint","radiusReductionLeft","radiusReductionRight","radiusReductionTop","radiusReductionBottom","leftMovement","rightMovement","topMovement","bottomMovement","maxRight","maxLeft","maxTop","maxBottom","scalingFactor","distanceFromCenter","thisAngle","tickFontStyle","tickFontFamily","tickLabelFont","yCenterOffset","drawRadiusLine","angleLineOpts","pointLabelOpts","outerDistance","outerPosition","pointLabelPosition","pointLabelFontColor","drawPointLabels","59","moment","MIN_INTEGER","MAX_INTEGER","INTERVALS","millisecond","common","steps","minute","hour","day","week","month","quarter","year","UNITS","sorter","arrayUnique","hash","out","table","skey","tkey","mid","i0","i1","lo","lookup","momentify","parser","parse","time","startOf","determineMajorUnit","unit","generate","capacity","timeOpts","minUnit","interval","determineUnitForAutoTicks","unitStepSize","weekday","isoWeekday","majorTicksEnabled","milliseconds","determineStepSize","TimeScale","warn","timestamp","timestamps","endOf","_horizontal","_table","_timestamps","getLabelCapacity","_unit","as","determineUnitForFormatting","_majorUnit","distribution","buildLookupTable","_offsets","upper","lower","computeOffsets","_labelFormat","momentDate","hasTime","determineLabelFormat","majorUnit","ticksFromTimestamps","tooltipFormat","tickFormatFunction","formatOverride","displayFormats","minorFormat","majorFormat","majorTime","majorTickOpts","formatter","getPixelForOffset","getLabelWidth","ticksOpts","tickLabelWidth","sinRotation","exampleTime","exampleLabel","displayFormat","screen","deviceXDPI","logicalXDPI","utils","toTextLines","toFontString","parseFont","bound","arrayDiff","updates","rasterize","orient","x0","y0","dy","ln","R_INSIDE","R_LEFT","R_RIGHT","R_BOTTOM","R_TOP","region","compute","anchor","segment","clamp","r0","r1","clipped","vx","vy","align","aligned","ry","sx","sy","helpers$1","getScaleOrigin","drawTextLine","cfg","shadow","shadowBlur","stroked","strokeText","filled","Label","_config","_rects","_ctx","_el","_modelize","positioner","textShadowBlur","textShadowColor","textStrokeColor","textStrokeWidth","th","tw","tx","ty","boundingRects","geometry","globalAlpha","bgColor","drawFrame","strokeColor","strokeWidth","textGeometry","shadowColor","drawText","helpers$2","rotated","cx","cy","projected","dp","toAxis","HitBox","_rotation","_rect","coordinates","vs","intersects","other","pr0","pr1","_points","axes","prepare","$layout","_box","_hidable","_visible","_idx","sa","sb","dirty","collider","s0","s1","collide","h0","h1","compute$1","helpers$3","helpers$4","DEFAULT_KEY","$context","$groups","_key","_dirty","handleMoveEvents","leave","_labels","_hovered","dispatchMoveEvents","datalabels","_actives","_listened","_datasets","afterDatasetUpdate","configs","afterDatasetsDraw","beforeEvent","handleClickEvents","actives","invalidate","ChartDataLabels","createHTML","forcedStringHTMLMethod","quot","PhotoSwipe","features","createEl","getScrollY","getChildByClass","nextSibling","arraySearch","sine","inOut","cubic","detectFeatures","oldIE","all","raf","caf","cancelAnimationFrame","pointerEvent","pointerEnabled","msPointerEnabled","appVersion","isOldIOSPhone","isOldAndroid","androidVersion","isMobileOpera","svg","createSVGRect","allowPanToNext","bgOpacity","mouseUsed","pinchToClose","closeOnScroll","closeOnVerticalDrag","verticalDragRange","hideAnimationDuration","showAnimationDuration","showHideOpacity","escKey","arrowKeys","mainScrollEndFriction","panEndFriction","isClickableElement","getDoubleTapZoom","initialZoomLevel","maxSpreadZoom","modal","scaleMode","J","K","U","X","Z","ba","ca","da","ea","ga","ha","ia","ja","ka","ma","na","oa","pa","qa","ra","ta","ua","va","wa","xa","ya","publicMethods","za","_b","Aa","Ba","Ca","Da","Ea","bg","Fa","currItem","fitRatio","Ga","lc","Ha","initialPosition","Ia","Ja","Ka","tb","La","Ma","Na","Oa","Ra","hc","Sa","Ta","Ua","Wa","returnValue","Xa","Ya","setScrollOffset","Za","$a","_a","ab","bb","cb","db","shout","listen","viewportSize","isMainScrollAnimating","getZoomLevel","getCurrentIndex","isDragging","isZooming","applyZoomPan","framework","template","scrollWrap","itemHolders","perspective","Va","updateSize","ui","$b","mainClass","setContent","updateCurrItem","bc","Wb","yb","panTo","goTo","updateCurrZoomItem","invalidateCurrItems","needsUpdate","cleanSlide","zoomTo","gb","hb","ib","jb","kb","lb","mb","nb","ob","pb","qb","rb","ub","xb","Cb","Db","prevent","Bb","Eb","identifier","Fb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Zb","pointerId","zb","Pb","Ob","vb","Ub","Gb","Qb","Rb","calculateSwipeSpeed","Tb","Vb","Sb","lastFlickOffset","lastFlickDist","lastFlickSpeed","slowDownRatio","slowDownRatioReverse","speedDecelerationRatio","speedDecelerationRatioAbs","distanceOffset","backAnimDestination","backAnimStarted","calculateOverBoundsAnimOffset","calculateAnimOffset","timeDiff","panAnimLoop","zoomPan","lastNow","initGestures","likelyTouchDevice","mousemove","Xb","Yb","initialLayout","getThumbBoundsFn","loadError","miniImg","webkitBackfaceVisibility","cc","dc","ec","errorMsg","forceProgressiveLoading","preload","getNumItemsFn","vGap","ic","imageAppended","loaded","jc","loading","loadComplete","onload","onerror","kc","lastChild","mc","baseDiv","clearPlaceholder","lazyLoadItem","initController","getItemAt","preloader","allowProgressiveImg","msrc","nc","qc","oc","pc","origEvent","releasePoint","initTap","onTapStart","onTapRelease","wb","initDesktopZoom","setupDesktopZoom","handleMouseWheel","mouseZoomedIn","detail","toggleDesktopZoom","rc","sc","tc","uc","vc","wc","xc","yc","zc","Ac","Bc","Cc","Dc","galleryUID","Ec","Fc","Gc","galleryPIDs","pid","Hc","location","initHistory","updateURL","onHashChange","back","pushState","pathname","search","PhotoSwipeUI_Default","barsSize","closeElClasses","timeToIdle","timeToIdleOutside","loadingIndicatorDelay","addCaptionHTMLFn","closeEl","captionEl","fullscreenEl","zoomEl","shareEl","counterEl","arrowEl","preloaderEl","tapToClose","tapToToggleControls","clickToCloseNonZoomable","shareButtons","url","download","getImageURLForShare","getPageURLForShare","getTextForShare","indexIndicatorSep","fitControlsWidth","onTap","encodeURIComponent","parseShareButtonOut","setIdle","onInit","isFullscreen","exit","hideControls","showControls","onGlobalTap","onMouseOver","eventK","updateFullscreen","getFullscreenAPI","naturalWidth","updateIndexIndicator","supportsFullscreen","exitFullscreen","mozCancelFullScreen","webkitExitFullscreen","msExitFullscreen","requestFullscreen","enterK","exitK","elementK","mozRequestFullScreen","webkitRequestFullscreen","msRequestFullscreen","ALLOW_KEYBOARD_INPUT","gallerySelector","onThumbnailsClick","clickedListItem","clickedGallery","numChildNodes","nodeIndex","openPhotoSwipe","galleryElement","disableAnimation","fromURL","pswpElement","figureEl","linkEl","thumbElements","numNodes","parseThumbnailElements","thumbnail","pageYScroll","galleryElements","hashData","vars","gid","photoswipeParseHash","initPhotoSwipeFromDOM","DatePicker","collectionDisabled","calendar","elementValue","elementDataValue","valueString","formatString","isRTL","disable","enable","timeChange","highlightedObject","targetDate","date","selectMonth","includeToday","buttonToday","calendarItem","isInfiniteValue","getFullYear","getMonth","getDay","createRange","createDate","withinRange","dateUnit","overlapRanges","two","rel","setDate","navigate","targetDateObject","targetYear","targetMonth","isTargetArray","isTargetObject","viewsetObject","setHours","measure","viewset","dateObject","hasEnabledBeforeTarget","hasEnabledAfterTarget","reachedMin","reachedMax","originalDateObject","isFlippedBase","minLimitObject","maxLimitObject","hasEnabledWeekdays","dateTime","dateToVerify","isDisabledMatch","dateToDisable","firstDay","inverted","parsingObject","toArray","formattingLabel","formatLength","yyyy","yy","mm","dd","getWordLengthFromCollection","word","getFirstWordLength","ddd","weekdaysShort","dddd","weekdaysFull","mmm","monthsShort","mmmm","monthsFull","itemObject","isDateExact","isDateOverlap","flipEnable","deactivate","datesToDisable","disabledItems","unitToDisable","matchFound","activate","datesToEnable","disabledItemsCount","unitToEnable","disabledUnit","isExactRange","isOpen","fullCollection","nowObject","selectedObject","disabledCollection","tableHead","showWeekdaysFull","DAYS_IN_WEEK","weekdays","createMonthNav","controls","labelMonthNext","labelMonthPrev","createMonthLabel","monthsCollection","showMonthsShort","selectMonths","loopedMonth","labelMonthSelect","createYearLabel","focusedYear","numberYears","selectYears","minYear","maxYear","lowestYear","highestYear","availableYears","neededYears","loopedYear","labelYearSelect","header","WEEKS_IN_CALENDAR","rowCounter","shiftDateBy","isHighlighted","formattedDate","infocus","outfocus","activedescendant","today","buttonClear","buttonClose","navPrev","navNext","pickadate","$pickerInstance","labeldayFirstThreeLetters","monthFirstUC","elementOpenData","apiParams","scaleColors","normalizeFunction","selectedRegions","selectedMarkers","mapObject","regionName","vectorMap","jvm","Map","maps","orgEvent","absDelta","fix","HORIZONTAL_AXIS","pageHeight","lowestDelta","shouldAdjustOldDeltas","deltaFactor","nullLowestDeltaTimeout","nullLowestDelta","dispatch","handle","special","adjustOldDeltas","toFix","toBind","fixHooks","mouseHooks","mousewheel","setup","getLineHeight","getPageHeight","teardown","unmousewheel","temp","parentClass","mixin","MAX_VALUE","MIN_VALUE","whenImageLoaded","deferred","Deferred","reject","isImageUrl","AbstractElement","applyAttr","AbstractCanvasElement","setSize","rootElement","classPrefix","addPath","addCircle","addImage","addText","addGroup","parentGroup","AbstractShapeElement","isHovered","updateStyle","setStyle","attrs","mergeStyles","selectedHover","newStyles","svgns","getElementCtr","ctr","SVGGroupElement","SVGCanvasElement","defsElement","applyTransformParams","transX","transY","SVGShapeElement","patternEl","imageEl","images","then","setAttributeNS","imageCounter","SVGPathElement","SVGCircleElement","SVGImageElement","SVGTextElement","VMLElement","VMLInitialized","initializeVML","namespaces","rvml","createStyleSheet","addRule","VMLGroupElement","coordorigin","VMLCanvasElement","paths","coordsize","VMLShapeElement","fillElement","strokeElement","fillcolor","strokecolor","strokeweight","VMLPathElement","pathSvgToVml","matrix","ctrlx","ctrly","coords","VMLCircleElement","VectorCanvas","SVGAngle","impl","SimpleScale","getValue","OrdinalScale","NumericScale","setScale","setNormalizeFunction","clearMinValue","clearMaxValue","lengthes","fullLength","vectorLength","vectorSubtract","vectorToNum","vectorAdd","vectorMult","vector","vector1","vector2","extent","LN10","ColorScale","rgbToArray","numToRgb","arrayToRgb","ar","series","cssClass","vertical","legendCntVertical","legendCntHorizontal","sample","inner","markerStyle","background","labelRender","DataSeries","setAttributes","shape","Proj","degRad","radDeg","sgn","mill","lat","lng","mill_inv","atan","merc","merc_inv","aea","lambda0","fi1","fi2","fi","lambda","theta","ro","ro0","aea_inv","xCoord","yCoord","lcc","fi0","lcc_inv","MapObject","getLabelText","getLabelOffsets","offsets","setHovered","setSelected","Region","bbox","labelStyle","labelsGroup","updateLabelPosition","Marker","isImage","createShape","defaultParams","mapData","markers","regions","regionsColors","regionsData","defaultWidth","defaultHeight","setBackgroundColor","apiEvents","bindContainerTouchEvents","MSGesture","bindContainerPointerEvents","bindContainerEvents","bindElementEvents","createTip","zoomButtons","bindZoomButtons","createRegions","createMarkers","focusOn","setFocus","setSelectedRegions","setSelectedMarkers","createSeries","baseTransX","baseTransY","baseScale","curBaseScale","applyTransform","maxTransX","maxTransY","minTransX","minTransY","repositionMarkers","repositionLabels","oldPageX","oldPageY","mouseDown","panOnDrag","onContainerMouseUp","zoomOnScroll","zoomStep","zoomOnScrollSpeed","tip","touchStartScale","touchStartDistance","touchY","centerTouchX","centerTouchY","lastTouchesLength","handleTouchEvent","transXOld","transYOld","gesture","translationX","translationY","addPointer","mouseMoved","delegate","baseVal","tipText","tipShowEvent","overEvent","tipWidth","tipHeight","clickEvent","regionsSelectable","markersSelectable","clearSelected","zoomAnimate","anchorX","anchorY","isCentered","scaleStart","scaleDiff","transXStart","transXDiff","transYStart","transYDiff","viewportChangeEvent","zoomMax","zoomMin","itemBbox","codes","latLngToPoint","getSelected","getSelectedRegions","getSelectedMarkers","clearSelectedRegions","clearSelectedMarkers","getMapObject","getRegionName","regionLabelsGroup","regionStyle","regionLabelStyle","marker","markerConfig","markersArray","markersGroup","markerLabelsGroup","latLng","getMarkerPosition","markerLabelStyle","removeMarkers","projection","addMarker","seriesData","addMarkers","removeAllMarkers","inset","proj","centralMeridian","getInsetForPoint","pointToLatLng","nx","ny","insets","onRegionTipShow","onRegionOver","onRegionOut","onRegionClick","onRegionSelected","onMarkerTipShow","onMarkerOver","onMarkerOut","onMarkerClick","onMarkerSelected","onViewportChange","MultiMap","maxLevel","multiMapLevel","addMap","defaultProjection","mapsLoaded","backButton","goBack","spinner","cnt","multimap","mapName","mapNameByCode","drillDownPromise","drillDown","downloadMap","mapUrlByCode","currentMap","focusPromise","downloadPromise","always","when","prevMap","multiMap","currentVisibleMinYear","focusedMonth","isToday","renderView","ok","toggleView","cancel","datepicker","readyState","_typeof","eval","_liteReady2","_interopRequireDefault","_global","_jarallax2","default","oldPlugin","jarallax","noConflict","jQueryPlugin","oldJqPlugin","_slicedToArray","arr","_arr","_n","_d","_e","_s","sliceIterator","_createClass","protoProps","staticProps","_rafl2","isIE","supportTransform","prefixes","wndW","wndH","wndY","forceResizeParallax","forceScrollParallax","updateWndVars","jarallaxList","oldPageData","updateParallax","isResized","isScrolled","resizeObserver","ResizeObserver","entry","instanceID","Jarallax","userOptions","instance","_classCallCheck","$item","imgSrc","imgElement","imgSize","imgPosition","imgRepeat","keepImg","elementInViewport","disableParallax","disableVideo","automaticResize","videoSrc","videoStartTime","videoEndTime","videoVolume","videoPlayOnlyVisible","onDestroy","onCoverImage","deprecatedDataAttribute","oldDataOptions","dataOptions","pureDataOptions","loweCaseOption","pureOptions","noAndroid","noIos","disableParallaxRegexp","disableVideoRegexp","elementInVP","useImgTag","initImg","canInitParallax","_arguments","$imgElement","cloneNode","$itemParent","containerStyles","pointerEvents","imageStyles","curStyle","curImgStyle","parentWithTransform","$itemParents","parentTransform","addToParallaxList","removeFromParallaxList","originalStylesTag","originalStylesImgTag","$clipStyles","styleSheet","contH","isScroll","scrollDist","resultH","resultMT","parallaxScrollDistance","isElementInViewport","contT","viewportRect","beforeTop","beforeTopEnd","afterTop","beforeBottom","beforeBottomEnd","afterBottom","fromViewportCenter","visiblePercent","positionY","section","coverImage","clipContainer","HTMLElement","ms","req","webkitCancelAnimationFrame","mozCancelAnimationFrame","_videoWorker2","_global2","_jarallaxVideo2","VideoWorker","_done","_fail","execute","fail","ID","YoutubeAPIadded","VimeoAPIadded","loadingYoutubePlayer","loadingVimeoPlayer","loadingYoutubeDefer","loadingVimeoDefer","options_default","autoplay","mute","volume","showContols","videoID","parseURL","loadAPI","videoFormats","Youtube","Vimeo","vmUrl","getVimeoID","Local","userEventsList","_this","_this2","player","playVideo","seekTo","YT","PlayerState","PLAYING","getPlayerState","setCurrentTime","getPaused","paused","play","pauseVideo","pause","setVolume","$video","unMute","getVolume","isMuted","videoImage","availableSizes","tempImg","Image","XMLHttpRequest","onreadystatechange","status","responseText","thumbnail_large","send","getVideo","onAPIready","hiddenDiv","playerOptions","videoId","playerVars","autohide","playsinline","iv_load_policy","modestbranding","showinfo","disablekb","ytStarted","ytProgressInterval","onReady","fire","onStateChange","ENDED","PAUSED","getCurrentTime","firstInit","playerID","Player","videoWidth","videoHeight","getVideoWidth","getVideoHeight","vmStarted","seconds","locStarted","onYouTubeIframeAPIReady","vimeoInterval","defInit","video","defCoverImage","imageData","ml","mt","defInitImg","defaultResult","defaultInitImgResult","defCanInitParallax","oldOnScroll","isVisible","$default_item","imgWidth","imgHeight","getImageURL","defDestroy","OFI","propRegex","testImg","supportsObjectFit","supportsObjectPosition","supportsOFI","supportsCurrentSrc","currentSrc","nativeGetAttribute","nativeSetAttribute","autoModeEnabled","onImageReady","fixOne","parsed","ofi","skipTest","srcset","naturalHeight","ss","keepSrcUsable","picturefill","pf","evaled","fillImg","reselect","curSrc","supported","polyfillCurrentSrc","backgroundImage","backgroundRepeat","backgroundOrigin","backgroundSize","imgs","startAutoMode","watchMQ","getOfiImageMaybe","HTMLImageElement","hijackAttributes","$win","$doc","svgNS","svgSupported","namespaceURI","transitionSupported","touchSupported","mousedownEvent","mousemoveEvent","mouseupEvent","vibrate","webkitVibrate","createSvgElement","debounce","leadingZero","idCounter","dialRadius","tickRadius","diameter","tpl","ClockPicker","popover","plate","hoursView","minutesView","amPmBlock","isInput","isAppended","isShown","spanHours","spanMinutes","spanAmPm","amOrPm","isTwelvehour","twelvehour","minTime","maxTime","minMinutes","maxMinutes","minHours","maxHours","isInvalidTimeScope","parseTimeOptions","period","amPmButtonsTemplate","togglePeriod","previsiousPeriod","disableOutOfRangeElements","ampmclickable","darktheme","donetext","cleartext","clearInput","radian","tickTpl","hourstep","incrementValue","minutestep","isTouch","moved","movingTimer","setHand","hours","minutes","autoclose","currentHours","bearing","hand","fg","raiseCallback","callbackFunction","DEFAULTS","fromnow","ampmSubmit","toggle","locate","parseInputValue","getHours","getMinutes","beforeShow","afterShow","beforeHide","afterHide","$hoursTick","$minutesTick","$amBtn","$pmBtn","$doneBtn","raiseAfterHourSelect","beforeHourSelect","isHours","nextView","hideView","resetClock","toggleViewTimer","afterHourSelect","roundBy5","dragging","vibrateTimer","afterDone","selectedTime","setMinutes","setSeconds","beforeDone","outHours","isHTML5","pickatime","handleClockPickerRequest","openElementData","dateTimePicker","delimiter","$timePicker","$datePicker","timeValue","dateValue","icon","closetext","inputshowpicker","hoursBeforeChange","minutesBeforeChange","rest","closeInput","isNewValueOutOfRange","newValue","timepicker","SideNav2","bindKeydownEvents","setTabTrap","sidePadding","elWidth","tabTrapElements","numberOfElements","firstElement","lastElement","sideNav2"],"mappings":"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","file":"js/mdb.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 227);\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line no-undef\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func\n Function('return this')();\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nvar Symbol = global.Symbol;\nvar store = shared('wks');\n\nmodule.exports = function (name) {\n return store[name] || (store[name] = NATIVE_SYMBOL && Symbol[name]\n || (NATIVE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var fails = require('../internals/fails');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.3.2',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar nativeFunctionToString = require('../internals/function-to-string');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(nativeFunctionToString).split('toString');\n\nshared('inspectSource', function (it) {\n return nativeFunctionToString.call(it);\n});\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);\n enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this);\n});\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","module.exports = {};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var bind = require('../internals/bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6)\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = new WeakMap();\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","module.exports = false;\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.github.io/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar PROTOTYPE = 'prototype';\nvar Empty = function () { /* empty */ };\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var length = enumBugKeys.length;\n var lt = '<';\n var script = 'script';\n var gt = '>';\n var js = 'java' + script + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n iframe.src = String(js);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]];\n return createDict();\n};\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n\nhiddenKeys[IE_PROTO] = true;\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var shared = require('../internals/shared');\n\nmodule.exports = shared('native-function-to-string', Function.toString);\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(length, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","exports.f = Object.getOwnPropertySymbols;\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n return !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","module.exports = require('../internals/global');\n","var fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !method || !fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n createNonEnumerableProperty(ArrayPrototype, UNSCOPABLES, create(null));\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.github.io/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","'use strict';\nvar regexpFlags = require('./regexp-flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var global = require('../internals/global');\nvar nativeFunctionToString = require('../internals/function-to-string');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(nativeFunctionToString.call(WeakMap));\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","module.exports = {};\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\nvar ObjectPrototype = Object.prototype;\n\n// `Object.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nif (toString !== ObjectPrototype.toString) {\n redefine(ObjectPrototype, 'toString', toString, { unsafe: true });\n}\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\n\nvar DataView = global.DataView;\nvar DataViewPrototype = DataView && DataView.prototype;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar isPrototypeOf = ObjectPrototype.isPrototypeOf;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar NATIVE_ARRAY_BUFFER = !!(global.ArrayBuffer && DataView);\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQIRED = false;\nvar NAME;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar isView = function isView(it) {\n var klass = classof(it);\n return klass === 'DataView' || has(TypedArrayConstructorsList, klass);\n};\n\nvar isTypedArray = function (it) {\n return isObject(it) && has(TypedArrayConstructorsList, classof(it));\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (setPrototypeOf) {\n if (isPrototypeOf.call(TypedArray, C)) return C;\n } else for (var ARRAY in TypedArrayConstructorsList) if (has(TypedArrayConstructorsList, NAME)) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (C === TypedArrayConstructor || isPrototypeOf.call(TypedArrayConstructor, C))) {\n return C;\n }\n } throw TypeError('Target is not a typed array constructor');\n};\n\nvar exportProto = function (KEY, property, forced) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) {\n delete TypedArrayConstructor.prototype[KEY];\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n redefine(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);\n }\n};\n\nvar exportStatic = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) {\n delete TypedArrayConstructor[KEY];\n }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8Array[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n redefine(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n if (!global[NAME]) NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || typeof TypedArray != 'function' || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow\n TypedArray = function TypedArray() {\n throw TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !has(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQIRED = true;\n defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n } });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\n// WebKit bug - the same parent prototype for typed arrays and data view\nif (NATIVE_ARRAY_BUFFER && setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) {\n setPrototypeOf(DataViewPrototype, ObjectPrototype);\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER: NATIVE_ARRAY_BUFFER,\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportProto: exportProto,\n exportStatic: exportStatic,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar SLOPPY_METHOD = sloppyArrayMethod('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || SLOPPY_METHOD }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? nativeIndexOf.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/wrapped-well-known-symbol');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar JSON = global.JSON;\nvar nativeJSONStringify = JSON && JSON.stringify;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar isSymbol = NATIVE_SYMBOL && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPrimitive(P, true);\n anObject(Attributes);\n if (has(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPrimitive(V, true);\n var enumerable = nativePropertyIsEnumerable.call(this, P);\n if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPrimitive(P, true);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n result.push(AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.github.io/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.github.io/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = String(key);\n if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n // `Symbol.keyFor` method\n // https://tc39.github.io/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.github.io/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.github.io/ecma262/#sec-json.stringify\nJSON && $({ target: 'JSON', stat: true, forced: !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return nativeJSONStringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || nativeJSONStringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || nativeJSONStringify(Object(symbol)) != '{}';\n}) }, {\n stringify: function stringify(it) {\n var args = [it];\n var index = 1;\n var replacer, $replacer;\n while (arguments.length > index) args.push(arguments[index++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return nativeJSONStringify.apply(JSON, args);\n }\n});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","// `Symbol.prototype.description` getter\n// https://tc39.github.io/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar has = require('../internals/has');\nvar isObject = require('../internals/is-object');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\n\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n var result = this instanceof SymbolWrapper\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n symbolPrototype.constructor = SymbolWrapper;\n\n var symbolToString = symbolPrototype.toString;\n var native = String(NativeSymbol('test')) == 'Symbol(test)';\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n defineProperty(symbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = isObject(this) ? this.valueOf() : this;\n var string = symbolToString.call(symbol);\n if (has(EmptyStringDescriptionStore, symbol)) return '';\n var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n","// a string of all valid unicode whitespaces\n// eslint-disable-next-line max-len\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","exports.f = require('../internals/well-known-symbol');\n","var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/wrapped-well-known-symbol');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar SLOPPY_METHOD = sloppyArrayMethod('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || SLOPPY_METHOD }, {\n join: function join(separator) {\n return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\nvar IS_CONCAT_SPREADABLE_SUPPORT = !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n concat: function concat(arg) { // eslint-disable-line no-unused-vars\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","var anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","'use strict';\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n });\n var stringMethod = methods[0];\n var regexMethod = methods[1];\n\n redefine(String.prototype, KEY, stringMethod);\n redefine(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return regexMethod.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return regexMethod.call(string, this); }\n );\n if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n }\n};\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n","var redefine = require('../internals/redefine');\n\nvar DatePrototype = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar nativeDateToString = DatePrototype[TO_STRING];\nvar getTime = DatePrototype.getTime;\n\n// `Date.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-date.prototype.tostring\nif (new Date(NaN) + '' != INVALID_DATE) {\n redefine(DatePrototype, TO_STRING, function toString() {\n var value = getTime.call(this);\n // eslint-disable-next-line no-self-compare\n return value === value ? nativeDateToString.call(this) : INVALID_DATE;\n });\n}\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative) {\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return nativeReplace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","'use strict';\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\n// `Array.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('filter') }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","var classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\n// `Array.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('map') }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = String(R.source);\n var rf = R.flags;\n var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\n\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, !SUPPORTS_Y);\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('slice') }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","'use strict';\nvar classof = require('../internals/classof');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\n// `Object.prototype.toString` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nmodule.exports = String(test) !== '[object z]' ? function toString() {\n return '[object ' + classof(this) + ']';\n} : test.toString;\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return nativeGetOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.github.io/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n forEach: forEach\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('splice') }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n}\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\nmodule.exports = sloppyArrayMethod('forEach') ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof-raw');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.github.io/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n var first, third, radix, maxCode, digits, length, index, code;\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = it.charCodeAt(0);\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = it.slice(2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = digits.charCodeAt(index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.github.io/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var dummy = this;\n return dummy instanceof NumberWrapper\n // check on 1..constructor(foo) case\n && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)\n ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/forced-string-trim-method');\n\n// `String.prototype.trim` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","var isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n typeof (NewTarget = dummy.constructor) == 'function' &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","var $ = require('../internals/export');\nvar parseFloatImplementation = require('../internals/parse-float');\n\n// `parseFloat` method\n// https://tc39.github.io/ecma262/#sec-parsefloat-string\n$({ global: true, forced: parseFloat != parseFloatImplementation }, {\n parseFloat: parseFloatImplementation\n});\n","module.exports = jQuery;","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = regexp == undefined ? undefined : regexp[MATCH];\n return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative(nativeMatch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.github.io/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return FunctionPrototypeToString.call(this).match(nameRE)[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","var $ = require('../internals/export');\nvar parseIntImplementation = require('../internals/parse-int');\n\n// `parseInt` method\n// https://tc39.github.io/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt != parseIntImplementation }, {\n parseInt: parseIntImplementation\n});\n","var fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n });\n};\n","export default class MaterialSelectViewRenderer {\n\n constructor(view) {\n\n this.view = view;\n }\n\n get shouldValidate() {\n return this.view.options.validate;\n }\n\n get shouldInheritTabindex() {\n return this.view.$nativeSelect.data('inherit-tabindex') !== false;\n }\n\n get isMultiple() {\n return this.view.isMultiple;\n }\n\n get isSearchable() {\n return this.view.isSearchable;\n }\n\n get isRequired() {\n return this.view.isRequired;\n }\n\n get isEditable() {\n return this.view.isEditable;\n }\n\n get isDisabled() {\n return this.view.isDisabled;\n }\n\n get isDefaultMaterialInput() {\n return this.view.options.defaultMaterialInput;\n }\n\n get isCustomSelect() {\n return this.view.$materialSelect.hasClass('custom-select') && this.view.$materialSelect.hasClass('select-dropdown');\n }\n\n destroy() {\n\n const currentUuid = this.view.$nativeSelect.data('select-id');\n\n this.view.$nativeSelect.data('select-id', null).removeClass('initialized');\n this.view.$nativeSelect.parent().find('span.caret').remove();\n this.view.$nativeSelect.parent().find('input').remove();\n \n if( this.view.$nativeSelect.hasClass('select-wrapper')) {\n this.view.$nativeSelect.find('select').unwrap();\n }\n\n if( this.view.$nativeSelect.parent().hasClass('select-wrapper')) {\n this.view.$nativeSelect.parent().find('select').unwrap();\n }\n \n $(`ul#select-options-${currentUuid}`).remove();\n\n }\n\n render() {\n\n this.setWrapperClasses();\n this.setMaterialSelectInitialValue();\n\n this.view.$nativeSelect.data('select-id', this.view.properties.id);\n this.view.$nativeSelect.before(this.view.$selectWrapper);\n\n if (this.view.options.showResetButton) {\n\n this.appendResetButton();\n }\n\n this.appendDropdownIcon();\n this.appendMaterialSelect();\n this.appendMaterialOptionsList();\n this.appendNativeSelect();\n this.appendSelectLabel();\n this.appendCustomTemplateParts();\n\n if (this.shouldValidate) {\n\n this.appendValidationFeedbackElements();\n }\n\n if (this.isRequired) {\n\n this.enableValidation();\n }\n\n if (!this.isDisabled) {\n\n this.setMaterialOptionsListMaxHeight();\n this.view.dropdown = this.view.$materialSelect.dropdown({\n hover: false,\n closeOnClick: false,\n resetScroll: false\n });\n }\n\n if (this.shouldInheritTabindex) {\n\n this.view.$materialSelect.attr('tabindex', this.view.$nativeSelect.attr('tabindex'));\n }\n\n if (this.isDefaultMaterialInput) {\n\n this.view.$mainLabel.css('top', '-7px');\n }\n\n if (this.isCustomSelect) {\n\n this.view.$materialSelect.css({\n display: 'inline-block',\n width: '100%',\n height: 'calc(1.5em + .75rem + 2px)',\n padding: '.375rem 1.75rem .375rem .75rem',\n fontSize: '1rem',\n lineHeight: '1.5',\n backgroundColor: '#fff',\n border: '1px solid #ced4da'\n });\n }\n\n this.addAccessibilityAttributes();\n this.markInitialized();\n }\n\n setWrapperClasses() {\n\n if (this.isDefaultMaterialInput) {\n\n this.view.$selectWrapper\n .addClass(\n this.view.$nativeSelect.attr('class').split(' ').filter((el) => el !== 'md-form').join(' ')\n )\n .css({\n marginTop: '1.5rem',\n marginBottom: '1.5rem'\n });\n\n } else {\n this.view.$selectWrapper.addClass(this.view.$nativeSelect.attr('class'));\n }\n }\n\n setMaterialSelectInitialValue() {\n\n if (!this.view.options.placeholder) {\n\n const sanitizedLabelHtml = this.view.$materialSelectInitialOption.replace(/\"/g, '"').replace(/ +/g, ' ').trim();\n this.view.$materialSelect.val(sanitizedLabelHtml);\n } else {\n\n this.view.$materialSelect.attr('placeholder', this.view.options.placeholder);\n if (!this.view.$nativeSelect.find('option[value=\"\"][selected][disabled][data-mdb-placeholder]').length) {\n\n this.view.$nativeSelect.prepend('');\n }\n }\n }\n\n appendDropdownIcon() {\n\n if (this.isDisabled) {\n\n this.view.$dropdownIcon.addClass('disabled');\n }\n\n this.view.$selectWrapper.append(this.view.$dropdownIcon);\n }\n\n appendResetButton() {\n\n if (this.isDisabled) {\n\n this.view.$btnReset.addClass('disabled');\n }\n\n if (this.view.$nativeSelect.get(0).selectedIndex === -1) {\n\n this.view.$btnReset.hide();\n }\n\n this.view.$selectWrapper.append(this.view.$btnReset);\n }\n\n appendMaterialSelect() {\n\n this.view.$selectWrapper.append(this.view.$materialSelect);\n }\n\n appendMaterialOptionsList() {\n\n if (this.isSearchable) {\n\n this.appendSearchInputOption();\n }\n\n if (this.isEditable && this.isSearchable) {\n\n this.appendAddOptionBtn();\n }\n\n this.buildMaterialOptions();\n\n if (this.isMultiple) {\n\n this.appendToggleAllCheckbox();\n }\n\n this.view.$selectWrapper.append(this.view.$materialOptionsList);\n }\n\n appendNativeSelect() {\n\n this.view.$nativeSelect.appendTo(this.view.$selectWrapper);\n }\n\n appendSelectLabel() {\n\n if (this.view.$materialSelect.val() || this.view.options.placeholder) {\n\n this.view.$mainLabel.addClass('active');\n }\n\n this.view.$mainLabel[this.isDisabled ? 'addClass' : 'removeClass']('disabled');\n\n this.view.$mainLabel.appendTo(this.view.$selectWrapper);\n }\n\n appendCustomTemplateParts() {\n\n this.view.$customTemplateParts.each((_, element) => {\n\n const $templatePart = $(element);\n $templatePart.appendTo(this.view.$materialOptionsList).wrap('
  • ');\n });\n\n this.view.$btnSave.appendTo(this.view.$selectWrapper).clone().appendTo(this.view.$materialOptionsList);\n }\n\n appendValidationFeedbackElements() {\n\n this.view.$validFeedback.insertAfter(this.view.$selectWrapper);\n this.view.$invalidFeedback.insertAfter(this.view.$selectWrapper);\n }\n\n enableValidation() {\n\n this.view.$nativeSelect.css({\n position: 'absolute',\n top: '1rem',\n left: '0',\n height: '0',\n width: '0',\n opacity: '0',\n padding: '0',\n 'pointer-events': 'none'\n });\n\n if (this.view.$nativeSelect.attr('style').indexOf('inline!important') === -1) {\n\n this.view.$nativeSelect.attr('style', `${this.view.$nativeSelect.attr('style')} display: inline!important;`);\n }\n\n this.view.$nativeSelect.attr('tabindex', -1);\n this.view.$nativeSelect.data('inherit-tabindex', false);\n }\n\n setMaterialOptionsListMaxHeight() {\n const $tempWrapper = $('
    ').appendTo($('body'));\n $tempWrapper.css({\n position: 'absolute !important',\n visibility: 'hidden !important',\n display: 'block !important'\n });\n\n this.view.$materialOptionsList.show();\n const $optionsListClone = this.view.$materialOptionsList.clone().appendTo($tempWrapper);\n\n const multiplier = this.view.options.visibleOptions;\n let additionalHeight = 0;\n const $materialOptions = $optionsListClone.find('li').not('.disabled');\n const optionHeight = $materialOptions.first().text().trim() === '' ? $materialOptions.eq(1).height() : $materialOptions.first().height();\n\n const optionsCount = $materialOptions.length;\n\n if (this.isSearchable) {\n additionalHeight += this.view.$searchInput.height();\n }\n\n if (this.isMultiple) {\n additionalHeight += this.view.$toggleAll.height();\n }\n\n this.view.$materialOptionsList.hide();\n $tempWrapper.remove();\n\n if (multiplier >= 0 && multiplier < optionsCount) {\n\n const maxHeight = optionHeight * multiplier + additionalHeight;\n this.view.$materialOptionsList.css('max-height', maxHeight);\n this.view.$materialSelect.data('maxheight', maxHeight);\n }\n }\n\n addAccessibilityAttributes() {\n\n this.view.$materialSelect.attr({\n role: this.isSearchable ? 'combobox' : 'listbox',\n 'aria-multiselectable': this.isMultiple,\n 'aria-disabled': this.isDisabled,\n 'aria-required': this.isRequired,\n 'aria-labelledby': this.view.$mainLabel.attr('id'),\n 'aria-haspopup': true,\n 'aria-expanded': false\n });\n\n if (this.view.$searchInput) {\n\n this.view.$searchInput.attr('role', 'searchbox');\n }\n\n this.view.$materialOptionsList.find('li').each(function () {\n\n const $this = $(this);\n $this.attr({\n role: 'option',\n 'aria-selected': $this.hasClass('active'),\n 'aria-disabled': $this.hasClass('disabled')\n });\n });\n }\n\n markInitialized() {\n\n this.view.$nativeSelect.addClass('initialized');\n }\n\n appendSearchInputOption() {\n\n const placeholder = this.view.$nativeSelect.attr('searchable');\n const divClass = this.isDefaultMaterialInput ? '' : 'md-form';\n const inputClass = this.isDefaultMaterialInput ? 'select-default mb-2' : '';\n\n this.view.$searchInput = $(`
    `);\n this.view.$materialOptionsList.append(this.view.$searchInput);\n this.view.$searchInput.on('click', (e) => e.stopPropagation());\n }\n\n appendAddOptionBtn() {\n\n this.view.$searchInput.append(this.view.$addOptionBtn);\n }\n\n buildMaterialOptions() {\n\n this.view.$nativeSelectChildren.each((index, option) => {\n\n const $this = $(option);\n\n if ($this.is('option')) {\n\n this.buildSingleOption($this, this.isMultiple ? 'multiple' : '');\n } else if ($this.is('optgroup')) {\n\n const $materialOptgroup = $(`
  • ${$this.attr('label')}
  • `);\n this.view.$materialOptionsList.append($materialOptgroup);\n\n const $optgroupOptions = $this.children('option');\n $optgroupOptions.each((index, optgroupOption) => {\n\n this.buildSingleOption($(optgroupOption), 'optgroup-option');\n });\n }\n });\n }\n\n appendToggleAllCheckbox() {\n\n const firstOption = this.view.$materialOptionsList.find('li').first();\n if (firstOption.hasClass('disabled') && firstOption.find('input').prop('disabled')) {\n firstOption.after(this.view.$toggleAll);\n } else {\n this.view.$materialOptionsList.find('li').first().before(this.view.$toggleAll);\n }\n\n }\n\n addNewOption() {\n\n const val = this.view.$searchInput.find('input').val();\n const $newOption = $(``).prop('selected', true);\n if (!this.isMultiple) {\n this.view.$nativeSelectChildren.each((index, option) => {\n $(option).attr('selected', false);\n });\n }\n this.view.$nativeSelect.append($newOption);\n }\n\n buildSingleOption($nativeSelectChild, type) {\n\n const disabled = $nativeSelectChild.is(':disabled') ? 'disabled' : '';\n const active = $nativeSelectChild.is(':selected') ? 'active' : '';\n const optgroupClass = type === 'optgroup-option' ? 'optgroup-option' : '';\n const iconUrl = $nativeSelectChild.data('icon');\n const fas = $nativeSelectChild.data('fas') ? ` ` : '';\n const far = $nativeSelectChild.data('far') ? ` ` : '';\n const fab = $nativeSelectChild.data('fab') ? ` ` : '';\n\n const classes = $nativeSelectChild.attr('class');\n\n const iconHtml = iconUrl ? `\"\"` : '';\n const checkboxHtml = this.isMultiple ? `` : '';\n const secondaryText = $nativeSelectChild.data('secondary-text') ? `

    ${$nativeSelectChild.data('secondary-text')}

    ` : '';\n\n this.view.$materialOptionsList.append($(`
  • ${iconHtml}${checkboxHtml} ${$nativeSelectChild.html()} ${fas} ${far} ${fab} ${secondaryText}
  • `));\n }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\nvar $ = require('../internals/export');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\n// `String.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~String(requireObjectCoercible(this))\n .indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar nativeParseFloat = global.parseFloat;\nvar FORCED = 1 / nativeParseFloat(whitespaces + '-0') !== -Infinity;\n\n// `parseFloat` method\n// https://tc39.github.io/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n var trimmedString = trim(String(string));\n var result = nativeParseFloat(trimmedString);\n return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result;\n} : nativeParseFloat;\n","var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","import MaterialSelectViewRenderer from './material-select-view-renderer';\n\nexport default class MaterialSelectView {\n\n // eslint-disable-next-line object-curly-newline\n constructor($nativeSelect, { options, properties: { id } }) {\n\n this.properties = {\n id,\n isMultiple: Boolean($nativeSelect.attr('multiple')),\n isSearchable: Boolean($nativeSelect.attr('searchable')),\n isRequired: Boolean($nativeSelect.attr('required')),\n isEditable: Boolean($nativeSelect.attr('editable'))\n };\n\n this.options = this._copyOptions(options);\n\n this.$nativeSelect = $nativeSelect;\n this.$selectWrapper = $('
    ');\n this.$materialOptionsList = $(``);\n this.$materialSelectInitialOption = $nativeSelect.find('option:selected').text() || $nativeSelect.find('option:first').text() || '';\n this.$nativeSelectChildren = this.$nativeSelect.children('option, optgroup');\n this.$materialSelect = $(``);\n this.$dropdownIcon = this.options.defaultMaterialInput ? '' : $('');\n this.$searchInput = null;\n this.$noSearchResultsInfo = $(`
  • ${this.options.labels.noSearchResults}
  • `);\n this.$toggleAll = $(`
  • `);\n this.$addOptionBtn = $('');\n this.$mainLabel = this._jQueryFallback(this.$nativeSelect.next('label.mdb-main-label'), $(`label[for='${this.properties.id}']`));\n this.$customTemplateParts = this._jQueryFallback(this.$nativeSelect.nextUntil('select', '.mdb-select-template-part'), $(`[data-mdb-select-template-part-for='${this.properties.id}']`));\n this.$btnSave = this.$nativeSelect.nextUntil('select', '.btn-save'); // @Depreciated\n this.$btnReset = $('×');\n\n this.$validFeedback = $(`
    ${this.options.labels.validFeedback}
    `);\n this.$invalidFeedback = $(`
    ${this.options.labels.invalidFeedback}
    `);\n\n this.keyCodes = {\n tab: 9,\n enter: 13,\n shift: 16,\n alt: 18,\n esc: 27,\n space: 32,\n end: 35,\n home: 36,\n arrowUp: 38,\n arrowDown: 40\n };\n \n // eslint-disable-next-line no-undef\n this.renderer = new MaterialSelectViewRenderer(this);\n this.dropdown = null;\n }\n\n static get isMobileDevice() {\n\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n }\n\n get isMultiple() {\n return this.properties.isMultiple;\n }\n\n get isSearchable() {\n return this.properties.isSearchable;\n }\n\n get isRequired() {\n return this.properties.isRequired;\n }\n\n get isEditable() {\n return this.properties.isEditable;\n }\n\n get isDisabled() {\n return this.$nativeSelect.is(':disabled');\n }\n\n destroy() {\n\n this.renderer.destroy();\n }\n\n render() {\n\n this.renderer.render();\n }\n\n selectPreselectedOptions(handler) {\n\n if (this.isMultiple) {\n\n this.$nativeSelect.find('option:selected:not(:disabled)').each((i, element) => {\n\n let index = element.index;\n handler(index);\n\n if (this._isPlaceholderPresent())\n index -= 1;\n \n this.$materialOptionsList.find('li:not(.optgroup):not(.select-toggle-all)').eq(index).addClass('selected active').find(':checkbox').prop('checked', true);\n \n });\n } else {\n\n const $preselectedOption = this.$nativeSelect.find('option:selected').first();\n const indexOfPreselectedOption = this.$nativeSelect.find('option').index($preselectedOption.get(0));\n if ($preselectedOption.get(0) && $preselectedOption.attr('disabled') !== 'disabled') {\n handler(indexOfPreselectedOption);\n }\n }\n }\n\n bindResetButtonClick(handler) {\n\n this.$btnReset.on('click', (e) => {\n\n e.preventDefault();\n\n if (!this.$nativeSelect.find('option[value=\"\"][selected][disabled][data-mdb-novalue]').length) {\n\n this._toggleResetButton(true);\n\n this.$materialSelect.val(this.isMultiple ? [] : '');\n this.$materialSelect.trigger('close');\n this.$mainLabel.removeClass('active');\n this.$materialOptionsList.find('li.active, li.selected').removeClass('active').removeClass('selected');\n this.$materialOptionsList.find('li[aria-selected=\"true\"]').attr('aria-selected', 'false');\n this.$materialOptionsList.find('input[type=\"checkbox\"]').prop('checked', false);\n\n handler();\n }\n });\n }\n\n bindAddNewOptionClick() {\n\n this.$addOptionBtn.on('click', this.renderer.addNewOption.bind(this.renderer));\n }\n\n bindMaterialSelectFocus() {\n\n this.$materialSelect.on('focus', (e) => {\n \n const $this = $(e.target);\n \n $this.parent().addClass('active');\n\n if ($('ul.select-dropdown').not(this.$materialOptionsList.get(0)).is(':visible')) {\n\n $('input.select-dropdown').trigger('close');\n }\n\n this.$mainLabel.addClass('active');\n\n if (!this.$materialOptionsList.is(':visible')) {\n\n const label = $this.val();\n const $selectedOption = this.$materialOptionsList.find('li').filter(function () {\n\n return $(this).text().toLowerCase() === label.toLowerCase();\n }).get(0);\n\n this._selectSingleOption($selectedOption);\n }\n\n if (!this.isMultiple) {\n\n this.$mainLabel.addClass('active');\n }\n });\n }\n\n bindMaterialSelectClick() {\n\n this.$materialSelect.on('mousedown', (e) => {\n\n if (e.which === 3) {\n e.preventDefault();\n }\n });\n\n this.$materialSelect.on('click', (e) => {\n\n e.stopPropagation();\n\n this.$mainLabel.addClass('active');\n\n this._updateDropdownScrollTop();\n });\n }\n\n bindMaterialSelectBlur() {\n\n this.$materialSelect.on('blur', (e) => {\n\n const $this = $(e.target);\n\n $this.parent().removeClass('active');\n\n if (!this.isMultiple && !this.isSearchable) {\n\n $this.trigger('close');\n }\n\n this.$materialOptionsList.find('li.selected').removeClass('selected');\n });\n }\n\n bindMaterialOptionsListTouchstart() {\n\n this.$materialOptionsList.on('touchstart', (e) => e.stopPropagation());\n }\n\n bindMaterialSelectKeydown() {\n\n // eslint-disable-next-line complexity\n this.$materialSelect.on('keydown', (e) => {\n e.preventDefault();\n\n const $this = $(e.target);\n\n const isTab = e.which === this.keyCodes.tab;\n\n const isArrowUp = e.which === this.keyCodes.arrowUp;\n const isArrowDown = e.which === this.keyCodes.arrowDown;\n const isEnter = e.which === this.keyCodes.enter;\n const isEsc = e.which === this.keyCodes.esc;\n const isAltWithArrowDown = isArrowDown && e.altKey;\n const isAltWithArrowUp = isArrowUp && e.altKey;\n const isHome = e.which === this.keyCodes.home;\n const isEnd = e.which === this.keyCodes.end;\n const isSpace = e.which === this.keyCodes.space;\n\n const isDropdownExpanded = this.$materialOptionsList.is(':visible');\n\n switch (true) {\n case isTab:\n return this._handleTabKey($this);\n\n case !isDropdownExpanded && (isEnter || isAltWithArrowDown):\n case this.isMultiple && !isDropdownExpanded && (isArrowDown || isArrowUp):\n $this.trigger('open');\n return this._updateDropdownScrollTop();\n\n case isDropdownExpanded && (isEsc || isAltWithArrowUp):\n return $this.trigger('close');\n\n case !isDropdownExpanded && (isArrowDown || isArrowUp):\n return this._handleClosedArrowUpDownKey(e.which);\n\n case isDropdownExpanded && (isArrowDown || isArrowUp):\n return this._handleArrowUpDownKey(e.which);\n\n case isDropdownExpanded && isHome:\n return this._handleHomeKey();\n\n case isDropdownExpanded && isEnd:\n return this._handleEndKey();\n\n case isDropdownExpanded && (isEnter || isSpace):\n return this._handleEnterKey($this);\n\n default:\n return this._handleLetterKey(e);\n }\n });\n }\n\n bindMaterialSelectDropdownToggle() {\n\n this.$materialSelect.on('open', () => this.$materialSelect.attr('aria-expanded', 'true'));\n this.$materialSelect.on('close', () => this.$materialSelect.attr('aria-expanded', 'false'));\n }\n\n bindToggleAllClick(handler) {\n\n this.$toggleAll.on('click', (e) => {\n\n const checkbox = $(this.$toggleAll).find('input[type=\"checkbox\"]').first();\n const currentState = Boolean($(checkbox).prop('checked'));\n const isToggleChecked = !currentState;\n\n $(checkbox).prop('checked', !currentState);\n\n this.$materialOptionsList.find('li:not(.optgroup):not(.select-toggle-all)').each((materialOptionIndex, materialOption) => {\n\n const $materialOption = $(materialOption);\n const $optionCheckbox = $materialOption.find('input[type=\"checkbox\"]');\n\n $materialOption.attr('aria-selected', isToggleChecked);\n\n if (isToggleChecked && $optionCheckbox.is(':checked') || !isToggleChecked && !$optionCheckbox.is(':checked') || $(materialOption).is(':hidden') || $(materialOption).is('.disabled')) {\n\n return;\n }\n\n $optionCheckbox.prop('checked', isToggleChecked);\n this.$nativeSelect.find('option').eq(materialOptionIndex).prop('selected', isToggleChecked);\n\n $materialOption.toggleClass('active');\n this._selectOption(materialOption);\n handler(materialOptionIndex);\n });\n\n this.$nativeSelect.data('stop-refresh', true);\n this._triggerChangeOnNativeSelect();\n this.$nativeSelect.removeData('stop-refresh');\n e.stopPropagation();\n });\n }\n\n bindMaterialOptionMousedown() {\n\n this.$materialOptionsList.on('mousedown', (e) => {\n\n const option = e.target;\n\n const inModal = $('.modal-content').find(this.$materialOptionsList).length;\n if (inModal && option.scrollHeight > option.offsetHeight) {\n\n e.preventDefault();\n }\n });\n }\n\n bindMaterialOptionClick(handler) {\n\n this.$materialOptionsList.find('li:not(.optgroup)').not(this.$toggleAll).each((materialOptionIndex, materialOption) => {\n $(materialOption).on('click', (e) => {\n\n e.stopPropagation();\n\n this._toggleResetButton(false);\n\n const $this = $(materialOption);\n\n if ($this.hasClass('disabled') || $this.hasClass('optgroup')) {\n\n return;\n }\n\n let selected = true;\n\n if (this.isMultiple) {\n\n $this.find('input[type=\"checkbox\"]').prop('checked', (index, oldPropertyValue) => !oldPropertyValue);\n\n const hasOptgroup = Boolean(this.$nativeSelect.find('optgroup').length);\n const thisIndex = this._isToggleAllPresent() && !this._isPlaceholderPresent() ? $this.index() - 1 : $this.index();\n\n /* eslint-disable max-statements-per-line */\n switch (true) {\n case this.isSearchable && hasOptgroup: selected = handler(thisIndex - $this.prevAll('.optgroup').length - 1); break;\n case this.isSearchable: selected = handler(thisIndex - 1); break;\n case hasOptgroup: selected = handler(thisIndex - $this.prevAll('.optgroup').length); break;\n default: selected = handler(thisIndex); break;\n }\n /* eslint-enable max-statements-per-line */\n\n if (this._isToggleAllPresent()) {\n\n this._updateToggleAllOption();\n }\n\n this.$materialSelect.trigger('focus');\n } else {\n \n this.$materialOptionsList.find('li').removeClass('active').attr('aria-selected', 'false');\n const $selectedOption = $this.children().last()[0].childNodes[0];\n this.$materialSelect.val($($selectedOption).text().replace(/ +/g, ' ').trim());\n this.$materialSelect.trigger('close');\n }\n \n $this.toggleClass('active');\n const ariaSelected = $this.attr('aria-selected');\n $this.attr('aria-selected', ariaSelected === 'true' ? 'false' : 'true');\n this._selectSingleOption($this);\n this.$nativeSelect.data('stop-refresh', true);\n const selectedOptionIndex = this._isPlaceholderPresent() ? materialOptionIndex + 1 : materialOptionIndex;\n this.$nativeSelect.find('option').eq(selectedOptionIndex).prop('selected', selected);\n this.$nativeSelect.removeData('stop-refresh');\n this._triggerChangeOnNativeSelect();\n \n if (this.$materialSelect.val()) {\n\n this.$mainLabel.addClass('active');\n }\n\n if ($this.hasClass('li-added')) {\n\n this.renderer.buildSingleOption($this, '');\n }\n });\n });\n }\n\n bindSingleMaterialOptionClick() {\n\n this.$materialOptionsList.find('li').on('click', () => {\n\n this.$materialSelect.trigger('close');\n });\n }\n\n bindSearchInputKeyup() {\n\n this.$searchInput.find('.search').on('keyup', (e) => {\n\n const $this = $(e.target);\n\n const isTab = e.which === this.keyCodes.tab;\n const isEsc = e.which === this.keyCodes.esc;\n const isEnter = e.which === this.keyCodes.enter;\n const isEnterWithShift = isEnter && e.shiftKey;\n const isArrowUp = e.which === this.keyCodes.arrowUp;\n const isArrowDown = e.which === this.keyCodes.arrowDown;\n\n if (isArrowDown || isTab || isEsc || isArrowUp) {\n\n this.$materialSelect.focus();\n this._handleArrowUpDownKey(e.which);\n return;\n }\n\n const $ul = $this.closest('ul');\n const searchValue = $this.val();\n const $options = $ul.find('li span.filtrable');\n\n let isOptionInList = false;\n\n $options.each(function () {\n\n const $option = $(this);\n if (typeof this.outerHTML === 'string') {\n\n const liValue = this.textContent.toLowerCase();\n\n if (liValue.includes(searchValue.toLowerCase())) {\n\n $option.show().parent().show();\n } else {\n $option.hide().parent().hide();\n }\n\n if (liValue.trim() === searchValue.toLowerCase()) {\n isOptionInList = true;\n }\n }\n });\n\n if (isEnter) {\n if (this.isEditable && !isOptionInList) {\n this.renderer.addNewOption();\n return;\n }\n if (isEnterWithShift) {\n this._handleEnterWithShiftKey($this);\n }\n this.$materialSelect.trigger('open');\n return;\n }\n\n this.$addOptionBtn[searchValue && this.isEditable && !isOptionInList ? 'show' : 'hide']();\n\n const anyOptionMatch = $options.filter((_, e) => $(e).is(':visible') && !$(e).parent().hasClass('disabled')).length !== 0;\n if (!anyOptionMatch) {\n\n this.$toggleAll.hide();\n this.$materialOptionsList.append(this.$noSearchResultsInfo);\n } else {\n\n this.$toggleAll.show();\n this.$materialOptionsList.find(this.$noSearchResultsInfo).remove();\n this._updateToggleAllOption();\n }\n\n this.dropdown.updatePosition(this.$materialSelect, this.$materialOptionsList);\n });\n }\n\n bindHtmlClick() {\n\n $('html').on('click', (e) => {\n\n if (!$(e.target).closest(`#select-options-${this.properties.id}`).length && !$(e.target).hasClass('mdb-select') && $(`#select-options-${this.properties.id}`).hasClass('active')) {\n\n this.$materialSelect.trigger('close');\n\n if (!this.$materialSelect.val() && !this.options.placeholder) {\n\n this.$mainLabel.removeClass('active');\n }\n }\n\n if (this.isSearchable && this.$searchInput !== null && this.$materialOptionsList.hasClass('active')) {\n\n this.$materialOptionsList.find('.search-wrap input.search').focus();\n }\n });\n }\n\n bindMobileDevicesMousedown() {\n\n $('select').siblings('input.select-dropdown', 'input.multi-bs-select').on('mousedown', (e) => {\n if (MaterialSelectView.isMobileDevice && (e.clientX >= e.target.clientWidth || e.clientY >= e.target.clientHeight)) {\n e.preventDefault();\n }\n });\n }\n\n bindSaveBtnClick() { // @Depreciated\n\n this.$btnSave.on('click', () => {\n\n this.$materialSelect.trigger('close');\n });\n }\n\n _toggleResetButton(hide) {\n\n const previousValue = this.$nativeSelect.data('stop-refresh');\n this.$nativeSelect.attr('data-stop-refresh', 'true');\n\n if (hide) {\n\n this.$nativeSelect.prepend('');\n } else {\n\n this.$nativeSelect.find('option[data-mdb-novalue]').remove();\n }\n\n this.$nativeSelect.attr('data-stop-refresh', previousValue);\n this.$btnReset[hide ? 'hide' : 'show']();\n }\n\n _isToggleAllPresent() {\n\n return this.$materialOptionsList.find(this.$toggleAll).length;\n }\n\n _isPlaceholderPresent() {\n if (this.$nativeSelect.attr('data-placeholder') || this.options.placeholder) {\n return true;\n } else {\n return false;\n }\n \n }\n\n _updateToggleAllOption() {\n\n const $allOptionsButToggleAll = this.$materialOptionsList.find('li').not('.select-toggle-all, .disabled, :hidden').find('[type=checkbox]');\n const $checkedOptionsButToggleAll = $allOptionsButToggleAll.filter(':checked');\n const isToggleAllChecked = this.$toggleAll.find('[type=checkbox]').is(':checked');\n\n if ($checkedOptionsButToggleAll.length === $allOptionsButToggleAll.length && !isToggleAllChecked) {\n\n this.$toggleAll.find('[type=checkbox]').prop('checked', true);\n } else if ($checkedOptionsButToggleAll.length < $allOptionsButToggleAll.length && isToggleAllChecked) {\n\n this.$toggleAll.find('[type=checkbox]').prop('checked', false);\n }\n }\n\n _handleTabKey($materialSelect) {\n\n this._handleEscKey($materialSelect);\n }\n\n _handleEnterWithShiftKey($materialSelect) {\n\n if (!this.isMultiple) {\n\n this._handleEnterKey($materialSelect);\n } else {\n\n this.$toggleAll.trigger('click');\n }\n }\n\n _handleEnterKey($materialSelect) {\n\n const $activeOption = this.$materialOptionsList.find('li.selected:not(.disabled)');\n\n $activeOption.trigger('click').addClass('active');\n\n this._removeKeyboardActiveClass();\n\n if (!this.isMultiple) {\n\n $materialSelect.trigger('close');\n }\n }\n\n _handleArrowUpDownKey(keyCode) {\n\n // eslint-disable-next-line object-curly-newline\n const { $matchedMaterialOption, $activeOption } = this._getArrowMatchedActiveOptions(keyCode, false);\n\n this._selectSingleOption($matchedMaterialOption);\n this._removeKeyboardActiveClass();\n\n if (!$matchedMaterialOption.find('input').is(':checked')) {\n\n $matchedMaterialOption.removeClass(this.options.keyboardActiveClass);\n }\n\n if (!$activeOption.hasClass('selected') && !$activeOption.find('input').is(':checked') && this.isMultiple) {\n\n $activeOption.removeClass('active', this.options.keyboardActiveClass);\n }\n\n $matchedMaterialOption.addClass(this.options.keyboardActiveClass);\n\n if ($matchedMaterialOption.position()) {\n this.$materialOptionsList.scrollTop(this.$materialOptionsList.scrollTop() + $matchedMaterialOption.position().top);\n }\n }\n\n _handleClosedArrowUpDownKey(keyCode) {\n\n // eslint-disable-next-line object-curly-newline\n const { $matchedMaterialOption } = this._getArrowMatchedActiveOptions(keyCode, true);\n\n $matchedMaterialOption.trigger('click').addClass('active');\n\n this._updateDropdownScrollTop();\n this._selectSingleOption($matchedMaterialOption);\n }\n\n _getArrowMatchedActiveOptions(keyCode, closedDropdown) {\n\n const visible = closedDropdown ? '' : ':visible';\n const $availableOptions = this.$materialOptionsList.find(`li${visible}`).not('.disabled, .select-toggle-all');\n\n const $firstOption = $availableOptions.first();\n const $lastOption = $availableOptions.last();\n const anySelected = this.$materialOptionsList.find('li.selected').length > 0;\n\n let $matchedMaterialOption = null;\n let $activeOption = null;\n\n const isArrowUp = keyCode === this.keyCodes.arrowUp;\n if (isArrowUp) {\n\n const $currentOption = anySelected ? this.$materialOptionsList.find('li.selected').first() : $lastOption;\n let $prevOption = $currentOption.prev(`li${visible}:not(.disabled, .select-toggle-all)`);\n $activeOption = $prevOption;\n\n $availableOptions.each((key, el) => {\n if ($(el).hasClass(this.options.keyboardActiveClass)) {\n $prevOption = $availableOptions.eq(key - 1);\n $activeOption = $availableOptions.eq(key);\n }\n });\n\n $matchedMaterialOption = $currentOption.is($firstOption) || !anySelected ? $currentOption : $prevOption;\n } else {\n\n const $currentOption = anySelected ? this.$materialOptionsList.find('li.selected').first() : $firstOption;\n let $nextOption = $currentOption.next(`li${visible}:not(.disabled, .select-toggle-all)`);\n $activeOption = $nextOption;\n\n $availableOptions.each((key, el) => {\n if ($(el).hasClass(this.options.keyboardActiveClass)) {\n $nextOption = $availableOptions.eq(key + 1);\n $activeOption = $availableOptions.eq(key);\n }\n });\n\n $matchedMaterialOption = $currentOption.is($lastOption) || !anySelected ? $currentOption : $nextOption;\n }\n\n return {\n $matchedMaterialOption,\n $activeOption\n };\n }\n\n _handleHomeKey() {\n\n this._selectBoundaryOption('first');\n }\n\n _handleEndKey() {\n\n this._selectBoundaryOption('last');\n }\n\n _selectBoundaryOption(firstOrLast = '') {\n\n const $boundaryOption = this.$materialOptionsList.find('li:visible').not('.disabled, .select-toggle-all')[firstOrLast]();\n\n this._selectSingleOption($boundaryOption);\n\n this._removeKeyboardActiveClass();\n\n if (!$boundaryOption.find('input').is(':checked')) {\n\n $boundaryOption.removeClass(this.options.keyboardActiveClass);\n }\n\n $boundaryOption.addClass(this.options.keyboardActiveClass);\n\n if ($boundaryOption.position()) {\n this.$materialOptionsList.scrollTop(this.$materialOptionsList.scrollTop() + $boundaryOption.position().top);\n }\n }\n\n _handleEscKey($materialSelect) {\n\n this._removeKeyboardActiveClass();\n $materialSelect.trigger('close');\n }\n\n _handleLetterKey(e) {\n\n this._removeKeyboardActiveClass();\n\n if (this.isSearchable) {\n\n const isLetter = e.which > 46 && e.which < 91;\n const isNumber = e.which > 93 && e.which < 106;\n const isBackspace = e.which === 8;\n\n if (isLetter || isNumber) {\n this.$searchInput.find('input').focus();\n }\n if (isBackspace) {\n this.$searchInput.find('input').val('').focus();\n }\n\n } else {\n\n let filterQueryString = '';\n const letter = String.fromCharCode(e.which).toLowerCase();\n const nonLetters = Object.keys(this.keyCodes).map((key) => this.keyCodes[key]);\n const isLetterSearchable = letter && nonLetters.indexOf(e.which) === -1;\n\n if (isLetterSearchable) {\n\n filterQueryString += letter;\n\n const $matchedMaterialOption = this.$materialOptionsList.find('li').filter((index, element) => $(element).text().toLowerCase().includes(filterQueryString)).first();\n\n if (!this.isMultiple) {\n\n this.$materialOptionsList.find('li').removeClass('active');\n }\n\n $matchedMaterialOption.addClass('active');\n this._selectSingleOption($matchedMaterialOption);\n this._updateDropdownScrollTop();\n }\n }\n }\n\n _removeKeyboardActiveClass() {\n\n this.$materialOptionsList.find('li').removeClass(this.options.keyboardActiveClass);\n }\n\n _triggerChangeOnNativeSelect() {\n\n const keyboardEvt = new KeyboardEvent('change', {\n bubbles: true,\n cancelable: true\n });\n this.$nativeSelect.get(0).dispatchEvent(keyboardEvt);\n }\n\n _selectSingleOption(newOption) {\n\n this.$materialOptionsList.find('li.selected').removeClass('selected');\n\n this._selectOption(newOption);\n }\n\n _updateDropdownScrollTop() {\n\n const $preselected = this.$materialOptionsList.find('li.active').not('.disabled').first();\n if ($preselected.length) {\n this.$materialOptionsList.scrollTo($preselected);\n } else {\n this.$materialOptionsList.scrollTop(0);\n }\n }\n\n _selectOption(newOption) {\n\n const option = $(newOption);\n option.addClass('selected');\n }\n\n _copyOptions(options) {\n\n return $.extend({}, options);\n }\n\n _jQueryFallback(...$elements) {\n\n let $lastElem = null;\n for (let i = 0; i < $elements.length; i++) {\n\n $lastElem = $elements[i];\n if ($lastElem.length) {\n return $lastElem;\n }\n }\n\n return $lastElem;\n }\n}\n","var DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isRegExp = require('../internals/is-regexp');\nvar getFlags = require('../internals/regexp-flags');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar FORCED = DESCRIPTORS && isForced('RegExp', (!CORRECT_NEW || fails(function () {\n re2[MATCH] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n})));\n\n// `RegExp` constructor\n// https://tc39.github.io/ecma262/#sec-regexp-constructor\nif (FORCED) {\n var RegExpWrapper = function RegExp(pattern, flags) {\n var thisIsRegExp = this instanceof RegExpWrapper;\n var patternIsRegExp = isRegExp(pattern);\n var flagsAreUndefined = flags === undefined;\n return !thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined ? pattern\n : inheritIfRequired(CORRECT_NEW\n ? new NativeRegExp(patternIsRegExp && !flagsAreUndefined ? pattern.source : pattern, flags)\n : NativeRegExp((patternIsRegExp = pattern instanceof RegExpWrapper)\n ? pattern.source\n : pattern, patternIsRegExp && flagsAreUndefined ? getFlags.call(pattern) : flags)\n , thisIsRegExp ? this : RegExpPrototype, RegExpWrapper);\n };\n var proxy = function (key) {\n key in RegExpWrapper || defineProperty(RegExpWrapper, key, {\n configurable: true,\n get: function () { return NativeRegExp[key]; },\n set: function (it) { NativeRegExp[key] = it; }\n });\n };\n var keys = getOwnPropertyNames(NativeRegExp);\n var index = 0;\n while (keys.length > index) proxy(keys[index++]);\n RegExpPrototype.constructor = RegExpWrapper;\n RegExpWrapper.prototype = RegExpPrototype;\n redefine(global, 'RegExp', RegExpWrapper);\n}\n\n// https://tc39.github.io/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (e) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (f) { /* empty */ }\n } return false;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar nativeSort = [].sort;\nvar test = [1, 2, 3];\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar SLOPPY_METHOD = sloppyArrayMethod('sort');\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || SLOPPY_METHOD;\n\n// `Array.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? nativeSort.call(toObject(this))\n : nativeSort.call(toObject(this), aFunction(comparefn));\n }\n});\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar min = Math.min;\nvar nativeLastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar SLOPPY_METHOD = sloppyArrayMethod('lastIndexOf');\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = (NEGATIVE_ZERO || SLOPPY_METHOD) ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return nativeLastIndexOf.apply(this, arguments) || 0;\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n return -1;\n} : nativeLastIndexOf;\n","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\nvar nativeReverse = [].reverse;\nvar test = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {\n reverse: function reverse() {\n if (isArray(this)) this.length = this.length;\n return nativeReverse.call(this);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toInteger = require('../internals/to-integer');\nvar thisNumberValue = require('../internals/this-number-value');\nvar repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar nativeToFixed = 1.0.toFixed;\nvar floor = Math.floor;\n\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\nvar FORCED = nativeToFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !fails(function () {\n // V8 ~ Android 4.3-\n nativeToFixed.call({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.github.io/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n // eslint-disable-next-line max-statements\n toFixed: function toFixed(fractionDigits) {\n var number = thisNumberValue(this);\n var fractDigits = toInteger(fractionDigits);\n var data = [0, 0, 0, 0, 0, 0];\n var sign = '';\n var result = '0';\n var e, z, j, k;\n\n var multiply = function (n, c) {\n var index = -1;\n var c2 = c;\n while (++index < 6) {\n c2 += n * data[index];\n data[index] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n };\n\n var divide = function (n) {\n var index = 6;\n var c = 0;\n while (--index >= 0) {\n c += data[index];\n data[index] = floor(c / n);\n c = (c % n) * 1e7;\n }\n };\n\n var dataToString = function () {\n var index = 6;\n var s = '';\n while (--index >= 0) {\n if (s !== '' || index === 0 || data[index] !== 0) {\n var t = String(data[index]);\n s = s === '' ? t : s + repeat.call('0', 7 - t.length) + t;\n }\n } return s;\n };\n\n if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');\n // eslint-disable-next-line no-self-compare\n if (number != number) return 'NaN';\n if (number <= -1e21 || number >= 1e21) return String(number);\n if (number < 0) {\n sign = '-';\n number = -number;\n }\n if (number > 1e-21) {\n e = log(number * pow(2, 69, 1)) - 69;\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = fractDigits;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n result = dataToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n result = dataToString() + repeat.call('0', fractDigits);\n }\n }\n if (fractDigits > 0) {\n k = result.length;\n result = sign + (k <= fractDigits\n ? '0.' + repeat.call('0', fractDigits - k) + result\n : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits));\n } else {\n result = sign + result;\n } return result;\n }\n});\n","var classof = require('../internals/classof-raw');\n\n// `thisNumberValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-thisnumbervalue\nmodule.exports = function (value) {\n if (typeof value != 'number' && classof(value) != 'Number') {\n throw TypeError('Incorrect invocation');\n }\n return +value;\n};\n","'use strict';\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.repeat` method implementation\n// https://tc39.github.io/ecma262/#sec-string.prototype.repeat\nmodule.exports = ''.repeat || function repeat(count) {\n var str = String(requireObjectCoercible(this));\n var result = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar nativeParseInt = global.parseInt;\nvar hex = /^[+-]?0[Xx]/;\nvar FORCED = nativeParseInt(whitespaces + '08') !== 8 || nativeParseInt(whitespaces + '0x16') !== 22;\n\n// `parseInt` method\n// https://tc39.github.io/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n var S = trim(String(string));\n return nativeParseInt(S, (radix >>> 0) || (hex.test(S) ? 16 : 10));\n} : nativeParseInt;\n","var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.github.io/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {\n result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.github.io/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.github.io/ecma262/#sec-object.values\n values: createMethod(false)\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\n// `Array.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: sloppyArrayMethod('reduce') }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefineAll = require('../internals/redefine-all');\nvar fails = require('../internals/fails');\nvar anInstance = require('../internals/an-instance');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar arrayFill = require('../internals/array-fill');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = 1 / 0;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nvar packIEEE754 = function (number, mantissaLength, bytes) {\n var buffer = new Array(bytes);\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n var index = 0;\n var exponent, mantissa, c;\n number = abs(number);\n // eslint-disable-next-line no-self-compare\n if (number != number || number === Infinity) {\n // eslint-disable-next-line no-self-compare\n mantissa = number != number ? 1 : 0;\n exponent = eMax;\n } else {\n exponent = floor(log(number) / LN2);\n if (number * (c = pow(2, -exponent)) < 1) {\n exponent--;\n c *= 2;\n }\n if (exponent + eBias >= 1) {\n number += rt / c;\n } else {\n number += rt * pow(2, 1 - eBias);\n }\n if (number * c >= 2) {\n exponent++;\n c /= 2;\n }\n if (exponent + eBias >= eMax) {\n mantissa = 0;\n exponent = eMax;\n } else if (exponent + eBias >= 1) {\n mantissa = (number * c - 1) * pow(2, mantissaLength);\n exponent = exponent + eBias;\n } else {\n mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n exponent = 0;\n }\n }\n for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8);\n exponent = exponent << mantissaLength | mantissa;\n exponentLength += mantissaLength;\n for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8);\n buffer[--index] |= sign * 128;\n return buffer;\n};\n\nvar unpackIEEE754 = function (buffer, mantissaLength) {\n var bytes = buffer.length;\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var nBits = exponentLength - 7;\n var index = bytes - 1;\n var sign = buffer[index--];\n var exponent = sign & 127;\n var mantissa;\n sign >>= 7;\n for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8);\n mantissa = exponent & (1 << -nBits) - 1;\n exponent >>= -nBits;\n nBits += mantissaLength;\n for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8);\n if (exponent === 0) {\n exponent = 1 - eBias;\n } else if (exponent === eMax) {\n return mantissa ? NaN : sign ? -Infinity : Infinity;\n } else {\n mantissa = mantissa + pow(2, mantissaLength);\n exponent = exponent - eBias;\n } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nvar unpackInt32 = function (buffer) {\n return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packInt8 = function (number) {\n return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar packFloat32 = function (number) {\n return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key) {\n defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = bytes.slice(start, start + count);\n return isLittleEndian ? pack : pack.reverse();\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = conversion(+value);\n for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n setInternalState(this, {\n bytes: arrayFill.call(new Array(byteLength), 0),\n byteLength: byteLength\n });\n if (!DESCRIPTORS) this.byteLength = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = getInternalState(buffer).byteLength;\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n setInternalState(this, {\n buffer: buffer,\n byteLength: byteLength,\n byteOffset: offset\n });\n if (!DESCRIPTORS) {\n this.buffer = buffer;\n this.byteLength = byteLength;\n this.byteOffset = offset;\n }\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, 'byteLength');\n addGetter($DataView, 'buffer');\n addGetter($DataView, 'byteLength');\n addGetter($DataView, 'byteOffset');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);\n }\n });\n} else {\n if (!fails(function () {\n NativeArrayBuffer(1);\n }) || !fails(function () {\n new NativeArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new NativeArrayBuffer(); // eslint-disable-line no-new\n new NativeArrayBuffer(1.5); // eslint-disable-line no-new\n new NativeArrayBuffer(NaN); // eslint-disable-line no-new\n return NativeArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new NativeArrayBuffer(toIndex(length));\n };\n var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE] = NativeArrayBuffer[PROTOTYPE];\n for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) {\n createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n }\n }\n ArrayBufferPrototype.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var testView = new $DataView(new $ArrayBuffer(2));\n var nativeSetInt8 = $DataView[PROTOTYPE].setInt8;\n testView.setInt8(0, 2147483648);\n testView.setInt8(1, 2147483649);\n if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n ArrayBuffer: $ArrayBuffer,\n DataView: $DataView\n};\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","var toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\n\n// `ToIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length or index');\n return length;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var toPositiveInteger = require('../internals/to-positive-integer');\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw RangeError('Wrong offset');\n return offset;\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","jQuery(($) => {\n\n class Forms {\n\n constructor() {\n this.inputSelector = `${['text', 'password', 'email', 'url', 'tel', 'number', 'search', 'search-md', 'date']\n .map((selector) => `input[type=${selector}]`)\n .join(', ')}, textarea`;\n this.textAreaSelector = '.materialize-textarea';\n this.$text = $('.md-textarea-auto');\n this.$body = $('body');\n this.$document = $(document);\n }\n\n init() {\n\n if (this.$text.length) {\n let observe;\n \n if (window.attachEvent) {\n observe = function (element, event, handler) {\n element.attachEvent(`on${event}`, handler);\n };\n } else {\n observe = function (element, event, handler) {\n element.addEventListener(event, handler, false);\n };\n }\n \n this.$text.each(function () {\n const self = this;\n \n function resize() {\n self.style.height = 'auto';\n self.style.height = `${self.scrollHeight}px`;\n }\n \n function delayedResize() {\n window.setTimeout(resize, 0);\n }\n \n observe(self, 'change', resize);\n observe(self, 'cut', delayedResize);\n observe(self, 'paste', delayedResize);\n observe(self, 'drop', delayedResize);\n observe(self, 'keydown', delayedResize);\n \n resize();\n });\n }\n\n $(this.inputSelector).each((index, input) => {\n const $this = $(input);\n const isNotValid = input.validity.badInput;\n this.updateTextFields($this);\n\n if (isNotValid) {\n this.toggleActiveClass($this, 'add');\n }\n });\n \n this.addOnFocusEvent();\n this.addOnBlurEvent();\n this.addOnChangeEvent();\n this.addOnResetEvent();\n this.appendHiddenDiv();\n this.makeActiveAutofocus();\n\n $(this.textAreaSelector).each(this.textAreaAutoResize);\n this.$body.on('keyup keydown', this.textAreaSelector, this.textAreaAutoResize);\n }\n\n makeActiveAutofocus() {\n\n this.toggleActiveClass($('input[autofocus]'), 'add');\n }\n\n toggleActiveClass($this, action) {\n let selectors;\n action = `${action}Class`;\n \n if ($this.parent().hasClass('timepicker')) {\n selectors = 'label';\n } else {\n selectors = 'label, i, .input-prefix';\n }\n $this.siblings(selectors)[action]('active');\n }\n\n addOnFocusEvent() {\n this.$document.on('focus', this.inputSelector, (e) => {\n this.toggleActiveClass($(e.target), 'add');\n \n if($(e.target).attr(\"type\") == \"date\") { \n $(e.target).css(\"color\", \"#495057\"); \n }\n });\n }\n\n addOnBlurEvent() {\n this.$document.on('blur', this.inputSelector, (e) => {\n const $this = $(e.target);\n const noValue = !$this.val();\n const isValid = !e.target.validity.badInput;\n const noPlaceholder = $this.attr('placeholder') === undefined;\n \n if (noValue && isValid && noPlaceholder) {\n this.toggleActiveClass($this, 'remove');\n if($this.attr(\"type\") == \"date\") {\n $this.css(\"color\", \"transparent\");\n }\n } \n\n if (!noValue && isValid && noPlaceholder) {\n $this.siblings('i, .input-prefix').removeClass('active');\n\n if($this.attr(\"type\") == \"date\") {\n $this.css(\"color\", \"#495057\");\n }\n }\n\n this.validateField($this);\n });\n }\n\n addOnChangeEvent() {\n this.$document.on('change', this.inputSelector, (e) => {\n const $this = $(e.target);\n \n this.updateTextFields($this);\n this.validateField($this);\n });\n }\n\n addOnResetEvent() {\n this.$document.on('reset', (e) => {\n const $formReset = $(e.target);\n \n if ($formReset.is('form')) {\n const $formInputs = $formReset.find(this.inputSelector);\n \n $formInputs\n .removeClass('valid invalid')\n .each((index, input) => {\n const $this = $(input);\n const noDefaultValue = !$this.val();\n const noPlaceholder = !$this.attr('placeholder');\n \n if (noDefaultValue && noPlaceholder) {\n this.toggleActiveClass($this, 'remove');\n }\n });\n \n $formReset.find('select.initialized').each((index, select) => {\n const $select = $(select);\n const $visibleInput = $select.siblings('input.select-dropdown');\n const defaultValue = $select.children('[selected]').val();\n \n $select.val(defaultValue);\n $visibleInput.val(defaultValue);\n });\n }\n });\n }\n\n appendHiddenDiv() {\n if (!$('.hiddendiv').first().length) {\n const $hiddenDiv = $('
    ');\n this.$body.append($hiddenDiv);\n }\n }\n\n updateTextFields($input) {\n\n if($input.attr(\"type\") !== \"date\") {\n const hasValue = Boolean($input.val().length);\n const hasPlaceholder = Boolean($input.attr('placeholder'));\n const addOrRemove = hasValue || hasPlaceholder ? 'add' : 'remove';\n \n this.toggleActiveClass($input, addOrRemove);\n }\n }\n\n validateField($input) {\n if ($input.hasClass('validate')) {\n const value = $input.val();\n const noValue = !value.length;\n const isValid = !$input[0].validity.badInput;\n \n if (noValue && isValid) {\n $input.removeClass('valid').removeClass('invalid');\n } else {\n const valid = $input[0].validity.valid;\n const length = Number($input.attr('length')) || 0;\n \n if (valid && (!length || length > value.length)) {\n $input.removeClass('invalid').addClass('valid');\n } else {\n $input.removeClass('valid').addClass('invalid');\n }\n }\n }\n }\n \n textAreaAutoResize() {\n const $textarea = $(this);\n \n if ($textarea.val().length) {\n const $hiddenDiv = $('.hiddendiv');\n const fontFamily = $textarea.css('font-family');\n const fontSize = $textarea.css('font-size');\n \n if (fontSize) {\n $hiddenDiv.css('font-size', fontSize);\n }\n \n if (fontFamily) {\n $hiddenDiv.css('font-family', fontFamily);\n }\n \n if ($textarea.attr('wrap') === 'off') {\n $hiddenDiv.css('overflow-wrap', 'normal').css('white-space', 'pre');\n }\n \n $hiddenDiv.text(`${$textarea.val()}\\n`);\n const content = $hiddenDiv.html().replace(/\\n/g, '
    ');\n $hiddenDiv.html(content);\n \n // When textarea is hidden, width goes crazy.\n // Approximate with half of window size\n $hiddenDiv.css('width', $textarea.is(':visible') ? $textarea.width() : $(window).width() / 2);\n $textarea.css('height', $hiddenDiv.height());\n }\n } \n }\n\n //auto init Forms\n const forms = new Forms();\n forms.init();\n\n});\n","jQuery(function ($) {\n\n const SCROLLING_NAVBAR_OFFSET_TOP = 50;\n\n $(window).on('scroll', () => {\n\n const $navbar = $('.navbar');\n \n if (!$navbar.length) return;\n\n $('.scrolling-navbar')[$navbar.offset().top > SCROLLING_NAVBAR_OFFSET_TOP ? 'addClass' : 'removeClass']('top-nav-collapse');\n });\n});\n","jQuery(($) => {\n $.fn.mdbTreeview = function () {\n\n const $this = $(this);\n\n if ($this.hasClass('treeview')) {\n treeviewToggle($this);\n }\n\n if ($this.hasClass('treeview-animated')) {\n treeviewAnimated($this);\n }\n\n if ($this.hasClass('treeview-colorful')) {\n treeviewColorful($this);\n }\n };\n\n function treeviewToggle($this) {\n const $toggler = $this.find('.rotate');\n\n $toggler.each(function () {\n const $this = $(this);\n\n $this.off('click');\n $this.on('click', function () {\n const $this = $(this);\n\n $this.siblings('.nested').toggleClass('active');\n $this.toggleClass('down');\n });\n });\n }\n\n function treeviewAnimated($this) {\n const $elements = $this.find('.treeview-animated-element');\n const $closed = $this.find('.closed');\n\n $this.find('.nested').hide();\n\n $closed.off('click');\n $closed.on('click', function () {\n const $this = $(this);\n const $target = $this.siblings('.nested');\n const $pointer = $this.children('.fa-angle-right');\n\n $this.toggleClass('open');\n $pointer.toggleClass('down');\n\n if (!$target.hasClass('active')) {\n $target.addClass('active').slideDown();\n } else {\n $target.removeClass('active').slideUp();\n }\n });\n\n $elements.off('click');\n $elements.on('click', function () {\n const $this = $(this);\n\n if ($this.hasClass('opened')) {\n $this.removeClass('opened');\n } else {\n $elements.removeClass('opened');\n $this.addClass('opened');\n }\n });\n }\n\n function treeviewColorful($this) {\n const $elements = $this.find('.treeview-colorful-element');\n const $header = $this.find('.treeview-colorful-items-header');\n\n $this.find('.nested').hide();\n\n $header.off('click');\n $header.on('click', function () {\n const $this = $(this);\n const $target = $this.siblings('.nested');\n const $pointerPlus = $this.children('.fa-plus-circle');\n const $pointerMinus = $this.children('.fa-minus-circle');\n\n $this.toggleClass('open');\n $pointerPlus.removeClass('fa-plus-circle');\n $pointerPlus.addClass('fa-minus-circle');\n $pointerMinus.removeClass('fa-minus-circle');\n $pointerMinus.addClass('fa-plus-circle');\n\n if (!$target.hasClass('active')) {\n $target.addClass('active').slideDown();\n } else {\n $target.removeClass('active').slideUp();\n }\n });\n\n $elements.off('click');\n $elements.on('click', function () {\n const $this = $(this);\n\n if ($this.hasClass('opened')) {\n $elements.removeClass('opened');\n } else {\n $elements.removeClass('opened');\n $this.addClass('opened');\n }\n });\n }\n});\n","jQuery($ => {\n\n class WOW {\n init() {\n $('.wow').wow();\n }\n }\n\n class MDBWow {\n constructor($wowElement, customization) {\n this.$wowElement = $wowElement;\n this.customization = customization;\n this.animated = true;\n this.options = this.assignElementCustomization();\n }\n\n init() {\n $(window).scroll(() => {\n if (this.animated) {\n this.hide();\n } else {\n this.mdbWow();\n }\n });\n\n this.appear();\n }\n\n assignElementCustomization() {\n return {\n animationName: this.$wowElement.css('animation-name'),\n offset: 100,\n iteration: this.fallback()\n .or(this.$wowElement.data('wow-iteration'))\n .or(1)\n .value(),\n duration: this.fallback()\n .or(this.$wowElement.data('wow-duration'))\n .or(1000)\n .value(),\n delay: this.fallback()\n .or(this.$wowElement.data('wow-delay'))\n .or(0)\n .value()\n };\n }\n\n mdbWow() {\n if (this.$wowElement.css('visibility') === 'visible') {\n return;\n }\n\n if (this.shouldElementBeVisible(true)) {\n setTimeout(() => this.$wowElement.removeClass('animated'), this.countRemoveTime());\n this.appear();\n }\n }\n\n appear() {\n this.$wowElement.addClass('animated');\n this.$wowElement.css({\n visibility: 'visible',\n 'animation-name': this.options.animationName,\n 'animation-iteration-count': this.options.iteration,\n 'animation-duration': this.options.duration,\n 'animation-delay': this.options.delay\n });\n }\n\n hide() {\n if (this.shouldElementBeVisible(false)) {\n this.$wowElement.removeClass('animated');\n this.$wowElement.css({\n 'animation-name': 'none',\n visibility: 'hidden'\n });\n } else {\n setTimeout(() => {\n this.$wowElement.removeClass('animated');\n }, this.countRemoveTime());\n }\n this.mdbWow();\n this.animated = !this.animated;\n }\n\n shouldElementBeVisible(state) {\n const thisElementOffset = this.getOffset(this.$wowElement[0]);\n const thisElementHeight = this.$wowElement.height();\n const documentHeight = $(document).height();\n const windowHeight = window.innerHeight;\n const scroll = window.scrollY;\n\n const isElementTopVisible = windowHeight + scroll - this.options.offset > thisElementOffset;\n const isElementBottomVisible = windowHeight + scroll - this.options.offset > thisElementOffset + thisElementHeight;\n const isScrolledToTop = scroll < thisElementOffset;\n const isScrolledToBottom = scroll < thisElementOffset + thisElementHeight;\n const isDocumentHeightEqual = windowHeight + scroll === documentHeight;\n const isOffsetHigherThanDocument = thisElementOffset + this.options.offset > documentHeight;\n const isElementBottomHidden = windowHeight + scroll - this.options.offset < thisElementOffset;\n const isScrolledOverTop = scroll > thisElementOffset + this.options.offset;\n const isNotScrolledToTop = scroll < thisElementOffset + this.options.offset;\n const isScrolledOverElement = thisElementOffset + thisElementHeight > documentHeight - this.options.offset;\n\n let returnLogic = false;\n\n if (state) {\n returnLogic = isElementTopVisible && isScrolledToTop ||\n isElementBottomVisible && isScrolledToBottom ||\n isDocumentHeightEqual && isOffsetHigherThanDocument;\n } else {\n returnLogic = isElementTopVisible && isScrolledOverTop ||\n isElementBottomHidden && isNotScrolledToTop ||\n isScrolledOverElement;\n }\n return returnLogic;\n }\n\n countRemoveTime() {\n const defaultAnimationTime = this.$wowElement.css('animation-duration').slice(0, -1) * 1000;\n let removeTime = 0;\n\n if (this.options.duration) {\n removeTime = defaultAnimationTime + this.checkOptionsStringFormat(this.options.duration);\n }\n if (this.options.delay) {\n removeTime += this.checkOptionsStringFormat(this.options.delay);\n }\n return removeTime;\n }\n\n checkOptionsStringFormat(element) {\n let valueToReturn;\n\n if (element.toString().slice(-1) === 's') {\n valueToReturn = element.toString().slice(0, -1);\n } else if (!isNaN(element.toString().slice(-1))) {\n valueToReturn = element;\n } else {\n return console.log('Not supported animation customization format.');\n }\n\n return valueToReturn;\n }\n\n getOffset(element) {\n const box = element.getBoundingClientRect();\n const body = document.body;\n const docEl = document.documentElement;\n const scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop;\n const clientTop = docEl.clientTop || body.clientTop || 0;\n const top = box.top + scrollTop - clientTop;\n\n return Math.round(top);\n }\n\n fallback() {\n return {\n _value: undefined,\n or(value) {\n if (typeof value !== 'undefined' && typeof this._value === 'undefined') {\n this._value = value;\n }\n return this;\n },\n value() {\n return this._value;\n }\n };\n }\n }\n\n $.fn.wow = function (options) {\n this.each(function () {\n const mdbWow = new MDBWow($(this), options);\n mdbWow.init();\n });\n };\n\n window.WOW = WOW;\n\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', 1, function (SEARCH, nativeSearch, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = requireObjectCoercible(this);\n var searcher = regexp == undefined ? undefined : regexp[SEARCH];\n return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n function (regexp) {\n var res = maybeCallNative(nativeSearch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","// `SameValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-samevalue\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","jQuery(($) => {\n const isTouchDevice = 'ontouchstart' in document.documentElement;\n\n const toggleOpen = (btn, open) => {\n if (open && !btn.hasClass('active') || !open && btn.hasClass('active')) {\n btn[open ? 'addClass' : 'removeClass']('active');\n const btnList = document.querySelectorAll('ul .btn-floating');\n btnList.forEach((el) => el.classList[open ? 'add' : 'remove']('shown'));\n }\n };\n\n const handleClick = btn => {\n if (btn.hasClass('active')) {\n toggleOpen(btn, false);\n } else {\n toggleOpen(btn, true);\n }\n };\n\n const $btn = $('.fixed-action-btn:not(.smooth-scroll) > .btn-floating');\n $btn.on('mouseenter', e => {\n if (!isTouchDevice) {\n toggleOpen($(e.currentTarget).parent(), true);\n }\n });\n $btn.parent().on('mouseleave', e => toggleOpen($(e.currentTarget), false));\n $btn.on('click', e => {\n e.preventDefault();\n handleClick($(e.currentTarget).parent());\n });\n\n $.fn.extend({\n openFAB() {\n toggleOpen($(this), true);\n },\n closeFAB() {\n toggleOpen($(this), false);\n }\n });\n});\n\n","jQuery(function ($) {\n\n $(document).on('click.card', '.card', function (e) {\n\n const $this = $(this);\n const $reveal = $this.find('.card-reveal');\n\n if ($reveal.length) {\n\n const $clickedElem = $(e.target);\n const isTitleClicked = $clickedElem.is('.card-reveal .card-title');\n const isTitleIconClicked = $clickedElem.is('.card-reveal .card-title i');\n const isActivatorClicked = $clickedElem.is('.card .activator');\n const isActivatorIconClicked = $clickedElem.is('.card .activator i');\n\n if (isTitleClicked || isTitleIconClicked) {\n takeRevealDown($reveal);\n } else if (isActivatorClicked || isActivatorIconClicked) {\n takeRevealUp($reveal);\n }\n }\n });\n\n const takeRevealUp = (revealElem) => {\n\n revealElem.css({\n display: 'block'\n }).velocity({\n translateY: '-100%'\n }, {\n duration: 300,\n queue: false,\n easing: 'easeInOutQuad'\n });\n };\n\n const takeRevealDown = (revealElem) => {\n\n revealElem.velocity({\n translateY: 0\n }, {\n duration: 225,\n queue: false,\n easing: 'easeInOutQuad',\n complete: function complete() {\n revealElem.css({\n display: 'none'\n });\n }\n });\n };\n\n $('.rotate-btn').on('click', function () {\n\n $(this).closest('.card').toggleClass('flipped');\n\n });\n\n $(window).on('load', function () {\n\n const $rotatingCards = $('.card-rotating');\n $rotatingCards.each(function () {\n const $this = $(this);\n\n const $cardWrapper = $this.parent();\n const $front = $this.find('.front');\n const $back = $this.find('.back');\n const $frontHeight = $this.find('.front').outerHeight();\n const $backHeight = $this.find('.back').outerHeight();\n\n if ($frontHeight > $backHeight) $($cardWrapper, $back).height($frontHeight);\n else if ($frontHeight < $backHeight) $($cardWrapper, $front).height($backHeight);\n else $($cardWrapper).height($backHeight);\n });\n\n });\n\n $('.card-share > a').on('click', function (e) {\n\n e.preventDefault();\n\n $(this)\n .toggleClass('share-expanded')\n .parent()\n .find('div')\n .toggleClass('social-reveal-active');\n });\n\n $('.map-card').on('click', function () {\n $(this).find('.card-body').toggleClass('closed');\n });\n\n});\n","jQuery(($) => {\n\n $.fn.characterCounter = function () {\n\n return this.each(function () {\n\n const $this = $(this);\n const hasLengthAttribute = $this.attr('length') !== undefined;\n\n if (hasLengthAttribute) {\n\n $this.on('input focus', updateCounter);\n $this.on('blur', removeCounterElement);\n\n addCounterElement($this);\n }\n });\n };\n\n function updateCounter() {\n\n const $this = $(this);\n const maxLength = Number($this.attr('length'));\n const actualLength = Number($this.val().length);\n const isValidLength = actualLength <= maxLength;\n\n $this.parent().find('span[class=\"character-counter\"]')\n .html(`${actualLength}/${maxLength}`);\n\n addInputStyle(isValidLength, $this);\n }\n\n function addCounterElement($input) {\n\n const $counterElement = $('')\n .addClass('character-counter')\n .css('float', 'right')\n .css('font-size', '12px')\n .css('height', 1);\n\n $input.parent().append($counterElement);\n }\n\n function removeCounterElement() {\n\n $(this).parent().find('span[class=\"character-counter\"]').html('');\n }\n\n function addInputStyle(isValidLength, $input) {\n\n const inputHasInvalidClass = $input.hasClass('invalid');\n if (isValidLength && inputHasInvalidClass) {\n\n $input.removeClass('invalid');\n } else if (!isValidLength && !inputHasInvalidClass) {\n\n $input.removeClass('valid');\n $input.addClass('invalid');\n }\n }\n\n $(document).ready(() => {\n\n $('input, textarea').characterCounter();\n });\n});\n","jQuery(($) => {\n\n $.fn.collapsible = function (options) {\n\n const defaults = {\n accordion: undefined\n };\n\n options = $.extend(defaults, options);\n\n return this.each(function () {\n\n const $this = $(this);\n\n const $panelHeaders = $this.find('> li > .collapsible-header');\n\n const collapsibleType = $this.data('collapsible');\n\n $this.off('click.collapse', '.collapsible-header');\n $panelHeaders.off('click.collapse');\n\n\n if (options.accordion || collapsibleType === 'accordion' || collapsibleType === undefined) {\n\n $panelHeaders.on('click.collapse', (e) => {\n\n let element = $(e.target);\n\n if (isChildOfPanelHeader(element)) {\n\n element = getPanelHeader(element);\n }\n\n element.toggleClass('active');\n accordionOpen($this, element);\n });\n\n accordionOpen($this, $panelHeaders.filter('.active').first());\n } else {\n\n $panelHeaders.each(function () {\n\n $(this).on('click.collapse', (e) => {\n\n let element = $(e.target);\n if (isChildOfPanelHeader(element)) {\n\n element = getPanelHeader(element);\n }\n element.toggleClass('active');\n expandableOpen(element);\n });\n\n if ($(this).hasClass('active')) {\n\n expandableOpen($(this));\n }\n\n });\n }\n });\n };\n\n function accordionOpen($collapsible, object) {\n\n const $panelHeaders = $collapsible.find('> li > .collapsible-header');\n\n expandableOpen(object);\n\n $panelHeaders.not(object)\n .removeClass('active')\n .parent()\n .removeClass('active')\n .children('.collapsible-body')\n .stop(true, false)\n .slideUp({\n duration: 350,\n easing: 'easeOutQuart',\n queue: false,\n complete() {\n $(this).css('height', '');\n }\n });\n\n }\n\n function expandableOpen(object) {\n\n if (object.hasClass('active')) {\n object.parent().addClass('active');\n } else {\n object.parent().removeClass('active');\n }\n\n if (object.parent().hasClass('active')) {\n object.siblings('.collapsible-body').stop(true, false).slideDown({\n duration: 350,\n easing: 'easeOutQuart',\n queue: false,\n complete() {\n $(this).css('height', '');\n }\n });\n } else {\n object.siblings('.collapsible-body').stop(true, false).slideUp({\n duration: 350,\n easing: 'easeOutQuart',\n queue: false,\n complete() {\n $(this).css('height', '');\n }\n });\n }\n }\n\n function isChildOfPanelHeader(object) {\n\n const $panelHeader = getPanelHeader(object);\n return $panelHeader.length > 0;\n }\n\n function getPanelHeader(object) {\n\n return object.closest('li > .collapsible-header');\n }\n\n $('.collapsible').collapsible();\n\n});\n","jQuery(($) => {\n\n $(document).on('change', '.file-field input[type=\"file\"]', function () {\n\n const $this = $(this);\n console.log($this);\n const $fileField = $this.closest('.file-field');\n const $pathInput = $fileField.find('input.file-path');\n const files = $this.get(0).files;\n let fileNames = [];\n\n if (Array.isArray(files)) {\n fileNames = files.map(file => file.name);\n } else {\n fileNames = Object.values(files).map(file => file.name);\n }\n $pathInput.val(fileNames.join(', '));\n $pathInput.trigger('change');\n });\n});\n","(($) => {\n\n class MdbAutocomplete {\n\n constructor(input, options) {\n\n this.defaults = {\n data: {},\n dataColor: '',\n closeColor: '#4285f4',\n closeBlurColor: '#ced4da',\n inputFocus: '1px solid #4285f4',\n inputBlur: '1px solid #ced4da',\n inputFocusShadow: '0 1px 0 0 #4285f4',\n inputBlurShadow: '',\n visibleOptions: 5\n };\n\n this.enterCharCode = 13;\n this.homeCharCode = 36;\n this.endCharCode = 35;\n this.arrowUpCharCode = 38;\n this.arrowDownCharCode = 40;\n this.tabCharCode = 9;\n this.shiftCharCode = 16;\n this.count = -1;\n this.nextScrollHeight = -45;\n this.$input = input;\n this.options = this.assignOptions(options);\n this.$clearButton = this.$input.next('.mdb-autocomplete-clear');\n this.$autocompleteWrap = $('
      ');\n }\n\n init() {\n \n this.handleEvents();\n }\n\n handleEvents() {\n\n this.setData();\n this.inputFocus();\n this.inputBlur();\n this.inputKeyupData();\n this.inputTabPrevent();\n this.inputLiClick();\n this.clearAutocomplete();\n this.setAutocompleteWrapHeight();\n }\n\n assignOptions(options) {\n\n return $.extend({}, this.defaults, options);\n }\n\n setAutocompleteWrapHeight() {\n this.$autocompleteWrap.css('max-height', `${this.options.visibleOptions * 45}px`);\n }\n\n setData() {\n\n if (Object.keys(this.options.data).length) {\n this.$autocompleteWrap.insertAfter(this.$input);\n }\n }\n\n inputFocus() {\n\n this.$input.on('focus', () => {\n\n this.changeSVGcolors();\n this.$input.css('border-bottom', this.options.inputFocus);\n this.$input.css('box-shadow', this.options.inputFocusShadow);\n });\n }\n\n inputBlur() {\n\n this.$input.on('blur', () => {\n\n this.$input.css('border-bottom', this.options.inputBlur);\n this.$input.css('box-shadow', this.options.inputBlurShadow);\n this.$autocompleteWrap.empty();\n });\n }\n\n inputTabPrevent() {\n let keys = {};\n this.$input.on(\"keydown keyup\", e => {\n if (e.type == \"keydown\" && this.$input.val()) {\n keys[e.which] = true;\n\n if (keys[this.shiftCharCode] && keys[this.tabCharCode]) {\n e.preventDefault();\n this.$clearButton.focus();\n } else if (keys[this.tabCharCode] && !keys[this.shiftCharCode]) {\n e.preventDefault();\n this.$clearButton.focus();\n }\n } else if (e.type == \"keyup\") {\n keys = {};\n }\n });\n\n this.$clearButton.on(\"keydown keyup\", e => {\n if (e.type == \"keydown\" && this.$input.val()) {\n keys[e.which] = true;\n\n if (keys[this.shiftCharCode] && keys[this.tabCharCode]) {\n e.preventDefault();\n this.$input.focus();\n } else if (keys[this.tabCharCode] && !keys[this.shiftCharCode]) {\n e.preventDefault();\n this.$input.focus();\n }\n } else if (e.type == \"keyup\") {\n keys = {};\n }\n });\n }\n\n inputKeyupData() {\n\n this.$input.on('keyup change focus', e => {\n\n if (e.which === this.enterCharCode) {\n if (!this.options.data.includes(this.$input.val())) {\n this.options.data.push(this.$input.val());\n }\n this.$autocompleteWrap.find('.selected').trigger('mousedown');\n this.$autocompleteWrap.empty();\n this.inputBlur();\n this.count = -1;\n this.nextScrollHeight = -45;\n return this.count;\n }\n\n const $inputValue = this.$input.val();\n\n this.$autocompleteWrap.empty();\n\n if ($inputValue.length) {\n\n this.appendOptions(this.options.data, $inputValue);\n\n const $ulList = this.$autocompleteWrap;\n const $ulItems = this.$autocompleteWrap.find('li');\n const nextItemHeight = $ulItems.eq(this.count).outerHeight();\n const previousItemHeight = $ulItems.eq(this.count - 1).outerHeight();\n\n if (e.which === this.homeCharCode) {\n\n this.homeHandler($ulList, $ulItems);\n }\n\n if (e.which === this.endCharCode) {\n\n this.endHandler($ulList, $ulItems);\n }\n\n if (e.which === this.arrowDownCharCode) {\n\n this.arrowDownHandler($ulList, $ulItems, nextItemHeight);\n } else if (e.which === this.arrowUpCharCode) {\n\n this.arrowUpHandler($ulList, $ulItems, nextItemHeight, previousItemHeight);\n }\n\n\n if ($inputValue.length === 0) {\n\n this.$clearButton.css('visibility', 'hidden');\n } else {\n\n this.$clearButton.css('visibility', 'visible');\n }\n\n this.$autocompleteWrap.children().css('color', this.options.dataColor);\n } else {\n this.$clearButton.css('visibility', 'hidden');\n }\n });\n }\n\n endHandler($ulList, $ulItems) {\n\n this.count = $ulItems.length - 1;\n this.nextScrollHeight = ($ulItems.length * 45 - 45);\n $ulList.scrollTop(($ulItems.length) * 45);\n $ulItems.eq(-1).addClass('selected');\n }\n\n homeHandler($ulList, $ulItems) {\n this.count = 0;\n this.nextScrollHeight = -45;\n $ulList.scrollTop(0);\n $ulItems.eq(0).addClass('selected');\n }\n\n arrowDownHandler($ulList, $ulItems, nextItemHeight) {\n\n if (this.count > $ulItems.length - 2) {\n\n this.count = -1;\n $ulItems.scrollTop(0);\n this.nextScrollHeight = -45;\n return;\n } else {\n\n this.count++;\n }\n\n this.nextScrollHeight += nextItemHeight;\n $ulList.scrollTop(this.nextScrollHeight);\n $ulItems.eq(this.count).addClass('selected');\n }\n\n arrowUpHandler($ulList, $ulItems, nextItemHeight, previousItemHeight) {\n\n if (this.count < 1) {\n this.count = $ulItems.length;\n $ulList.scrollTop($ulList.prop('scrollHeight'));\n this.nextScrollHeight = $ulList.prop('scrollHeight') - nextItemHeight;\n } else {\n\n this.count--;\n }\n this.nextScrollHeight -= previousItemHeight;\n $ulList.scrollTop(this.nextScrollHeight);\n $ulItems.eq(this.count).addClass('selected');\n }\n\n appendOptions(data, $inputValue) {\n\n for (const item in data) {\n\n if (data[item].toLowerCase().indexOf($inputValue.toLowerCase()) !== -1) {\n\n const option = $(`
    • ${data[item]}
    • `);\n\n this.$autocompleteWrap.append(option);\n }\n }\n }\n\n inputLiClick() {\n\n this.$autocompleteWrap.on('mousedown', 'li', e => {\n e.preventDefault();\n\n this.$input.val($(e.target).text());\n this.$autocompleteWrap.empty();\n });\n }\n\n clearAutocomplete() {\n\n this.$clearButton.on('click', e => {\n e.preventDefault();\n\n this.count = -1;\n this.nextScrollHeight = -45;\n const $this = $(e.currentTarget);\n\n $this.parent().find('.mdb-autocomplete').val('');\n $this.css('visibility', 'hidden');\n this.$autocompleteWrap.empty();\n $this.parent().find('label').removeClass('active');\n });\n }\n\n changeSVGcolors() {\n\n if (this.$input.hasClass('mdb-autocomplete')) {\n\n this.$input.on('keyup', e => {\n\n this.fillSVG(e, this.options.closeColor);\n });\n\n this.$input.on('blur', e => {\n\n this.fillSVG(e, this.options.closeBlurColor);\n });\n }\n }\n\n fillSVG(e, color) {\n e.preventDefault();\n\n $(e.target).parent().find('.mdb-autocomplete-clear').find('svg').css('fill', color);\n }\n }\n\n $.fn.mdbAutocomplete = function (options) {\n return this.each(function () {\n const mdbAutocomplete = new MdbAutocomplete($(this), options);\n mdbAutocomplete.init();\n });\n };\n\n})(jQuery);\n","let loader_path = './dev/dist/mdb-addons/preloader.html';\nlet windowLoaded = false;\n\n$(window).on('load', function () {\n\n windowLoaded = true;\n});\n\njQuery(function ($) { \n $('body').attr('aria-busy', true);\n\n $('#preloader-markup').load(loader_path, function () {\n\n if (windowLoaded) {\n \n preloaderFading();\n } else {\n \n $(window).on('load', function () { \n\n preloaderFading(); \n });\n }\n });\n});\n\nfunction preloaderFading() {\n $('#mdb-preloader').fadeOut('slow');\n $('body').removeAttr('aria-busy');\n};\n","jQuery(($) => {\n\n const rangeWrapper = '.range-field';\n const rangeType = 'input[type=range]:not(.custom-range):not(.multi-range)';\n const thumbHtml = '';\n let rangeMousedown = false;\n\n function addThumb() {\n const $thumb = $(thumbHtml);\n $(rangeType).after($thumb);\n }\n\n $(document).on('change', rangeType, function () {\n const $thumb = $(this);\n const $thumbValue = $thumb.siblings('.thumb').find('.value');\n $thumbValue.html($thumb.val());\n });\n\n\n $(document).on('mousedown touchstart contextmenu', rangeType, function (e) {\n const $this = $(this);\n const noThumb = !$this.siblings('.thumb').length;\n const isRightClick = e.type === 'contextmenu';\n\n if (noThumb) {\n addThumb();\n }\n\n // this must be here. if you define $thumb before it's create $thumb be empty element.\n const $thumb = $this.siblings('.thumb');\n\n // prevent show thumb when mousemove after right click;\n if (isRightClick) {\n rangeMousedown = false;\n } else {\n rangeMousedown = true;\n }\n\n $this.addClass('active');\n\n if (!$thumb.hasClass('active')) {\n showThumb($thumb);\n }\n\n updateThumbPosition($(this), $thumb);\n\n // Set indicator value\n $thumb.find('.value').html($this.val());\n\n });\n\n $(document).on('mouseup touchend', rangeWrapper, function () {\n const $thumb = $(this).children('.thumb');\n\n rangeMousedown = false;\n\n if ($thumb.hasClass('active')) {\n hideThumb($thumb);\n }\n\n $thumb.removeClass('active');\n\n });\n\n $(document).on('input mousemove touchmove', rangeWrapper, function () {\n const $thumb = $(this).children('.thumb');\n\n if (rangeMousedown) {\n if (!$thumb.hasClass('active')) {\n showThumb($thumb);\n }\n\n updateThumbPosition($(this).children(rangeType), $thumb);\n\n $thumb.find('.value').html($thumb.siblings(rangeType).val());\n }\n });\n\n $(document).on('mouseout touchleave', rangeWrapper, function () {\n if (!rangeMousedown) {\n const $thumb = $(this).children('.thumb');\n\n if ($thumb.hasClass('active')) {\n hideThumb($thumb);\n }\n\n $thumb.removeClass('active');\n }\n });\n\n function updateThumbPosition($this, $thumb) {\n const minValue = $this.attr('min');\n const maxValue = $this.attr('max');\n const widthThumb = $this.width() - 13.5;\n const oneStep = widthThumb / (maxValue - minValue);\n let leftPosition = oneStep * $this.val() - oneStep * minValue;\n\n if (leftPosition < 0) {\n leftPosition = 0;\n } else if (leftPosition > widthThumb) {\n leftPosition = widthThumb;\n }\n\n $thumb.addClass('active').css('left', leftPosition);\n }\n\n function thumbAnimation($thumb, tHeight, tWidth, tTop, tMarginLeft, tDuration, tEasing) {\n $thumb.velocity({\n height: tHeight,\n width: tWidth,\n top: tTop,\n marginLeft: tMarginLeft\n },\n {\n duration: tDuration,\n easing: tEasing ? tEasing : 'swing'\n });\n }\n\n function showThumb($thumb) {\n thumbAnimation($thumb, '30px', '30px', '-27px', '-7px', 200, 'easeOutExpo');\n }\n\n function hideThumb($thumb) {\n thumbAnimation($thumb, '0', '0', '10px', '7px', 200);\n }\n});\n","jQuery(($) => {\n\n class SideNav {\n\n constructor(element, options) {\n\n this.settings = {\n menuLeftMinBorder: 0.3,\n menuLeftMaxBorder: -0.5,\n menuRightMinBorder: -0.3,\n menuRightMaxBorder: 0.5,\n menuVelocityOffset: 10\n };\n\n this.defaults = {\n menuWidth: 240,\n edge: 'left',\n closeOnClick: false,\n breakpoint: 1440,\n timeDurationOpen: 500,\n timeDurationClose: 500,\n timeDurationOverlayOpen: 200,\n timeDurationOverlayClose: 200,\n easingOpen: 'easeInOutQuad',\n easingClose: 'easeInOutQuad',\n showOverlay: true,\n showCloseButton: false,\n slim: false,\n onOpen: null,\n onClose: null\n };\n\n this.$element = element;\n\n this.$elementCloned = element.clone().css({\n display: 'inline-block',\n lineHeight: '24px'\n }).html('');\n\n this.options = this.assignOptions(options);\n\n this.menuOut = false;\n this.lastTouchVelocity = {\n x: {\n startPosition: 0,\n startTime: 0,\n endPosition: 0,\n endTime: 0\n }\n };\n\n this.$body = $('body');\n this.$menu = $(`#${this.$element.attr('data-activates')}`);\n this.$sidenavOverlay = $('#sidenav-overlay');\n this.$dragTarget = $('
      ');\n this.isTouchDevice = 'ontouchstart' in document.documentElement;\n this.$body.append(this.$dragTarget);\n\n }\n\n assignOptions(newOptions) {\n\n return $.extend({}, this.defaults, newOptions);\n }\n\n init() {\n this.setMenuWidth();\n this.setMenuTranslation();\n this.closeOnClick();\n this.openOnClick();\n this.bindTouchEvents();\n this.showCloseButton();\n this.inputOnClick();\n if (this.options.slim === true) {\n this.handleSlim();\n }\n this.onOpen();\n this.onClose();\n if(this.options[0] + this.options[1] + this.options[2] + this.options[3] === 'show' && this.menuOut === false) {\n this.$element.trigger('click')\n }\n if(this.options[0] + this.options[1] + this.options[2] + this.options[3] === 'hide' && this.menuOut === true) {\n this.removeMenu();\n }\n }\n\n setMenuWidth() {\n\n const $sidenavBg = $(`#${this.$menu.attr('id')}`).find('> .sidenav-bg');\n\n this.$menu.css('width', this.options.menuWidth);\n $sidenavBg.css('width', this.options.menuWidth);\n\n }\n\n setMenuTranslation() {\n\n if (this.options.edge === 'left') {\n\n this.$menu.css('transform', 'translateX(-100%)');\n this.$dragTarget.css({\n left: 0\n });\n\n } else {\n\n this.$menu.addClass('right-aligned').css('transform', 'translateX(100%)');\n this.$dragTarget.css({\n right: 0\n });\n }\n\n if (!this.$menu.hasClass('fixed')) {\n return;\n }\n\n if (window.innerWidth > this.options.breakpoint) {\n\n this.menuOut = true; \n this.$menu.css('transform', 'translateX(0)');\n } else {\n\n this.menuOut = false; \n }\n\n this.$menu.find('input[type=text]').on('touchstart', () => {\n\n this.$menu.addClass('transform-fix-input');\n });\n\n $(window).on('resize', () => {\n\n if (!this.isTouchDevice) {\n $('.fixed-sn main, .fixed-sn footer').css('padding-left', this.options.menuWidth);\n }\n if (window.innerWidth > this.options.breakpoint) {\n \n if (this.$sidenavOverlay.length) {\n \n this.removeMenu(true);\n $('.fixed-sn main, .fixed-sn footer').css('padding-left', this.options.menuWidth);\n } else {\n\n if(this.menuOut === false) { $(this).trigger('sidenav_open', [this.options.onOpen]) }\n\n this.$menu.css('transform', 'translateX(0%)');\n this.menuOut = true; \n }\n } else if (this.menuOut === false && !this.isTouchDevice) {\n \n const xValue = this.options.edge === 'left' ? '-100' : '100';\n this.$menu.css('transform', `translateX(${xValue}%)`);\n this.removeMenu(true);\n } else if (!this.isTouchDevice) {\n this.menuOut = false; \n this.removeMenu(true);\n }\n });\n\n }\n\n closeOnClick() {\n\n if (this.options.closeOnClick === true) {\n\n this.$menu.on('click', 'a:not(.collapsible-header)', () => this.removeMenu());\n\n if (this.$menu.css('transform') === 'translateX(0)') {\n this.$menu.on('click', () => this.removeMenu());\n }\n }\n }\n\n onOpen(callback) {\n\n $(this).on('sidenav_open', (event, callback) => {\n if (typeof callback === 'function') {\n\n callback();\n }\n });\n }\n\n onClose(callback) {\n\n $(this).on('sidenav_close', (event, callback) => {\n if (typeof callback === 'function') {\n\n callback();\n }\n });\n }\n\n openOnClick() {\n \n // eslint-disable-next-line consistent-return\n this.$element.on('click', e => {\n e.preventDefault();\n\n if (this.menuOut === true) {\n return this.removeMenu();\n } else {\n $(this).trigger('sidenav_open', [this.options.onOpen]);\n this.menuOut = true;\n }\n\n if (this.options.showOverlay === true) {\n if (!$('#sidenav-overlay').length) {\n \n this.showSidenavOverlay()\n }\n } else {\n this.showCloseButton();\n }\n\n let translateX = [];\n\n if (this.options.edge === 'left') {\n\n translateX = [0, -1 * this.options.menuWidth];\n } else {\n\n translateX = [0, this.options.menuWidth];\n }\n if (this.$menu.css('transform') !== 'matrix(1, 0, 0, 1, 0, 0)') {\n this.$menu.velocity({\n translateX\n }, {\n duration: this.options.timeDurationOpen,\n queue: false,\n easing: this.options.easingOpen\n });\n }\n // this.$sidenavOverlay.on('click', () => this.removeMenu());\n\n this.$sidenavOverlay.on('touchmove', this.touchmoveEventHandler.bind(this));\n this.$menu.on('touchmove', e => {\n\n e.preventDefault();\n\n this.$menu.find('.custom-scrollbar').css('padding-bottom', '30px');\n\n });\n\n if(this.options.showOverlay === false) {\n \n this.menuOut = true;\n }\n });\n }\n\n bindTouchEvents() {\n\n this.$dragTarget.on('click', () => {\n \n if (this.menuOut) {\n this.removeMenu();\n } \n } );\n\n this.$dragTarget.on('touchstart', e => {\n\n this.lastTouchVelocity.x.startPosition = e.touches[0].clientX;\n this.lastTouchVelocity.x.startTime = Date.now();\n });\n this.$dragTarget.on('touchmove', this.touchmoveEventHandler.bind(this));\n this.$dragTarget.on('touchend', this.touchendEventHandler.bind(this));\n }\n\n showCloseButton() {\n\n if (this.options.showCloseButton === true) {\n\n this.$menu.prepend(this.$elementCloned);\n this.$menu.find('.logo-wrapper').css({\n borderTop: '1px solid rgba(153,153,153,.3)'\n });\n }\n }\n\n inputOnClick() {\n\n this.$menu.find('input[type=text]').on('touchstart', () => this.$menu.css('transform', 'translateX(0)'));\n }\n\n removeMenu(restoreMenu) {\n\n this.$body.css({\n overflow: '',\n width: ''\n });\n\n this.$menu.velocity({\n translateX: this.options.edge === 'left' ? '-100%' : '100%'\n }, {\n duration: this.options.timeDurationClose,\n queue: false,\n easing: this.options.easingClose,\n complete: () => {\n if (restoreMenu === true) {\n this.$menu.removeAttr('style');\n this.$menu.css('width', this.options.menuWidth);\n }\n }\n });\n\n this.$menu.removeClass('transform-fix-input');\n this.hideSidenavOverlay();\n this.menuOut = false;\n \n $('.fixed-sn .double-nav').css('padding-left', 'unset');\n $('.fixed-sn main, .fixed-sn footer').css({\n 'padding-left': '0'\n });\n $(this).trigger('sidenav_close', [this.options.onClose]);\n }\n\n handleSlim() {\n\n const $toggle = $('#toggle');\n $toggle.on('click', () => {\n if (this.$menu.hasClass('slim')) {\n this.$menu.removeClass('slim');\n $('.sv-slim-icon').removeClass('fa-angle-double-right').addClass('fa-angle-double-left');\n $('.fixed-sn .double-nav').css({\n transition: 'all .3s ease-in-out',\n 'padding-left': '15.9rem'\n });\n\n $('.fixed-sn main, .fixed-sn footer').css({\n transition: 'all .3s ease-in-out',\n 'padding-left': '15rem'\n });\n\n } else {\n\n this.$menu.addClass('slim');\n $('.sv-slim-icon').removeClass('fa-angle-double-left').addClass('fa-angle-double-right');\n $('.fixed-sn .double-nav').css('padding-left', '4.6rem');\n $('.fixed-sn main, .fixed-sn footer').css({\n 'padding-left': '3.7rem'\n });\n }\n });\n }\n\n touchmoveEventHandler(e) {\n\n if (e.type !== 'touchmove') {\n\n return;\n }\n\n const [touch] = e.touches;\n let touchX = touch.clientX;\n\n // calculate velocity every 20ms\n if (Date.now() - this.lastTouchVelocity.x.startTime > 20) {\n\n this.lastTouchVelocity.x.startPosition = touch.clientX;\n this.lastTouchVelocity.x.startTime = Date.now();\n }\n\n this.disableScrolling();\n\n const overlayExists = this.$sidenavOverlay.length !== 0;\n if (!overlayExists) {\n\n this.buildSidenavOverlay();\n }\n\n // Keep within boundaries\n if (this.options.edge === 'left') {\n\n if (touchX > this.options.menuWidth) {\n\n touchX = this.options.menuWidth;\n } else if (touchX < 0) {\n\n touchX = 0;\n }\n }\n\n this.translateSidenavX(touchX);\n this.updateOverlayOpacity(touchX);\n }\n\n calculateTouchVelocityX() {\n\n const distance = Math.abs(this.lastTouchVelocity.x.endPosition - this.lastTouchVelocity.x.startPosition);\n const time = Math.abs(this.lastTouchVelocity.x.endTime - this.lastTouchVelocity.x.startTime);\n\n return distance / time;\n }\n\n touchendEventHandler(e) {\n\n if (e.type !== 'touchend') {\n\n return;\n }\n\n const touch = e.changedTouches[0];\n\n this.lastTouchVelocity.x.endTime = Date.now();\n this.lastTouchVelocity.x.endPosition = touch.clientX;\n const velocityX = this.calculateTouchVelocityX();\n\n const touchX = touch.clientX;\n let leftPos = touchX - this.options.menuWidth;\n let rightPos = touchX - this.options.menuWidth / 2;\n if (leftPos > 0) {\n leftPos = 0;\n }\n if (rightPos < 0) {\n rightPos = 0;\n }\n\n if (this.options.edge === 'left') {\n\n // If velocityX <= 0.3 then the user is flinging the menu closed so ignore this.menuOut\n if (this.menuOut || velocityX <= this.settings.menuLeftMinBorder || velocityX < this.options.menuLeftMaxBorder) {\n\n if (leftPos !== 0) {\n\n this.translateMenuX([0, leftPos], '300');\n }\n\n this.showSidenavOverlay();\n\n } else if (!this.menuOut || velocityX > this.settings.menuLeftMinBorder) {\n\n this.enableScrolling();\n this.translateMenuX([-1 * this.options.menuWidth - this.options.menuVelocityOffset, leftPos], '200');\n this.hideSidenavOverlay();\n }\n\n this.$dragTarget.css({\n width: '10px',\n right: '',\n left: 0\n });\n } else if (this.menuOut && velocityX >= this.settings.menuRightMinBorder || velocityX > this.settings.menuRightMaxBorder) {\n\n this.translateMenuX([0, rightPos], '300');\n this.showSidenavOverlay();\n\n this.$dragTarget.css({\n width: '50%',\n right: '',\n left: 0\n });\n } else if (!this.menuOut || velocityX < this.settings.menuRightMinBorder) {\n\n this.enableScrolling();\n this.translateMenuX([this.options.menuWidth + this.options.menuVelocityOffset, rightPos], '200');\n this.hideSidenavOverlay();\n\n this.$dragTarget.css({\n width: '10px',\n right: 0,\n left: ''\n });\n }\n }\n\n buildSidenavOverlay() {\n\n if (this.options.showOverlay === true) {\n\n this.$sidenavOverlay = $('
      ');\n this.$sidenavOverlay.css('opacity', 0).on('click', () => this.removeMenu());\n\n this.$body.append(this.$sidenavOverlay);\n }\n }\n\n disableScrolling() {\n\n const oldWidth = this.$body.innerWidth();\n this.$body.css('overflow', 'hidden');\n this.$body.width(oldWidth);\n }\n\n enableScrolling() {\n\n this.$body.css({\n overflow: '',\n width: ''\n });\n }\n\n translateMenuX(fromTo, duration) {\n\n this.$menu.velocity({\n translateX: fromTo\n }, {\n duration: typeof duration === 'string' ? Number(duration) : duration,\n queue: false,\n easing: this.options.easingOpen\n });\n }\n\n translateSidenavX(touchX) {\n\n if (this.options.edge === 'left') {\n\n const isRightDirection = touchX >= this.options.menuWidth / 2;\n this.menuOut = isRightDirection;\n\n this.$menu.css('transform', `translateX(${touchX - this.options.menuWidth}px)`);\n } else {\n\n const isLeftDirection = touchX < window.innerWidth - this.options.menuWidth / 2;\n this.menuOut = isLeftDirection;\n\n let rightPos = touchX - this.options.menuWidth / 2;\n if (rightPos < 0) {\n rightPos = 0;\n }\n\n this.$menu.css('transform', `translateX(${rightPos}px)`);\n }\n }\n\n updateOverlayOpacity(touchX) {\n\n let overlayPercentage;\n if (this.options.edge === 'left') {\n\n overlayPercentage = touchX / this.options.menuWidth;\n } else {\n\n overlayPercentage = Math.abs((touchX - window.innerWidth) / this.options.menuWidth);\n }\n\n this.$sidenavOverlay.velocity({\n opacity: overlayPercentage\n }, {\n duration: 10,\n queue: false,\n easing: this.options.easingOpen\n });\n }\n\n showSidenavOverlay() {\n\n if (this.options.showOverlay === true && !$('#sidenav-overlay').length) {\n this.buildSidenavOverlay();\n }\n this.$sidenavOverlay.velocity({\n opacity: 1\n }, {\n duration: this.options.timeDurationOverlayOpen,\n queue: false,\n easing: this.options.easingOpen\n });\n }\n\n hideSidenavOverlay() {\n\n this.$sidenavOverlay.velocity({\n opacity: 0\n }, {\n duration: this.options.timeDurationOverlayClose,\n queue: false,\n easing: this.options.easingOpen,\n complete() {\n $(this).remove();\n }\n });\n }\n\n }\n\n $.fn.sideNav = function (options) {\n $(this).each(function () {\n const sidenav = new SideNav($(this), options);\n sidenav.init();\n });\n };\n\n $('.side-nav').on('touchmove', function (e) {\n e.stopPropagation();\n }, false);\n\n});\n","jQuery(() => {\n const SMOOTH_SCROLL_DURATION = 700;\n\n $('.smooth-scroll').on('click', 'a', function (e) {\n e.preventDefault();\n\n const $this = $(this);\n const elAttr = $this.attr('href');\n\n if (typeof elAttr !== undefined && elAttr.indexOf('#') === 0) {\n\n const offset = $(this).attr('data-offset') || 0;\n\n $('body,html').animate({\n scrollTop: $(elAttr).offset().top - offset\n }, SMOOTH_SCROLL_DURATION);\n\n const setHash = $this.parentsUntil('.smooth-scroll').last().parent().attr('data-allow-hashes');\n\n if (typeof setHash !== undefined && setHash !== false) {\n\n history.replaceState(null, null, elAttr);\n }\n }\n });\n});\n","jQuery(($) => {\n\n class Dropdown {\n\n constructor($activator, options = {}) {\n\n this.$activator = $activator;\n this.$activates = $(`#${$activator.attr('data-activates')}`);\n /* eslint-disable newline-per-chained-call */\n this.options = {\n inDuration: this.fallback().or($activator.data('induration')).or($activator.attr('data-in-duration')).or(options.inDuration).or(300).value(),\n outDuration: this.fallback().or($activator.data('outduration')).or($activator.attr('data-out-duration')).or(options.outDuration).or(225).value(),\n easingEffectIn: this.fallback().or($activator.data('easingeffectin')).or($activator.attr('data-easing-effect-in')).or(options.easingEffectIn).or('easeOutCubic').value(),\n easingEffectOut: this.fallback().or($activator.data('easingeffectout')).or($activator.attr('data-easing-effect-out')).or(options.easingEffectOut).or('swing').value(),\n constrainWidth: this.fallback().or($activator.data('constrainwidth')).or($activator.attr('data-constrain-width')).or(options.constrainWidth).or(true).value(),\n hover: this.fallback().or($activator.data('hover')).or($activator.attr('data-hover')).or(options.hover).or(false).value(),\n gutter: this.fallback().or($activator.data('gutter')).or($activator.attr('data-gutter')).or(options.gutter).or(0).value(),\n belowOrigin: this.fallback().or($activator.data('beloworigin')).or($activator.attr('data-below-origin')).or(options.belowOrigin).or(false).value(),\n alignment: this.fallback().or($activator.data('alignment')).or($activator.attr('data-alignment')).or(options.alignment).or('left').value(),\n maxHeight: this.fallback().or($activator.data('maxheight')).or($activator.attr('data-max-height')).or(options.maxHeight).or('').value(),\n resetScroll: this.fallback().or($activator.data('resetscroll')).or($activator.attr('data-reset-scroll')).or(options.resetScroll).or(true).value()\n };\n /* eslint-enable newline-per-chained-call */\n this.isFocused = false;\n }\n\n static mdbDropdownAutoInit() {\n\n $('.dropdown-button').dropdown();\n\n this.bindMultiLevelDropdownEvents();\n this.bindBootstrapEvents();\n }\n\n static bindMultiLevelDropdownEvents() {\n\n $('.multi-level-dropdown .dropdown-submenu > a').on(\"mouseenter\", function(e) {\n var submenu = $(this);\n $('.multi-level-dropdown .dropdown-submenu .dropdown-menu').removeClass('show');\n submenu.next('.dropdown-menu').addClass('show');\n e.stopPropagation();\n });\n \n $('.multi-level-dropdown .dropdown').on(\"hidden.bs.dropdown\", function() {\n // hide any open menus when parent closes\n $('.multi-level-dropdown .dropdown-menu.show').removeClass('show');\n });\n }\n\n static bindBootstrapEvents() {\n\n const $dropdowns = $('.dropdown, .dropup');\n $dropdowns.on({\n 'show.bs.dropdown': (e) => {\n\n const $dropdown = $(e.target);\n const effects = this._getDropdownEffects($dropdown);\n this._dropdownEffectStart($dropdown, effects.effectIn);\n },\n 'shown.bs.dropdown': (e) => {\n\n const $dropdown = $(e.target);\n const effects = this._getDropdownEffects($dropdown);\n if (effects.effectIn && effects.effectOut) {\n\n this._dropdownEffectEnd($dropdown, effects);\n }\n },\n 'hide.bs.dropdown': (e) => {\n\n const mediaQuery = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n const $dropdown = $(e.target);\n const effects = this._getDropdownEffects($dropdown);\n if (effects.effectOut) {\n \n if(!mediaQuery) {\n e.preventDefault();\n }\n\n this._dropdownEffectStart($dropdown, effects.effectOut);\n this._dropdownEffectEnd($dropdown, effects, () => {\n\n $dropdown.removeClass('show');\n $dropdown.find('.dropdown-menu').removeClass('show');\n });\n }\n }\n });\n }\n\n static _getDropdownEffects($dropdown) {\n\n let defaultInEffect = 'fadeIn';\n let defaultOutEffect = 'fadeOut';\n const $dropdownMenu = $dropdown.find('.dropdown-menu');\n const $parentUl = $dropdown.parents('ul.nav');\n\n if ($parentUl.height > 0) {\n\n defaultInEffect = $parentUl.data('dropdown-in') || null;\n defaultOutEffect = $parentUl.data('dropdown-out') || null;\n }\n\n return {\n effectIn: $dropdownMenu.data('dropdown-in') || defaultInEffect,\n effectOut: $dropdownMenu.data('dropdown-out') || defaultOutEffect\n };\n }\n\n static _dropdownEffectStart($dropdown, effectToStart) {\n\n if (effectToStart) {\n\n $dropdown.addClass('dropdown-animating');\n $dropdown.find('.dropdown-menu').addClass(['animated', effectToStart].join(' '));\n }\n }\n\n static _dropdownEffectEnd($dropdown, effects, callback) {\n\n $dropdown.one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', () => {\n\n $dropdown.removeClass('dropdown-animating');\n $dropdown.find('.dropdown-menu').removeClass(['animated', effects.effectIn, effects.effectOut].join(' '));\n\n if (typeof callback === 'function') {\n\n callback();\n }\n });\n }\n\n returnPublicInterface() {\n\n return {\n $activator: this.$activator,\n $activates: this.$activates,\n updatePosition: this.updatePosition.bind(this)\n };\n }\n\n init() {\n\n this.appendDropdownToActivator();\n\n if (this.options.hover) {\n\n this.handleHoverableDropdown();\n\n } else {\n\n this.handleClickableDropdown();\n }\n\n this.bindEvents();\n }\n\n appendDropdownToActivator() {\n\n this.$activator.after(this.$activates);\n }\n\n handleHoverableDropdown() {\n\n let opened = false;\n\n this.$activator.unbind(`click.${this.$activator.attr('id')}`);\n\n this.$activator.on('mouseenter', () => {\n\n if (opened === false) {\n\n this.placeDropdown();\n opened = true;\n }\n });\n\n this.$activator.on('mouseleave', (e) => {\n\n const toEl = e.toElement || e.relatedTarget;\n const mouseHoversDropdown = $(toEl).closest('.dropdown-content').is(this.$activates);\n if (!mouseHoversDropdown) {\n\n this.$activates.stop(true, true);\n this.hideDropdown();\n opened = false;\n }\n });\n\n this.$activates.on('mouseleave', (e) => {\n\n const toEl = e.toElement || e.relatedTarget;\n const mouseHoversActivator = $(toEl).closest('.dropdown-button').is(this.$activator);\n if (!mouseHoversActivator) {\n\n this.$activates.stop(true, true);\n this.hideDropdown();\n opened = false;\n }\n });\n }\n\n handleClickableDropdown() {\n\n this.$activator.unbind(`click.${this.$activator.attr('id')}`);\n this.$activator.bind(`click.${this.$activator.attr('id')}`, (e) => {\n\n if (this.isFocused) {\n\n return;\n }\n\n const activatorClicked = this.$activator.get(0) === e.currentTarget;\n const activatorActive = this.$activator.hasClass('active');\n const dropdownContentClicked = $(e.target).closest('.dropdown-content').length !== 0;\n if (activatorClicked && !activatorActive && !dropdownContentClicked) {\n\n e.preventDefault();\n this.placeDropdown('click');\n } else if (activatorActive) {\n\n this.hideDropdown();\n $(document).unbind(`click.${this.$activates.attr('id')} touchstart.${this.$activates.attr('id')}`);\n }\n\n if (this.$activates.hasClass('active')) {\n\n $(document).bind(`click.${this.$activates.attr('id')} touchstart.${this.$activates.attr('id')}`, (e) => {\n\n const clickedOutsideDropdown = !this.$activates.is(e.target) && !this.$activator.is(e.target) && !this.$activator.find(e.target).length;\n if (clickedOutsideDropdown) {\n\n this.hideDropdown();\n $(document).unbind(`click.${this.$activates.attr('id')} touchstart.${this.$activates.attr('id')}`);\n }\n });\n }\n });\n }\n\n bindEvents() {\n\n this.$activator.on('open', (e, eventType) => {\n\n this.placeDropdown(eventType);\n });\n\n this.$activator.on('close', this.hideDropdown.bind(this));\n }\n\n placeDropdown(eventType) {\n\n if (eventType === 'focus') {\n\n this.isFocused = true;\n }\n\n this.$activates.addClass('active');\n this.$activator.addClass('active');\n\n if (this.options.constrainWidth === true) {\n\n this.$activates.css('width', this.$activator.outerWidth());\n } else {\n\n this.$activates.css('white-space', 'nowrap');\n }\n\n this.updatePosition();\n\n this.showDropdown();\n }\n\n showDropdown() {\n\n this.$activates.stop(true, true).css('opacity', 0)\n .slideDown({\n queue: false,\n duration: this.options.inDuration,\n easing: this.options.easingEffectIn,\n complete() {\n $(this).css('height', '');\n }\n })\n .animate({\n opacity: 1,\n // eslint-disable-next-line object-curly-newline\n ...this.options.resetScroll && { scrollTop: 0 }\n }, {\n queue: false,\n duration: this.options.inDuration,\n easing: 'easeOutSine'\n });\n }\n\n hideDropdown() {\n\n this.isFocused = false;\n this.$activates.fadeOut({\n durations: this.options.outDuration,\n easing: this.options.easingEffectOut\n });\n this.$activates.removeClass('active');\n this.$activator.removeClass('active');\n\n setTimeout(() => {\n this.$activates.css('max-height', this.options.maxHeight);\n }, this.options.outDuration);\n }\n\n updatePosition() {\n\n const windowHeight = window.innerHeight;\n const originHeight = this.$activator.innerHeight();\n const offsetTop = this.$activator.offset().top - $(window).scrollTop();\n\n const currAlignment = this._getHorizontalAlignment();\n let gutterSpacing = 0;\n let leftPosition = 0;\n\n const $wrapper = this.$activator.parent();\n let verticalOffset = this.options.belowOrigin ? originHeight : 0;\n const scrollOffset = !$wrapper.is('body') && $wrapper.get(0).scrollHeight > $wrapper.get(0).clientHeight ? $wrapper.get(0).scrollTop : 0;\n\n const doesNotFitFromBottom = offsetTop + this.$activates.innerHeight() > windowHeight;\n const doesNotFitFromTop = offsetTop + originHeight - this.$activates.innerHeight() < 0;\n if (doesNotFitFromBottom && doesNotFitFromTop) {\n\n const adjustedHeight = windowHeight - offsetTop - verticalOffset;\n this.$activates.css('max-height', adjustedHeight);\n } else if (doesNotFitFromBottom) {\n\n if (!verticalOffset) {\n verticalOffset += originHeight;\n }\n\n verticalOffset -= this.$activates.innerHeight();\n }\n\n if (currAlignment === 'left') {\n\n gutterSpacing = this.options.gutter;\n leftPosition = this.$activator.position().left + gutterSpacing;\n } else if (currAlignment === 'right') {\n\n const offsetRight = this.$activator.position().left + this.$activator.outerWidth() - this.$activates.outerWidth();\n gutterSpacing = -this.options.gutter;\n leftPosition = offsetRight + gutterSpacing;\n }\n\n this.$activates.css({\n position: 'absolute',\n top: this.$activator.position().top + verticalOffset + scrollOffset,\n left: leftPosition\n });\n }\n\n _getHorizontalAlignment() {\n\n const offsetLeft = this.$activator.offset().left;\n\n if (offsetLeft + this.$activates.innerWidth() > $(window).width()) {\n\n return 'right';\n } else if (offsetLeft - this.$activates.innerWidth() + this.$activator.innerWidth() < 0) {\n\n return 'left';\n }\n\n return this.options.alignment;\n }\n\n fallback() {\n\n return {\n _value: undefined,\n or(value) {\n if (typeof value !== 'undefined' && typeof this._value === 'undefined') {\n this._value = value;\n }\n return this;\n },\n value() {\n return this._value;\n }\n };\n }\n }\n\n $.fn.scrollTo = function (elem) {\n\n this.scrollTop(this.scrollTop() - this.offset().top + $(elem).offset().top);\n return this;\n };\n\n $.fn.dropdown = function (options) {\n\n if (this.length > 1) {\n\n const instances = [];\n\n this.each(function () {\n\n const dropdown = new Dropdown(this, options);\n dropdown.init();\n\n instances.push(dropdown.returnPublicInterface());\n });\n\n return instances;\n }\n\n const dropdown = new Dropdown(this, options);\n dropdown.init();\n\n return dropdown.returnPublicInterface();\n };\n $.dropdown = {\n initAnimations: () => {\n Dropdown.bindBootstrapEvents();\n }\n };\n \n Dropdown.mdbDropdownAutoInit();\n\n});\n\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n var keys = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys.length > index) {\n descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n if (descriptor !== undefined) createProperty(result, key, descriptor);\n }\n return result;\n }\n});\n","jQuery(($) => {\n\n class DropdownSearchable {\n\n constructor($searchWrappers, options = {}) {\n\n this.$searchWrappers = $searchWrappers;\n this.options = {\n color: this.fallback().or(options.color).or('#000').value(),\n backgroundColor: this.fallback().or(options.backgroundColor).or('').value(),\n fontSize: this.fallback().or(options.fontSize).or('.9rem').value(),\n fontWeight: this.fallback().or(options.fontWeight).or('400').value(),\n borderRadius: this.fallback().or(options.borderRadius).or('').value(),\n borderColor: this.fallback().or(options.borderColor).or('').value(),\n margin: this.fallback().or(options.margin).or('').value()\n };\n }\n\n init() {\n\n this.bindSearchEvents();\n\n return this.$searchWrappers.css({\n color: this.options.color,\n backgroundColor: this.options.backgroundColor,\n fontSize: this.options.fontSize,\n fontWeight: this.options.fontWeight,\n borderRadius: this.options.borderRadius,\n borderColor: this.options.borderColor,\n margin: this.options.margin\n });\n }\n\n bindSearchEvents() {\n\n this.$searchWrappers.each(function () {\n\n const $searchInput = $(this).find('input').first();\n $searchInput.on('keyup', () => {\n\n const $linksInDropMenu = $searchInput.closest('div[id]').find('a, li');\n $linksInDropMenu.each(function () {\n\n const $this = $(this);\n if ($this.html().toLowerCase().indexOf($searchInput.val().toLowerCase()) > -1) {\n\n $this.css({\n display: ''\n });\n } else {\n\n $this.css({\n display: 'none'\n });\n }\n });\n });\n });\n }\n\n fallback() {\n\n return {\n _value: undefined,\n or(value) {\n if (typeof value !== 'undefined' && typeof this._value === 'undefined') {\n this._value = value;\n }\n return this;\n },\n value() {\n return this._value;\n }\n };\n }\n }\n\n $.fn.mdbDropSearch = function (options) {\n\n const dropdownSearchable = new DropdownSearchable(this, options);\n return dropdownSearchable.init();\n };\n});\n","import MaterialSelectView from './material-select-view';\n\njQuery(($) => {\n\n class MaterialSelect {\n\n constructor($nativeSelect, options = {}) {\n\n this.options = {\n destroy: this.fallback().or(options.destroy).or(false).value(),\n validate: this.fallback().or($nativeSelect.attr('data-validate')).or(options.validate).or(false).value(),\n selectId: this.fallback().or($nativeSelect.attr('data-select-id')).or(options.selectId).or(null).value(),\n defaultMaterialInput: this.fallback().or($nativeSelect.attr('data-default-material-input')).or(options.defaultMaterialInput).or(false).value(),\n fasClasses: this.fallback().or($nativeSelect.attr('data-fas-classes')).or(options.fasClasses).or('').value(),\n farClasses: this.fallback().or($nativeSelect.attr('data-far-classes')).or(options.farClasses).or('').value(),\n fabClasses: this.fallback().or($nativeSelect.attr('data-fab-classes')).or(options.fabClasses).or('').value(),\n copyClassesOption: this.fallback().or($nativeSelect.attr('data-copy-classes-option')).or(options.copyClassesOption).or(false).value(),\n labels: {\n selectAll: this.fallback().or($nativeSelect.attr('data-label-select-all')).or((options.labels || {}).selectAll).or('Select all').value(),\n optionsSelected: this.fallback().or($nativeSelect.attr('data-label-options-selected')).or((options.labels || {}).optionsSelected).or('options selected').value(),\n validFeedback: this.fallback().or($nativeSelect.attr('data-label-valid-feedback')).or((options.labels || {}).validFeedback).or('Ok').value(),\n invalidFeedback: this.fallback().or($nativeSelect.attr('data-label-invalid-feedback')).or((options.labels || {}).invalidFeedback).or('Incorrect value').value(),\n noSearchResults: this.fallback().or($nativeSelect.attr('data-label-no-search-results')).or((options.labels || {}).noSearchResults).or('No results').value()\n },\n keyboardActiveClass: this.fallback().or($nativeSelect.attr('data-keyboard-active-class')).or(options.keyboardActiveClass).or('heavy-rain-gradient').value(),\n placeholder: this.fallback().or($nativeSelect.attr('data-placeholder')).or(options.placeholder).or(null).value(),\n visibleOptions: this.fallback().or($nativeSelect.attr('data-visible-options')).or(options.visibleOptions).or(5).value(),\n maxSelectedOptions: this.fallback().or($nativeSelect.attr('data-max-selected-options')).or(options.maxSelectedOptions).or(5).value(),\n showResetButton: this.fallback().or($nativeSelect.attr('data-show-reset-button')).or(options.showResetButton).or(false).value()\n };\n\n this.uuid = $nativeSelect.attr('id') || this.options.selectId || this._randomUUID();\n\n // eslint-disable-next-line no-undef\n this.view = new MaterialSelectView(\n $nativeSelect,\n {\n options: this.options,\n properties: {\n id: this.uuid\n }\n }\n );\n\n this.selectedOptionsIndexes = []; // jQuery indexes; `.eq()` is operating on these\n\n MaterialSelect.mutationObservers = [];\n }\n\n get isInitialized() {\n\n return Boolean(this.view.$nativeSelect.data('select-id')) && this.view.$nativeSelect.hasClass('initialized');\n }\n\n static clearMutationObservers() {\n\n MaterialSelect.mutationObservers.forEach((observer) => {\n\n observer.disconnect();\n observer.customStatus = 'stopped';\n });\n }\n\n static mdbSelectAutoInit() {\n\n $('.mdb-select.mdb-select-autoinit').materialSelect();\n }\n\n init() {\n\n if (this.options.destroy) {\n\n this.view.destroy();\n return;\n }\n\n if (this.isInitialized) {\n\n this.view.destroy();\n }\n\n this.view.render();\n this.view.selectPreselectedOptions((optionIndex) => this._toggleSelectedValue(optionIndex));\n\n this.bindEvents();\n }\n\n bindEvents() {\n\n this.bindMutationObserverChange();\n\n if (this.view.isEditable && this.view.isSearchable) {\n\n this.view.bindResetButtonClick(() => this._resetSelection());\n }\n\n this.view.bindAddNewOptionClick();\n this.view.bindMaterialSelectFocus();\n this.view.bindMaterialSelectClick();\n this.view.bindMaterialSelectBlur();\n this.view.bindMaterialOptionsListTouchstart();\n this.view.bindMaterialSelectKeydown();\n this.view.bindMaterialSelectDropdownToggle();\n this.view.bindToggleAllClick((materialOptionIndex) => this._toggleSelectedValue(materialOptionIndex));\n this.view.bindMaterialOptionMousedown();\n this.view.bindMaterialOptionClick((optionIndex) => this._toggleSelectedValue(optionIndex));\n\n if (!this.view.isMultiple && this.view.isSearchable) {\n\n this.view.bindSingleMaterialOptionClick();\n }\n\n if (this.view.isSearchable) {\n\n this.view.bindSearchInputKeyup();\n }\n\n this.view.bindHtmlClick();\n this.view.bindMobileDevicesMousedown();\n this.view.bindSaveBtnClick(); // @Depreciated\n }\n\n bindMutationObserverChange() {\n\n const config = {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n };\n const observer = new MutationObserver(this._onMutationObserverChange.bind(this));\n observer.observe(this.view.$nativeSelect.get(0), config);\n observer.customId = this.uuid;\n observer.customStatus = 'observing';\n\n MaterialSelect.clearMutationObservers();\n MaterialSelect.mutationObservers.push(observer);\n }\n\n _onMutationObserverChange(mutationsList) {\n\n mutationsList.forEach((mutation) => {\n\n const $select = $(mutation.target).closest('select');\n if ($select.data('stop-refresh') !== true && (mutation.type === 'childList' || mutation.type === 'attributes' && $(mutation.target).is('option'))) {\n\n // eslint-disable-next-line object-curly-newline\n $select.materialSelect({ destroy: true });\n $select.materialSelect();\n }\n });\n }\n\n _resetSelection() {\n\n this.selectedOptionsIndexes = [];\n this.view.$nativeSelect.find('option').prop('selected', false);\n }\n\n _toggleSelectedValue(optionIndex) {\n\n const selectedValueIndex = this.selectedOptionsIndexes.indexOf(optionIndex);\n const isSelected = selectedValueIndex !== -1;\n\n if (!isSelected) {\n\n this.selectedOptionsIndexes.push(optionIndex);\n } else {\n\n this.selectedOptionsIndexes.splice(selectedValueIndex, 1);\n }\n\n this.view.$nativeSelect.find('option').eq(optionIndex).prop('selected', !isSelected);\n\n this._setValueToMaterialSelect();\n\n return !isSelected;\n }\n\n _setValueToMaterialSelect() {\n\n let value = '';\n const selectedValuesCount = this.selectedOptionsIndexes.length;\n\n this.selectedOptionsIndexes.forEach((index) => value += `, ${this.view.$nativeSelect.find('option').eq(index).text().replace(/ +/g, ' ').trim()}`);\n\n if (this.options.maxSelectedOptions >= 0 && selectedValuesCount > this.options.maxSelectedOptions) {\n value = `${selectedValuesCount} ${this.options.labels.optionsSelected}`;\n } else {\n value = value.substring(2);\n }\n\n if (value.length === 0) {\n value = this.view.$nativeSelect.find('option:disabled').eq(0).text();\n }\n\n this.view.$nativeSelect.siblings(`${this.options.defaultMaterialInput ? 'input.multi-bs-select' : 'input.select-dropdown'}`).val(value);\n }\n\n _randomUUID() {\n\n let d = new Date().getTime();\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\n\n // eslint-disable-next-line no-bitwise\n const r = (d + Math.random() * 16) % 16 | 0;\n d = Math.floor(d / 16);\n // eslint-disable-next-line no-bitwise\n return (c === 'x' ? r : r & 0x3 | 0x8).toString(16);\n });\n }\n\n fallback() {\n\n return {\n _value: undefined,\n or(value) {\n if (typeof value !== 'undefined' && typeof this._value === 'undefined') {\n this._value = value;\n }\n return this;\n },\n value() {\n return this._value;\n }\n };\n }\n }\n\n $.fn.materialSelect = function (options) {\n\n $(this).not('.browser-default').not('.custom-select').each(function () {\n\n const materialSelect = new MaterialSelect($(this), options);\n materialSelect.init();\n });\n };\n\n (function (originalVal) {\n\n $.fn.val = function (value) {\n\n if (!arguments.length) {\n\n return originalVal.call(this);\n }\n\n if (this.data('stop-refresh') !== true && this.hasClass('mdb-select') && this.hasClass('initialized')) {\n\n MaterialSelect.clearMutationObservers();\n\n this.materialSelect({\n destroy: true\n });\n\n const ret = originalVal.call(this, value);\n this.materialSelect();\n\n return ret;\n }\n\n return originalVal.call(this, value);\n };\n }($.fn.val));\n\n MaterialSelect.mdbSelectAutoInit();\n});\n","var $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n fill: fill\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n","/*\n Enhanced Bootstrap Modals\n https://mdbootstrap.com\n office@mdbootstrap.com\n*/\n\n(function($){\n $('body').on('shown.bs.modal', '.modal', function() {\n if(!$('.modal-backdrop').length) {\n\n $modal_dialog = $(this).children('.modal-dialog')\n\n if($modal_dialog.hasClass('modal-side')) {\n $(this).addClass('modal-scrolling');\n $('body').addClass('scrollable');\n }\n\n if($modal_dialog.hasClass('modal-frame')) {\n $(this).addClass('modal-content-clickable');\n $('body').addClass('scrollable');\n }\n }\n });\n $('body').on('hidden.bs.modal', '.modal', function() {\n $('body').removeClass('scrollable');\n });\n})(jQuery);\n","/*\n * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/\n *\n * Uses the built in easing capabilities added In jQuery 1.1\n * to offer multiple easing options\n *\n * TERMS OF USE - jQuery Easing\n *\n * Open source under the BSD License.\n *\n * Copyright © 2008 George McGinley Smith\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this list of\n * conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright notice, this list\n * of conditions and the following disclaimer in the documentation and/or other materials\n * provided with the distribution.\n *\n * Neither the name of the author nor the names of contributors may be used to endorse\n * or promote products derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE\n * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED\n * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n * OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n*/\n\n// t: current time, b: begInnIng value, c: change In value, d: duration\njQuery.easing['jswing'] = jQuery.easing['swing'];\n\njQuery.extend( jQuery.easing,\n{\n def: 'easeOutQuad',\n swing: function (x, t, b, c, d) {\n //alert(jQuery.easing.default);\n return jQuery.easing[jQuery.easing.def](x, t, b, c, d);\n },\n easeInQuad: function (x, t, b, c, d) {\n return c*(t/=d)*t + b;\n },\n easeOutQuad: function (x, t, b, c, d) {\n return -c *(t/=d)*(t-2) + b;\n },\n easeInOutQuad: function (x, t, b, c, d) {\n if ((t/=d/2) < 1) return c/2*t*t + b;\n return -c/2 * ((--t)*(t-2) - 1) + b;\n },\n easeInCubic: function (x, t, b, c, d) {\n return c*(t/=d)*t*t + b;\n },\n easeOutCubic: function (x, t, b, c, d) {\n return c*((t=t/d-1)*t*t + 1) + b;\n },\n easeInOutCubic: function (x, t, b, c, d) {\n if ((t/=d/2) < 1) return c/2*t*t*t + b;\n return c/2*((t-=2)*t*t + 2) + b;\n },\n easeInQuart: function (x, t, b, c, d) {\n return c*(t/=d)*t*t*t + b;\n },\n easeOutQuart: function (x, t, b, c, d) {\n return -c * ((t=t/d-1)*t*t*t - 1) + b;\n },\n easeInOutQuart: function (x, t, b, c, d) {\n if ((t/=d/2) < 1) return c/2*t*t*t*t + b;\n return -c/2 * ((t-=2)*t*t*t - 2) + b;\n },\n easeInQuint: function (x, t, b, c, d) {\n return c*(t/=d)*t*t*t*t + b;\n },\n easeOutQuint: function (x, t, b, c, d) {\n return c*((t=t/d-1)*t*t*t*t + 1) + b;\n },\n easeInOutQuint: function (x, t, b, c, d) {\n if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;\n return c/2*((t-=2)*t*t*t*t + 2) + b;\n },\n easeInSine: function (x, t, b, c, d) {\n return -c * Math.cos(t/d * (Math.PI/2)) + c + b;\n },\n easeOutSine: function (x, t, b, c, d) {\n return c * Math.sin(t/d * (Math.PI/2)) + b;\n },\n easeInOutSine: function (x, t, b, c, d) {\n return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;\n },\n easeInExpo: function (x, t, b, c, d) {\n return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;\n },\n easeOutExpo: function (x, t, b, c, d) {\n return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;\n },\n easeInOutExpo: function (x, t, b, c, d) {\n if (t==0) return b;\n if (t==d) return b+c;\n if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;\n return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;\n },\n easeInCirc: function (x, t, b, c, d) {\n return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;\n },\n easeOutCirc: function (x, t, b, c, d) {\n return c * Math.sqrt(1 - (t=t/d-1)*t) + b;\n },\n easeInOutCirc: function (x, t, b, c, d) {\n if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;\n return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;\n },\n easeInElastic: function (x, t, b, c, d) {\n var s=1.70158;var p=0;var a=c;\n if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;\n if (a < Math.abs(c)) { a=c; var s=p/4; }\n else var s = p/(2*Math.PI) * Math.asin (c/a);\n return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;\n },\n easeOutElastic: function (x, t, b, c, d) {\n var s=1.70158;var p=0;var a=c;\n if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;\n if (a < Math.abs(c)) { a=c; var s=p/4; }\n else var s = p/(2*Math.PI) * Math.asin (c/a);\n return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;\n },\n easeInOutElastic: function (x, t, b, c, d) {\n var s=1.70158;var p=0;var a=c;\n if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);\n if (a < Math.abs(c)) { a=c; var s=p/4; }\n else var s = p/(2*Math.PI) * Math.asin (c/a);\n if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;\n return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;\n },\n easeInBack: function (x, t, b, c, d, s) {\n if (s == undefined) s = 1.70158;\n return c*(t/=d)*t*((s+1)*t - s) + b;\n },\n easeOutBack: function (x, t, b, c, d, s) {\n if (s == undefined) s = 1.70158;\n return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;\n },\n easeInOutBack: function (x, t, b, c, d, s) {\n if (s == undefined) s = 1.70158;\n if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;\n return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;\n },\n easeInBounce: function (x, t, b, c, d) {\n return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;\n },\n easeOutBounce: function (x, t, b, c, d) {\n if ((t/=d) < (1/2.75)) {\n return c*(7.5625*t*t) + b;\n } else if (t < (2/2.75)) {\n return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;\n } else if (t < (2.5/2.75)) {\n return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;\n } else {\n return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;\n }\n },\n easeInOutBounce: function (x, t, b, c, d) {\n if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;\n return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;\n }\n});\n\n/*\n *\n * TERMS OF USE - EASING EQUATIONS\n *\n * Open source under the BSD License.\n *\n * Copyright © 2001 Robert Penner\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this list of\n * conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright notice, this list\n * of conditions and the following disclaimer in the documentation and/or other materials\n * provided with the distribution.\n *\n * Neither the name of the author nor the names of contributors may be used to endorse\n * or promote products derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE\n * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED\n * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n * OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n */","/*! VelocityJS.org (1.2.3). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License */\n/*! VelocityJS.org jQuery Shim (1.0.1). (C) 2014 The jQuery Foundation. MIT @license: en.wikipedia.org/wiki/MIT_License. */\n/*! Note that this has been modified by Materialize to confirm that Velocity is not already being imported. */\njQuery.Velocity?console.log(\"Velocity is already loaded. You may be needlessly importing Velocity again; note that Materialize includes Velocity.\"):(!function(e){function t(e){var t=e.length,a=r.type(e);return\"function\"===a||r.isWindow(e)?!1:1===e.nodeType&&t?!0:\"array\"===a||0===t||\"number\"==typeof t&&t>0&&t-1 in e}if(!e.jQuery){var r=function(e,t){return new r.fn.init(e,t)};r.isWindow=function(e){return null!=e&&e==e.window},r.type=function(e){return null==e?e+\"\":\"object\"==typeof e||\"function\"==typeof e?n[i.call(e)]||\"object\":typeof e},r.isArray=Array.isArray||function(e){return\"array\"===r.type(e)},r.isPlainObject=function(e){var t;if(!e||\"object\"!==r.type(e)||e.nodeType||r.isWindow(e))return!1;try{if(e.constructor&&!o.call(e,\"constructor\")&&!o.call(e.constructor.prototype,\"isPrototypeOf\"))return!1}catch(a){return!1}for(t in e);return void 0===t||o.call(e,t)},r.each=function(e,r,a){var n,o=0,i=e.length,s=t(e);if(a){if(s)for(;i>o&&(n=r.apply(e[o],a),n!==!1);o++);else for(o in e)if(n=r.apply(e[o],a),n===!1)break}else if(s)for(;i>o&&(n=r.call(e[o],o,e[o]),n!==!1);o++);else for(o in e)if(n=r.call(e[o],o,e[o]),n===!1)break;return e},r.data=function(e,t,n){if(void 0===n){var o=e[r.expando],i=o&&a[o];if(void 0===t)return i;if(i&&t in i)return i[t]}else if(void 0!==t){var o=e[r.expando]||(e[r.expando]=++r.uuid);return a[o]=a[o]||{},a[o][t]=n,n}},r.removeData=function(e,t){var n=e[r.expando],o=n&&a[n];o&&r.each(t,function(e,t){delete o[t]})},r.extend=function(){var e,t,a,n,o,i,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for(\"boolean\"==typeof s&&(c=s,s=arguments[l]||{},l++),\"object\"!=typeof s&&\"function\"!==r.type(s)&&(s={}),l===u&&(s=this,l--);u>l;l++)if(null!=(o=arguments[l]))for(n in o)e=s[n],a=o[n],s!==a&&(c&&a&&(r.isPlainObject(a)||(t=r.isArray(a)))?(t?(t=!1,i=e&&r.isArray(e)?e:[]):i=e&&r.isPlainObject(e)?e:{},s[n]=r.extend(c,i,a)):void 0!==a&&(s[n]=a));return s},r.queue=function(e,a,n){function o(e,r){var a=r||[];return null!=e&&(t(Object(e))?!function(e,t){for(var r=+t.length,a=0,n=e.length;r>a;)e[n++]=t[a++];if(r!==r)for(;void 0!==t[a];)e[n++]=t[a++];return e.length=n,e}(a,\"string\"==typeof e?[e]:e):[].push.call(a,e)),a}if(e){a=(a||\"fx\")+\"queue\";var i=r.data(e,a);return n?(!i||r.isArray(n)?i=r.data(e,a,o(n)):i.push(n),i):i||[]}},r.dequeue=function(e,t){r.each(e.nodeType?[e]:e,function(e,a){t=t||\"fx\";var n=r.queue(a,t),o=n.shift();\"inprogress\"===o&&(o=n.shift()),o&&(\"fx\"===t&&n.unshift(\"inprogress\"),o.call(a,function(){r.dequeue(a,t)}))})},r.fn=r.prototype={init:function(e){if(e.nodeType)return this[0]=e,this;throw new Error(\"Not a DOM node.\")},offset:function(){var t=this[0].getBoundingClientRect?this[0].getBoundingClientRect():{top:0,left:0};return{top:t.top+(e.pageYOffset||document.scrollTop||0)-(document.clientTop||0),left:t.left+(e.pageXOffset||document.scrollLeft||0)-(document.clientLeft||0)}},position:function(){function e(){for(var e=this.offsetParent||document;e&&\"html\"===!e.nodeType.toLowerCase&&\"static\"===e.style.position;)e=e.offsetParent;return e||document}var t=this[0],e=e.apply(t),a=this.offset(),n=/^(?:body|html)$/i.test(e.nodeName)?{top:0,left:0}:r(e).offset();return a.top-=parseFloat(t.style.marginTop)||0,a.left-=parseFloat(t.style.marginLeft)||0,e.style&&(n.top+=parseFloat(e.style.borderTopWidth)||0,n.left+=parseFloat(e.style.borderLeftWidth)||0),{top:a.top-n.top,left:a.left-n.left}}};var a={};r.expando=\"velocity\"+(new Date).getTime(),r.uuid=0;for(var n={},o=n.hasOwnProperty,i=n.toString,s=\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"),l=0;ln;++n){var o=u(r,e,a);if(0===o)return r;var i=l(r,e,a)-t;r-=i/o}return r}function p(){for(var t=0;b>t;++t)w[t]=l(t*x,e,a)}function f(t,r,n){var o,i,s=0;do i=r+(n-r)/2,o=l(i,e,a)-t,o>0?n=i:r=i;while(Math.abs(o)>h&&++s=y?c(t,s):0==l?s:f(t,r,r+x)}function g(){V=!0,(e!=r||a!=n)&&p()}var m=4,y=.001,h=1e-7,v=10,b=11,x=1/(b-1),S=\"Float32Array\"in t;if(4!==arguments.length)return!1;for(var P=0;4>P;++P)if(\"number\"!=typeof arguments[P]||isNaN(arguments[P])||!isFinite(arguments[P]))return!1;e=Math.min(e,1),a=Math.min(a,1),e=Math.max(e,0),a=Math.max(a,0);var w=S?new Float32Array(b):new Array(b),V=!1,C=function(t){return V||g(),e===r&&a===n?t:0===t?0:1===t?1:l(d(t),r,n)};C.getControlPoints=function(){return[{x:e,y:r},{x:a,y:n}]};var T=\"generateBezier(\"+[e,r,a,n]+\")\";return C.toString=function(){return T},C}function u(e,t){var r=e;return m.isString(e)?b.Easings[e]||(r=!1):r=m.isArray(e)&&1===e.length?s.apply(null,e):m.isArray(e)&&2===e.length?x.apply(null,e.concat([t])):m.isArray(e)&&4===e.length?l.apply(null,e):!1,r===!1&&(r=b.Easings[b.defaults.easing]?b.defaults.easing:v),r}function c(e){if(e){var t=(new Date).getTime(),r=b.State.calls.length;r>1e4&&(b.State.calls=n(b.State.calls));for(var o=0;r>o;o++)if(b.State.calls[o]){var s=b.State.calls[o],l=s[0],u=s[2],d=s[3],g=!!d,y=null;d||(d=b.State.calls[o][3]=t-16);for(var h=Math.min((t-d)/u.duration,1),v=0,x=l.length;x>v;v++){var P=l[v],V=P.element;if(i(V)){var C=!1;if(u.display!==a&&null!==u.display&&\"none\"!==u.display){if(\"flex\"===u.display){var T=[\"-webkit-box\",\"-moz-box\",\"-ms-flexbox\",\"-webkit-flex\"];f.each(T,function(e,t){S.setPropertyValue(V,\"display\",t)})}S.setPropertyValue(V,\"display\",u.display)}u.visibility!==a&&\"hidden\"!==u.visibility&&S.setPropertyValue(V,\"visibility\",u.visibility);for(var k in P)if(\"element\"!==k){var A,F=P[k],j=m.isString(F.easing)?b.Easings[F.easing]:F.easing;if(1===h)A=F.endValue;else{var E=F.endValue-F.startValue;if(A=F.startValue+E*j(h,u,E),!g&&A===F.currentValue)continue}if(F.currentValue=A,\"tween\"===k)y=A;else{if(S.Hooks.registered[k]){var H=S.Hooks.getRoot(k),N=i(V).rootPropertyValueCache[H];N&&(F.rootPropertyValue=N)}var L=S.setPropertyValue(V,k,F.currentValue+(0===parseFloat(A)?\"\":F.unitType),F.rootPropertyValue,F.scrollData);S.Hooks.registered[k]&&(i(V).rootPropertyValueCache[H]=S.Normalizations.registered[H]?S.Normalizations.registered[H](\"extract\",null,L[1]):L[1]),\"transform\"===L[0]&&(C=!0)}}u.mobileHA&&i(V).transformCache.translate3d===a&&(i(V).transformCache.translate3d=\"(0px, 0px, 0px)\",C=!0),C&&S.flushTransformCache(V)}}u.display!==a&&\"none\"!==u.display&&(b.State.calls[o][2].display=!1),u.visibility!==a&&\"hidden\"!==u.visibility&&(b.State.calls[o][2].visibility=!1),u.progress&&u.progress.call(s[1],s[1],h,Math.max(0,d+u.duration-t),d,y),1===h&&p(o)}}b.State.isTicking&&w(c)}function p(e,t){if(!b.State.calls[e])return!1;for(var r=b.State.calls[e][0],n=b.State.calls[e][1],o=b.State.calls[e][2],s=b.State.calls[e][4],l=!1,u=0,c=r.length;c>u;u++){var p=r[u].element;if(t||o.loop||(\"none\"===o.display&&S.setPropertyValue(p,\"display\",o.display),\"hidden\"===o.visibility&&S.setPropertyValue(p,\"visibility\",o.visibility)),o.loop!==!0&&(f.queue(p)[1]===a||!/\\.velocityQueueEntryFlag/i.test(f.queue(p)[1]))&&i(p)){i(p).isAnimating=!1,i(p).rootPropertyValueCache={};var d=!1;f.each(S.Lists.transforms3D,function(e,t){var r=/^scale/.test(t)?1:0,n=i(p).transformCache[t];i(p).transformCache[t]!==a&&new RegExp(\"^\\\\(\"+r+\"[^.]\").test(n)&&(d=!0,delete i(p).transformCache[t])}),o.mobileHA&&(d=!0,delete i(p).transformCache.translate3d),d&&S.flushTransformCache(p),S.Values.removeClass(p,\"velocity-animating\")}if(!t&&o.complete&&!o.loop&&u===c-1)try{o.complete.call(n,n)}catch(g){setTimeout(function(){throw g},1)}s&&o.loop!==!0&&s(n),i(p)&&o.loop===!0&&!t&&(f.each(i(p).tweensContainer,function(e,t){/^rotate/.test(e)&&360===parseFloat(t.endValue)&&(t.endValue=0,t.startValue=360),/^backgroundPosition/.test(e)&&100===parseFloat(t.endValue)&&\"%\"===t.unitType&&(t.endValue=0,t.startValue=100)}),b(p,\"reverse\",{loop:!0,delay:o.delay})),o.queue!==!1&&f.dequeue(p,o.queue)}b.State.calls[e]=!1;for(var m=0,y=b.State.calls.length;y>m;m++)if(b.State.calls[m]!==!1){l=!0;break}l===!1&&(b.State.isTicking=!1,delete b.State.calls,b.State.calls=[])}var f,d=function(){if(r.documentMode)return r.documentMode;for(var e=7;e>4;e--){var t=r.createElement(\"div\");if(t.innerHTML=\"\",t.getElementsByTagName(\"span\").length)return t=null,e}return a}(),g=function(){var e=0;return t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||function(t){var r,a=(new Date).getTime();return r=Math.max(0,16-(a-e)),e=a+r,setTimeout(function(){t(a+r)},r)}}(),m={isString:function(e){return\"string\"==typeof e},isArray:Array.isArray||function(e){return\"[object Array]\"===Object.prototype.toString.call(e)},isFunction:function(e){return\"[object Function]\"===Object.prototype.toString.call(e)},isNode:function(e){return e&&e.nodeType},isNodeList:function(e){return\"object\"==typeof e&&/^\\[object (HTMLCollection|NodeList|Object)\\]$/.test(Object.prototype.toString.call(e))&&e.length!==a&&(0===e.length||\"object\"==typeof e[0]&&e[0].nodeType>0)},isWrapped:function(e){return e&&(e.jquery||t.Zepto&&t.Zepto.zepto.isZ(e))},isSVG:function(e){return t.SVGElement&&e instanceof t.SVGElement},isEmptyObject:function(e){for(var t in e)return!1;return!0}},y=!1;if(e.fn&&e.fn.jquery?(f=e,y=!0):f=t.Velocity.Utilities,8>=d&&!y)throw new Error(\"Velocity: IE8 and below require jQuery to be loaded before Velocity.\");if(7>=d)return void(jQuery.fn.velocity=jQuery.fn.animate);var h=400,v=\"swing\",b={State:{isMobile:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),isAndroid:/Android/i.test(navigator.userAgent),isGingerbread:/Android 2\\.3\\.[3-7]/i.test(navigator.userAgent),isChrome:t.chrome,isFirefox:/Firefox/i.test(navigator.userAgent),prefixElement:r.createElement(\"div\"),prefixMatches:{},scrollAnchor:null,scrollPropertyLeft:null,scrollPropertyTop:null,isTicking:!1,calls:[]},CSS:{},Utilities:f,Redirects:{},Easings:{},Promise:t.Promise,defaults:{queue:\"\",duration:h,easing:v,begin:a,complete:a,progress:a,display:a,visibility:a,loop:!1,delay:!1,mobileHA:!0,_cacheValues:!0},init:function(e){f.data(e,\"velocity\",{isSVG:m.isSVG(e),isAnimating:!1,computedStyle:null,tweensContainer:null,rootPropertyValueCache:{},transformCache:{}})},hook:null,mock:!1,version:{major:1,minor:2,patch:2},debug:!1};t.pageYOffset!==a?(b.State.scrollAnchor=t,b.State.scrollPropertyLeft=\"pageXOffset\",b.State.scrollPropertyTop=\"pageYOffset\"):(b.State.scrollAnchor=r.documentElement||r.body.parentNode||r.body,b.State.scrollPropertyLeft=\"scrollLeft\",b.State.scrollPropertyTop=\"scrollTop\");var x=function(){function e(e){return-e.tension*e.x-e.friction*e.v}function t(t,r,a){var n={x:t.x+a.dx*r,v:t.v+a.dv*r,tension:t.tension,friction:t.friction};return{dx:n.v,dv:e(n)}}function r(r,a){var n={dx:r.v,dv:e(r)},o=t(r,.5*a,n),i=t(r,.5*a,o),s=t(r,a,i),l=1/6*(n.dx+2*(o.dx+i.dx)+s.dx),u=1/6*(n.dv+2*(o.dv+i.dv)+s.dv);return r.x=r.x+l*a,r.v=r.v+u*a,r}return function a(e,t,n){var o,i,s,l={x:-1,v:0,tension:null,friction:null},u=[0],c=0,p=1e-4,f=.016;for(e=parseFloat(e)||500,t=parseFloat(t)||20,n=n||null,l.tension=e,l.friction=t,o=null!==n,o?(c=a(e,t),i=c/n*f):i=f;s=r(s||l,i),u.push(1+s.x),c+=16,Math.abs(s.x)>p&&Math.abs(s.v)>p;);return o?function(e){return u[e*(u.length-1)|0]}:c}}();b.Easings={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},spring:function(e){return 1-Math.cos(4.5*e*Math.PI)*Math.exp(6*-e)}},f.each([[\"ease\",[.25,.1,.25,1]],[\"ease-in\",[.42,0,1,1]],[\"ease-out\",[0,0,.58,1]],[\"ease-in-out\",[.42,0,.58,1]],[\"easeInSine\",[.47,0,.745,.715]],[\"easeOutSine\",[.39,.575,.565,1]],[\"easeInOutSine\",[.445,.05,.55,.95]],[\"easeInQuad\",[.55,.085,.68,.53]],[\"easeOutQuad\",[.25,.46,.45,.94]],[\"easeInOutQuad\",[.455,.03,.515,.955]],[\"easeInCubic\",[.55,.055,.675,.19]],[\"easeOutCubic\",[.215,.61,.355,1]],[\"easeInOutCubic\",[.645,.045,.355,1]],[\"easeInQuart\",[.895,.03,.685,.22]],[\"easeOutQuart\",[.165,.84,.44,1]],[\"easeInOutQuart\",[.77,0,.175,1]],[\"easeInQuint\",[.755,.05,.855,.06]],[\"easeOutQuint\",[.23,1,.32,1]],[\"easeInOutQuint\",[.86,0,.07,1]],[\"easeInExpo\",[.95,.05,.795,.035]],[\"easeOutExpo\",[.19,1,.22,1]],[\"easeInOutExpo\",[1,0,0,1]],[\"easeInCirc\",[.6,.04,.98,.335]],[\"easeOutCirc\",[.075,.82,.165,1]],[\"easeInOutCirc\",[.785,.135,.15,.86]]],function(e,t){b.Easings[t[0]]=l.apply(null,t[1])});var S=b.CSS={RegEx:{isHex:/^#([A-f\\d]{3}){1,2}$/i,valueUnwrap:/^[A-z]+\\((.*)\\)$/i,wrappedValueAlreadyExtracted:/[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/,valueSplit:/([A-z]+\\(.+\\))|(([A-z0-9#-.]+?)(?=\\s|$))/gi},Lists:{colors:[\"fill\",\"stroke\",\"stopColor\",\"color\",\"backgroundColor\",\"borderColor\",\"borderTopColor\",\"borderRightColor\",\"borderBottomColor\",\"borderLeftColor\",\"outlineColor\"],transformsBase:[\"translateX\",\"translateY\",\"scale\",\"scaleX\",\"scaleY\",\"skewX\",\"skewY\",\"rotateZ\"],transforms3D:[\"transformPerspective\",\"translateZ\",\"scaleZ\",\"rotateX\",\"rotateY\"]},Hooks:{templates:{textShadow:[\"Color X Y Blur\",\"black 0px 0px 0px\"],boxShadow:[\"Color X Y Blur Spread\",\"black 0px 0px 0px 0px\"],clip:[\"Top Right Bottom Left\",\"0px 0px 0px 0px\"],backgroundPosition:[\"X Y\",\"0% 0%\"],transformOrigin:[\"X Y Z\",\"50% 50% 0px\"],perspectiveOrigin:[\"X Y\",\"50% 50%\"]},registered:{},register:function(){for(var e=0;e=d)switch(e){case\"name\":return\"filter\";case\"extract\":var a=r.toString().match(/alpha\\(opacity=(.*)\\)/i);return r=a?a[1]/100:1;case\"inject\":return t.style.zoom=1,parseFloat(r)>=1?\"\":\"alpha(opacity=\"+parseInt(100*parseFloat(r),10)+\")\"}else switch(e){case\"name\":return\"opacity\";case\"extract\":return r;case\"inject\":return r}}},register:function(){9>=d||b.State.isGingerbread||(S.Lists.transformsBase=S.Lists.transformsBase.concat(S.Lists.transforms3D));for(var e=0;en&&(n=1),o=!/(\\d)$/i.test(n);break;case\"skew\":o=!/(deg|\\d)$/i.test(n);break;case\"rotate\":o=!/(deg|\\d)$/i.test(n)}return o||(i(r).transformCache[t]=\"(\"+n+\")\"),i(r).transformCache[t]}}}();for(var e=0;e=d||3!==o.split(\" \").length||(o+=\" 1\"),o;case\"inject\":return 8>=d?4===n.split(\" \").length&&(n=n.split(/\\s+/).slice(0,3).join(\" \")):3===n.split(\" \").length&&(n+=\" 1\"),(8>=d?\"rgb\":\"rgba\")+\"(\"+n.replace(/\\s+/g,\",\").replace(/\\.(\\d)+(?=,)/g,\"\")+\")\"}}}()}},Names:{camelCase:function(e){return e.replace(/-(\\w)/g,function(e,t){return t.toUpperCase()})},SVGAttribute:function(e){var t=\"width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2\";return(d||b.State.isAndroid&&!b.State.isChrome)&&(t+=\"|transform\"),new RegExp(\"^(\"+t+\")$\",\"i\").test(e)},prefixCheck:function(e){if(b.State.prefixMatches[e])return[b.State.prefixMatches[e],!0];for(var t=[\"\",\"Webkit\",\"Moz\",\"ms\",\"O\"],r=0,a=t.length;a>r;r++){var n;if(n=0===r?e:t[r]+e.replace(/^\\w/,function(e){return e.toUpperCase()}),m.isString(b.State.prefixElement.style[n]))return b.State.prefixMatches[e]=n,[n,!0]}return[e,!1]}},Values:{hexToRgb:function(e){var t,r=/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i,a=/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i;return e=e.replace(r,function(e,t,r,a){return t+t+r+r+a+a}),t=a.exec(e),t?[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]:[0,0,0]},isCSSNullValue:function(e){return 0==e||/^(none|auto|transparent|(rgba\\(0, ?0, ?0, ?0\\)))$/i.test(e)},getUnitType:function(e){return/^(rotate|skew)/i.test(e)?\"deg\":/(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(e)?\"\":\"px\"},getDisplayType:function(e){var t=e&&e.tagName.toString().toLowerCase();return/^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(t)?\"inline\":/^(li)$/i.test(t)?\"list-item\":/^(tr)$/i.test(t)?\"table-row\":/^(table)$/i.test(t)?\"table\":/^(tbody)$/i.test(t)?\"table-row-group\":\"block\"},addClass:function(e,t){e.classList?e.classList.add(t):e.className+=(e.className.length?\" \":\"\")+t},removeClass:function(e,t){e.classList?e.classList.remove(t):e.className=e.className.toString().replace(new RegExp(\"(^|\\\\s)\"+t.split(\" \").join(\"|\")+\"(\\\\s|$)\",\"gi\"),\" \")}},getPropertyValue:function(e,r,n,o){function s(e,r){function n(){u&&S.setPropertyValue(e,\"display\",\"none\")}var l=0;if(8>=d)l=f.css(e,r);else{var u=!1;if(/^(width|height)$/.test(r)&&0===S.getPropertyValue(e,\"display\")&&(u=!0,S.setPropertyValue(e,\"display\",S.Values.getDisplayType(e))),!o){if(\"height\"===r&&\"border-box\"!==S.getPropertyValue(e,\"boxSizing\").toString().toLowerCase()){var c=e.offsetHeight-(parseFloat(S.getPropertyValue(e,\"borderTopWidth\"))||0)-(parseFloat(S.getPropertyValue(e,\"borderBottomWidth\"))||0)-(parseFloat(S.getPropertyValue(e,\"paddingTop\"))||0)-(parseFloat(S.getPropertyValue(e,\"paddingBottom\"))||0);return n(),c}if(\"width\"===r&&\"border-box\"!==S.getPropertyValue(e,\"boxSizing\").toString().toLowerCase()){var p=e.offsetWidth-(parseFloat(S.getPropertyValue(e,\"borderLeftWidth\"))||0)-(parseFloat(S.getPropertyValue(e,\"borderRightWidth\"))||0)-(parseFloat(S.getPropertyValue(e,\"paddingLeft\"))||0)-(parseFloat(S.getPropertyValue(e,\"paddingRight\"))||0);return n(),p}}var g;g=i(e)===a?t.getComputedStyle(e,null):i(e).computedStyle?i(e).computedStyle:i(e).computedStyle=t.getComputedStyle(e,null),\"borderColor\"===r&&(r=\"borderTopColor\"),l=9===d&&\"filter\"===r?g.getPropertyValue(r):g[r],(\"\"===l||null===l)&&(l=e.style[r]),n()}if(\"auto\"===l&&/^(top|right|bottom|left)$/i.test(r)){var m=s(e,\"position\");(\"fixed\"===m||\"absolute\"===m&&/top|left/i.test(r))&&(l=f(e).position()[r]+\"px\")}return l}var l;if(S.Hooks.registered[r]){var u=r,c=S.Hooks.getRoot(u);n===a&&(n=S.getPropertyValue(e,S.Names.prefixCheck(c)[0])),S.Normalizations.registered[c]&&(n=S.Normalizations.registered[c](\"extract\",e,n)),l=S.Hooks.extractValue(u,n)}else if(S.Normalizations.registered[r]){var p,g;p=S.Normalizations.registered[r](\"name\",e),\"transform\"!==p&&(g=s(e,S.Names.prefixCheck(p)[0]),S.Values.isCSSNullValue(g)&&S.Hooks.templates[r]&&(g=S.Hooks.templates[r][1])),l=S.Normalizations.registered[r](\"extract\",e,g)}if(!/^[\\d-]/.test(l))if(i(e)&&i(e).isSVG&&S.Names.SVGAttribute(r))if(/^(height|width)$/i.test(r))try{l=e.getBBox()[r]}catch(m){l=0}else l=e.getAttribute(r);else l=s(e,S.Names.prefixCheck(r)[0]);return S.Values.isCSSNullValue(l)&&(l=0),b.debug>=2&&console.log(\"Get \"+r+\": \"+l),l},setPropertyValue:function(e,r,a,n,o){var s=r;if(\"scroll\"===r)o.container?o.container[\"scroll\"+o.direction]=a:\"Left\"===o.direction?t.scrollTo(a,o.alternateValue):t.scrollTo(o.alternateValue,a);else if(S.Normalizations.registered[r]&&\"transform\"===S.Normalizations.registered[r](\"name\",e))S.Normalizations.registered[r](\"inject\",e,a),s=\"transform\",a=i(e).transformCache[r];else{if(S.Hooks.registered[r]){var l=r,u=S.Hooks.getRoot(r);n=n||S.getPropertyValue(e,u),a=S.Hooks.injectValue(l,a,n),r=u}if(S.Normalizations.registered[r]&&(a=S.Normalizations.registered[r](\"inject\",e,a),r=S.Normalizations.registered[r](\"name\",e)),s=S.Names.prefixCheck(r)[0],8>=d)try{e.style[s]=a}catch(c){b.debug&&console.log(\"Browser does not support [\"+a+\"] for [\"+s+\"]\")}else i(e)&&i(e).isSVG&&S.Names.SVGAttribute(r)?e.setAttribute(r,a):e.style[s]=a;b.debug>=2&&console.log(\"Set \"+r+\" (\"+s+\"): \"+a)}return[s,a]},flushTransformCache:function(e){function t(t){return parseFloat(S.getPropertyValue(e,t))}var r=\"\";if((d||b.State.isAndroid&&!b.State.isChrome)&&i(e).isSVG){var a={translate:[t(\"translateX\"),t(\"translateY\")],skewX:[t(\"skewX\")],skewY:[t(\"skewY\")],scale:1!==t(\"scale\")?[t(\"scale\"),t(\"scale\")]:[t(\"scaleX\"),t(\"scaleY\")],rotate:[t(\"rotateZ\"),0,0]};f.each(i(e).transformCache,function(e){/^translate/i.test(e)?e=\"translate\":/^scale/i.test(e)?e=\"scale\":/^rotate/i.test(e)&&(e=\"rotate\"),a[e]&&(r+=e+\"(\"+a[e].join(\" \")+\") \",delete a[e])})}else{var n,o;f.each(i(e).transformCache,function(t){return n=i(e).transformCache[t],\"transformPerspective\"===t?(o=n,!0):(9===d&&\"rotateZ\"===t&&(t=\"rotate\"),void(r+=t+n+\" \"))}),o&&(r=\"perspective\"+o+\" \"+r)}S.setPropertyValue(e,\"transform\",r)}};S.Hooks.register(),S.Normalizations.register(),b.hook=function(e,t,r){var n=a;return e=o(e),f.each(e,function(e,o){if(i(o)===a&&b.init(o),r===a)n===a&&(n=b.CSS.getPropertyValue(o,t));else{var s=b.CSS.setPropertyValue(o,t,r);\"transform\"===s[0]&&b.CSS.flushTransformCache(o),n=s}}),n};var P=function(){function e(){return s?k.promise||null:l}function n(){function e(e){function p(e,t){var r=a,n=a,i=a;return m.isArray(e)?(r=e[0],!m.isArray(e[1])&&/^[\\d-]/.test(e[1])||m.isFunction(e[1])||S.RegEx.isHex.test(e[1])?i=e[1]:(m.isString(e[1])&&!S.RegEx.isHex.test(e[1])||m.isArray(e[1]))&&(n=t?e[1]:u(e[1],s.duration),e[2]!==a&&(i=e[2]))):r=e,t||(n=n||s.easing),m.isFunction(r)&&(r=r.call(o,V,w)),m.isFunction(i)&&(i=i.call(o,V,w)),[r||0,n,i]}function d(e,t){var r,a;return a=(t||\"0\").toString().toLowerCase().replace(/[%A-z]+$/,function(e){return r=e,\"\"}),r||(r=S.Values.getUnitType(e)),[a,r]}function h(){var e={myParent:o.parentNode||r.body,position:S.getPropertyValue(o,\"position\"),fontSize:S.getPropertyValue(o,\"fontSize\")},a=e.position===L.lastPosition&&e.myParent===L.lastParent,n=e.fontSize===L.lastFontSize;L.lastParent=e.myParent,L.lastPosition=e.position,L.lastFontSize=e.fontSize;var s=100,l={};if(n&&a)l.emToPx=L.lastEmToPx,l.percentToPxWidth=L.lastPercentToPxWidth,l.percentToPxHeight=L.lastPercentToPxHeight;else{var u=i(o).isSVG?r.createElementNS(\"http://www.w3.org/2000/svg\",\"rect\"):r.createElement(\"div\");b.init(u),e.myParent.appendChild(u),f.each([\"overflow\",\"overflowX\",\"overflowY\"],function(e,t){b.CSS.setPropertyValue(u,t,\"hidden\")}),b.CSS.setPropertyValue(u,\"position\",e.position),b.CSS.setPropertyValue(u,\"fontSize\",e.fontSize),b.CSS.setPropertyValue(u,\"boxSizing\",\"content-box\"),f.each([\"minWidth\",\"maxWidth\",\"width\",\"minHeight\",\"maxHeight\",\"height\"],function(e,t){b.CSS.setPropertyValue(u,t,s+\"%\")}),b.CSS.setPropertyValue(u,\"paddingLeft\",s+\"em\"),l.percentToPxWidth=L.lastPercentToPxWidth=(parseFloat(S.getPropertyValue(u,\"width\",null,!0))||1)/s,l.percentToPxHeight=L.lastPercentToPxHeight=(parseFloat(S.getPropertyValue(u,\"height\",null,!0))||1)/s,l.emToPx=L.lastEmToPx=(parseFloat(S.getPropertyValue(u,\"paddingLeft\"))||1)/s,e.myParent.removeChild(u)}return null===L.remToPx&&(L.remToPx=parseFloat(S.getPropertyValue(r.body,\"fontSize\"))||16),null===L.vwToPx&&(L.vwToPx=parseFloat(t.innerWidth)/100,L.vhToPx=parseFloat(t.innerHeight)/100),l.remToPx=L.remToPx,l.vwToPx=L.vwToPx,l.vhToPx=L.vhToPx,b.debug>=1&&console.log(\"Unit ratios: \"+JSON.stringify(l),o),l}if(s.begin&&0===V)try{s.begin.call(g,g)}catch(x){setTimeout(function(){throw x},1)}if(\"scroll\"===A){var P,C,T,F=/^x$/i.test(s.axis)?\"Left\":\"Top\",j=parseFloat(s.offset)||0;s.container?m.isWrapped(s.container)||m.isNode(s.container)?(s.container=s.container[0]||s.container,P=s.container[\"scroll\"+F],T=P+f(o).position()[F.toLowerCase()]+j):s.container=null:(P=b.State.scrollAnchor[b.State[\"scrollProperty\"+F]],C=b.State.scrollAnchor[b.State[\"scrollProperty\"+(\"Left\"===F?\"Top\":\"Left\")]],T=f(o).offset()[F.toLowerCase()]+j),l={scroll:{rootPropertyValue:!1,startValue:P,currentValue:P,endValue:T,unitType:\"\",easing:s.easing,scrollData:{container:s.container,direction:F,alternateValue:C}},element:o},b.debug&&console.log(\"tweensContainer (scroll): \",l.scroll,o)}else if(\"reverse\"===A){if(!i(o).tweensContainer)return void f.dequeue(o,s.queue);\"none\"===i(o).opts.display&&(i(o).opts.display=\"auto\"),\"hidden\"===i(o).opts.visibility&&(i(o).opts.visibility=\"visible\"),i(o).opts.loop=!1,i(o).opts.begin=null,i(o).opts.complete=null,v.easing||delete s.easing,v.duration||delete s.duration,s=f.extend({},i(o).opts,s);var E=f.extend(!0,{},i(o).tweensContainer);for(var H in E)if(\"element\"!==H){var N=E[H].startValue;E[H].startValue=E[H].currentValue=E[H].endValue,E[H].endValue=N,m.isEmptyObject(v)||(E[H].easing=s.easing),b.debug&&console.log(\"reverse tweensContainer (\"+H+\"): \"+JSON.stringify(E[H]),o)}l=E}else if(\"start\"===A){var E;i(o).tweensContainer&&i(o).isAnimating===!0&&(E=i(o).tweensContainer),f.each(y,function(e,t){if(RegExp(\"^\"+S.Lists.colors.join(\"$|^\")+\"$\").test(e)){var r=p(t,!0),n=r[0],o=r[1],i=r[2];if(S.RegEx.isHex.test(n)){for(var s=[\"Red\",\"Green\",\"Blue\"],l=S.Values.hexToRgb(n),u=i?S.Values.hexToRgb(i):a,c=0;cO;O++){var q={delay:j.delay,progress:j.progress};O===z-1&&(q.display=j.display,q.visibility=j.visibility,q.complete=j.complete),P(g,\"reverse\",q)}return e()}};b=f.extend(P,b),b.animate=P;var w=t.requestAnimationFrame||g;return b.State.isMobile||r.hidden===a||r.addEventListener(\"visibilitychange\",function(){r.hidden?(w=function(e){return setTimeout(function(){e(!0)},16)},c()):w=t.requestAnimationFrame||g}),e.Velocity=b,e!==t&&(e.fn.velocity=P,e.fn.velocity.defaults=b.defaults),f.each([\"Down\",\"Up\"],function(e,t){b.Redirects[\"slide\"+t]=function(e,r,n,o,i,s){var l=f.extend({},r),u=l.begin,c=l.complete,p={height:\"\",marginTop:\"\",marginBottom:\"\",paddingTop:\"\",paddingBottom:\"\"},d={};l.display===a&&(l.display=\"Down\"===t?\"inline\"===b.CSS.Values.getDisplayType(e)?\"inline-block\":\"block\":\"none\"),l.begin=function(){u&&u.call(i,i);for(var r in p){d[r]=e.style[r];var a=b.CSS.getPropertyValue(e,r);p[r]=\"Down\"===t?[a,0]:[0,a]}d.overflow=e.style.overflow,e.style.overflow=\"hidden\"},l.complete=function(){for(var t in d)e.style[t]=d[t];c&&c.call(i,i),s&&s.resolver(i)},b(e,p,l)}}),f.each([\"In\",\"Out\"],function(e,t){b.Redirects[\"fade\"+t]=function(e,r,n,o,i,s){var l=f.extend({},r),u={opacity:\"In\"===t?1:0},c=l.complete;l.complete=n!==o-1?l.begin=null:function(){c&&c.call(i,i),s&&s.resolver(i)},l.display===a&&(l.display=\"In\"===t?\"auto\":\"none\"),b(this,u,l)}}),b}(window.jQuery||window.Zepto||window,window,document)}));\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anObject = require('../internals/an-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar nativeArrayBufferSlice = ArrayBuffer.prototype.slice;\n\nvar INCORRECT_SLICE = fails(function () {\n return !new ArrayBuffer(2).slice(1, undefined).byteLength;\n});\n\n// `ArrayBuffer.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-arraybuffer.prototype.slice\n$({ target: 'ArrayBuffer', proto: true, unsafe: true, forced: INCORRECT_SLICE }, {\n slice: function slice(start, end) {\n if (nativeArrayBufferSlice !== undefined && end === undefined) {\n return nativeArrayBufferSlice.call(anObject(this), start); // FF fix\n }\n var length = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = new (speciesConstructor(this, ArrayBuffer))(toLength(fin - first));\n var viewSource = new DataView(this);\n var viewTarget = new DataView(result);\n var index = 0;\n while (first < fin) {\n viewTarget.setUint8(index++, viewSource.getUint8(first++));\n } return result;\n }\n});\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var typedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Float32Array` constructor\n// https://tc39.github.io/ecma262/#sec-typedarray-objects\ntypedArrayConstructor('Float32', 4, function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-arrays-constructors-requires-wrappers');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anInstance = require('../internals/an-instance');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar toOffset = require('../internals/to-offset');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar typedArrayFrom = require('../internals/typed-array-from');\nvar forEach = require('../internals/array-iteration').forEach;\nvar setSpecies = require('../internals/set-species');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar round = Math.round;\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\nvar addGetter = function (it, key) {\n nativeDefineProperty(it, key, { get: function () {\n return getInternalState(this)[key];\n } });\n};\n\nvar isArrayBuffer = function (it) {\n var klass;\n return it instanceof ArrayBuffer || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n return isTypedArray(target)\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n return isTypedArrayIndex(target, key = toPrimitive(key, true))\n ? createPropertyDescriptor(2, target[key])\n : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n if (isTypedArrayIndex(target, key = toPrimitive(key, true))\n && isObject(descriptor)\n && has(descriptor, 'value')\n && !has(descriptor, 'get')\n && !has(descriptor, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !descriptor.configurable\n && (!has(descriptor, 'writable') || descriptor.writable)\n && (!has(descriptor, 'enumerable') || descriptor.enumerable)\n ) {\n target[key] = descriptor.value;\n return target;\n } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n definePropertyModule.f = wrappedDefineProperty;\n addGetter(TypedArrayPrototype, 'buffer');\n addGetter(TypedArrayPrototype, 'byteOffset');\n addGetter(TypedArrayPrototype, 'byteLength');\n addGetter(TypedArrayPrototype, 'length');\n }\n\n $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n defineProperty: wrappedDefineProperty\n });\n\n module.exports = function (TYPE, BYTES, wrapper, CLAMPED) {\n var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + TYPE;\n var SETTER = 'set' + TYPE;\n var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n var TypedArrayConstructor = NativeTypedArrayConstructor;\n var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n var exported = {};\n\n var getter = function (that, index) {\n var data = getInternalState(that);\n return data.view[GETTER](index * BYTES + data.byteOffset, true);\n };\n\n var setter = function (that, index, value) {\n var data = getInternalState(that);\n if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n data.view[SETTER](index * BYTES + data.byteOffset, value, true);\n };\n\n var addElement = function (that, index) {\n nativeDefineProperty(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n anInstance(that, TypedArrayConstructor, CONSTRUCTOR_NAME);\n var index = 0;\n var byteOffset = 0;\n var buffer, byteLength, length;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new ArrayBuffer(byteLength);\n } else if (isArrayBuffer(data)) {\n buffer = data;\n byteOffset = toOffset(offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - byteOffset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (isTypedArray(data)) {\n return fromList(TypedArrayConstructor, data);\n } else {\n return typedArrayFrom.call(TypedArrayConstructor, data);\n }\n setInternalState(that, {\n buffer: buffer,\n byteOffset: byteOffset,\n byteLength: byteLength,\n length: length,\n view: new DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n anInstance(dummy, TypedArrayConstructor, CONSTRUCTOR_NAME);\n if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n if (isArrayBuffer(data)) return $length !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n : typedArrayOffset !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n : new NativeTypedArrayConstructor(data);\n if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n return typedArrayFrom.call(TypedArrayConstructor, data);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n if (!(key in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n }\n });\n TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n }\n\n if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n }\n\n if (TYPED_ARRAY_TAG) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n }\n\n exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n $({\n global: true, forced: TypedArrayConstructor != NativeTypedArrayConstructor, sham: !NATIVE_ARRAY_BUFFER_VIEWS\n }, exported);\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n }\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n }\n\n setSpecies(CONSTRUCTOR_NAME);\n };\n} else module.exports = function () { /* empty */ };\n","/* eslint-disable no-new */\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar NATIVE_ARRAY_BUFFER_VIEWS = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n Int8Array(1);\n}) || !fails(function () {\n new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n new Int8Array();\n new Int8Array(null);\n new Int8Array(1.5);\n new Int8Array(iterable);\n}, true) || fails(function () {\n // Safari 11 bug\n return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n","var toInteger = require('../internals/to-integer');\n\nmodule.exports = function (it) {\n var result = toInteger(it);\n if (result < 0) throw RangeError(\"The argument can't be less than 0\");\n return result;\n};\n","var toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar bind = require('../internals/bind-context');\nvar aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var i, length, result, step, iterator, next;\n if (iteratorMethod != undefined && !isArrayIteratorMethod(iteratorMethod)) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n O = [];\n while (!(step = next.call(iterator)).done) {\n O.push(step.value);\n }\n }\n if (mapping && argumentsLength > 2) {\n mapfn = bind(mapfn, arguments[2], 2);\n }\n length = toLength(O.length);\n result = new (aTypedArrayConstructor(this))(length);\n for (i = 0; length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $copyWithin = require('../internals/array-copy-within');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.copywithin\nArrayBufferViewCore.exportProto('copyWithin', function copyWithin(target, start /* , end */) {\n return $copyWithin.call(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n});\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.copywithin\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $every = require('../internals/array-iteration').every;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.every\nArrayBufferViewCore.exportProto('every', function every(callbackfn /* , thisArg */) {\n return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $fill = require('../internals/array-fill');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.fill\n// eslint-disable-next-line no-unused-vars\nArrayBufferViewCore.exportProto('fill', function fill(value /* , start, end */) {\n return $fill.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $filter = require('../internals/array-iteration').filter;\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.filter\nArrayBufferViewCore.exportProto('filter', function filter(callbackfn /* , thisArg */) {\n var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n var C = speciesConstructor(this, this.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $find = require('../internals/array-iteration').find;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.find\nArrayBufferViewCore.exportProto('find', function find(predicate /* , thisArg */) {\n return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findIndex = require('../internals/array-iteration').findIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.findindex\nArrayBufferViewCore.exportProto('findIndex', function findIndex(predicate /* , thisArg */) {\n return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.foreach\nArrayBufferViewCore.exportProto('forEach', function forEach(callbackfn /* , thisArg */) {\n $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $includes = require('../internals/array-includes').includes;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.includes\nArrayBufferViewCore.exportProto('includes', function includes(searchElement /* , fromIndex */) {\n return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $indexOf = require('../internals/array-includes').indexOf;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.indexof\nArrayBufferViewCore.exportProto('indexOf', function indexOf(searchElement /* , fromIndex */) {\n return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayIterators = require('../modules/es.array.iterator');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar Uint8Array = global.Uint8Array;\nvar arrayValues = ArrayIterators.values;\nvar arrayKeys = ArrayIterators.keys;\nvar arrayEntries = ArrayIterators.entries;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportProto = ArrayBufferViewCore.exportProto;\nvar nativeTypedArrayIterator = Uint8Array && Uint8Array.prototype[ITERATOR];\n\nvar CORRECT_ITER_NAME = !!nativeTypedArrayIterator\n && (nativeTypedArrayIterator.name == 'values' || nativeTypedArrayIterator.name == undefined);\n\nvar typedArrayValues = function values() {\n return arrayValues.call(aTypedArray(this));\n};\n\n// `%TypedArray%.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.entries\nexportProto('entries', function entries() {\n return arrayEntries.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.keys\nexportProto('keys', function keys() {\n return arrayKeys.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.values\nexportProto('values', typedArrayValues, !CORRECT_ITER_NAME);\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportProto(ITERATOR, typedArrayValues, !CORRECT_ITER_NAME);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar $join = [].join;\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.join\n// eslint-disable-next-line no-unused-vars\nArrayBufferViewCore.exportProto('join', function join(separator) {\n return $join.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $lastIndexOf = require('../internals/array-last-index-of');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.lastindexof\n// eslint-disable-next-line no-unused-vars\nArrayBufferViewCore.exportProto('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n return $lastIndexOf.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $map = require('../internals/array-iteration').map;\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.map\nArrayBufferViewCore.exportProto('map', function map(mapfn /* , thisArg */) {\n return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n return new (aTypedArrayConstructor(speciesConstructor(O, O.constructor)))(length);\n });\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduce = require('../internals/array-reduce').left;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduce\nArrayBufferViewCore.exportProto('reduce', function reduce(callbackfn /* , initialValue */) {\n return $reduce(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduceRight = require('../internals/array-reduce').right;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.reduceRicht` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduceright\nArrayBufferViewCore.exportProto('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n return $reduceRight(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar floor = Math.floor;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reverse\nArrayBufferViewCore.exportProto('reverse', function reverse() {\n var that = this;\n var length = aTypedArray(that).length;\n var middle = floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toOffset = require('../internals/to-offset');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line no-undef\n new Int8Array(1).set({});\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.set\nArrayBufferViewCore.exportProto('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar speciesConstructor = require('../internals/species-constructor');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar $slice = [].slice;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line no-undef\n new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.slice\nArrayBufferViewCore.exportProto('slice', function slice(start, end) {\n var list = $slice.call(aTypedArray(this), start, end);\n var C = speciesConstructor(this, this.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $some = require('../internals/array-iteration').some;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.some\nArrayBufferViewCore.exportProto('some', function some(callbackfn /* , thisArg */) {\n return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar $sort = [].sort;\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.sort\nArrayBufferViewCore.exportProto('sort', function sort(comparefn) {\n return $sort.call(aTypedArray(this), comparefn);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.subarray\nArrayBufferViewCore.exportProto('subarray', function subarray(begin, end) {\n var O = aTypedArray(this);\n var length = O.length;\n var beginIndex = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O.constructor))(\n O.buffer,\n O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n );\n});\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar $toLocaleString = [].toLocaleString;\nvar $slice = [].slice;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tolocalestring\nArrayBufferViewCore.exportProto('toLocaleString', function toLocaleString() {\n return $toLocaleString.apply(TO_LOCALE_STRING_BUG ? $slice.call(aTypedArray(this)) : aTypedArray(this), arguments);\n}, FORCED);\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\n\nvar Uint8Array = global.Uint8Array;\nvar Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype;\nvar arrayToString = [].toString;\nvar arrayJoin = [].join;\n\nif (fails(function () { arrayToString.call({}); })) {\n arrayToString = function toString() {\n return arrayJoin.call(this);\n };\n}\n\n// `%TypedArray%.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tostring\nArrayBufferViewCore.exportProto('toString', arrayToString, (Uint8ArrayPrototype || {}).toString != arrayToString);\n","/*!\n * Waves v0.7.6\n * http://fian.my.id/Waves\n *\n * Copyright 2014-2018 Alfiana E. Sibuea and other contributors\n * Released under the MIT license\n * https://github.com/fians/Waves/blob/master/LICENSE\n */\n\n\n(function (window, factory) {\n 'use strict';\n\n // AMD. Register as an anonymous module. Wrap in function so we have access\n // to root via `this`.\n if (typeof define === 'function' && define.amd) {\n define([], function () {\n window.Waves = factory.call(window);\n return window.Waves;\n });\n }\n\n // Node. Does not work with strict CommonJS, but only CommonJS-like\n // environments that support module.exports, like Node.\n else if (typeof exports === 'object') {\n module.exports = factory.call(window);\n }\n\n // Browser globals.\n else {\n window.Waves = factory.call(window);\n }\n})(typeof window === 'object' ? window : this, function () {\n 'use strict';\n\n var Waves = Waves || {};\n var $$ = document.querySelectorAll.bind(document);\n var toString = Object.prototype.toString;\n var isTouchAvailable = 'ontouchstart' in window;\n\n\n // Find exact position of element\n function isWindow(obj) {\n return obj !== null && obj === obj.window;\n }\n\n function getWindow(elem) {\n return isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView;\n }\n\n function isObject(value) {\n var type = typeof value;\n return type === 'function' || type === 'object' && !!value;\n }\n\n function isDOMNode(obj) {\n return isObject(obj) && obj.nodeType > 0;\n }\n\n function getWavesElements(nodes) {\n var stringRepr = toString.call(nodes);\n\n if (stringRepr === '[object String]') {\n return $$(nodes);\n } else if (isObject(nodes) && /^\\[object (Array|HTMLCollection|NodeList|Object)\\]$/.test(stringRepr) && nodes.hasOwnProperty('length')) {\n return nodes;\n } else if (isDOMNode(nodes)) {\n return [nodes];\n }\n\n return [];\n }\n\n function offset(elem) {\n var docElem, win,\n box = {\n top: 0,\n left: 0\n },\n doc = elem && elem.ownerDocument;\n\n docElem = doc.documentElement;\n\n if (typeof elem.getBoundingClientRect !== typeof undefined) {\n box = elem.getBoundingClientRect();\n }\n win = getWindow(doc);\n return {\n top: box.top + win.pageYOffset - docElem.clientTop,\n left: box.left + win.pageXOffset - docElem.clientLeft\n };\n }\n\n function convertStyle(styleObj) {\n var style = '';\n\n for (var prop in styleObj) {\n if (styleObj.hasOwnProperty(prop)) {\n style += (prop + ':' + styleObj[prop] + ';');\n }\n }\n\n return style;\n }\n\n var Effect = {\n\n // Effect duration\n duration: 750,\n\n // Effect delay (check for scroll before showing effect)\n delay: 200,\n\n show: function (e, element, velocity) {\n\n // Disable right click\n if (e.button === 2) {\n return false;\n }\n\n element = element || this;\n\n // Create ripple\n var ripple = document.createElement('div');\n ripple.className = 'waves-ripple waves-rippling';\n element.appendChild(ripple);\n\n // Get click coordinate and element width\n var pos = offset(element);\n var relativeY = 0;\n var relativeX = 0;\n // Support for touch devices\n if ('touches' in e && e.touches.length) {\n relativeY = (e.touches[0].pageY - pos.top);\n relativeX = (e.touches[0].pageX - pos.left);\n }\n //Normal case\n else {\n relativeY = (e.pageY - pos.top);\n relativeX = (e.pageX - pos.left);\n }\n // Support for synthetic events\n relativeX = relativeX >= 0 ? relativeX : 0;\n relativeY = relativeY >= 0 ? relativeY : 0;\n\n var scale = 'scale(' + ((element.clientWidth / 100) * 3) + ')';\n var translate = 'translate(0,0)';\n\n if (velocity) {\n translate = 'translate(' + (velocity.x) + 'px, ' + (velocity.y) + 'px)';\n }\n\n // Attach data to element\n ripple.setAttribute('data-hold', Date.now());\n ripple.setAttribute('data-x', relativeX);\n ripple.setAttribute('data-y', relativeY);\n ripple.setAttribute('data-scale', scale);\n ripple.setAttribute('data-translate', translate);\n\n // Set ripple position\n var rippleStyle = {\n top: relativeY + 'px',\n left: relativeX + 'px'\n };\n\n ripple.classList.add('waves-notransition');\n ripple.setAttribute('style', convertStyle(rippleStyle));\n ripple.classList.remove('waves-notransition');\n\n // Scale the ripple\n rippleStyle['-webkit-transform'] = scale + ' ' + translate;\n rippleStyle['-moz-transform'] = scale + ' ' + translate;\n rippleStyle['-ms-transform'] = scale + ' ' + translate;\n rippleStyle['-o-transform'] = scale + ' ' + translate;\n rippleStyle.transform = scale + ' ' + translate;\n rippleStyle.opacity = '1';\n\n var duration = e.type === 'mousemove' ? 2500 : Effect.duration;\n rippleStyle['-webkit-transition-duration'] = duration + 'ms';\n rippleStyle['-moz-transition-duration'] = duration + 'ms';\n rippleStyle['-o-transition-duration'] = duration + 'ms';\n rippleStyle['transition-duration'] = duration + 'ms';\n\n ripple.setAttribute('style', convertStyle(rippleStyle));\n },\n\n hide: function (e, element) {\n element = element || this;\n\n var ripples = element.getElementsByClassName('waves-rippling');\n\n for (var i = 0, len = ripples.length; i < len; i++) {\n removeRipple(e, element, ripples[i]);\n }\n\n if (isTouchAvailable) {\n element.removeEventListener('touchend', Effect.hide);\n element.removeEventListener('touchcancel', Effect.hide);\n }\n\n element.removeEventListener('mouseup', Effect.hide);\n element.removeEventListener('mouseleave', Effect.hide);\n }\n };\n\n /**\n * Collection of wrapper for HTML element that only have single tag\n * like and \n */\n var TagWrapper = {\n\n // Wrap tag so it can perform the effect\n input: function (element) {\n\n var parent = element.parentNode;\n\n // If input already have parent just pass through\n if (parent.tagName.toLowerCase() === 'span' && parent.classList.contains('waves-effect')) {\n return;\n }\n\n // Put element class and style to the specified parent\n var wrapper = document.createElement('span');\n wrapper.className = 'waves-input-wrapper';\n // element.className = 'waves-button-input';\n\n // Put element as child\n parent.replaceChild(wrapper, element);\n wrapper.appendChild(element);\n\n },\n\n // Wrap tag so it can perform the effect\n img: function (element) {\n\n var parent = element.parentNode;\n\n // If input already have parent just pass through\n if (parent.tagName.toLowerCase() === 'i' && parent.classList.contains('waves-effect')) {\n return;\n }\n\n // Put element as child\n var wrapper = document.createElement('i');\n parent.replaceChild(wrapper, element);\n wrapper.appendChild(element);\n\n }\n };\n\n /**\n * Hide the effect and remove the ripple. Must be\n * a separate function to pass the JSLint...\n */\n function removeRipple(e, el, ripple) {\n\n // Check if the ripple still exist\n if (!ripple) {\n return;\n }\n\n ripple.classList.remove('waves-rippling');\n\n var relativeX = ripple.getAttribute('data-x');\n var relativeY = ripple.getAttribute('data-y');\n var scale = ripple.getAttribute('data-scale');\n var translate = ripple.getAttribute('data-translate');\n\n // Get delay beetween mousedown and mouse leave\n var diff = Date.now() - Number(ripple.getAttribute('data-hold'));\n var delay = 350 - diff;\n\n if (delay < 0) {\n delay = 0;\n }\n\n if (e.type === 'mousemove') {\n delay = 150;\n }\n\n // Fade out ripple after delay\n var duration = e.type === 'mousemove' ? 2500 : Effect.duration;\n\n setTimeout(function () {\n\n var style = {\n top: relativeY + 'px',\n left: relativeX + 'px',\n opacity: '0',\n\n // Duration\n '-webkit-transition-duration': duration + 'ms',\n '-moz-transition-duration': duration + 'ms',\n '-o-transition-duration': duration + 'ms',\n 'transition-duration': duration + 'ms',\n '-webkit-transform': scale + ' ' + translate,\n '-moz-transform': scale + ' ' + translate,\n '-ms-transform': scale + ' ' + translate,\n '-o-transform': scale + ' ' + translate,\n 'transform': scale + ' ' + translate\n };\n\n ripple.setAttribute('style', convertStyle(style));\n\n setTimeout(function () {\n try {\n el.removeChild(ripple);\n } catch (e) {\n return false;\n }\n }, duration);\n\n }, delay);\n }\n\n\n /**\n * Disable mousedown event for 500ms during and after touch\n */\n var TouchHandler = {\n\n /* uses an integer rather than bool so there's no issues with\n * needing to clear timeouts if another touch event occurred\n * within the 500ms. Cannot mouseup between touchstart and\n * touchend, nor in the 500ms after touchend. */\n touches: 0,\n\n allowEvent: function (e) {\n\n var allow = true;\n\n if (/^(mousedown|mousemove)$/.test(e.type) && TouchHandler.touches) {\n allow = false;\n }\n\n return allow;\n },\n registerEvent: function (e) {\n var eType = e.type;\n\n if (eType === 'touchstart') {\n\n TouchHandler.touches += 1; // push\n\n } else if (/^(touchend|touchcancel)$/.test(eType)) {\n\n setTimeout(function () {\n if (TouchHandler.touches) {\n TouchHandler.touches -= 1; // pop after 500ms\n }\n }, 500);\n\n }\n }\n };\n\n\n /**\n * Delegated click handler for .waves-effect element.\n * returns null when .waves-effect element not in \"click tree\"\n */\n function getWavesEffectElement(e) {\n\n if (TouchHandler.allowEvent(e) === false) {\n return null;\n }\n\n var element = null;\n var target = e.target || e.srcElement;\n\n while (target.parentElement) {\n if ((!(target instanceof SVGElement)) && target.classList.contains('waves-effect')) {\n element = target;\n break;\n }\n target = target.parentElement;\n }\n\n return element;\n }\n\n /**\n * Bubble the click and show effect if .waves-effect elem was found\n */\n function showEffect(e) {\n\n // Disable effect if element has \"disabled\" property on it\n // In some cases, the event is not triggered by the current element\n // if (e.target.getAttribute('disabled') !== null) {\n // return;\n // }\n\n var element = getWavesEffectElement(e);\n\n if (element !== null) {\n\n // Make it sure the element has either disabled property, disabled attribute or 'disabled' class\n if (element.disabled || element.getAttribute('disabled') || element.classList.contains('disabled')) {\n return;\n }\n\n TouchHandler.registerEvent(e);\n\n if (e.type === 'touchstart' && Effect.delay) {\n\n var hidden = false;\n\n var timer = setTimeout(function () {\n timer = null;\n Effect.show(e, element);\n }, Effect.delay);\n\n var hideEffect = function (hideEvent) {\n\n // if touch hasn't moved, and effect not yet started: start effect now\n if (timer) {\n clearTimeout(timer);\n timer = null;\n Effect.show(e, element);\n }\n if (!hidden) {\n hidden = true;\n Effect.hide(hideEvent, element);\n }\n\n removeListeners();\n };\n\n var touchMove = function (moveEvent) {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n hideEffect(moveEvent);\n\n removeListeners();\n };\n\n element.addEventListener('touchmove', touchMove, false);\n element.addEventListener('touchend', hideEffect, false);\n element.addEventListener('touchcancel', hideEffect, false);\n\n var removeListeners = function () {\n element.removeEventListener('touchmove', touchMove);\n element.removeEventListener('touchend', hideEffect);\n element.removeEventListener('touchcancel', hideEffect);\n };\n } else {\n\n Effect.show(e, element);\n\n if (isTouchAvailable) {\n element.addEventListener('touchend', Effect.hide, false);\n element.addEventListener('touchcancel', Effect.hide, false);\n }\n\n element.addEventListener('mouseup', Effect.hide, false);\n element.addEventListener('mouseleave', Effect.hide, false);\n }\n }\n }\n\n Waves.init = function (options) {\n var body = document.body;\n\n options = options || {};\n\n if ('duration' in options) {\n Effect.duration = options.duration;\n }\n\n if ('delay' in options) {\n Effect.delay = options.delay;\n }\n\n if (isTouchAvailable) {\n body.addEventListener('touchstart', showEffect, false);\n body.addEventListener('touchcancel', TouchHandler.registerEvent, false);\n body.addEventListener('touchend', TouchHandler.registerEvent, false);\n }\n\n body.addEventListener('mousedown', showEffect, false);\n };\n\n\n /**\n * Attach Waves to dynamically loaded inputs, or add .waves-effect and other\n * waves classes to a set of elements. Set drag to true if the ripple mouseover\n * or skimming effect should be applied to the elements.\n */\n Waves.attach = function (elements, classes) {\n\n elements = getWavesElements(elements);\n\n if (toString.call(classes) === '[object Array]') {\n classes = classes.join(' ');\n }\n\n classes = classes ? ' ' + classes : '';\n\n var element, tagName;\n\n for (var i = 0, len = elements.length; i < len; i++) {\n\n element = elements[i];\n tagName = element.tagName.toLowerCase();\n\n if (['input', 'img'].indexOf(tagName) !== -1) {\n TagWrapper[tagName](element);\n element = element.parentElement;\n }\n\n if (element.className.indexOf('waves-effect') === -1) {\n element.className += ' waves-effect' + classes;\n }\n }\n };\n\n\n /**\n * Cause a ripple to appear in an element via code.\n */\n Waves.ripple = function (elements, options) {\n elements = getWavesElements(elements);\n var elementsLen = elements.length;\n\n options = options || {};\n options.wait = options.wait || 0;\n options.position = options.position || null; // default = centre of element\n\n\n if (elementsLen) {\n var element, pos, off, centre = {},\n i = 0;\n var mousedown = {\n type: 'mousedown',\n button: 1\n };\n var hideRipple = function (mouseup, element) {\n return function () {\n Effect.hide(mouseup, element);\n };\n };\n\n for (; i < elementsLen; i++) {\n element = elements[i];\n pos = options.position || {\n x: element.clientWidth / 2,\n y: element.clientHeight / 2\n };\n\n off = offset(element);\n centre.x = off.left + pos.x;\n centre.y = off.top + pos.y;\n\n mousedown.pageX = centre.x;\n mousedown.pageY = centre.y;\n\n Effect.show(mousedown, element);\n\n if (options.wait >= 0 && options.wait !== null) {\n var mouseup = {\n type: 'mouseup',\n button: 1\n };\n\n setTimeout(hideRipple(mouseup, element), options.wait);\n }\n }\n }\n };\n\n /**\n * Remove all ripples from an element.\n */\n Waves.calm = function (elements) {\n elements = getWavesElements(elements);\n var mouseup = {\n type: 'mouseup',\n button: 1\n };\n\n for (var i = 0, len = elements.length; i < len; i++) {\n Effect.hide(mouseup, elements[i]);\n }\n };\n\n /**\n * Deprecated API fallback\n */\n Waves.displayEffect = function (options) {\n console.error('Waves.displayEffect() has been deprecated and will be removed in future version. Please use Waves.init() to initialize Waves effect');\n Waves.init(options);\n };\n\n return Waves;\n});\n$(document).ready(function () {\n //Initialization\n Waves.attach('.btn:not(.btn-flat), .btn-floating', ['waves-light']);\n Waves.attach('.btn-flat');\n Waves.attach('.chip');\n Waves.attach('.view a .mask', ['waves-light']);\n Waves.attach('.waves-light', ['waves-light']);\n Waves.attach('.navbar-nav a:not(.navbar-brand), .nav-icons li a, .nav-tabs .nav-item:not(.dropdown)', ['waves-light']);\n Waves.attach('.pager li a', ['waves-light']);\n Waves.attach('.pagination .page-item .page-link');\n Waves.init();\n});\n","/* jSticky Plugin\n * =============\n * Author: Andrew Henderson (@AndrewHenderson)\n * Contributor: Mike Street (@mikestreety)\n * Date: 9/7/2012\n * Update: 09/20/2016\n * Website: http://github.com/andrewhenderson/jsticky/\n * Description: A jQuery plugin that keeps select DOM\n * element(s) in view while scrolling the page.\n */\n\n;(function($) {\n\n $.fn.sticky = function(options) {\n var defaults = {\n topSpacing: 0, // No spacing by default\n zIndex: '', // No default z-index\n stopper: '.sticky-stopper', // Default stopper class, also accepts number value\n stickyClass: false // Class applied to element when it's stuck\n };\n var settings = $.extend({}, defaults, options); // Accepts custom stopper id or class\n\n // Checks if custom z-index was defined\n function checkIndex() {\n if (typeof settings.zIndex == 'number') {\n return true;\n } else {\n return false;\n }\n }\n\n var hasIndex = checkIndex(); // True or false\n\n // Checks if a stopper exists in the DOM or number defined\n function checkStopper() {\n if (0 < $(settings.stopper).length || typeof settings.stopper === 'number') {\n return true;\n } else {\n return false;\n }\n }\n var hasStopper = checkStopper(); // True or false\n\n return this.each(function() {\n\n var $this = $(this);\n var thisHeight = $this.outerHeight();\n var thisWidth = $this.outerWidth();\n var topSpacing = settings.topSpacing;\n var zIndex = settings.zIndex;\n var pushPoint = $this.offset().top - topSpacing; // Point at which the sticky element starts pushing\n var placeholder = $('
      ').width(thisWidth).height(thisHeight).addClass('sticky-placeholder'); // Cache a clone sticky element\n var stopper = settings.stopper;\n var $window = $(window);\n\n function stickyScroll() {\n\n var windowTop = $window.scrollTop(); // Check window's scroll position\n var stopPoint = stopper;\n var parentWidth = $this.parent().width();\n\n placeholder.width(parentWidth)\n\n if ( hasStopper && typeof stopper === 'string' ) {\n var stopperTop = $(stopper).offset().top;\n stopPoint = (stopperTop - thisHeight) - topSpacing;\n }\n\n if (pushPoint < windowTop) {\n // Create a placeholder for sticky element to occupy vertical real estate\n if(settings.stickyClass)\n $this.addClass(settings.stickyClass);\n\n $this.after(placeholder).css({\n position: 'fixed',\n top: topSpacing,\n width: parentWidth\n });\n\n if (hasIndex) {\n $this.css({\n zIndex: zIndex\n });\n }\n\n if (hasStopper) {\n if (stopPoint < windowTop) {\n var diff = (stopPoint - windowTop) + topSpacing;\n $this.css({\n top: diff\n });\n }\n }\n } else {\n if(settings.stickyClass)\n $this.removeClass(settings.stickyClass);\n\n $this.css({\n position: 'static',\n top: null,\n left: null,\n width: 'auto'\n });\n\n placeholder.remove();\n }\n }\n\n if($window.innerHeight() > thisHeight) {\n\n $window.bind('scroll', stickyScroll);\n $window.bind('load', stickyScroll);\n $window.bind('resize', stickyScroll);\n }\n });\n };\n})(jQuery);","/*!\n * perfect-scrollbar v1.5.0\n * Copyright 2020 Hyunje Jun, MDBootstrap and Contributors\n * Licensed under MIT\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.PerfectScrollbar = factory());\n}(this, (function () { 'use strict';\n\n function get(element) {\n return getComputedStyle(element);\n }\n\n function set(element, obj) {\n for (var key in obj) {\n var val = obj[key];\n if (typeof val === 'number') {\n val = val + \"px\";\n }\n element.style[key] = val;\n }\n return element;\n }\n\n function div(className) {\n var div = document.createElement('div');\n div.className = className;\n return div;\n }\n\n var elMatches =\n typeof Element !== 'undefined' &&\n (Element.prototype.matches ||\n Element.prototype.webkitMatchesSelector ||\n Element.prototype.mozMatchesSelector ||\n Element.prototype.msMatchesSelector);\n\n function matches(element, query) {\n if (!elMatches) {\n throw new Error('No element matching method supported');\n }\n\n return elMatches.call(element, query);\n }\n\n function remove(element) {\n if (element.remove) {\n element.remove();\n } else {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n }\n }\n\n function queryChildren(element, selector) {\n return Array.prototype.filter.call(element.children, function (child) { return matches(child, selector); }\n );\n }\n\n var cls = {\n main: 'ps',\n rtl: 'ps__rtl',\n element: {\n thumb: function (x) { return (\"ps__thumb-\" + x); },\n rail: function (x) { return (\"ps__rail-\" + x); },\n consuming: 'ps__child--consume',\n },\n state: {\n focus: 'ps--focus',\n clicking: 'ps--clicking',\n active: function (x) { return (\"ps--active-\" + x); },\n scrolling: function (x) { return (\"ps--scrolling-\" + x); },\n },\n };\n\n /*\n * Helper methods\n */\n var scrollingClassTimeout = { x: null, y: null };\n\n function addScrollingClass(i, x) {\n var classList = i.element.classList;\n var className = cls.state.scrolling(x);\n\n if (classList.contains(className)) {\n clearTimeout(scrollingClassTimeout[x]);\n } else {\n classList.add(className);\n }\n }\n\n function removeScrollingClass(i, x) {\n scrollingClassTimeout[x] = setTimeout(\n function () { return i.isAlive && i.element.classList.remove(cls.state.scrolling(x)); },\n i.settings.scrollingThreshold\n );\n }\n\n function setScrollingClassInstantly(i, x) {\n addScrollingClass(i, x);\n removeScrollingClass(i, x);\n }\n\n var EventElement = function EventElement(element) {\n this.element = element;\n this.handlers = {};\n };\n\n var prototypeAccessors = { isEmpty: { configurable: true } };\n\n EventElement.prototype.bind = function bind (eventName, handler) {\n if (typeof this.handlers[eventName] === 'undefined') {\n this.handlers[eventName] = [];\n }\n this.handlers[eventName].push(handler);\n this.element.addEventListener(eventName, handler, false);\n };\n\n EventElement.prototype.unbind = function unbind (eventName, target) {\n var this$1 = this;\n\n this.handlers[eventName] = this.handlers[eventName].filter(function (handler) {\n if (target && handler !== target) {\n return true;\n }\n this$1.element.removeEventListener(eventName, handler, false);\n return false;\n });\n };\n\n EventElement.prototype.unbindAll = function unbindAll () {\n for (var name in this.handlers) {\n this.unbind(name);\n }\n };\n\n prototypeAccessors.isEmpty.get = function () {\n var this$1 = this;\n\n return Object.keys(this.handlers).every(\n function (key) { return this$1.handlers[key].length === 0; }\n );\n };\n\n Object.defineProperties( EventElement.prototype, prototypeAccessors );\n\n var EventManager = function EventManager() {\n this.eventElements = [];\n };\n\n EventManager.prototype.eventElement = function eventElement (element) {\n var ee = this.eventElements.filter(function (ee) { return ee.element === element; })[0];\n if (!ee) {\n ee = new EventElement(element);\n this.eventElements.push(ee);\n }\n return ee;\n };\n\n EventManager.prototype.bind = function bind (element, eventName, handler) {\n this.eventElement(element).bind(eventName, handler);\n };\n\n EventManager.prototype.unbind = function unbind (element, eventName, handler) {\n var ee = this.eventElement(element);\n ee.unbind(eventName, handler);\n\n if (ee.isEmpty) {\n // remove\n this.eventElements.splice(this.eventElements.indexOf(ee), 1);\n }\n };\n\n EventManager.prototype.unbindAll = function unbindAll () {\n this.eventElements.forEach(function (e) { return e.unbindAll(); });\n this.eventElements = [];\n };\n\n EventManager.prototype.once = function once (element, eventName, handler) {\n var ee = this.eventElement(element);\n var onceHandler = function (evt) {\n ee.unbind(eventName, onceHandler);\n handler(evt);\n };\n ee.bind(eventName, onceHandler);\n };\n\n function createEvent(name) {\n if (typeof window.CustomEvent === 'function') {\n return new CustomEvent(name);\n } else {\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(name, false, false, undefined);\n return evt;\n }\n }\n\n function processScrollDiff(\n i,\n axis,\n diff,\n useScrollingClass,\n forceFireReachEvent\n ) {\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n var fields;\n if (axis === 'top') {\n fields = [\n 'contentHeight',\n 'containerHeight',\n 'scrollTop',\n 'y',\n 'up',\n 'down' ];\n } else if (axis === 'left') {\n fields = [\n 'contentWidth',\n 'containerWidth',\n 'scrollLeft',\n 'x',\n 'left',\n 'right' ];\n } else {\n throw new Error('A proper axis should be provided');\n }\n\n processScrollDiff$1(i, diff, fields, useScrollingClass, forceFireReachEvent);\n }\n\n function processScrollDiff$1(\n i,\n diff,\n ref,\n useScrollingClass,\n forceFireReachEvent\n ) {\n var contentHeight = ref[0];\n var containerHeight = ref[1];\n var scrollTop = ref[2];\n var y = ref[3];\n var up = ref[4];\n var down = ref[5];\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n var element = i.element;\n\n // reset reach\n i.reach[y] = null;\n\n // 1 for subpixel rounding\n if (element[scrollTop] < 1) {\n i.reach[y] = 'start';\n }\n\n // 1 for subpixel rounding\n if (element[scrollTop] > i[contentHeight] - i[containerHeight] - 1) {\n i.reach[y] = 'end';\n }\n\n if (diff) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + y)));\n\n if (diff < 0) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + up)));\n } else if (diff > 0) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + down)));\n }\n\n if (useScrollingClass) {\n setScrollingClassInstantly(i, y);\n }\n }\n\n if (i.reach[y] && (diff || forceFireReachEvent)) {\n element.dispatchEvent(createEvent((\"ps-\" + y + \"-reach-\" + (i.reach[y]))));\n }\n }\n\n function toInt(x) {\n return parseInt(x, 10) || 0;\n }\n\n function isEditable(el) {\n return (\n matches(el, 'input,[contenteditable]') ||\n matches(el, 'select,[contenteditable]') ||\n matches(el, 'textarea,[contenteditable]') ||\n matches(el, 'button,[contenteditable]')\n );\n }\n\n function outerWidth(element) {\n var styles = get(element);\n return (\n toInt(styles.width) +\n toInt(styles.paddingLeft) +\n toInt(styles.paddingRight) +\n toInt(styles.borderLeftWidth) +\n toInt(styles.borderRightWidth)\n );\n }\n\n var env = {\n isWebKit:\n typeof document !== 'undefined' &&\n 'WebkitAppearance' in document.documentElement.style,\n supportsTouch:\n typeof window !== 'undefined' &&\n ('ontouchstart' in window ||\n ('maxTouchPoints' in window.navigator &&\n window.navigator.maxTouchPoints > 0) ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)),\n supportsIePointer:\n typeof navigator !== 'undefined' && navigator.msMaxTouchPoints,\n isChrome:\n typeof navigator !== 'undefined' &&\n /Chrome/i.test(navigator && navigator.userAgent),\n };\n\n function updateGeometry(i) {\n var element = i.element;\n var roundedScrollTop = Math.floor(element.scrollTop);\n var rect = element.getBoundingClientRect();\n\n i.containerWidth = Math.ceil(rect.width);\n i.containerHeight = Math.ceil(rect.height);\n i.contentWidth = element.scrollWidth;\n i.contentHeight = element.scrollHeight;\n\n if (!element.contains(i.scrollbarXRail)) {\n // clean up and append\n queryChildren(element, cls.element.rail('x')).forEach(function (el) { return remove(el); }\n );\n element.appendChild(i.scrollbarXRail);\n }\n if (!element.contains(i.scrollbarYRail)) {\n // clean up and append\n queryChildren(element, cls.element.rail('y')).forEach(function (el) { return remove(el); }\n );\n element.appendChild(i.scrollbarYRail);\n }\n\n if (\n !i.settings.suppressScrollX &&\n i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth\n ) {\n i.scrollbarXActive = true;\n i.railXWidth = i.containerWidth - i.railXMarginWidth;\n i.railXRatio = i.containerWidth / i.railXWidth;\n i.scrollbarXWidth = getThumbSize(\n i,\n toInt((i.railXWidth * i.containerWidth) / i.contentWidth)\n );\n i.scrollbarXLeft = toInt(\n ((i.negativeScrollAdjustment + element.scrollLeft) *\n (i.railXWidth - i.scrollbarXWidth)) /\n (i.contentWidth - i.containerWidth)\n );\n } else {\n i.scrollbarXActive = false;\n }\n\n if (\n !i.settings.suppressScrollY &&\n i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight\n ) {\n i.scrollbarYActive = true;\n i.railYHeight = i.containerHeight - i.railYMarginHeight;\n i.railYRatio = i.containerHeight / i.railYHeight;\n i.scrollbarYHeight = getThumbSize(\n i,\n toInt((i.railYHeight * i.containerHeight) / i.contentHeight)\n );\n i.scrollbarYTop = toInt(\n (roundedScrollTop * (i.railYHeight - i.scrollbarYHeight)) /\n (i.contentHeight - i.containerHeight)\n );\n } else {\n i.scrollbarYActive = false;\n }\n\n if (i.scrollbarXLeft >= i.railXWidth - i.scrollbarXWidth) {\n i.scrollbarXLeft = i.railXWidth - i.scrollbarXWidth;\n }\n if (i.scrollbarYTop >= i.railYHeight - i.scrollbarYHeight) {\n i.scrollbarYTop = i.railYHeight - i.scrollbarYHeight;\n }\n\n updateCss(element, i);\n\n if (i.scrollbarXActive) {\n element.classList.add(cls.state.active('x'));\n } else {\n element.classList.remove(cls.state.active('x'));\n i.scrollbarXWidth = 0;\n i.scrollbarXLeft = 0;\n element.scrollLeft = i.isRtl === true ? i.contentWidth : 0;\n }\n if (i.scrollbarYActive) {\n element.classList.add(cls.state.active('y'));\n } else {\n element.classList.remove(cls.state.active('y'));\n i.scrollbarYHeight = 0;\n i.scrollbarYTop = 0;\n element.scrollTop = 0;\n }\n }\n\n function getThumbSize(i, thumbSize) {\n if (i.settings.minScrollbarLength) {\n thumbSize = Math.max(thumbSize, i.settings.minScrollbarLength);\n }\n if (i.settings.maxScrollbarLength) {\n thumbSize = Math.min(thumbSize, i.settings.maxScrollbarLength);\n }\n return thumbSize;\n }\n\n function updateCss(element, i) {\n var xRailOffset = { width: i.railXWidth };\n var roundedScrollTop = Math.floor(element.scrollTop);\n\n if (i.isRtl) {\n xRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth -\n i.contentWidth;\n } else {\n xRailOffset.left = element.scrollLeft;\n }\n if (i.isScrollbarXUsingBottom) {\n xRailOffset.bottom = i.scrollbarXBottom - roundedScrollTop;\n } else {\n xRailOffset.top = i.scrollbarXTop + roundedScrollTop;\n }\n set(i.scrollbarXRail, xRailOffset);\n\n var yRailOffset = { top: roundedScrollTop, height: i.railYHeight };\n if (i.isScrollbarYUsingRight) {\n if (i.isRtl) {\n yRailOffset.right =\n i.contentWidth -\n (i.negativeScrollAdjustment + element.scrollLeft) -\n i.scrollbarYRight -\n i.scrollbarYOuterWidth -\n 9;\n } else {\n yRailOffset.right = i.scrollbarYRight - element.scrollLeft;\n }\n } else {\n if (i.isRtl) {\n yRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth * 2 -\n i.contentWidth -\n i.scrollbarYLeft -\n i.scrollbarYOuterWidth;\n } else {\n yRailOffset.left = i.scrollbarYLeft + element.scrollLeft;\n }\n }\n set(i.scrollbarYRail, yRailOffset);\n\n set(i.scrollbarX, {\n left: i.scrollbarXLeft,\n width: i.scrollbarXWidth - i.railBorderXWidth,\n });\n set(i.scrollbarY, {\n top: i.scrollbarYTop,\n height: i.scrollbarYHeight - i.railBorderYWidth,\n });\n }\n\n function clickRail(i) {\n var element = i.element;\n\n i.event.bind(i.scrollbarY, 'mousedown', function (e) { return e.stopPropagation(); });\n i.event.bind(i.scrollbarYRail, 'mousedown', function (e) {\n var positionTop =\n e.pageY -\n window.pageYOffset -\n i.scrollbarYRail.getBoundingClientRect().top;\n var direction = positionTop > i.scrollbarYTop ? 1 : -1;\n\n i.element.scrollTop += direction * i.containerHeight;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n\n i.event.bind(i.scrollbarX, 'mousedown', function (e) { return e.stopPropagation(); });\n i.event.bind(i.scrollbarXRail, 'mousedown', function (e) {\n var positionLeft =\n e.pageX -\n window.pageXOffset -\n i.scrollbarXRail.getBoundingClientRect().left;\n var direction = positionLeft > i.scrollbarXLeft ? 1 : -1;\n\n i.element.scrollLeft += direction * i.containerWidth;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n }\n\n function dragThumb(i) {\n bindMouseScrollHandler(i, [\n 'containerWidth',\n 'contentWidth',\n 'pageX',\n 'railXWidth',\n 'scrollbarX',\n 'scrollbarXWidth',\n 'scrollLeft',\n 'x',\n 'scrollbarXRail' ]);\n bindMouseScrollHandler(i, [\n 'containerHeight',\n 'contentHeight',\n 'pageY',\n 'railYHeight',\n 'scrollbarY',\n 'scrollbarYHeight',\n 'scrollTop',\n 'y',\n 'scrollbarYRail' ]);\n }\n\n function bindMouseScrollHandler(\n i,\n ref\n ) {\n var containerHeight = ref[0];\n var contentHeight = ref[1];\n var pageY = ref[2];\n var railYHeight = ref[3];\n var scrollbarY = ref[4];\n var scrollbarYHeight = ref[5];\n var scrollTop = ref[6];\n var y = ref[7];\n var scrollbarYRail = ref[8];\n\n var element = i.element;\n\n var startingScrollTop = null;\n var startingMousePageY = null;\n var scrollBy = null;\n\n function mouseMoveHandler(e) {\n if (e.touches && e.touches[0]) {\n e[pageY] = e.touches[0].pageY;\n }\n element[scrollTop] =\n startingScrollTop + scrollBy * (e[pageY] - startingMousePageY);\n addScrollingClass(i, y);\n updateGeometry(i);\n\n e.stopPropagation();\n e.preventDefault();\n }\n\n function mouseUpHandler() {\n removeScrollingClass(i, y);\n i[scrollbarYRail].classList.remove(cls.state.clicking);\n i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n }\n\n function bindMoves(e, touchMode) {\n startingScrollTop = element[scrollTop];\n if (touchMode && e.touches) {\n e[pageY] = e.touches[0].pageY;\n }\n startingMousePageY = e[pageY];\n scrollBy =\n (i[contentHeight] - i[containerHeight]) /\n (i[railYHeight] - i[scrollbarYHeight]);\n if (!touchMode) {\n i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);\n e.preventDefault();\n } else {\n i.event.bind(i.ownerDocument, 'touchmove', mouseMoveHandler);\n }\n\n i[scrollbarYRail].classList.add(cls.state.clicking);\n\n e.stopPropagation();\n }\n\n i.event.bind(i[scrollbarY], 'mousedown', function (e) {\n bindMoves(e);\n });\n i.event.bind(i[scrollbarY], 'touchstart', function (e) {\n bindMoves(e, true);\n });\n }\n\n function keyboard(i) {\n var element = i.element;\n\n var elementHovered = function () { return matches(element, ':hover'); };\n var scrollbarFocused = function () { return matches(i.scrollbarX, ':focus') || matches(i.scrollbarY, ':focus'); };\n\n function shouldPreventDefault(deltaX, deltaY) {\n var scrollTop = Math.floor(element.scrollTop);\n if (deltaX === 0) {\n if (!i.scrollbarYActive) {\n return false;\n }\n if (\n (scrollTop === 0 && deltaY > 0) ||\n (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n\n var scrollLeft = element.scrollLeft;\n if (deltaY === 0) {\n if (!i.scrollbarXActive) {\n return false;\n }\n if (\n (scrollLeft === 0 && deltaX < 0) ||\n (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n return true;\n }\n\n i.event.bind(i.ownerDocument, 'keydown', function (e) {\n if (\n (e.isDefaultPrevented && e.isDefaultPrevented()) ||\n e.defaultPrevented\n ) {\n return;\n }\n\n if (!elementHovered() && !scrollbarFocused()) {\n return;\n }\n\n var activeElement = document.activeElement\n ? document.activeElement\n : i.ownerDocument.activeElement;\n if (activeElement) {\n if (activeElement.tagName === 'IFRAME') {\n activeElement = activeElement.contentDocument.activeElement;\n } else {\n // go deeper if element is a webcomponent\n while (activeElement.shadowRoot) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n }\n if (isEditable(activeElement)) {\n return;\n }\n }\n\n var deltaX = 0;\n var deltaY = 0;\n\n switch (e.which) {\n case 37: // left\n if (e.metaKey) {\n deltaX = -i.contentWidth;\n } else if (e.altKey) {\n deltaX = -i.containerWidth;\n } else {\n deltaX = -30;\n }\n break;\n case 38: // up\n if (e.metaKey) {\n deltaY = i.contentHeight;\n } else if (e.altKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = 30;\n }\n break;\n case 39: // right\n if (e.metaKey) {\n deltaX = i.contentWidth;\n } else if (e.altKey) {\n deltaX = i.containerWidth;\n } else {\n deltaX = 30;\n }\n break;\n case 40: // down\n if (e.metaKey) {\n deltaY = -i.contentHeight;\n } else if (e.altKey) {\n deltaY = -i.containerHeight;\n } else {\n deltaY = -30;\n }\n break;\n case 32: // space bar\n if (e.shiftKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = -i.containerHeight;\n }\n break;\n case 33: // page up\n deltaY = i.containerHeight;\n break;\n case 34: // page down\n deltaY = -i.containerHeight;\n break;\n case 36: // home\n deltaY = i.contentHeight;\n break;\n case 35: // end\n deltaY = -i.contentHeight;\n break;\n default:\n return;\n }\n\n if (i.settings.suppressScrollX && deltaX !== 0) {\n return;\n }\n if (i.settings.suppressScrollY && deltaY !== 0) {\n return;\n }\n\n element.scrollTop -= deltaY;\n element.scrollLeft += deltaX;\n updateGeometry(i);\n\n if (shouldPreventDefault(deltaX, deltaY)) {\n e.preventDefault();\n }\n });\n }\n\n function wheel(i) {\n var element = i.element;\n\n function shouldPreventDefault(deltaX, deltaY) {\n var roundedScrollTop = Math.floor(element.scrollTop);\n var isTop = element.scrollTop === 0;\n var isBottom =\n roundedScrollTop + element.offsetHeight === element.scrollHeight;\n var isLeft = element.scrollLeft === 0;\n var isRight =\n element.scrollLeft + element.offsetWidth === element.scrollWidth;\n\n var hitsBound;\n\n // pick axis with primary direction\n if (Math.abs(deltaY) > Math.abs(deltaX)) {\n hitsBound = isTop || isBottom;\n } else {\n hitsBound = isLeft || isRight;\n }\n\n return hitsBound ? !i.settings.wheelPropagation : true;\n }\n\n function getDeltaFromEvent(e) {\n var deltaX = e.deltaX;\n var deltaY = -1 * e.deltaY;\n\n if (typeof deltaX === 'undefined' || typeof deltaY === 'undefined') {\n // OS X Safari\n deltaX = (-1 * e.wheelDeltaX) / 6;\n deltaY = e.wheelDeltaY / 6;\n }\n\n if (e.deltaMode && e.deltaMode === 1) {\n // Firefox in deltaMode 1: Line scrolling\n deltaX *= 10;\n deltaY *= 10;\n }\n\n if (deltaX !== deltaX && deltaY !== deltaY /* NaN checks */) {\n // IE in some mouse drivers\n deltaX = 0;\n deltaY = e.wheelDelta;\n }\n\n if (e.shiftKey) {\n // reverse axis with shift key\n return [-deltaY, -deltaX];\n }\n return [deltaX, deltaY];\n }\n\n function shouldBeConsumedByChild(target, deltaX, deltaY) {\n // FIXME: this is a workaround for
      ';\n } else {\n\n html += '';\n }\n\n this.$chipsWrapper.html(html);\n\n this.setPlaceholder();\n }\n\n getSingleChipTemplate(chip) {\n\n if (!chip.tag) {\n return '';\n }\n\n let html = `
      ${chip.tag}`;\n\n if (chip.image) {\n html += ` `;\n }\n\n html += '';\n html += '
      ';\n\n return html;\n }\n\n setPlaceholder() {\n\n this.$chipsWrapper.find('input').prop('placeholder', this.options.data.length ? this.options.placeholder : this.options.secondaryPlaceholder);\n }\n\n addChip(chip) {\n\n if (!this.isValid(chip)) {\n return;\n }\n\n const $newChip = $(this.getSingleChipTemplate(chip));\n\n this.$chipsWrapper.data('chips').push(chip);\n this.options.data.push(chip);\n\n if (this.$chipsWrapper.hasClass('chips-autocomplete') && this.$chipsWrapper.find('.chip').length > 0) {\n\n $newChip.insertAfter(this.$chipsWrapper.find('.chip').last());\n } else {\n\n $newChip.insertBefore(this.$chipsWrapper.find('input'));\n }\n\n this.$chipsWrapper.trigger('chip.add', chip);\n\n this.setPlaceholder();\n }\n\n isValid(chip) {\n\n return chip.tag !== '' && !this.options.data.some((c) => c.tag === chip.tag);\n }\n\n deleteChip(chipIndex) {\n\n const chip = this.$chipsWrapper.data('chips')[chipIndex];\n\n this.$chipsWrapper.find('.chip').eq(chipIndex).remove();\n\n this.$chipsWrapper.data('chips').splice(chipIndex, 1);\n this.options.data.splice(chipIndex, 1);\n\n this.$chipsWrapper.trigger('chip.delete', chip);\n\n this.setPlaceholder();\n }\n\n selectChip(chipIndex) {\n \n const $chip = this.$chipsWrapper.find('.chip').eq(chipIndex);\n if ($chip && !$chip.hasClass('selected')) {\n\n $chip.addClass('selected');\n this.$chipsWrapper.trigger('chip.select', this.$chipsWrapper.data('chips')[chipIndex]);\n }\n }\n\n fallback() {\n\n return {\n _value: undefined,\n or(value) {\n if (typeof value !== 'undefined' && typeof this._value === 'undefined') {\n this._value = value;\n }\n return this;\n },\n value() {\n return this._value;\n }\n };\n }\n }\n\n $.fn.materialChip = function (options) {\n\n if (this.length > 1) {\n\n const instances = [];\n\n this.each(function () {\n\n const materialChips = new MaterialChips($(this), options);\n materialChips.init();\n\n instances.push(materialChips.returnPublicInterface());\n });\n\n return instances;\n }\n\n const materialChips = new MaterialChips($(this), options);\n materialChips.init();\n\n return materialChips.returnPublicInterface();\n };\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $some = require('../internals/array-iteration').some;\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\n// `Array.prototype.some` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.some\n$({ target: 'Array', proto: true, forced: sloppyArrayMethod('some') }, {\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n assign: assign\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\nvar nativeAssign = Object.assign;\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !nativeAssign || fails(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : nativeAssign;\n","jQuery(($) => {\n\n class Sticky {\n\n constructor(element, options) {\n\n this.defaults = {\n topSpacing: 0,\n zIndex: false,\n stopper: '#footer',\n stickyClass: false,\n startScrolling: 'top',\n minWidth: false\n };\n\n this.$element = element;\n this.options = this.assignOptions(options);\n\n this.$window = $(window);\n\n this.stopper = this.options.stopper;\n this.elementWidth = this.$element.outerWidth();\n this.elementHeight = this.$element.outerHeight(true);\n\n this.initialScrollTop = this.$element.offset().top;\n\n this.$placeholder = $('
      ');\n this.scrollTop = 0;\n\n this.setPushPoint();\n this.setStopperPosition();\n this.bindEvents();\n\n }\n\n hasZIndex() {\n\n return typeof this.options.zIndex === 'number';\n }\n\n hasStopper() {\n\n return $(this.options.stopper).length || typeof this.options.stopper === 'number';\n }\n\n isScreenHeightEnough() {\n\n return this.$element.outerHeight() + this.options.topSpacing < this.$window.height();\n }\n\n assignOptions(options) {\n\n return $.extend({}, this.defaults, options);\n }\n\n setPushPoint() {\n\n if (this.options.startScrolling === 'bottom' && !this.isScreenHeightEnough()) {\n\n this.$pushPoint = this.initialScrollTop + this.$element.outerHeight(true) - this.$window.height();\n } else {\n\n this.$pushPoint = this.initialScrollTop - this.options.topSpacing;\n }\n\n }\n\n setStopperPosition() {\n\n if (typeof this.options.stopper === 'string') {\n\n this.stopPoint = $(this.stopper).offset().top - this.options.topSpacing;\n\n } else if (typeof this.options.stopper === 'number') {\n\n this.stopPoint = this.options.stopper;\n }\n }\n\n bindEvents() {\n\n this.$window.on('resize', this.handleResize.bind(this));\n this.$window.on('scroll', this.init.bind(this));\n\n }\n\n handleResize() {\n\n const $parent = this.$element.parent();\n\n this.elementWidth = $parent.width();\n this.elementHeight = this.$element.outerHeight(true);\n\n this.setPushPoint();\n this.setStopperPosition();\n\n this.init();\n }\n\n // eslint-disable-next-line consistent-return\n init() {\n\n if (this.options.minWidth && this.options.minWidth > this.$window.innerWidth()) {\n\n return false;\n }\n\n if (this.options.startScrolling === 'bottom' && !this.isScreenHeightEnough()) {\n this.scrollTop = this.$window.scrollTop() + this.$window.height();\n } else {\n this.scrollTop = this.$window.scrollTop();\n }\n\n if (this.$pushPoint < this.scrollTop) {\n\n this.appendPlaceholder();\n this.stickyStart();\n\n } else {\n this.stickyEnd();\n }\n\n if (this.$window.scrollTop() > this.$pushPoint) {\n this.stop();\n } else {\n this.stickyEnd();\n }\n\n }\n\n appendPlaceholder() {\n\n this.$element.after(this.$placeholder);\n this.$placeholder.css({\n width: this.elementWidth,\n height: this.elementHeight\n });\n }\n\n stickyStart() {\n\n if (this.options.stickyClass) {\n\n this.$element.addClass(this.options.stickyClass);\n }\n\n // @see: https://stackoverflow.com/a/4370047\n this.$element.get(0).style.overflow = 'scroll';\n const scrollHeight = this.$element.get(0).scrollHeight;\n this.$element.get(0).style.overflow = '';\n\n this.$element.css({\n position: 'fixed',\n width: this.elementWidth,\n height: scrollHeight\n });\n\n if (this.options.startScrolling === 'bottom' && !this.isScreenHeightEnough()) {\n this.$element.css({\n bottom: 0,\n top: ''\n });\n\n } else {\n\n this.$element.css({\n top: this.options.topSpacing\n });\n }\n\n if (this.hasZIndex()) {\n this.$element.css({\n zIndex: this.options.zIndex\n });\n }\n }\n\n stickyEnd() {\n\n if (this.options.stickyClass) {\n this.$element.removeClass(this.options.stickyClass);\n }\n\n this.$placeholder.remove();\n\n this.$element.css({\n position: 'static',\n top: this.options.topSpacing,\n width: '',\n height: ''\n });\n }\n\n stop() {\n\n if (this.stopPoint < $(this.$element).offset().top - this.options.topSpacing + this.$element.outerHeight(true)) {\n this.$element.css({\n position: 'absolute',\n bottom: 0,\n top: ''\n });\n }\n }\n\n }\n\n $.fn.sticky = function (options) {\n $(this).each(function () {\n const sticky = new Sticky($(this), options);\n sticky.init();\n });\n };\n});\n","var $ = require('../internals/export');\n\n// `Number.MAX_SAFE_INTEGER` constant\n// https://tc39.github.io/ecma262/#sec-number.max_safe_integer\n$({ target: 'Number', stat: true }, {\n MAX_SAFE_INTEGER: 0x1FFFFFFFFFFFFF\n});\n","var $ = require('../internals/export');\n\n// `Number.MIN_SAFE_INTEGER` constant\n// https://tc39.github.io/ecma262/#sec-number.min_safe_integer\n$({ target: 'Number', stat: true }, {\n MIN_SAFE_INTEGER: -0x1FFFFFFFFFFFFF\n});\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n","var global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// JSON[@@toStringTag] property\n// https://tc39.github.io/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\n","var setToStringTag = require('../internals/set-to-string-tag');\n\n// Math[@@toStringTag] property\n// https://tc39.github.io/ecma262/#sec-math-@@tostringtag\nsetToStringTag(Math, 'Math', true);\n","/*!\n * pickadate.js v3.6.3, 2019/04/03\n * By Amsul, http://amsul.ca\n * Hosted on http://amsul.github.io/pickadate.js\n * Licensed under MIT\n */\n\n(function ( factory ) {\n\n // AMD.\n if ( typeof define == 'function' && define.amd )\n define( 'picker', ['jquery'], factory )\n \n // Node.js/browserify.\n else if ( typeof exports == 'object' )\n module.exports = factory( require('jquery') )\n \n // Browser globals.\n else window.Picker = factory( jQuery )\n \n }(function( $ ) {\n \n var $window = $( window )\n var $document = $( document )\n var $html = $( document.documentElement )\n var supportsTransitions = document.documentElement.style.transition != null\n \n \n /**\n * The picker constructor that creates a blank picker.\n */\n function PickerConstructor( ELEMENT, NAME, COMPONENT, OPTIONS ) {\n \n // If there’s no element, return the picker constructor.\n if ( !ELEMENT ) return PickerConstructor\n \n var IS_DEFAULT_THEME = false,\n \n // The state of the picker.\n STATE = {\n id: ELEMENT.id || 'P' + Math.abs( ~~(Math.random() * new Date()) ),\n handlingOpen: false,\n },\n \n // Merge the defaults and options passed.\n SETTINGS = COMPONENT ? $.extend( true, {}, COMPONENT.defaults, OPTIONS ) : OPTIONS || {},\n \n // Merge the default classes with the settings classes.\n CLASSES = $.extend( {}, PickerConstructor.klasses(), SETTINGS.klass ),\n \n // The element node wrapper into a jQuery object.\n $ELEMENT = $( ELEMENT ),\n \n // On editable:true checks if should open\n OPENCOUNTER = 2,\n \n // Pseudo picker constructor.\n PickerInstance = function() {\n return this.start()\n },\n \n // The picker prototype.\n P = PickerInstance.prototype = {\n \n constructor: PickerInstance,\n \n $node: $ELEMENT,\n \n /**\n * Initialize everything\n */\n start: function() {\n \n // If it’s already started, do nothing.\n if ( STATE && STATE.start ) return P\n \n // Update the picker states.\n STATE.methods = {}\n STATE.start = true\n STATE.open = false\n STATE.type = ELEMENT.type\n \n \n // Confirm focus state, convert into text input to remove UA stylings,\n // and set as readonly to prevent keyboard popup.\n ELEMENT.autofocus = ELEMENT == getActiveElement()\n ELEMENT.readOnly = !SETTINGS.editable\n ELEMENT.id = ELEMENT.id || STATE.id\n if ( ELEMENT.type != 'text' ) {\n ELEMENT.type = 'text'\n }\n \n \n // Create a new picker component with the settings.\n P.component = new COMPONENT(P, SETTINGS)\n \n \n // Create the picker root and then prepare it.\n P.$root = $( '
      ' )\n prepareElementRoot()\n \n \n // Create the picker holder and then prepare it.\n P.$holder = $( createWrappedComponent() ).appendTo( P.$root )\n prepareElementHolder()\n \n \n // If there’s a format for the hidden input element, create the element.\n if ( SETTINGS.formatSubmit ) {\n prepareElementHidden()\n }\n \n \n // Prepare the input element.\n prepareElement()\n \n \n // Insert the hidden input as specified in the settings.\n if ( SETTINGS.containerHidden ) $( SETTINGS.containerHidden ).append( P._hidden )\n else $ELEMENT.after( P._hidden )\n \n \n // Insert the root as specified in the settings.\n if ( SETTINGS.container ) $( SETTINGS.container ).append( P.$root )\n else $ELEMENT.after( P.$root )\n \n \n // Bind the default component and settings events.\n P.on({\n start: P.component.onStart,\n render: P.component.onRender,\n stop: P.component.onStop,\n open: P.component.onOpen,\n close: P.component.onClose,\n set: P.component.onSet\n }).on({\n start: SETTINGS.onStart,\n render: SETTINGS.onRender,\n stop: SETTINGS.onStop,\n open: SETTINGS.onOpen,\n close: SETTINGS.onClose,\n set: SETTINGS.onSet\n })\n \n \n // Once we’re all set, check the theme in use.\n IS_DEFAULT_THEME = isUsingDefaultTheme( P.$holder[0] )\n \n \n // If the element has autofocus, open the picker.\n if ( ELEMENT.autofocus ) {\n P.open()\n }\n \n \n // Trigger queued the “start” and “render” events.\n return P.trigger( 'start' ).trigger( 'render' )\n }, //start\n \n \n /**\n * Render a new picker\n */\n render: function( entireComponent ) {\n \n // Insert a new component holder in the root or box.\n if ( entireComponent ) {\n P.$holder = $( createWrappedComponent() )\n prepareElementHolder()\n P.$root.html( P.$holder )\n }\n else P.$root.find( '.' + CLASSES.box ).html( P.component.nodes( STATE.open ) )\n \n // Trigger the queued “render” events.\n return P.trigger( 'render' )\n }, //render\n \n \n /**\n * Destroy everything\n */\n stop: function() {\n \n // If it’s already stopped, do nothing.\n if ( !STATE.start ) return P\n \n // Then close the picker.\n P.close()\n \n // Remove the hidden field.\n if ( P._hidden ) {\n P._hidden.parentNode.removeChild( P._hidden )\n }\n \n // Remove the root.\n P.$root.remove()\n \n // Remove the input class, remove the stored data, and unbind\n // the events (after a tick for IE - see `P.close`).\n $ELEMENT.removeClass( CLASSES.input ).removeData( NAME )\n setTimeout( function() {\n $ELEMENT.off( '.' + STATE.id )\n }, 0)\n \n // Restore the element state\n ELEMENT.type = STATE.type\n ELEMENT.readOnly = false\n \n // Trigger the queued “stop” events.\n P.trigger( 'stop' )\n \n // Reset the picker states.\n STATE.methods = {}\n STATE.start = false\n \n return P\n }, //stop\n \n \n /**\n * Open up the picker\n */\n open: function( dontGiveFocus ) {\n OPENCOUNTER++\n // If it’s already open, do nothing.\n if ( STATE.open ) return P\n \n // If it’s editable and already opened, do nothing.\n if (OPENCOUNTER<4 && SETTINGS.editable) return P\n \n // * A Firefox bug, when `html` has `overflow:hidden`, results in\n // killing transitions :(. So add the “opened” state on the next tick.\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289\n setTimeout( function() {\n \n // Add the “opened” class to the picker root.\n P.$root.addClass( CLASSES.opened )\n aria( P.$root[0], 'hidden', false )\n \n }, 0 )\n \n // If we have to give focus, bind the element and doc events.\n if ( dontGiveFocus !== false ) {\n \n // Set it as open.\n STATE.open = true\n \n // Prevent the page from scrolling.\n if ( IS_DEFAULT_THEME ) {\n $('body').\n css( 'overflow', 'hidden' ).\n css( 'padding-right', '+=' + getScrollbarWidth() )\n }\n \n // Pass focus to the root element’s jQuery object.\n focusPickerOnceOpened()\n \n // Bind the document events.\n $document.on( 'click.' + STATE.id + ' focusin.' + STATE.id, function( event ) {\n // If the picker is currently midway through processing\n // the opening sequence of events then don't handle clicks\n // on any part of the DOM. This is caused by a bug in Chrome 73\n // where a click event is being generated with the incorrect\n // path in it.\n // In short, if someone does a click that finishes after the\n // new element is created then the path contains only the\n // parent element and not the input element itself.\n if (STATE.handlingOpen) {\n return;\n }\n \n var target = getRealEventTarget( event, ELEMENT )\n \n // If the target of the event is not the element, close the picker picker.\n // * Don’t worry about clicks or focusins on the root because those don’t bubble up.\n // Also, for Firefox, a click on an `option` element bubbles up directly\n // to the doc. So make sure the target wasn't the doc.\n // * In Firefox stopPropagation() doesn’t prevent right-click events from bubbling,\n // which causes the picker to unexpectedly close when right-clicking it. So make\n // sure the event wasn’t a right-click.\n // * In Chrome 62 and up, password autofill causes a simulated focusin event which\n // closes the picker.\n if ( ! event.isSimulated && target != ELEMENT && target != document && event.which != 3 ) {\n \n // If the target was the holder that covers the screen,\n // keep the element focused to maintain tabindex.\n P.close( target === P.$holder[0] )\n }\n \n }).on( 'keydown.' + STATE.id, function( event ) {\n \n var\n // Get the keycode.\n keycode = event.keyCode,\n \n // Translate that to a selection change.\n keycodeToMove = P.component.key[ keycode ],\n \n // Grab the target.\n target = getRealEventTarget( event, ELEMENT )\n \n \n // On escape, close the picker and give focus.\n if ( keycode == 27 ) {\n P.close( true )\n }\n \n \n // Check if there is a key movement or “enter” keypress on the element.\n else if ( target == P.$holder[0] && ( keycodeToMove || keycode == 13 ) ) {\n \n // Prevent the default action to stop page movement.\n event.preventDefault()\n \n // Trigger the key movement action.\n if ( keycodeToMove ) {\n PickerConstructor._.trigger( P.component.key.go, P, [ PickerConstructor._.trigger( keycodeToMove ) ] )\n }\n \n // On “enter”, if the highlighted item isn’t disabled, set the value and close.\n else if ( !P.$root.find( '.' + CLASSES.highlighted ).hasClass( CLASSES.disabled ) ) {\n P.set( 'select', P.component.item.highlight )\n if ( SETTINGS.closeOnSelect ) {\n P.close( true )\n }\n }\n }\n \n \n // If the target is within the root and “enter” is pressed,\n // prevent the default action and trigger a click on the target instead.\n else if ( $.contains( P.$root[0], target ) && keycode == 13 ) {\n event.preventDefault()\n target.click()\n }\n })\n }\n \n // Trigger the queued “open” events.\n return P.trigger( 'open' )\n }, //open\n \n \n /**\n * Close the picker\n */\n close: function( giveFocus ) {\n OPENCOUNTER = 0;\n \n // If it’s already closed, do nothing more.\n if ( !STATE.open ) return P\n\n // If we need to give focus, do it before changing states.\n if ( giveFocus ) {\n if ( SETTINGS.editable ) {\n ELEMENT.click();\n }\n else {\n // ....ah yes! It would’ve been incomplete without a crazy workaround for IE :|\n // The focus is triggered *after* the close has completed - causing it\n // to open again. So unbind and rebind the event at the next tick.\n P.$holder.off( 'focus.toOpen' ).focus()\n setTimeout( function() {\n P.$holder.on( 'focus.toOpen', handleFocusToOpenEvent )\n }, 0 )\n }\n }\n \n // Remove the “active” class.\n $ELEMENT.removeClass( CLASSES.active )\n aria( ELEMENT, 'expanded', false )\n \n // * A Firefox bug, when `html` has `overflow:hidden`, results in\n // killing transitions :(. So remove the “opened” state on the next tick.\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289\n setTimeout( function() {\n \n // Remove the “opened” and “focused” class from the picker root.\n P.$root.removeClass( CLASSES.opened + ' ' + CLASSES.focused )\n aria( P.$root[0], 'hidden', true )\n \n }, 0 )\n \n // Allow the page to scroll.\n if ( IS_DEFAULT_THEME ) {\n $('body').\n css( 'overflow', '' ).\n css( 'padding-right', '-=' + getScrollbarWidth() )\n }\n \n document.activeElement.blur();\n // Unbind the document events.\n $document.off( '.' + STATE.id )\n // Set it as closed.\n STATE.open = false\n // Trigger the queued “close” events.\n return P.trigger( 'close' )\n }, //close\n \n \n /**\n * Clear the values\n */\n clear: function( options ) {\n document.activeElement.blur();\n return P.set( 'clear', null, options )\n }, //clear\n \n \n /**\n * Set something\n */\n set: function( thing, value, options ) {\n \n var thingItem, thingValue,\n thingIsObject = $.isPlainObject( thing ),\n thingObject = thingIsObject ? thing : {}\n \n // Make sure we have usable options.\n options = thingIsObject && $.isPlainObject( value ) ? value : options || {}\n \n if ( thing ) {\n \n // If the thing isn’t an object, make it one.\n if ( !thingIsObject ) {\n thingObject[ thing ] = value\n }\n \n // Go through the things of items to set.\n for ( thingItem in thingObject ) {\n \n // Grab the value of the thing.\n thingValue = thingObject[ thingItem ]\n \n // First, if the item exists and there’s a value, set it.\n if ( thingItem in P.component.item ) {\n if ( thingValue === undefined ) thingValue = null\n P.component.set( thingItem, thingValue, options )\n }\n \n // Then, check to update the element value and broadcast a change.\n if ( ( thingItem == 'select' || thingItem == 'clear' ) && SETTINGS.updateInput ) {\n $ELEMENT.\n val( thingItem == 'clear' ? '' : P.get( thingItem, SETTINGS.format ) ).\n trigger( 'change' )\n }\n }\n \n // Render a new picker.\n P.render()\n }\n \n // When the method isn’t muted, trigger queued “set” events and pass the `thingObject`.\n return options.muted ? P : P.trigger( 'set', thingObject )\n }, //set\n \n \n /**\n * Get something\n */\n get: function( thing, format ) {\n \n // Make sure there’s something to get.\n thing = thing || 'value'\n \n // If a picker state exists, return that.\n if ( STATE[ thing ] != null ) {\n return STATE[ thing ]\n }\n \n // Return the submission value, if that.\n if ( thing == 'valueSubmit' ) {\n if ( P._hidden ) {\n return P._hidden.value\n }\n thing = 'value'\n }\n \n // Return the value, if that.\n if ( thing == 'value' ) {\n return ELEMENT.value\n }\n \n // Check if a component item exists, return that.\n if ( thing in P.component.item ) {\n if ( typeof format == 'string' ) {\n var thingValue = P.component.get( thing )\n return thingValue ?\n PickerConstructor._.trigger(\n P.component.formats.toString,\n P.component,\n [ format, thingValue ]\n ) : ''\n }\n return P.component.get( thing )\n }\n }, //get\n \n \n \n /**\n * Bind events on the things.\n */\n on: function( thing, method, internal ) {\n \n var thingName, thingMethod,\n thingIsObject = $.isPlainObject( thing ),\n thingObject = thingIsObject ? thing : {}\n \n if ( thing ) {\n \n // If the thing isn’t an object, make it one.\n if ( !thingIsObject ) {\n thingObject[ thing ] = method\n }\n \n // Go through the things to bind to.\n for ( thingName in thingObject ) {\n \n // Grab the method of the thing.\n thingMethod = thingObject[ thingName ]\n \n // If it was an internal binding, prefix it.\n if ( internal ) {\n thingName = '_' + thingName\n }\n \n // Make sure the thing methods collection exists.\n STATE.methods[ thingName ] = STATE.methods[ thingName ] || []\n \n // Add the method to the relative method collection.\n STATE.methods[ thingName ].push( thingMethod )\n }\n }\n \n return P\n }, //on\n \n \n \n /**\n * Unbind events on the things.\n */\n off: function() {\n var i, thingName,\n names = arguments;\n for ( i = 0, namesCount = names.length; i < namesCount; i += 1 ) {\n thingName = names[i]\n if ( thingName in STATE.methods ) {\n delete STATE.methods[thingName]\n }\n }\n return P\n },\n \n \n /**\n * Fire off method events.\n */\n trigger: function( name, data ) {\n var _trigger = function( name ) {\n var methodList = STATE.methods[ name ]\n if ( methodList ) {\n methodList.map( function( method ) {\n PickerConstructor._.trigger( method, P, [ data ] )\n })\n }\n }\n _trigger( '_' + name )\n _trigger( name )\n return P\n } //trigger\n } //PickerInstance.prototype\n \n \n /**\n * Wrap the picker holder components together.\n */\n function createWrappedComponent() {\n \n // Create a picker wrapper holder\n return PickerConstructor._.node( 'div',\n \n // Create a picker wrapper node\n PickerConstructor._.node( 'div',\n \n // Create a picker frame\n PickerConstructor._.node( 'div',\n \n // Create a picker box node\n PickerConstructor._.node( 'div',\n \n // Create the components nodes.\n P.component.nodes( STATE.open ),\n \n // The picker box class\n CLASSES.box\n ),\n \n // Picker wrap class\n CLASSES.wrap\n ),\n \n // Picker frame class\n CLASSES.frame\n ),\n \n // Picker holder class\n CLASSES.holder,\n \n 'tabindex=\"-1\"'\n ) //endreturn\n } //createWrappedComponent\n \n /**\n * Prepare the input element with all bindings.\n */\n function prepareElement() {\n \n $ELEMENT.\n \n // Store the picker data by component name.\n data(NAME, P).\n \n // Add the “input” class name.\n addClass(CLASSES.input).\n \n // If there’s a `data-value`, update the value of the element.\n val( $ELEMENT.data('value') ?\n P.get('select', SETTINGS.format) :\n ELEMENT.value\n ).\n \n // On focus/click, open the picker.\n on( 'focus.' + STATE.id + ' click.' + STATE.id,\n debounce(function(event) {\n event.preventDefault()\n P.open()\n }, 100))\n \n // Mousedown handler to capture when the user starts interacting\n // with the picker. This is used in working around a bug in Chrome 73.\n .on('mousedown', function() {\n STATE.handlingOpen = true;\n var handler = function() {\n // By default mouseup events are fired before a click event.\n // By using a timeout we can force the mouseup to be handled\n // after the corresponding click event is handled.\n setTimeout(function() {\n $(document).off('mouseup', handler);\n STATE.handlingOpen = false;\n }, 0);\n };\n $(document).on('mouseup', handler);\n });\n \n \n // Only bind keydown events if the element isn’t editable.\n if ( !SETTINGS.editable ) {\n \n $ELEMENT.\n \n // Handle keyboard event based on the picker being opened or not.\n on( 'keydown.' + STATE.id, handleKeydownEvent )\n }\n \n \n // Update the aria attributes.\n aria(ELEMENT, {\n haspopup: true,\n expanded: false,\n readonly: false,\n owns: ELEMENT.id + '_root'\n })\n }\n \n \n /**\n * Prepare the root picker element with all bindings.\n */\n function prepareElementRoot() {\n aria( P.$root[0], 'hidden', true )\n }\n \n \n /**\n * Prepare the holder picker element with all bindings.\n */\n function prepareElementHolder() {\n \n P.$holder.\n \n on({\n \n // For iOS8.\n keydown: handleKeydownEvent,\n \n 'focus.toOpen': handleFocusToOpenEvent,\n \n blur: function() {\n // Remove the “target” class.\n $ELEMENT.removeClass( CLASSES.target )\n },\n \n // When something within the holder is focused, stop from bubbling\n // to the doc and remove the “focused” state from the root.\n focusin: function( event ) {\n P.$root.removeClass( CLASSES.focused )\n event.stopPropagation()\n },\n \n // When something within the holder is clicked, stop it\n // from bubbling to the doc.\n 'mousedown click': function( event ) {\n\n event.preventDefault();\n \n var target = getRealEventTarget( event, ELEMENT )\n \n // Make sure the target isn’t the root holder so it can bubble up.\n if ( target != P.$holder[0] ) {\n \n event.stopPropagation()\n \n // * For mousedown events, cancel the default action in order to\n // prevent cases where focus is shifted onto external elements\n // when using things like jQuery mobile or MagnificPopup (ref: #249 & #120).\n // Also, for Firefox, don’t prevent action on the `option` element.\n if ( event.type == 'mousedown' && !$( target ).is( 'input, select, textarea, button, option' )) {\n \n event.preventDefault()\n \n // Re-focus onto the holder so that users can click away\n // from elements focused within the picker.\n P.$holder.eq(0).focus()\n }\n }\n }\n \n }).\n \n // If there’s a click on an actionable element, carry out the actions.\n on( 'click', '[data-pick], [data-nav], [data-clear], [data-close]', function() {\n \n var $target = $( this ),\n targetData = $target.data(),\n targetDisabled = $target.hasClass( CLASSES.navDisabled ) || $target.hasClass( CLASSES.disabled ),\n \n // * For IE, non-focusable elements can be active elements as well\n // (http://stackoverflow.com/a/2684561).\n activeElement = getActiveElement()\n activeElement = activeElement && ( (activeElement.type || activeElement.href ) ? activeElement : null);\n \n // If it’s disabled or nothing inside is actively focused, re-focus the element.\n if ( targetDisabled || activeElement && !$.contains( P.$root[0], activeElement ) ) {\n P.$holder.eq(0).focus()\n }\n \n // If something is superficially changed, update the `highlight` based on the `nav`.\n if ( !targetDisabled && targetData.nav ) {\n P.set( 'highlight', P.component.item.highlight, { nav: targetData.nav } )\n }\n \n // If something is picked, set `select` then close with focus.\n else if ( !targetDisabled && 'pick' in targetData ) {\n P.set( 'select', targetData.pick )\n if ( SETTINGS.closeOnSelect ) {\n P.close( true )\n }\n }\n \n // If a “clear” button is pressed, empty the values and close with focus.\n else if ( targetData.clear ) {\n P.clear()\n if ( SETTINGS.closeOnClear ) {\n P.close( true )\n }\n }\n \n else if ( targetData.close ) {\n P.close( true )\n }\n \n }) //P.$holder\n \n }\n \n \n /**\n * Prepare the hidden input element along with all bindings.\n */\n function prepareElementHidden() {\n \n var name\n \n if ( SETTINGS.hiddenName === true ) {\n name = ELEMENT.name\n ELEMENT.name = ''\n }\n else {\n name = [\n typeof SETTINGS.hiddenPrefix == 'string' ? SETTINGS.hiddenPrefix : '',\n typeof SETTINGS.hiddenSuffix == 'string' ? SETTINGS.hiddenSuffix : '_submit'\n ]\n name = name[0] + ELEMENT.name + name[1]\n }\n \n P._hidden = $(\n ''\n )[0]\n \n $ELEMENT.\n \n // If the value changes, update the hidden input with the correct format.\n on('change.' + STATE.id, function() {\n P._hidden.value = ELEMENT.value ?\n P.get('select', SETTINGS.formatSubmit) :\n ''\n })\n }\n \n \n // Wait for transitions to end before focusing the holder. Otherwise, while\n // using the `container` option, the view jumps to the container.\n function focusPickerOnceOpened() {\n \n if (IS_DEFAULT_THEME && supportsTransitions) {\n P.$holder.find('.' + CLASSES.frame).one('transitionend', function() {\n P.$holder.eq(0).focus()\n })\n }\n else {\n setTimeout(function() {\n P.$holder.eq(0).focus()\n }, 0)\n }\n }\n \n \n function handleFocusToOpenEvent(event) {\n \n // Stop the event from propagating to the doc.\n event.stopPropagation()\n \n // Add the “target” class.\n $ELEMENT.addClass( CLASSES.target )\n \n // Add the “focused” class to the root.\n P.$root.addClass( CLASSES.focused )\n \n // And then finally open the picker.\n P.open()\n }\n \n \n // For iOS8.\n function handleKeydownEvent( event ) {\n \n var keycode = event.keyCode,\n \n // Check if one of the delete keys was pressed.\n isKeycodeDelete = /^(8|46)$/.test(keycode)\n \n // For some reason IE clears the input value on “escape”.\n if ( keycode == 27 ) {\n P.close( true )\n return false\n }\n \n // Check if `space` or `delete` was pressed or the picker is closed with a key movement.\n if ( keycode == 32 || isKeycodeDelete || !STATE.open && P.component.key[keycode] ) {\n \n // Prevent it from moving the page and bubbling to doc.\n event.preventDefault()\n event.stopPropagation()\n \n // If `delete` was pressed, clear the values and close the picker.\n // Otherwise open the picker.\n if ( isKeycodeDelete ) { P.clear().close() }\n else { P.open() }\n }\n }\n \n \n // Return a new picker instance.\n return new PickerInstance()\n } //PickerConstructor\n \n \n \n /**\n * The default classes and prefix to use for the HTML classes.\n */\n PickerConstructor.klasses = function( prefix ) {\n prefix = prefix || 'picker'\n return {\n \n picker: prefix,\n opened: prefix + '--opened',\n focused: prefix + '--focused',\n \n input: prefix + '__input',\n active: prefix + '__input--active',\n target: prefix + '__input--target',\n \n holder: prefix + '__holder',\n \n frame: prefix + '__frame',\n wrap: prefix + '__wrap',\n \n box: prefix + '__box'\n }\n } //PickerConstructor.klasses\n \n \n \n /**\n * Check if the default theme is being used.\n */\n function isUsingDefaultTheme( element ) {\n \n var theme,\n prop = 'position'\n \n // For IE.\n if ( element.currentStyle ) {\n theme = element.currentStyle[prop]\n }\n \n // For normal browsers.\n else if ( window.getComputedStyle ) {\n theme = getComputedStyle( element )[prop]\n }\n \n return theme == 'fixed'\n }\n \n /**\n * Get the width of the browser’s scrollbar.\n * Taken from: https://github.com/VodkaBears/Remodal/blob/master/src/jquery.remodal.js\n */\n function getScrollbarWidth() {\n \n if ( $html.height() <= $window.height() ) {\n return 0\n }\n \n var $outer = $( '
      ' ).\n appendTo( 'body' )\n \n // Get the width without scrollbars.\n var widthWithoutScroll = $outer[0].offsetWidth\n \n // Force adding scrollbars.\n $outer.css( 'overflow', 'scroll' )\n \n // Add the inner div.\n var $inner = $( '
      ' ).appendTo( $outer )\n \n // Get the width with scrollbars.\n var widthWithScroll = $inner[0].offsetWidth\n \n // Remove the divs.\n $outer.remove()\n \n // Return the difference between the widths.\n return widthWithoutScroll - widthWithScroll\n }\n \n \n \n /**\n * Get the target element from the event.\n * If ELEMENT is supplied and present in the event path (ELEMENT is ancestor of the target),\n * returns ELEMENT instead\n */\n function getRealEventTarget( event, ELEMENT ) {\n \n var path = []\n \n if ( event.path ) {\n path = event.path\n }\n \n if ( event.originalEvent && event.originalEvent.path ) {\n path = event.originalEvent.path\n }\n \n if ( path && path.length > 0 ) {\n if ( ELEMENT && path.indexOf( ELEMENT ) >= 0 ) {\n return ELEMENT\n } else {\n return path[0]\n }\n }\n \n return event.target\n }\n \n // taken from https://davidwalsh.name/javascript-debounce-function\n function debounce(func, wait, immediate) {\n var timeout;\n return function() {\n var context = this, args = arguments;\n var later = function() {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n }\n \n /**\n * PickerConstructor helper methods.\n */\n PickerConstructor._ = {\n \n /**\n * Create a group of nodes. Expects:\n * `\n {\n min: {Integer},\n max: {Integer},\n i: {Integer},\n node: {String},\n item: {Function}\n }\n * `\n */\n group: function( groupObject ) {\n \n var\n // Scope for the looped object\n loopObjectScope,\n \n // Create the nodes list\n nodesList = '',\n \n // The counter starts from the `min`\n counter = PickerConstructor._.trigger( groupObject.min, groupObject )\n \n \n // Loop from the `min` to `max`, incrementing by `i`\n for ( ; counter <= PickerConstructor._.trigger( groupObject.max, groupObject, [ counter ] ); counter += groupObject.i ) {\n \n // Trigger the `item` function within scope of the object\n loopObjectScope = PickerConstructor._.trigger( groupObject.item, groupObject, [ counter ] )\n \n // Splice the subgroup and create nodes out of the sub nodes\n nodesList += PickerConstructor._.node(\n groupObject.node,\n loopObjectScope[ 0 ], // the node\n loopObjectScope[ 1 ], // the classes\n loopObjectScope[ 2 ] // the attributes\n )\n }\n \n // Return the list of nodes\n return nodesList\n }, //group\n \n \n /**\n * Create a dom node string\n */\n node: function( wrapper, item, klass, attribute ) {\n \n // If the item is false-y, just return an empty string\n if ( !item ) return ''\n \n // If the item is an array, do a join\n item = $.isArray( item ) ? item.join( '' ) : item\n \n // Check for the class\n klass = klass ? ' class=\"' + klass + '\"' : ''\n \n // Check for any attributes\n attribute = attribute ? ' ' + attribute : ''\n \n // Return the wrapped item\n return '<' + wrapper + klass + attribute + '>' + item + ''\n }, //node\n \n \n /**\n * Lead numbers below 10 with a zero.\n */\n lead: function( number ) {\n return ( number < 10 ? '0': '' ) + number\n },\n \n \n /**\n * Trigger a function otherwise return the value.\n */\n trigger: function( callback, scope, args ) {\n return typeof callback == 'function' ? callback.apply( scope, args || [] ) : callback\n },\n \n \n /**\n * If the second character is a digit, length is 2 otherwise 1.\n */\n digits: function( string ) {\n return ( /\\d/ ).test( string[ 1 ] ) ? 2 : 1\n },\n \n \n /**\n * Tell if something is a date object.\n */\n isDate: function( value ) {\n return {}.toString.call( value ).indexOf( 'Date' ) > -1 && this.isInteger( value.getDate() )\n },\n \n \n /**\n * Tell if something is an integer.\n */\n isInteger: function( value ) {\n return {}.toString.call( value ).indexOf( 'Number' ) > -1 && value % 1 === 0\n },\n \n \n /**\n * Create ARIA attribute strings.\n */\n ariaAttr: ariaAttr\n } //PickerConstructor._\n \n \n \n /**\n * Extend the picker with a component and defaults.\n */\n PickerConstructor.extend = function( name, Component ) {\n \n // Extend jQuery.\n $.fn[ name ] = function( options, action ) {\n \n // Grab the component data.\n var componentData = this.data( name )\n \n // If the picker is requested, return the data object.\n if ( options == 'picker' ) {\n return componentData\n }\n \n // If the component data exists and `options` is a string, carry out the action.\n if ( componentData && typeof options == 'string' ) {\n return PickerConstructor._.trigger( componentData[ options ], componentData, [ action ] )\n }\n \n // Otherwise go through each matched element and if the component\n // doesn’t exist, create a new picker using `this` element\n // and merging the defaults and options with a deep copy.\n return this.each( function() {\n var $this = $( this )\n if ( !$this.data( name ) ) {\n new PickerConstructor( this, name, Component, options )\n }\n })\n }\n \n // Set the defaults.\n $.fn[ name ].defaults = Component.defaults\n } //PickerConstructor.extend\n \n \n \n function aria(element, attribute, value) {\n if ( $.isPlainObject(attribute) ) {\n for ( var key in attribute ) {\n ariaSet(element, key, attribute[key])\n }\n }\n else {\n ariaSet(element, attribute, value)\n }\n }\n function ariaSet(element, attribute, value) {\n element.setAttribute(\n (attribute == 'role' ? '' : 'aria-') + attribute,\n value\n )\n }\n function ariaAttr(attribute, data) {\n if ( !$.isPlainObject(attribute) ) {\n attribute = { attribute: data }\n }\n data = ''\n for ( var key in attribute ) {\n var attr = (key == 'role' ? '' : 'aria-') + key,\n attrVal = attribute[key]\n data += attrVal == null ? '' : attr + '=\"' + attribute[key] + '\"'\n }\n return data\n }\n \n // IE8 bug throws an error for activeElements within iframes.\n function getActiveElement() {\n try {\n return document.activeElement\n } catch ( err ) { }\n }\n \n \n \n // Expose the picker constructor.\n return PickerConstructor\n \n \n }));\n \n","/*!\n * pickadate.js v3.6.3, 2019/04/03\n * By Amsul, http://amsul.ca\n * Hosted on http://amsul.github.io/pickadate.js\n * Licensed under MIT\n */\n\n(function ( factory ) {\n\n // AMD.\n if ( typeof define == 'function' && define.amd )\n define( 'picker', ['jquery'], factory );\n \n // Node.js/browserify.\n else if ( typeof exports == 'object' )\n module.exports = factory( require('jquery') );\n \n // Browser globals.\n else window.Picker = factory( jQuery );\n \n }(function( $ ) {\n \n var $window = $( window );\n var $document = $( document );\n var $html = $( document.documentElement );\n var supportsTransitions = document.documentElement.style.transition != null;\n \n \n /**\n * The picker constructor that creates a blank picker.\n */\n function PickerConstructor( ELEMENT, NAME, COMPONENT, OPTIONS ) {\n \n // If there’s no element, return the picker constructor.\n if ( !ELEMENT ) return PickerConstructor;\n \n var IS_DEFAULT_THEME = false,\n \n // The state of the picker.\n STATE = {\n id: ELEMENT.id || 'P' + Math.abs( ~~(Math.random() * new Date()) ),\n handlingOpen: false,\n },\n \n // Merge the defaults and options passed.\n SETTINGS = COMPONENT ? $.extend( true, {}, COMPONENT.defaults, OPTIONS ) : OPTIONS || {},\n \n // Merge the default classes with the settings classes.\n CLASSES = $.extend( {}, PickerConstructor.klasses(), SETTINGS.klass ),\n \n // The element node wrapper into a jQuery object.\n $ELEMENT = $( ELEMENT ).find('input'),\n \n // On editable:true checks if should open\n OPENCOUNTER = 2,\n \n // Pseudo picker constructor.\n PickerInstance = function() {\n return this.start();\n },\n \n // The picker prototype.\n P = PickerInstance.prototype = {\n \n constructor: PickerInstance,\n \n $node: $ELEMENT,\n \n /**\n * Initialize everything\n */\n start: function() {\n \n // If it’s already started, do nothing.\n if ( STATE && STATE.start ) return P;\n \n // Update the picker states.\n STATE.methods = {};\n STATE.start = true;\n STATE.open = false;\n STATE.type = ELEMENT.type;\n \n \n // Confirm focus state, convert into text input to remove UA stylings,\n // and set as readonly to prevent keyboard popup.\n ELEMENT.autofocus = ELEMENT == getActiveElement();\n ELEMENT.readOnly = !SETTINGS.editable;\n ELEMENT.id = ELEMENT.id || STATE.id;\n if ( ELEMENT.type != 'text' ) {\n ELEMENT.type = 'text';\n }\n \n \n // Create a new picker component with the settings.\n P.component = new COMPONENT(P, SETTINGS);\n // Create the picker root and then prepare it.\n P.$root = $( `\n
      \n ` );\n prepareElementRoot();\n \n \n // Create the picker holder and then prepare it.\n P.$holder = $( createWrappedComponent() ).appendTo( P.$root );\n prepareElementHolder();\n \n \n // If there’s a format for the hidden input element, create the element.\n if ( SETTINGS.formatSubmit ) {\n prepareElementHidden();\n }\n \n \n // Prepare the input element.\n prepareElement();\n \n \n // Insert the hidden input as specified in the settings.\n if ( SETTINGS.containerHidden ) $( SETTINGS.containerHidden ).append( P._hidden );\n else $ELEMENT.after( P._hidden );\n\n $('body').append( P.$root);\n \n if (SETTINGS.inline) {\n P.$root.hide();\n }\n // Bind the default component and settings events.\n P.on({\n start: P.component.onStart,\n render: P.component.onRender,\n stop: P.component.onStop,\n open: P.component.onOpen,\n close: P.component.onClose,\n set: P.component.onSet\n }).on({\n start: SETTINGS.onStart,\n render: SETTINGS.onRender,\n stop: SETTINGS.onStop,\n open: SETTINGS.onOpen,\n close: SETTINGS.onClose,\n set: SETTINGS.onSet\n });\n \n \n // Once we’re all set, check the theme in use.\n IS_DEFAULT_THEME = isUsingDefaultTheme( P.$holder[0] );\n \n \n // If the element has autofocus, open the picker.\n if ( ELEMENT.autofocus ) {\n P.open();\n }\n \n \n // Trigger queued the “start” and “render” events.\n return P.trigger( 'start' ).trigger( 'render' );\n }, //start\n \n \n /**\n * Render a new picker\n */\n render: function( entireComponent ) {\n \n // Insert a new component holder in the root or box.\n if ( entireComponent ) {\n P.$holder = $( createWrappedComponent() );\n prepareElementHolder();\n P.$root.html( P.$holder );\n }\n else P.$root.find( '.' + CLASSES.box ).html( P.component.nodes( STATE.open ) );\n \n // Trigger the queued “render” events.\n return P.trigger( 'render' );\n }, //render\n \n \n /**\n * Destroy everything\n */\n stop: function() {\n \n // If it’s already stopped, do nothing.\n if ( !STATE.start ) return P;\n \n // Then close the picker.\n P.close();\n \n // Remove the hidden field.\n if ( P._hidden ) {\n P._hidden.parentNode.removeChild( P._hidden );\n }\n \n // Remove the root.\n P.$root.remove();\n \n // Remove the input class, remove the stored data, and unbind\n // the events (after a tick for IE - see `P.close`).\n $ELEMENT.removeClass( CLASSES.input ).removeData( NAME );\n setTimeout( function() {\n $ELEMENT.off( '.' + STATE.id );\n }, 0);\n \n // Restore the element state\n ELEMENT.type = STATE.type;\n ELEMENT.readOnly = false;\n \n // Trigger the queued “stop” events.\n P.trigger( 'stop' );\n \n // Reset the picker states.\n STATE.methods = {};\n STATE.start = false;\n \n return P;\n }, //stop\n \n \n /**\n * Open up the picker\n */\n open: function( dontGiveFocus ) {\n OPENCOUNTER++;\n // If it’s already open, do nothing.\n if ( STATE.open ) return P;\n \n // If it’s editable and already opened, do nothing.\n if (OPENCOUNTER<4 && SETTINGS.editable) return P;\n\n P.set( 'currentView', 'days' );\n // * A Firefox bug, when `html` has `overflow:hidden`, results in\n // killing transitions :(. So add the “opened” state on the next tick.\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289\n setTimeout( function() {\n \n // Add the “opened” class to the picker root.\n P.$root.addClass( CLASSES.opened );\n aria( P.$root[0], 'hidden', false );\n \n }, 0 );\n\n // If we have to give focus, bind the element and doc events.\n if ( dontGiveFocus !== false ) {\n\n // Set it as open.\n STATE.open = true;\n if (SETTINGS.inline) {\n P.$root.show();\n }\n \n // Prevent the page from scrolling.\n if ( IS_DEFAULT_THEME ) {\n $('body').\n css( 'overflow', 'hidden' ).\n css( 'padding-right', '+=' + getScrollbarWidth() );\n }\n \n // Pass focus to the root element’s jQuery object.\n focusPickerOnceOpened();\n \n // Bind the document events.\n $document.on( 'click.' + STATE.id + ' focusin.' + STATE.id, function( event ) {\n // If the picker is currently midway through processing\n // the opening sequence of events then don't handle clicks\n // on any part of the DOM. This is caused by a bug in Chrome 73\n // where a click event is being generated with the incorrect\n // path in it.\n // In short, if someone does a click that finishes after the\n // new element is created then the path contains only the\n // parent element and not the input element itself.\n if (STATE.handlingOpen) {\n return;\n }\n \n var target = getRealEventTarget( event, ELEMENT );\n \n // If the target of the event is not the element, close the picker picker.\n // * Don’t worry about clicks or focusins on the root because those don’t bubble up.\n // Also, for Firefox, a click on an `option` element bubbles up directly\n // to the doc. So make sure the target wasn't the doc.\n // * In Firefox stopPropagation() doesn’t prevent right-click events from bubbling,\n // which causes the picker to unexpectedly close when right-clicking it. So make\n // sure the event wasn’t a right-click.\n // * In Chrome 62 and up, password autofill causes a simulated focusin event which\n // closes the picker.\n if ( ! event.isSimulated && target != ELEMENT && target != document && event.which != 3 ) {\n \n // If the target was the holder that covers the screen,\n // keep the element focused to maintain tabindex.\n P.close( target === P.$holder[0] );\n }\n \n }).on( 'keydown.' + STATE.id, function( event ) {\n \n var\n // Get the keycode.\n keycode = event.keyCode,\n \n // Translate that to a selection change.\n keycodeToMove = P.component.key[ keycode ],\n \n // Grab the target.\n target = getRealEventTarget( event, ELEMENT );\n \n \n // On escape, close the picker and give focus.\n if ( keycode == 27 ) {\n P.close( true );\n }\n \n \n // Check if there is a key movement or “enter” keypress on the element.\n else if ( target == P.$holder[0] && ( keycodeToMove || keycode == 13 ) ) {\n \n // Prevent the default action to stop page movement.\n event.preventDefault();\n \n // Trigger the key movement action.\n if ( keycodeToMove ) {\n PickerConstructor._.trigger( P.component.key.go, P, [ PickerConstructor._.trigger( keycodeToMove ) ] );\n }\n \n // On “enter”, if the highlighted item isn’t disabled, set the value and close.\n else if ( !P.$root.find( '.' + CLASSES.highlighted ).hasClass( CLASSES.disabled ) ) {\n P.set( 'select', P.component.item.highlight );\n if ( SETTINGS.closeOnSelect ) {\n P.close( true );\n }\n }\n \n }\n \n \n // If the target is within the root and “enter” is pressed,\n // prevent the default action and trigger a click on the target instead.\n else if ( $.contains( P.$root[0], target ) && keycode == 13 ) {\n event.preventDefault();\n target.click();\n }\n });\n }\n \n // Trigger the queued “open” events.\n return P.trigger( 'open' );\n }, //open\n \n \n /**\n * Close the picker\n */\n close: function( giveFocus ) {\n OPENCOUNTER = 0;\n \n // If it’s already closed, do nothing more.\n if ( !STATE.open ) return P;\n\n // If we need to give focus, do it before changing states.\n if ( giveFocus ) {\n if ( SETTINGS.editable ) {\n ELEMENT.click();\n }\n else {\n // ....ah yes! It would’ve been incomplete without a crazy workaround for IE :|\n // The focus is triggered *after* the close has completed - causing it\n // to open again. So unbind and rebind the event at the next tick.\n P.$holder.off( 'focus.toOpen' ).focus();\n setTimeout( function() {\n P.$holder.on( 'focus.toOpen', handleFocusToOpenEvent );\n }, 0 );\n }\n }\n \n // Remove the “active” class.\n $ELEMENT.removeClass( CLASSES.active );\n aria( ELEMENT, 'expanded', false );\n \n // * A Firefox bug, when `html` has `overflow:hidden`, results in\n // killing transitions :(. So remove the “opened” state on the next tick.\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289\n setTimeout( function() {\n \n // Remove the “opened” and “focused” class from the picker root.\n P.$root.removeClass( CLASSES.opened + ' ' + CLASSES.focused );\n aria( P.$root[0], 'hidden', true );\n \n }, 0 );\n \n // Allow the page to scroll.\n if ( IS_DEFAULT_THEME ) {\n $('body').\n css( 'overflow', '' ).\n css( 'padding-right', '-=' + getScrollbarWidth() );\n }\n \n document.activeElement.blur();\n // Unbind the document events.\n $document.off( '.' + STATE.id );\n // Set it as closed.\n STATE.open = false;\n if (SETTINGS.inline) {\n P.$root.hide();\n }\n // Trigger the queued “close” events.\n return P.trigger( 'close' );\n }, //close\n \n \n /**\n * Clear the values\n */\n clear: function( options ) {\n document.activeElement.blur();\n return P.set( 'clear', null, options );\n }, //clear\n \n \n /**\n * Set something\n */\n set: function( thing, value, options ) {\n \n var thingItem, thingValue,\n thingIsObject = $.isPlainObject( thing ),\n thingObject = thingIsObject ? thing : {};\n \n // Make sure we have usable options.\n options = thingIsObject && $.isPlainObject( value ) ? value : options || {};\n \n if ( thing ) {\n \n // If the thing isn’t an object, make it one.\n if ( !thingIsObject ) {\n thingObject[ thing ] = value;\n }\n \n // Go through the things of items to set.\n for ( thingItem in thingObject ) {\n \n // Grab the value of the thing.\n thingValue = thingObject[ thingItem ];\n // First, if the item exists and there’s a value, set it.\n if ( thingItem in P.component.item ) {\n if ( thingValue === undefined ) thingValue = null;\n P.component.set( thingItem, thingValue, options );\n }\n \n // Then, check to update the element value and broadcast a change.\n if ( ( thingItem == 'select' || thingItem == 'clear' ) && SETTINGS.updateInput ) {\n $ELEMENT.\n val( thingItem == 'clear' ? '' : P.get( thingItem, SETTINGS.format ) ).\n trigger( 'change' );\n }\n }\n \n // Render a new picker.\n P.render();\n }\n \n // When the method isn’t muted, trigger queued “set” events and pass the `thingObject`.\n return options.muted ? P : P.trigger( 'set', thingObject );\n }, //set\n \n \n /**\n * Get something\n */\n get: function( thing, format ) {\n \n // Make sure there’s something to get.\n thing = thing || 'value';\n \n // If a picker state exists, return that.\n if ( STATE[ thing ] != null ) {\n return STATE[ thing ];\n }\n \n // Return the submission value, if that.\n if ( thing == 'valueSubmit' ) {\n if ( P._hidden ) {\n return P._hidden.value;\n }\n thing = 'value';\n }\n \n // Return the value, if that.\n if ( thing == 'value' ) {\n return ELEMENT.value;\n }\n \n // Check if a component item exists, return that.\n if ( thing in P.component.item ) {\n if ( typeof format == 'string' ) {\n var thingValue = P.component.get( thing );\n return thingValue ?\n PickerConstructor._.trigger(\n P.component.formats.toString,\n P.component,\n [ format, thingValue ]\n ) : '';\n }\n return P.component.get( thing );\n }\n }, //get\n \n \n \n /**\n * Bind events on the things.\n */\n on: function( thing, method, internal ) {\n \n var thingName, thingMethod,\n thingIsObject = $.isPlainObject( thing ),\n thingObject = thingIsObject ? thing : {};\n \n if ( thing ) {\n \n // If the thing isn’t an object, make it one.\n if ( !thingIsObject ) {\n thingObject[ thing ] = method;\n }\n \n // Go through the things to bind to.\n for ( thingName in thingObject ) {\n \n // Grab the method of the thing.\n thingMethod = thingObject[ thingName ];\n \n // If it was an internal binding, prefix it.\n if ( internal ) {\n thingName = '_' + thingName;\n }\n \n // Make sure the thing methods collection exists.\n STATE.methods[ thingName ] = STATE.methods[ thingName ] || [];\n \n // Add the method to the relative method collection.\n STATE.methods[ thingName ].push( thingMethod );\n }\n }\n \n return P;\n }, //on\n \n \n \n /**\n * Unbind events on the things.\n */\n off: function() {\n var i, thingName,\n names = arguments;\n for ( i = 0, namesCount = names.length; i < namesCount; i += 1 ) {\n thingName = names[i];\n if ( thingName in STATE.methods ) {\n delete STATE.methods[thingName];\n }\n }\n return P;\n },\n \n \n /**\n * Fire off method events.\n */\n trigger: function( name, data ) {\n var _trigger = function( name ) {\n var methodList = STATE.methods[ name ];\n if ( methodList ) {\n methodList.map( function( method ) {\n PickerConstructor._.trigger( method, P, [ data ] );\n });\n }\n };\n _trigger( '_' + name );\n _trigger( name );\n return P;\n } //trigger\n }; //PickerInstance.prototype\n\n SETTINGS.inline = $(ELEMENT).attr('inline');\n \n \n /**\n * Wrap the picker holder components together.\n */\n function createWrappedComponent() {\n // Create a picker wrapper holder\n return `
      \n
      \n
      \n
      \n ${P.component.nodes( STATE.open )}\n
      \n
      \n
      \n
      `;\n } //createWrappedComponent\n \n /**\n * Prepare the input element with all bindings.\n */\n function prepareElement() {\n \n $ELEMENT.\n \n // Store the picker data by component name.\n data(NAME, P).\n \n // Add the “input” class name.\n addClass(CLASSES.input).\n \n // If there’s a `data-value`, update the value of the element.\n val( $ELEMENT.data('value') ?\n P.get('select', SETTINGS.format) :\n $(ELEMENT).find('input').val()\n );\n\n if (SETTINGS.inline) {\n // On focus/click, open the picker.\n $ELEMENT.siblings('i').on('click', () => {\n const popper = new Popper($(ELEMENT), P.$root, {\n placement: 'bottom-end',\n modifiers: {\n offset: {\n enabled: true,\n offset: '-300, 0'\n }\n }\n });\n P.open();\n });\n\n } else {\n // On focus/click, open the picker.\n $ELEMENT.siblings('i').on('click',\n debounce(function(event) {\n event.preventDefault();\n P.open();\n }, 100)\n );\n }\n \n $ELEMENT.siblings('i').\n // Mousedown handler to capture when the user starts interacting\n // with the picker. This is used in working around a bug in Chrome 73.\n on('mousedown', function() {\n STATE.handlingOpen = true;\n var handler = function() {\n // By default mouseup events are fired before a click event.\n // By using a timeout we can force the mouseup to be handled\n // after the corresponding click event is handled.\n setTimeout(function() {\n $(document).off('mouseup', handler);\n STATE.handlingOpen = false;\n }, 0);\n };\n $(document).on('mouseup', handler);\n });\n \n // Only bind keydown events if the element isn’t editable.\n if ( !SETTINGS.editable ) {\n \n $ELEMENT.siblings('i').\n \n // Handle keyboard event based on the picker being opened or not.\n on( 'keyup.' + STATE.id, handleKeydownEvent );\n }\n \n\n // Update the aria attributes.\n aria(ELEMENT, {\n haspopup: true,\n expanded: false,\n readonly: false,\n owns: ELEMENT.id + '_root'\n });\n }\n \n \n /**\n * Prepare the root picker element with all bindings.\n */\n function prepareElementRoot() {\n aria( P.$root[0], 'hidden', true );\n }\n \n \n /**\n * Prepare the holder picker element with all bindings.\n */\n function prepareElementHolder() {\n \n P.$holder.\n \n on({\n \n // For iOS8.\n keydown: handleKeydownEvent,\n \n 'focus.toOpen': handleFocusToOpenEvent,\n \n blur: function() {\n // Remove the “target” class.\n $ELEMENT.removeClass( CLASSES.target );\n },\n \n // When something within the holder is focused, stop from bubbling\n // to the doc and remove the “focused” state from the root.\n focusin: function( event ) {\n P.$root.removeClass( CLASSES.focused );\n event.stopPropagation();\n },\n \n // When something within the holder is clicked, stop it\n // from bubbling to the doc.\n 'mousedown click': function( event ) {\n \n var target = getRealEventTarget( event, ELEMENT );\n \n // Make sure the target isn’t the root holder so it can bubble up.\n if ( target != P.$holder[0] ) {\n \n event.stopPropagation();\n \n // * For mousedown events, cancel the default action in order to\n // prevent cases where focus is shifted onto external elements\n // when using things like jQuery mobile or MagnificPopup (ref: #249 & #120).\n // Also, for Firefox, don’t prevent action on the `option` element.\n if ( event.type == 'mousedown' && !$( target ).is( 'input, select, textarea, button, option' )) {\n \n event.preventDefault();\n \n // Re-focus onto the holder so that users can click away\n // from elements focused within the picker.\n P.$holder.eq(0).focus();\n }\n }\n }\n \n }).\n \n // If there’s a click on an actionable element, carry out the actions.\n on( 'click', '[data-pick], [data-nav], [data-clear], [data-close], [data-select-year]', function(e) {\n \n var $target = $( this ),\n targetData = $target.data(),\n targetDisabled = $target.hasClass( CLASSES.navDisabled ) || $target.hasClass( CLASSES.disabled ),\n \n // * For IE, non-focusable elements can be active elements as well\n // (http://stackoverflow.com/a/2684561).\n activeElement = getActiveElement();\n activeElement = activeElement && ( (activeElement.type || activeElement.href ) ? activeElement : null);\n\n // If it’s disabled or nothing inside is actively focused, re-focus the element.\n if ( targetDisabled || activeElement && !$.contains( P.$root[0], activeElement ) ) {\n P.$holder.eq(0).focus();\n }\n \n // If something is superficially changed, update the `highlight` based on the `nav`.\n if ( !targetDisabled && targetData.nav ) {\n P.set( 'highlight', P.component.item.highlight, { nav: targetData.nav } );\n }\n \n // If something is picked, set `select` then close with focus.\n else if ( !targetDisabled && 'pick' in targetData ) {\n P.set( 'select', targetData.pick );\n if ( SETTINGS.closeOnSelect && P.component.item.currentView === 'days' ) {\n P.close( true );\n } else {\n P.set( 'currentView', P.component.item.highlight );\n }\n }\n \n // If a “clear” button is pressed, empty the values and close with focus.\n else if ( targetData.clear ) {\n P.clear();\n if ( SETTINGS.closeOnClear ) {\n P.close( true );\n }\n }\n \n else if ( targetData.close ) {\n P.close( true );\n }\n \n else if (targetData.selectYear) {\n P.set( 'currentView', P.component.item.highlight );\n }\n }).on('keydown', `.${SETTINGS.klass.buttonOk}`, (e) => {\n const tabKey = 9;\n if (e.keyCode == tabKey && !e.shiftKey) {\n e.preventDefault();\n $(e.target).closest(`.${CLASSES.box}`).find(`.${SETTINGS.klass.selectYear}`).focus();\n }\n }).on('keydown', `.${SETTINGS.klass.selectYear}`, (e) => {\n const tabKey = 9;\n if (e.keyCode == tabKey && e.shiftKey) {\n e.preventDefault();\n $(e.target).closest(`.${CLASSES.box}`).find(`.${SETTINGS.klass.buttonOk}`).focus();\n }\n }); //P.$holder\n }\n \n \n /**\n * Prepare the hidden input element along with all bindings.\n */\n function prepareElementHidden() {\n \n var name;\n \n if ( SETTINGS.hiddenName === true ) {\n name = ELEMENT.name;\n ELEMENT.name = '';\n }\n else {\n name = [\n typeof SETTINGS.hiddenPrefix == 'string' ? SETTINGS.hiddenPrefix : '',\n typeof SETTINGS.hiddenSuffix == 'string' ? SETTINGS.hiddenSuffix : '_submit'\n ];\n name = name[0] + ELEMENT.name + name[1];\n }\n \n P._hidden = $(\n ''\n )[0];\n \n $ELEMENT.\n \n // If the value changes, update the hidden input with the correct format.\n on('change.' + STATE.id, function() {\n P._hidden.value = ELEMENT.value ?\n P.get('select', SETTINGS.formatSubmit) :\n '';\n });\n }\n \n \n // Wait for transitions to end before focusing the holder. Otherwise, while\n // using the `container` option, the view jumps to the container.\n function focusPickerOnceOpened() {\n \n if (IS_DEFAULT_THEME && supportsTransitions) {\n P.$holder.find('.' + CLASSES.frame).one('transitionend', function() {\n P.$holder.eq(0).focus();\n });\n }\n else {\n setTimeout(function() {\n P.$holder.eq(0).focus();\n }, 0);\n }\n }\n \n \n function handleFocusToOpenEvent(event) {\n \n // Stop the event from propagating to the doc.\n event.stopPropagation();\n \n // Add the “target” class.\n $ELEMENT.addClass( CLASSES.target );\n \n // Add the “focused” class to the root.\n P.$root.addClass( CLASSES.focused );\n \n // And then finally open the picker.\n P.open();\n }\n \n \n // For iOS8.\n function handleKeydownEvent( event ) {\n \n var keycode = event.keyCode;\n \n // For some reason IE clears the input value on “escape”.\n if ( keycode == 27 ) {\n P.close( true );\n return false;\n }\n \n // Check if `space` or `delete` was pressed or the picker is closed with a key movement.\n if ( keycode == 32 || keycode == 13 ) {\n \n // Prevent it from moving the page and bubbling to doc.\n event.preventDefault();\n event.stopPropagation();\n \n // If `delete` was pressed, clear the values and close the picker.\n // Otherwise open the picker.\n P.open();\n }\n }\n \n // Return a new picker instance.\n return new PickerInstance();\n } //PickerConstructor\n \n \n \n /**\n * The default classes and prefix to use for the HTML classes.\n */\n PickerConstructor.klasses = function( prefix ) {\n prefix = prefix || 'picker';\n return {\n \n picker: prefix,\n opened: prefix + '--opened',\n focused: prefix + '--focused',\n \n input: prefix + '__input',\n active: prefix + '__input--active',\n target: prefix + '__input--target',\n \n holder: prefix + '__holder',\n \n frame: prefix + '__frame',\n wrap: prefix + '__wrap',\n \n box: prefix + '__box'\n };\n }; //PickerConstructor.klasses\n \n \n \n /**\n * Check if the default theme is being used.\n */\n function isUsingDefaultTheme( element ) {\n \n var theme,\n prop = 'position';\n \n // For IE.\n if ( element.currentStyle ) {\n theme = element.currentStyle[prop];\n }\n \n // For normal browsers.\n else if ( window.getComputedStyle ) {\n theme = getComputedStyle( element )[prop];\n }\n \n return theme == 'fixed';\n }\n \n /**\n * Get the width of the browser’s scrollbar.\n * Taken from: https://github.com/VodkaBears/Remodal/blob/master/src/jquery.remodal.js\n */\n function getScrollbarWidth() {\n \n if ( $html.height() <= $window.height() ) {\n return 0;\n }\n \n var $outer = $( '
      ' ).\n appendTo( 'body' );\n \n // Get the width without scrollbars.\n var widthWithoutScroll = $outer[0].offsetWidth;\n \n // Force adding scrollbars.\n $outer.css( 'overflow', 'scroll' );\n \n // Add the inner div.\n var $inner = $( '
      ' ).appendTo( $outer );\n \n // Get the width with scrollbars.\n var widthWithScroll = $inner[0].offsetWidth;\n \n // Remove the divs.\n $outer.remove();\n \n // Return the difference between the widths.\n return widthWithoutScroll - widthWithScroll;\n }\n \n \n \n /**\n * Get the target element from the event.\n * If ELEMENT is supplied and present in the event path (ELEMENT is ancestor of the target),\n * returns ELEMENT instead\n */\n function getRealEventTarget( event, ELEMENT ) {\n \n var path = [];\n \n if ( event.path ) {\n path = event.path;\n }\n \n if ( event.originalEvent && event.originalEvent.path ) {\n path = event.originalEvent.path;\n }\n \n if ( path && path.length > 0 ) {\n if ( ELEMENT && path.indexOf( ELEMENT ) >= 0 ) {\n return ELEMENT;\n } else {\n return path[0];\n }\n }\n \n return event.target;\n }\n \n // taken from https://davidwalsh.name/javascript-debounce-function\n function debounce(func, wait, immediate) {\n var timeout;\n return function() {\n var context = this, args = arguments;\n var later = function() {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n }\n \n /**\n * PickerConstructor helper methods.\n */\n PickerConstructor._ = {\n \n /**\n * Create a group of nodes. Expects:\n * `\n {\n min: {Integer},\n max: {Integer},\n i: {Integer},\n node: {String},\n item: {Function}\n }\n * `\n */\n group: function( groupObject ) {\n \n var\n // Scope for the looped object\n loopObjectScope,\n \n // Create the nodes list\n nodesList = '',\n \n // The counter starts from the `min`\n counter = PickerConstructor._.trigger( groupObject.min, groupObject );\n \n \n // Loop from the `min` to `max`, incrementing by `i`\n for ( ; counter <= PickerConstructor._.trigger( groupObject.max, groupObject, [ counter ] ); counter += groupObject.i ) {\n \n // Trigger the `item` function within scope of the object\n loopObjectScope = PickerConstructor._.trigger( groupObject.item, groupObject, [ counter ] );\n \n // Splice the subgroup and create nodes out of the sub nodes\n nodesList += PickerConstructor._.node(\n groupObject.node,\n loopObjectScope[ 0 ], // the node\n loopObjectScope[ 1 ], // the classes\n loopObjectScope[ 2 ] // the attributes\n );\n }\n \n // Return the list of nodes\n return nodesList;\n }, //group\n \n \n /**\n * Create a dom node string\n */\n node: function( wrapper, item, klass, attribute ) {\n \n // If the item is false-y, just return an empty string\n if ( !item ) return '';\n \n // If the item is an array, do a join\n item = $.isArray( item ) ? item.join( '' ) : item;\n \n // Check for the class\n klass = klass ? ' class=\"' + klass + '\"' : '';\n \n // Check for any attributes\n attribute = attribute ? ' ' + attribute : '';\n \n // Return the wrapped item\n return '<' + wrapper + klass + attribute + '>' + item + '';\n }, //node\n \n \n /**\n * Lead numbers below 10 with a zero.\n */\n lead: function( number ) {\n return ( number < 10 ? '0': '' ) + number;\n },\n \n \n /**\n * Trigger a function otherwise return the value.\n */\n trigger: function( callback, scope, args ) {\n return typeof callback == 'function' ? callback.apply( scope, args || [] ) : callback;\n },\n \n \n /**\n * If the second character is a digit, length is 2 otherwise 1.\n */\n digits: function( string ) {\n return ( /\\d/ ).test( string[ 1 ] ) ? 2 : 1;\n },\n \n \n /**\n * Tell if something is a date object.\n */\n isDate: function( value ) {\n return {}.toString.call( value ).indexOf( 'Date' ) > -1 && this.isInteger( value.getDate() );\n },\n \n \n /**\n * Tell if something is an integer.\n */\n isInteger: function( value ) {\n return {}.toString.call( value ).indexOf( 'Number' ) > -1 && value % 1 === 0;\n },\n \n \n /**\n * Create ARIA attribute strings.\n */\n ariaAttr: ariaAttr\n }; //PickerConstructor._\n \n \n \n /**\n * Extend the picker with a component and defaults.\n */\n PickerConstructor.extend = function( name, Component ) {\n \n // Extend jQuery.\n $.fn[ name ] = function( options, action ) {\n \n // Grab the component data.\n var componentData = this.data( name );\n \n // If the picker is requested, return the data object.\n if ( options == 'picker' ) {\n return componentData;\n }\n \n // If the component data exists and `options` is a string, carry out the action.\n if ( componentData && typeof options == 'string' ) {\n return PickerConstructor._.trigger( componentData[ options ], componentData, [ action ] );\n }\n \n // Otherwise go through each matched element and if the component\n // doesn’t exist, create a new picker using `this` element\n // and merging the defaults and options with a deep copy.\n return this.each( function() {\n var $this = $( this );\n if ( !$this.data( name ) ) {\n new PickerConstructor( this, name, Component, options );\n }\n });\n };\n \n // Set the defaults.\n $.fn[ name ].defaults = Component.defaults;\n }; //PickerConstructor.extend\n \n \n \n function aria(element, attribute, value) {\n if ( $.isPlainObject(attribute) ) {\n for ( var key in attribute ) {\n ariaSet(element, key, attribute[key]);\n }\n }\n else {\n ariaSet(element, attribute, value);\n }\n }\n function ariaSet(element, attribute, value) {\n element.setAttribute(\n (attribute == 'role' ? '' : 'aria-') + attribute,\n value\n );\n }\n function ariaAttr(attribute, data) {\n if ( !$.isPlainObject(attribute) ) {\n attribute = { attribute: data };\n }\n data = '';\n for ( var key in attribute ) {\n var attr = (key == 'role' ? '' : 'aria-') + key,\n attrVal = attribute[key];\n data += attrVal == null ? '' : attr + '=\"' + attribute[key] + '\"';\n }\n return data;\n }\n \n // IE8 bug throws an error for activeElements within iframes.\n function getActiveElement() {\n try {\n return document.activeElement;\n } catch ( err ) { }\n }\n \n \n \n // Expose the picker constructor.\n return PickerConstructor;\n \n })\n);\n \n","/*!\n * bsCustomFileInput v1.3.2 (https://github.com/Johann-S/bs-custom-file-input)\n * Copyright 2018 - 2019 Johann-S \n * Licensed under MIT (https://github.com/Johann-S/bs-custom-file-input/blob/master/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.bsCustomFileInput = factory());\n}(this, function () {\n 'use strict';\n\n var Selector = {\n CUSTOMFILE: '.custom-file input[type=\"file\"]',\n CUSTOMFILELABEL: '.custom-file-label',\n FORM: 'form',\n INPUT: 'input'\n };\n\n var textNodeType = 3;\n\n var getDefaultText = function getDefaultText(input) {\n var defaultText = '';\n var label = input.parentNode.querySelector(Selector.CUSTOMFILELABEL);\n\n if (label) {\n defaultText = label.innerHTML;\n }\n\n return defaultText;\n };\n\n var findFirstChildNode = function findFirstChildNode(element) {\n if (element.childNodes.length > 0) {\n var childNodes = [].slice.call(element.childNodes);\n\n for (var i = 0; i < childNodes.length; i++) {\n var node = childNodes[i];\n\n if (node.nodeType !== textNodeType) {\n return node;\n }\n }\n }\n\n return element;\n };\n\n var restoreDefaultText = function restoreDefaultText(input) {\n var defaultText = input.bsCustomFileInput.defaultText;\n var label = input.parentNode.querySelector(Selector.CUSTOMFILELABEL);\n\n if (label) {\n var element = findFirstChildNode(label);\n element.innerHTML = defaultText;\n }\n };\n\n var fileApi = !!window.File;\n var FAKE_PATH = 'fakepath';\n var FAKE_PATH_SEPARATOR = '\\\\';\n\n var getSelectedFiles = function getSelectedFiles(input) {\n if (input.hasAttribute('multiple') && fileApi) {\n return [].slice.call(input.files).map(function (file) {\n return file.name;\n }).join(', ');\n }\n\n if (input.value.indexOf(FAKE_PATH) !== -1) {\n var splittedValue = input.value.split(FAKE_PATH_SEPARATOR);\n return splittedValue[splittedValue.length - 1];\n }\n\n return input.value;\n };\n\n function handleInputChange() {\n var label = this.parentNode.querySelector(Selector.CUSTOMFILELABEL);\n\n if (label) {\n var element = findFirstChildNode(label);\n var inputValue = getSelectedFiles(this);\n\n if (inputValue.length) {\n element.innerHTML = inputValue;\n } else {\n restoreDefaultText(this);\n }\n }\n }\n\n function handleFormReset() {\n var customFileList = [].slice.call(this.querySelectorAll(Selector.INPUT)).filter(function (input) {\n return !!input.bsCustomFileInput;\n });\n\n for (var i = 0, len = customFileList.length; i < len; i++) {\n restoreDefaultText(customFileList[i]);\n }\n }\n\n var customProperty = 'bsCustomFileInput';\n var Event = {\n FORMRESET: 'reset',\n INPUTCHANGE: 'change'\n };\n var bsCustomFileInput = {\n init: function init(inputSelector, formSelector) {\n if (inputSelector === void 0) {\n inputSelector = Selector.CUSTOMFILE;\n }\n\n if (formSelector === void 0) {\n formSelector = Selector.FORM;\n }\n\n var customFileInputList = [].slice.call(document.querySelectorAll(inputSelector));\n var formList = [].slice.call(document.querySelectorAll(formSelector));\n\n for (var i = 0, len = customFileInputList.length; i < len; i++) {\n var input = customFileInputList[i];\n Object.defineProperty(input, customProperty, {\n value: {\n defaultText: getDefaultText(input)\n },\n writable: true\n });\n handleInputChange.call(input);\n input.addEventListener(Event.INPUTCHANGE, handleInputChange);\n }\n\n for (var _i = 0, _len = formList.length; _i < _len; _i++) {\n formList[_i].addEventListener(Event.FORMRESET, handleFormReset);\n\n Object.defineProperty(formList[_i], customProperty, {\n value: true,\n writable: true\n });\n }\n },\n destroy: function destroy() {\n var formList = [].slice.call(document.querySelectorAll(Selector.FORM)).filter(function (form) {\n return !!form.bsCustomFileInput;\n });\n var customFileInputList = [].slice.call(document.querySelectorAll(Selector.INPUT)).filter(function (input) {\n return !!input.bsCustomFileInput;\n });\n\n for (var i = 0, len = customFileInputList.length; i < len; i++) {\n var input = customFileInputList[i];\n restoreDefaultText(input);\n input[customProperty] = undefined;\n input.removeEventListener(Event.INPUTCHANGE, handleInputChange);\n }\n\n for (var _i2 = 0, _len2 = formList.length; _i2 < _len2; _i2++) {\n formList[_i2].removeEventListener(Event.FORMRESET, handleFormReset);\n\n formList[_i2][customProperty] = undefined;\n }\n }\n };\n\n return bsCustomFileInput;\n\n}));\n//# sourceMappingURL=bs-custom-file-input.js.map\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n\n bsCustomFileInput.init()\n});\n","/*!\n * Chart.js\n * http://chartjs.org/\n * Version: 2.7.3\n *\n * Copyright 2018 Chart.js Contributors\n * Released under the MIT license\n * https://github.com/chartjs/Chart.js/blob/master/LICENSE.md\n */\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.Chart = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tdark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.values.rgb;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tlight: function () {\n\t\treturn !this.dark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = [];\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb[i] = 255 - this.values.rgb[i];\n\t\t}\n\t\tthis.setValues('rgb', rgb);\n\t\treturn this;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] += hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] -= hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] += hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] -= hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[1] += hwb[1] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[2] += hwb[2] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tgreyscale: function () {\n\t\tvar rgb = this.values.rgb;\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\tthis.setValues('rgb', [val, val, val]);\n\t\treturn this;\n\t},\n\n\tclearer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha - (alpha * ratio));\n\t\treturn this;\n\t},\n\n\topaquer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha + (alpha * ratio));\n\t\treturn this;\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.values.hsl;\n\t\tvar hue = (hsl[0] + degrees) % 360;\n\t\thsl[0] = hue < 0 ? 360 + hue : hue;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\t/**\n\t * Ported from sass implementation in C\n\t * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t */\n\tmix: function (mixinColor, weight) {\n\t\tvar color1 = this;\n\t\tvar color2 = mixinColor;\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn this\n\t\t\t.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue()\n\t\t\t)\n\t\t\t.alpha(color1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n\n\ttoJSON: function () {\n\t\treturn this.rgb();\n\t},\n\n\tclone: function () {\n\t\t// NOTE(SB): using node-clone creates a dependency to Buffer when using browserify,\n\t\t// making the final build way to big to embed in Chart.js. So let's do it manually,\n\t\t// assuming that values to clone are 1 dimension arrays containing only numbers,\n\t\t// except 'alpha' which is a number.\n\t\tvar result = new Color();\n\t\tvar source = this.values;\n\t\tvar target = result.values;\n\t\tvar value, type;\n\n\t\tfor (var prop in source) {\n\t\t\tif (source.hasOwnProperty(prop)) {\n\t\t\t\tvalue = source[prop];\n\t\t\t\ttype = ({}).toString.call(value);\n\t\t\t\tif (type === '[object Array]') {\n\t\t\t\t\ttarget[prop] = value.slice(0);\n\t\t\t\t} else if (type === '[object Number]') {\n\t\t\t\t\ttarget[prop] = value;\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('unexpected color value:', value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n};\n\nColor.prototype.spaces = {\n\trgb: ['red', 'green', 'blue'],\n\thsl: ['hue', 'saturation', 'lightness'],\n\thsv: ['hue', 'saturation', 'value'],\n\thwb: ['hue', 'whiteness', 'blackness'],\n\tcmyk: ['cyan', 'magenta', 'yellow', 'black']\n};\n\nColor.prototype.maxes = {\n\trgb: [255, 255, 255],\n\thsl: [360, 100, 100],\n\thsv: [360, 100, 100],\n\thwb: [360, 100, 100],\n\tcmyk: [100, 100, 100, 100]\n};\n\nColor.prototype.getValues = function (space) {\n\tvar values = this.values;\n\tvar vals = {};\n\n\tfor (var i = 0; i < space.length; i++) {\n\t\tvals[space.charAt(i)] = values[space][i];\n\t}\n\n\tif (values.alpha !== 1) {\n\t\tvals.a = values.alpha;\n\t}\n\n\t// {r: 255, g: 255, b: 255, a: 0.4}\n\treturn vals;\n};\n\nColor.prototype.setValues = function (space, vals) {\n\tvar values = this.values;\n\tvar spaces = this.spaces;\n\tvar maxes = this.maxes;\n\tvar alpha = 1;\n\tvar i;\n\n\tthis.valid = true;\n\n\tif (space === 'alpha') {\n\t\talpha = vals;\n\t} else if (vals.length) {\n\t\t// [10, 10, 10]\n\t\tvalues[space] = vals.slice(0, space.length);\n\t\talpha = vals[space.length];\n\t} else if (vals[space.charAt(0)] !== undefined) {\n\t\t// {r: 10, g: 10, b: 10}\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[space.charAt(i)];\n\t\t}\n\n\t\talpha = vals.a;\n\t} else if (vals[spaces[space][0]] !== undefined) {\n\t\t// {red: 10, green: 10, blue: 10}\n\t\tvar chans = spaces[space];\n\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[chans[i]];\n\t\t}\n\n\t\talpha = vals.alpha;\n\t}\n\n\tvalues.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha)));\n\n\tif (space === 'alpha') {\n\t\treturn false;\n\t}\n\n\tvar capped;\n\n\t// cap values of the space prior converting all values\n\tfor (i = 0; i < space.length; i++) {\n\t\tcapped = Math.max(0, Math.min(maxes[space][i], values[space][i]));\n\t\tvalues[space][i] = Math.round(capped);\n\t}\n\n\t// convert to all the other color spaces\n\tfor (var sname in spaces) {\n\t\tif (sname !== space) {\n\t\t\tvalues[sname] = convert[space][sname](values[space]);\n\t\t}\n\t}\n\n\treturn true;\n};\n\nColor.prototype.setSpace = function (space, args) {\n\tvar vals = args[0];\n\n\tif (vals === undefined) {\n\t\t// color.rgb()\n\t\treturn this.getValues(space);\n\t}\n\n\t// color.rgb(10, 10, 10)\n\tif (typeof vals === 'number') {\n\t\tvals = Array.prototype.slice.call(args);\n\t}\n\n\tthis.setValues(space, vals);\n\treturn this;\n};\n\nColor.prototype.setChannel = function (space, index, val) {\n\tvar svalues = this.values[space];\n\tif (val === undefined) {\n\t\t// color.red()\n\t\treturn svalues[index];\n\t} else if (val === svalues[index]) {\n\t\t// color.red(color.red())\n\t\treturn this;\n\t}\n\n\t// color.red(100)\n\tsvalues[index] = val;\n\tthis.setValues(space, svalues);\n\n\treturn this;\n};\n\nif (typeof window !== 'undefined') {\n\twindow.Color = Color;\n}\n\nmodule.exports = Color;\n\n},{\"2\":2,\"5\":5}],4:[function(require,module,exports){\n/* MIT license */\n\nmodule.exports = {\n rgb2hsl: rgb2hsl,\n rgb2hsv: rgb2hsv,\n rgb2hwb: rgb2hwb,\n rgb2cmyk: rgb2cmyk,\n rgb2keyword: rgb2keyword,\n rgb2xyz: rgb2xyz,\n rgb2lab: rgb2lab,\n rgb2lch: rgb2lch,\n\n hsl2rgb: hsl2rgb,\n hsl2hsv: hsl2hsv,\n hsl2hwb: hsl2hwb,\n hsl2cmyk: hsl2cmyk,\n hsl2keyword: hsl2keyword,\n\n hsv2rgb: hsv2rgb,\n hsv2hsl: hsv2hsl,\n hsv2hwb: hsv2hwb,\n hsv2cmyk: hsv2cmyk,\n hsv2keyword: hsv2keyword,\n\n hwb2rgb: hwb2rgb,\n hwb2hsl: hwb2hsl,\n hwb2hsv: hwb2hsv,\n hwb2cmyk: hwb2cmyk,\n hwb2keyword: hwb2keyword,\n\n cmyk2rgb: cmyk2rgb,\n cmyk2hsl: cmyk2hsl,\n cmyk2hsv: cmyk2hsv,\n cmyk2hwb: cmyk2hwb,\n cmyk2keyword: cmyk2keyword,\n\n keyword2rgb: keyword2rgb,\n keyword2hsl: keyword2hsl,\n keyword2hsv: keyword2hsv,\n keyword2hwb: keyword2hwb,\n keyword2cmyk: keyword2cmyk,\n keyword2lab: keyword2lab,\n keyword2xyz: keyword2xyz,\n\n xyz2rgb: xyz2rgb,\n xyz2lab: xyz2lab,\n xyz2lch: xyz2lch,\n\n lab2xyz: lab2xyz,\n lab2rgb: lab2rgb,\n lab2lch: lab2lch,\n\n lch2lab: lch2lab,\n lch2xyz: lch2xyz,\n lch2rgb: lch2rgb\n}\n\n\nfunction rgb2hsl(rgb) {\n var r = rgb[0]/255,\n g = rgb[1]/255,\n b = rgb[2]/255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n delta = max - min,\n h, s, l;\n\n if (max == min)\n h = 0;\n else if (r == max)\n h = (g - b) / delta;\n else if (g == max)\n h = 2 + (b - r) / delta;\n else if (b == max)\n h = 4 + (r - g)/ delta;\n\n h = Math.min(h * 60, 360);\n\n if (h < 0)\n h += 360;\n\n l = (min + max) / 2;\n\n if (max == min)\n s = 0;\n else if (l <= 0.5)\n s = delta / (max + min);\n else\n s = delta / (2 - max - min);\n\n return [h, s * 100, l * 100];\n}\n\nfunction rgb2hsv(rgb) {\n var r = rgb[0],\n g = rgb[1],\n b = rgb[2],\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n delta = max - min,\n h, s, v;\n\n if (max == 0)\n s = 0;\n else\n s = (delta/max * 1000)/10;\n\n if (max == min)\n h = 0;\n else if (r == max)\n h = (g - b) / delta;\n else if (g == max)\n h = 2 + (b - r) / delta;\n else if (b == max)\n h = 4 + (r - g) / delta;\n\n h = Math.min(h * 60, 360);\n\n if (h < 0)\n h += 360;\n\n v = ((max / 255) * 1000) / 10;\n\n return [h, s, v];\n}\n\nfunction rgb2hwb(rgb) {\n var r = rgb[0],\n g = rgb[1],\n b = rgb[2],\n h = rgb2hsl(rgb)[0],\n w = 1/255 * Math.min(r, Math.min(g, b)),\n b = 1 - 1/255 * Math.max(r, Math.max(g, b));\n\n return [h, w * 100, b * 100];\n}\n\nfunction rgb2cmyk(rgb) {\n var r = rgb[0] / 255,\n g = rgb[1] / 255,\n b = rgb[2] / 255,\n c, m, y, k;\n\n k = Math.min(1 - r, 1 - g, 1 - b);\n c = (1 - r - k) / (1 - k) || 0;\n m = (1 - g - k) / (1 - k) || 0;\n y = (1 - b - k) / (1 - k) || 0;\n return [c * 100, m * 100, y * 100, k * 100];\n}\n\nfunction rgb2keyword(rgb) {\n return reverseKeywords[JSON.stringify(rgb)];\n}\n\nfunction rgb2xyz(rgb) {\n var r = rgb[0] / 255,\n g = rgb[1] / 255,\n b = rgb[2] / 255;\n\n // assume sRGB\n r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n return [x * 100, y *100, z * 100];\n}\n\nfunction rgb2lab(rgb) {\n var xyz = rgb2xyz(rgb),\n x = xyz[0],\n y = xyz[1],\n z = xyz[2],\n l, a, b;\n\n x /= 95.047;\n y /= 100;\n z /= 108.883;\n\n x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);\n y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);\n z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);\n\n l = (116 * y) - 16;\n a = 500 * (x - y);\n b = 200 * (y - z);\n\n return [l, a, b];\n}\n\nfunction rgb2lch(args) {\n return lab2lch(rgb2lab(args));\n}\n\nfunction hsl2rgb(hsl) {\n var h = hsl[0] / 360,\n s = hsl[1] / 100,\n l = hsl[2] / 100,\n t1, t2, t3, rgb, val;\n\n if (s == 0) {\n val = l * 255;\n return [val, val, val];\n }\n\n if (l < 0.5)\n t2 = l * (1 + s);\n else\n t2 = l + s - l * s;\n t1 = 2 * l - t2;\n\n rgb = [0, 0, 0];\n for (var i = 0; i < 3; i++) {\n t3 = h + 1 / 3 * - (i - 1);\n t3 < 0 && t3++;\n t3 > 1 && t3--;\n\n if (6 * t3 < 1)\n val = t1 + (t2 - t1) * 6 * t3;\n else if (2 * t3 < 1)\n val = t2;\n else if (3 * t3 < 2)\n val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n else\n val = t1;\n\n rgb[i] = val * 255;\n }\n\n return rgb;\n}\n\nfunction hsl2hsv(hsl) {\n var h = hsl[0],\n s = hsl[1] / 100,\n l = hsl[2] / 100,\n sv, v;\n\n if(l === 0) {\n // no need to do calc on black\n // also avoids divide by 0 error\n return [0, 0, 0];\n }\n\n l *= 2;\n s *= (l <= 1) ? l : 2 - l;\n v = (l + s) / 2;\n sv = (2 * s) / (l + s);\n return [h, sv * 100, v * 100];\n}\n\nfunction hsl2hwb(args) {\n return rgb2hwb(hsl2rgb(args));\n}\n\nfunction hsl2cmyk(args) {\n return rgb2cmyk(hsl2rgb(args));\n}\n\nfunction hsl2keyword(args) {\n return rgb2keyword(hsl2rgb(args));\n}\n\n\nfunction hsv2rgb(hsv) {\n var h = hsv[0] / 60,\n s = hsv[1] / 100,\n v = hsv[2] / 100,\n hi = Math.floor(h) % 6;\n\n var f = h - Math.floor(h),\n p = 255 * v * (1 - s),\n q = 255 * v * (1 - (s * f)),\n t = 255 * v * (1 - (s * (1 - f))),\n v = 255 * v;\n\n switch(hi) {\n case 0:\n return [v, t, p];\n case 1:\n return [q, v, p];\n case 2:\n return [p, v, t];\n case 3:\n return [p, q, v];\n case 4:\n return [t, p, v];\n case 5:\n return [v, p, q];\n }\n}\n\nfunction hsv2hsl(hsv) {\n var h = hsv[0],\n s = hsv[1] / 100,\n v = hsv[2] / 100,\n sl, l;\n\n l = (2 - s) * v;\n sl = s * v;\n sl /= (l <= 1) ? l : 2 - l;\n sl = sl || 0;\n l /= 2;\n return [h, sl * 100, l * 100];\n}\n\nfunction hsv2hwb(args) {\n return rgb2hwb(hsv2rgb(args))\n}\n\nfunction hsv2cmyk(args) {\n return rgb2cmyk(hsv2rgb(args));\n}\n\nfunction hsv2keyword(args) {\n return rgb2keyword(hsv2rgb(args));\n}\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nfunction hwb2rgb(hwb) {\n var h = hwb[0] / 360,\n wh = hwb[1] / 100,\n bl = hwb[2] / 100,\n ratio = wh + bl,\n i, v, f, n;\n\n // wh + bl cant be > 1\n if (ratio > 1) {\n wh /= ratio;\n bl /= ratio;\n }\n\n i = Math.floor(6 * h);\n v = 1 - bl;\n f = 6 * h - i;\n if ((i & 0x01) != 0) {\n f = 1 - f;\n }\n n = wh + f * (v - wh); // linear interpolation\n\n switch (i) {\n default:\n case 6:\n case 0: r = v; g = n; b = wh; break;\n case 1: r = n; g = v; b = wh; break;\n case 2: r = wh; g = v; b = n; break;\n case 3: r = wh; g = n; b = v; break;\n case 4: r = n; g = wh; b = v; break;\n case 5: r = v; g = wh; b = n; break;\n }\n\n return [r * 255, g * 255, b * 255];\n}\n\nfunction hwb2hsl(args) {\n return rgb2hsl(hwb2rgb(args));\n}\n\nfunction hwb2hsv(args) {\n return rgb2hsv(hwb2rgb(args));\n}\n\nfunction hwb2cmyk(args) {\n return rgb2cmyk(hwb2rgb(args));\n}\n\nfunction hwb2keyword(args) {\n return rgb2keyword(hwb2rgb(args));\n}\n\nfunction cmyk2rgb(cmyk) {\n var c = cmyk[0] / 100,\n m = cmyk[1] / 100,\n y = cmyk[2] / 100,\n k = cmyk[3] / 100,\n r, g, b;\n\n r = 1 - Math.min(1, c * (1 - k) + k);\n g = 1 - Math.min(1, m * (1 - k) + k);\n b = 1 - Math.min(1, y * (1 - k) + k);\n return [r * 255, g * 255, b * 255];\n}\n\nfunction cmyk2hsl(args) {\n return rgb2hsl(cmyk2rgb(args));\n}\n\nfunction cmyk2hsv(args) {\n return rgb2hsv(cmyk2rgb(args));\n}\n\nfunction cmyk2hwb(args) {\n return rgb2hwb(cmyk2rgb(args));\n}\n\nfunction cmyk2keyword(args) {\n return rgb2keyword(cmyk2rgb(args));\n}\n\n\nfunction xyz2rgb(xyz) {\n var x = xyz[0] / 100,\n y = xyz[1] / 100,\n z = xyz[2] / 100,\n r, g, b;\n\n r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n // assume sRGB\n r = r > 0.0031308 ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n : r = (r * 12.92);\n\n g = g > 0.0031308 ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n : g = (g * 12.92);\n\n b = b > 0.0031308 ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n : b = (b * 12.92);\n\n r = Math.min(Math.max(0, r), 1);\n g = Math.min(Math.max(0, g), 1);\n b = Math.min(Math.max(0, b), 1);\n\n return [r * 255, g * 255, b * 255];\n}\n\nfunction xyz2lab(xyz) {\n var x = xyz[0],\n y = xyz[1],\n z = xyz[2],\n l, a, b;\n\n x /= 95.047;\n y /= 100;\n z /= 108.883;\n\n x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);\n y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);\n z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);\n\n l = (116 * y) - 16;\n a = 500 * (x - y);\n b = 200 * (y - z);\n\n return [l, a, b];\n}\n\nfunction xyz2lch(args) {\n return lab2lch(xyz2lab(args));\n}\n\nfunction lab2xyz(lab) {\n var l = lab[0],\n a = lab[1],\n b = lab[2],\n x, y, z, y2;\n\n if (l <= 8) {\n y = (l * 100) / 903.3;\n y2 = (7.787 * (y / 100)) + (16 / 116);\n } else {\n y = 100 * Math.pow((l + 16) / 116, 3);\n y2 = Math.pow(y / 100, 1/3);\n }\n\n x = x / 95.047 <= 0.008856 ? x = (95.047 * ((a / 500) + y2 - (16 / 116))) / 7.787 : 95.047 * Math.pow((a / 500) + y2, 3);\n\n z = z / 108.883 <= 0.008859 ? z = (108.883 * (y2 - (b / 200) - (16 / 116))) / 7.787 : 108.883 * Math.pow(y2 - (b / 200), 3);\n\n return [x, y, z];\n}\n\nfunction lab2lch(lab) {\n var l = lab[0],\n a = lab[1],\n b = lab[2],\n hr, h, c;\n\n hr = Math.atan2(b, a);\n h = hr * 360 / 2 / Math.PI;\n if (h < 0) {\n h += 360;\n }\n c = Math.sqrt(a * a + b * b);\n return [l, c, h];\n}\n\nfunction lab2rgb(args) {\n return xyz2rgb(lab2xyz(args));\n}\n\nfunction lch2lab(lch) {\n var l = lch[0],\n c = lch[1],\n h = lch[2],\n a, b, hr;\n\n hr = h / 360 * 2 * Math.PI;\n a = c * Math.cos(hr);\n b = c * Math.sin(hr);\n return [l, a, b];\n}\n\nfunction lch2xyz(args) {\n return lab2xyz(lch2lab(args));\n}\n\nfunction lch2rgb(args) {\n return lab2rgb(lch2lab(args));\n}\n\nfunction keyword2rgb(keyword) {\n return cssKeywords[keyword];\n}\n\nfunction keyword2hsl(args) {\n return rgb2hsl(keyword2rgb(args));\n}\n\nfunction keyword2hsv(args) {\n return rgb2hsv(keyword2rgb(args));\n}\n\nfunction keyword2hwb(args) {\n return rgb2hwb(keyword2rgb(args));\n}\n\nfunction keyword2cmyk(args) {\n return rgb2cmyk(keyword2rgb(args));\n}\n\nfunction keyword2lab(args) {\n return rgb2lab(keyword2rgb(args));\n}\n\nfunction keyword2xyz(args) {\n return rgb2xyz(keyword2rgb(args));\n}\n\nvar cssKeywords = {\n aliceblue: [240,248,255],\n antiquewhite: [250,235,215],\n aqua: [0,255,255],\n aquamarine: [127,255,212],\n azure: [240,255,255],\n beige: [245,245,220],\n bisque: [255,228,196],\n black: [0,0,0],\n blanchedalmond: [255,235,205],\n blue: [0,0,255],\n blueviolet: [138,43,226],\n brown: [165,42,42],\n burlywood: [222,184,135],\n cadetblue: [95,158,160],\n chartreuse: [127,255,0],\n chocolate: [210,105,30],\n coral: [255,127,80],\n cornflowerblue: [100,149,237],\n cornsilk: [255,248,220],\n crimson: [220,20,60],\n cyan: [0,255,255],\n darkblue: [0,0,139],\n darkcyan: [0,139,139],\n darkgoldenrod: [184,134,11],\n darkgray: [169,169,169],\n darkgreen: [0,100,0],\n darkgrey: [169,169,169],\n darkkhaki: [189,183,107],\n darkmagenta: [139,0,139],\n darkolivegreen: [85,107,47],\n darkorange: [255,140,0],\n darkorchid: [153,50,204],\n darkred: [139,0,0],\n darksalmon: [233,150,122],\n darkseagreen: [143,188,143],\n darkslateblue: [72,61,139],\n darkslategray: [47,79,79],\n darkslategrey: [47,79,79],\n darkturquoise: [0,206,209],\n darkviolet: [148,0,211],\n deeppink: [255,20,147],\n deepskyblue: [0,191,255],\n dimgray: [105,105,105],\n dimgrey: [105,105,105],\n dodgerblue: [30,144,255],\n firebrick: [178,34,34],\n floralwhite: [255,250,240],\n forestgreen: [34,139,34],\n fuchsia: [255,0,255],\n gainsboro: [220,220,220],\n ghostwhite: [248,248,255],\n gold: [255,215,0],\n goldenrod: [218,165,32],\n gray: [128,128,128],\n green: [0,128,0],\n greenyellow: [173,255,47],\n grey: [128,128,128],\n honeydew: [240,255,240],\n hotpink: [255,105,180],\n indianred: [205,92,92],\n indigo: [75,0,130],\n ivory: [255,255,240],\n khaki: [240,230,140],\n lavender: [230,230,250],\n lavenderblush: [255,240,245],\n lawngreen: [124,252,0],\n lemonchiffon: [255,250,205],\n lightblue: [173,216,230],\n lightcoral: [240,128,128],\n lightcyan: [224,255,255],\n lightgoldenrodyellow: [250,250,210],\n lightgray: [211,211,211],\n lightgreen: [144,238,144],\n lightgrey: [211,211,211],\n lightpink: [255,182,193],\n lightsalmon: [255,160,122],\n lightseagreen: [32,178,170],\n lightskyblue: [135,206,250],\n lightslategray: [119,136,153],\n lightslategrey: [119,136,153],\n lightsteelblue: [176,196,222],\n lightyellow: [255,255,224],\n lime: [0,255,0],\n limegreen: [50,205,50],\n linen: [250,240,230],\n magenta: [255,0,255],\n maroon: [128,0,0],\n mediumaquamarine: [102,205,170],\n mediumblue: [0,0,205],\n mediumorchid: [186,85,211],\n mediumpurple: [147,112,219],\n mediumseagreen: [60,179,113],\n mediumslateblue: [123,104,238],\n mediumspringgreen: [0,250,154],\n mediumturquoise: [72,209,204],\n mediumvioletred: [199,21,133],\n midnightblue: [25,25,112],\n mintcream: [245,255,250],\n mistyrose: [255,228,225],\n moccasin: [255,228,181],\n navajowhite: [255,222,173],\n navy: [0,0,128],\n oldlace: [253,245,230],\n olive: [128,128,0],\n olivedrab: [107,142,35],\n orange: [255,165,0],\n orangered: [255,69,0],\n orchid: [218,112,214],\n palegoldenrod: [238,232,170],\n palegreen: [152,251,152],\n paleturquoise: [175,238,238],\n palevioletred: [219,112,147],\n papayawhip: [255,239,213],\n peachpuff: [255,218,185],\n peru: [205,133,63],\n pink: [255,192,203],\n plum: [221,160,221],\n powderblue: [176,224,230],\n purple: [128,0,128],\n rebeccapurple: [102, 51, 153],\n red: [255,0,0],\n rosybrown: [188,143,143],\n royalblue: [65,105,225],\n saddlebrown: [139,69,19],\n salmon: [250,128,114],\n sandybrown: [244,164,96],\n seagreen: [46,139,87],\n seashell: [255,245,238],\n sienna: [160,82,45],\n silver: [192,192,192],\n skyblue: [135,206,235],\n slateblue: [106,90,205],\n slategray: [112,128,144],\n slategrey: [112,128,144],\n snow: [255,250,250],\n springgreen: [0,255,127],\n steelblue: [70,130,180],\n tan: [210,180,140],\n teal: [0,128,128],\n thistle: [216,191,216],\n tomato: [255,99,71],\n turquoise: [64,224,208],\n violet: [238,130,238],\n wheat: [245,222,179],\n white: [255,255,255],\n whitesmoke: [245,245,245],\n yellow: [255,255,0],\n yellowgreen: [154,205,50]\n};\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n reverseKeywords[JSON.stringify(cssKeywords[key])] = key;\n}\n\n},{}],5:[function(require,module,exports){\nvar conversions = require(4);\n\nvar convert = function() {\n return new Converter();\n}\n\nfor (var func in conversions) {\n // export Raw versions\n convert[func + \"Raw\"] = (function(func) {\n // accept array or plain args\n return function(arg) {\n if (typeof arg == \"number\")\n arg = Array.prototype.slice.call(arguments);\n return conversions[func](arg);\n }\n })(func);\n\n var pair = /(\\w+)2(\\w+)/.exec(func),\n from = pair[1],\n to = pair[2];\n\n // export rgb2hsl and [\"rgb\"][\"hsl\"]\n convert[from] = convert[from] || {};\n\n convert[from][to] = convert[func] = (function(func) {\n return function(arg) {\n if (typeof arg == \"number\")\n arg = Array.prototype.slice.call(arguments);\n\n var val = conversions[func](arg);\n if (typeof val == \"string\" || val === undefined)\n return val; // keyword\n\n for (var i = 0; i < val.length; i++)\n val[i] = Math.round(val[i]);\n return val;\n }\n })(func);\n}\n\n\n/* Converter does lazy conversion and caching */\nvar Converter = function() {\n this.convs = {};\n};\n\n/* Either get the values for a space or\n set the values for a space, depending on args */\nConverter.prototype.routeSpace = function(space, args) {\n var values = args[0];\n if (values === undefined) {\n // color.rgb()\n return this.getValues(space);\n }\n // color.rgb(10, 10, 10)\n if (typeof values == \"number\") {\n values = Array.prototype.slice.call(args);\n }\n\n return this.setValues(space, values);\n};\n\n/* Set the values for a space, invalidating cache */\nConverter.prototype.setValues = function(space, values) {\n this.space = space;\n this.convs = {};\n this.convs[space] = values;\n return this;\n};\n\n/* Get the values for a space. If there's already\n a conversion for the space, fetch it, otherwise\n compute it */\nConverter.prototype.getValues = function(space) {\n var vals = this.convs[space];\n if (!vals) {\n var fspace = this.space,\n from = this.convs[fspace];\n vals = convert[fspace][space](from);\n\n this.convs[space] = vals;\n }\n return vals;\n};\n\n[\"rgb\", \"hsl\", \"hsv\", \"cmyk\", \"keyword\"].forEach(function(space) {\n Converter.prototype[space] = function(vals) {\n return this.routeSpace(space, arguments);\n }\n});\n\nmodule.exports = convert;\n},{\"4\":4}],6:[function(require,module,exports){\n'use strict'\n\nmodule.exports = {\n\t\"aliceblue\": [240, 248, 255],\n\t\"antiquewhite\": [250, 235, 215],\n\t\"aqua\": [0, 255, 255],\n\t\"aquamarine\": [127, 255, 212],\n\t\"azure\": [240, 255, 255],\n\t\"beige\": [245, 245, 220],\n\t\"bisque\": [255, 228, 196],\n\t\"black\": [0, 0, 0],\n\t\"blanchedalmond\": [255, 235, 205],\n\t\"blue\": [0, 0, 255],\n\t\"blueviolet\": [138, 43, 226],\n\t\"brown\": [165, 42, 42],\n\t\"burlywood\": [222, 184, 135],\n\t\"cadetblue\": [95, 158, 160],\n\t\"chartreuse\": [127, 255, 0],\n\t\"chocolate\": [210, 105, 30],\n\t\"coral\": [255, 127, 80],\n\t\"cornflowerblue\": [100, 149, 237],\n\t\"cornsilk\": [255, 248, 220],\n\t\"crimson\": [220, 20, 60],\n\t\"cyan\": [0, 255, 255],\n\t\"darkblue\": [0, 0, 139],\n\t\"darkcyan\": [0, 139, 139],\n\t\"darkgoldenrod\": [184, 134, 11],\n\t\"darkgray\": [169, 169, 169],\n\t\"darkgreen\": [0, 100, 0],\n\t\"darkgrey\": [169, 169, 169],\n\t\"darkkhaki\": [189, 183, 107],\n\t\"darkmagenta\": [139, 0, 139],\n\t\"darkolivegreen\": [85, 107, 47],\n\t\"darkorange\": [255, 140, 0],\n\t\"darkorchid\": [153, 50, 204],\n\t\"darkred\": [139, 0, 0],\n\t\"darksalmon\": [233, 150, 122],\n\t\"darkseagreen\": [143, 188, 143],\n\t\"darkslateblue\": [72, 61, 139],\n\t\"darkslategray\": [47, 79, 79],\n\t\"darkslategrey\": [47, 79, 79],\n\t\"darkturquoise\": [0, 206, 209],\n\t\"darkviolet\": [148, 0, 211],\n\t\"deeppink\": [255, 20, 147],\n\t\"deepskyblue\": [0, 191, 255],\n\t\"dimgray\": [105, 105, 105],\n\t\"dimgrey\": [105, 105, 105],\n\t\"dodgerblue\": [30, 144, 255],\n\t\"firebrick\": [178, 34, 34],\n\t\"floralwhite\": [255, 250, 240],\n\t\"forestgreen\": [34, 139, 34],\n\t\"fuchsia\": [255, 0, 255],\n\t\"gainsboro\": [220, 220, 220],\n\t\"ghostwhite\": [248, 248, 255],\n\t\"gold\": [255, 215, 0],\n\t\"goldenrod\": [218, 165, 32],\n\t\"gray\": [128, 128, 128],\n\t\"green\": [0, 128, 0],\n\t\"greenyellow\": [173, 255, 47],\n\t\"grey\": [128, 128, 128],\n\t\"honeydew\": [240, 255, 240],\n\t\"hotpink\": [255, 105, 180],\n\t\"indianred\": [205, 92, 92],\n\t\"indigo\": [75, 0, 130],\n\t\"ivory\": [255, 255, 240],\n\t\"khaki\": [240, 230, 140],\n\t\"lavender\": [230, 230, 250],\n\t\"lavenderblush\": [255, 240, 245],\n\t\"lawngreen\": [124, 252, 0],\n\t\"lemonchiffon\": [255, 250, 205],\n\t\"lightblue\": [173, 216, 230],\n\t\"lightcoral\": [240, 128, 128],\n\t\"lightcyan\": [224, 255, 255],\n\t\"lightgoldenrodyellow\": [250, 250, 210],\n\t\"lightgray\": [211, 211, 211],\n\t\"lightgreen\": [144, 238, 144],\n\t\"lightgrey\": [211, 211, 211],\n\t\"lightpink\": [255, 182, 193],\n\t\"lightsalmon\": [255, 160, 122],\n\t\"lightseagreen\": [32, 178, 170],\n\t\"lightskyblue\": [135, 206, 250],\n\t\"lightslategray\": [119, 136, 153],\n\t\"lightslategrey\": [119, 136, 153],\n\t\"lightsteelblue\": [176, 196, 222],\n\t\"lightyellow\": [255, 255, 224],\n\t\"lime\": [0, 255, 0],\n\t\"limegreen\": [50, 205, 50],\n\t\"linen\": [250, 240, 230],\n\t\"magenta\": [255, 0, 255],\n\t\"maroon\": [128, 0, 0],\n\t\"mediumaquamarine\": [102, 205, 170],\n\t\"mediumblue\": [0, 0, 205],\n\t\"mediumorchid\": [186, 85, 211],\n\t\"mediumpurple\": [147, 112, 219],\n\t\"mediumseagreen\": [60, 179, 113],\n\t\"mediumslateblue\": [123, 104, 238],\n\t\"mediumspringgreen\": [0, 250, 154],\n\t\"mediumturquoise\": [72, 209, 204],\n\t\"mediumvioletred\": [199, 21, 133],\n\t\"midnightblue\": [25, 25, 112],\n\t\"mintcream\": [245, 255, 250],\n\t\"mistyrose\": [255, 228, 225],\n\t\"moccasin\": [255, 228, 181],\n\t\"navajowhite\": [255, 222, 173],\n\t\"navy\": [0, 0, 128],\n\t\"oldlace\": [253, 245, 230],\n\t\"olive\": [128, 128, 0],\n\t\"olivedrab\": [107, 142, 35],\n\t\"orange\": [255, 165, 0],\n\t\"orangered\": [255, 69, 0],\n\t\"orchid\": [218, 112, 214],\n\t\"palegoldenrod\": [238, 232, 170],\n\t\"palegreen\": [152, 251, 152],\n\t\"paleturquoise\": [175, 238, 238],\n\t\"palevioletred\": [219, 112, 147],\n\t\"papayawhip\": [255, 239, 213],\n\t\"peachpuff\": [255, 218, 185],\n\t\"peru\": [205, 133, 63],\n\t\"pink\": [255, 192, 203],\n\t\"plum\": [221, 160, 221],\n\t\"powderblue\": [176, 224, 230],\n\t\"purple\": [128, 0, 128],\n\t\"rebeccapurple\": [102, 51, 153],\n\t\"red\": [255, 0, 0],\n\t\"rosybrown\": [188, 143, 143],\n\t\"royalblue\": [65, 105, 225],\n\t\"saddlebrown\": [139, 69, 19],\n\t\"salmon\": [250, 128, 114],\n\t\"sandybrown\": [244, 164, 96],\n\t\"seagreen\": [46, 139, 87],\n\t\"seashell\": [255, 245, 238],\n\t\"sienna\": [160, 82, 45],\n\t\"silver\": [192, 192, 192],\n\t\"skyblue\": [135, 206, 235],\n\t\"slateblue\": [106, 90, 205],\n\t\"slategray\": [112, 128, 144],\n\t\"slategrey\": [112, 128, 144],\n\t\"snow\": [255, 250, 250],\n\t\"springgreen\": [0, 255, 127],\n\t\"steelblue\": [70, 130, 180],\n\t\"tan\": [210, 180, 140],\n\t\"teal\": [0, 128, 128],\n\t\"thistle\": [216, 191, 216],\n\t\"tomato\": [255, 99, 71],\n\t\"turquoise\": [64, 224, 208],\n\t\"violet\": [238, 130, 238],\n\t\"wheat\": [245, 222, 179],\n\t\"white\": [255, 255, 255],\n\t\"whitesmoke\": [245, 245, 245],\n\t\"yellow\": [255, 255, 0],\n\t\"yellowgreen\": [154, 205, 50]\n};\n\n},{}],7:[function(require,module,exports){\n/**\n * @namespace Chart\n */\nvar Chart = require(30)();\n\nChart.helpers = require(46);\n\n// @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests!\nrequire(28)(Chart);\n\nChart.Animation = require(22);\nChart.animationService = require(23);\nChart.defaults = require(26);\nChart.Element = require(27);\nChart.elements = require(41);\nChart.Interaction = require(29);\nChart.layouts = require(31);\nChart.platform = require(49);\nChart.plugins = require(32);\nChart.Scale = require(33);\nChart.scaleService = require(34);\nChart.Ticks = require(35);\nChart.Tooltip = require(36);\n\nrequire(24)(Chart);\nrequire(25)(Chart);\n\nrequire(56)(Chart);\nrequire(54)(Chart);\nrequire(55)(Chart);\nrequire(57)(Chart);\nrequire(58)(Chart);\nrequire(59)(Chart);\n\n// Controllers must be loaded after elements\n// See Chart.core.datasetController.dataElementType\nrequire(15)(Chart);\nrequire(16)(Chart);\nrequire(17)(Chart);\nrequire(18)(Chart);\nrequire(19)(Chart);\nrequire(20)(Chart);\nrequire(21)(Chart);\n\nrequire(8)(Chart);\nrequire(9)(Chart);\nrequire(10)(Chart);\nrequire(11)(Chart);\nrequire(12)(Chart);\nrequire(13)(Chart);\nrequire(14)(Chart);\n\n// Loading built-in plugins\nvar plugins = require(50);\nfor (var k in plugins) {\n\tif (plugins.hasOwnProperty(k)) {\n\t\tChart.plugins.register(plugins[k]);\n\t}\n}\n\nChart.platform.initialize();\n\nmodule.exports = Chart;\nif (typeof window !== 'undefined') {\n\twindow.Chart = Chart;\n}\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, not available anymore\n * @namespace Chart.Legend\n * @deprecated since version 2.1.5\n * @todo remove at version 3\n * @private\n */\nChart.Legend = plugins.legend._element;\n\n/**\n * Provided for backward compatibility, not available anymore\n * @namespace Chart.Title\n * @deprecated since version 2.1.5\n * @todo remove at version 3\n * @private\n */\nChart.Title = plugins.title._element;\n\n/**\n * Provided for backward compatibility, use Chart.plugins instead\n * @namespace Chart.pluginService\n * @deprecated since version 2.1.5\n * @todo remove at version 3\n * @private\n */\nChart.pluginService = Chart.plugins;\n\n/**\n * Provided for backward compatibility, inheriting from Chart.PlugingBase has no\n * effect, instead simply create/register plugins via plain JavaScript objects.\n * @interface Chart.PluginBase\n * @deprecated since version 2.5.0\n * @todo remove at version 3\n * @private\n */\nChart.PluginBase = Chart.Element.extend({});\n\n/**\n * Provided for backward compatibility, use Chart.helpers.canvas instead.\n * @namespace Chart.canvasHelpers\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n * @private\n */\nChart.canvasHelpers = Chart.helpers.canvas;\n\n/**\n * Provided for backward compatibility, use Chart.layouts instead.\n * @namespace Chart.layoutService\n * @deprecated since version 2.8.0\n * @todo remove at version 3\n * @private\n */\nChart.layoutService = Chart.layouts;\n\n},{\"10\":10,\"11\":11,\"12\":12,\"13\":13,\"14\":14,\"15\":15,\"16\":16,\"17\":17,\"18\":18,\"19\":19,\"20\":20,\"21\":21,\"22\":22,\"23\":23,\"24\":24,\"25\":25,\"26\":26,\"27\":27,\"28\":28,\"29\":29,\"30\":30,\"31\":31,\"32\":32,\"33\":33,\"34\":34,\"35\":35,\"36\":36,\"41\":41,\"46\":46,\"49\":49,\"50\":50,\"54\":54,\"55\":55,\"56\":56,\"57\":57,\"58\":58,\"59\":59,\"8\":8,\"9\":9}],8:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Bar = function(context, config) {\n\t\tconfig.type = 'bar';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n\n},{}],9:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Bubble = function(context, config) {\n\t\tconfig.type = 'bubble';\n\t\treturn new Chart(context, config);\n\t};\n\n};\n\n},{}],10:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Doughnut = function(context, config) {\n\t\tconfig.type = 'doughnut';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n\n},{}],11:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Line = function(context, config) {\n\t\tconfig.type = 'line';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n\n},{}],12:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.PolarArea = function(context, config) {\n\t\tconfig.type = 'polarArea';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n\n},{}],13:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Radar = function(context, config) {\n\t\tconfig.type = 'radar';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n\n},{}],14:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\tChart.Scatter = function(context, config) {\n\t\tconfig.type = 'scatter';\n\t\treturn new Chart(context, config);\n\t};\n};\n\n},{}],15:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar elements = require(41);\nvar helpers = require(46);\n\ndefaults._set('bar', {\n\thover: {\n\t\tmode: 'label'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'category',\n\n\t\t\t// Specific to Bar Controller\n\t\t\tcategoryPercentage: 0.8,\n\t\t\tbarPercentage: 0.9,\n\n\t\t\t// offset settings\n\t\t\toffset: true,\n\n\t\t\t// grid line settings\n\t\t\tgridLines: {\n\t\t\t\toffsetGridLines: true\n\t\t\t}\n\t\t}],\n\n\t\tyAxes: [{\n\t\t\ttype: 'linear'\n\t\t}]\n\t}\n});\n\ndefaults._set('horizontalBar', {\n\thover: {\n\t\tmode: 'index',\n\t\taxis: 'y'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tposition: 'bottom'\n\t\t}],\n\n\t\tyAxes: [{\n\t\t\tposition: 'left',\n\t\t\ttype: 'category',\n\n\t\t\t// Specific to Horizontal Bar Controller\n\t\t\tcategoryPercentage: 0.8,\n\t\t\tbarPercentage: 0.9,\n\n\t\t\t// offset settings\n\t\t\toffset: true,\n\n\t\t\t// grid line settings\n\t\t\tgridLines: {\n\t\t\t\toffsetGridLines: true\n\t\t\t}\n\t\t}]\n\t},\n\n\telements: {\n\t\trectangle: {\n\t\t\tborderSkipped: 'left'\n\t\t}\n\t},\n\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function(item, data) {\n\t\t\t\t// Pick first xLabel for now\n\t\t\t\tvar title = '';\n\n\t\t\t\tif (item.length > 0) {\n\t\t\t\t\tif (item[0].yLabel) {\n\t\t\t\t\t\ttitle = item[0].yLabel;\n\t\t\t\t\t} else if (data.labels.length > 0 && item[0].index < data.labels.length) {\n\t\t\t\t\t\ttitle = data.labels[item[0].index];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn title;\n\t\t\t},\n\n\t\t\tlabel: function(item, data) {\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\n\t\t\t\treturn datasetLabel + ': ' + item.xLabel;\n\t\t\t}\n\t\t},\n\t\tmode: 'index',\n\t\taxis: 'y'\n\t}\n});\n\n/**\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\n * @private\n */\nfunction computeMinSampleSize(scale, pixels) {\n\tvar min = scale.isHorizontal() ? scale.width : scale.height;\n\tvar ticks = scale.getTicks();\n\tvar prev, curr, i, ilen;\n\n\tfor (i = 1, ilen = pixels.length; i < ilen; ++i) {\n\t\tmin = Math.min(min, pixels[i] - pixels[i - 1]);\n\t}\n\n\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\n\t\tcurr = scale.getPixelForTick(i);\n\t\tmin = i > 0 ? Math.min(min, curr - prev) : min;\n\t\tprev = curr;\n\t}\n\n\treturn min;\n}\n\n/**\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\n * @private\n */\nfunction computeFitCategoryTraits(index, ruler, options) {\n\tvar thickness = options.barThickness;\n\tvar count = ruler.stackCount;\n\tvar curr = ruler.pixels[index];\n\tvar size, ratio;\n\n\tif (helpers.isNullOrUndef(thickness)) {\n\t\tsize = ruler.min * options.categoryPercentage;\n\t\tratio = options.barPercentage;\n\t} else {\n\t\t// When bar thickness is enforced, category and bar percentages are ignored.\n\t\t// Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\n\t\t// and deprecate barPercentage since this value is ignored when thickness is absolute.\n\t\tsize = thickness * count;\n\t\tratio = 1;\n\t}\n\n\treturn {\n\t\tchunk: size / count,\n\t\tratio: ratio,\n\t\tstart: curr - (size / 2)\n\t};\n}\n\n/**\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\n * percentage options are 1), based on the previous and following categories. This mode\n * generates bars with different widths when data are not evenly spaced.\n * @private\n */\nfunction computeFlexCategoryTraits(index, ruler, options) {\n\tvar pixels = ruler.pixels;\n\tvar curr = pixels[index];\n\tvar prev = index > 0 ? pixels[index - 1] : null;\n\tvar next = index < pixels.length - 1 ? pixels[index + 1] : null;\n\tvar percent = options.categoryPercentage;\n\tvar start, size;\n\n\tif (prev === null) {\n\t\t// first data: its size is double based on the next point or,\n\t\t// if it's also the last data, we use the scale end extremity.\n\t\tprev = curr - (next === null ? ruler.end - curr : next - curr);\n\t}\n\n\tif (next === null) {\n\t\t// last data: its size is also double based on the previous point.\n\t\tnext = curr + curr - prev;\n\t}\n\n\tstart = curr - ((curr - prev) / 2) * percent;\n\tsize = ((next - prev) / 2) * percent;\n\n\treturn {\n\t\tchunk: size / ruler.stackCount,\n\t\tratio: options.barPercentage,\n\t\tstart: start\n\t};\n}\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.bar = Chart.DatasetController.extend({\n\n\t\tdataElementType: elements.Rectangle,\n\n\t\tinitialize: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta;\n\n\t\t\tChart.DatasetController.prototype.initialize.apply(me, arguments);\n\n\t\t\tmeta = me.getMeta();\n\t\t\tmeta.stack = me.getDataset().stack;\n\t\t\tmeta.bar = true;\n\t\t},\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar rects = me.getMeta().data;\n\t\t\tvar i, ilen;\n\n\t\t\tme._ruler = me.getRuler();\n\n\t\t\tfor (i = 0, ilen = rects.length; i < ilen; ++i) {\n\t\t\t\tme.updateElement(rects[i], i, reset);\n\t\t\t}\n\t\t},\n\n\t\tupdateElement: function(rectangle, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar custom = rectangle.custom || {};\n\t\t\tvar rectangleOptions = chart.options.elements.rectangle;\n\n\t\t\trectangle._xScale = me.getScaleForId(meta.xAxisID);\n\t\t\trectangle._yScale = me.getScaleForId(meta.yAxisID);\n\t\t\trectangle._datasetIndex = me.index;\n\t\t\trectangle._index = index;\n\n\t\t\trectangle._model = {\n\t\t\t\tdatasetLabel: dataset.label,\n\t\t\t\tlabel: chart.data.labels[index],\n\t\t\t\tborderSkipped: custom.borderSkipped ? custom.borderSkipped : rectangleOptions.borderSkipped,\n\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.backgroundColor, index, rectangleOptions.backgroundColor),\n\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.borderColor, index, rectangleOptions.borderColor),\n\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.borderWidth, index, rectangleOptions.borderWidth)\n\t\t\t};\n\n\t\t\tme.updateElementGeometry(rectangle, index, reset);\n\n\t\t\trectangle.pivot();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tupdateElementGeometry: function(rectangle, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar model = rectangle._model;\n\t\t\tvar vscale = me.getValueScale();\n\t\t\tvar base = vscale.getBasePixel();\n\t\t\tvar horizontal = vscale.isHorizontal();\n\t\t\tvar ruler = me._ruler || me.getRuler();\n\t\t\tvar vpixels = me.calculateBarValuePixels(me.index, index);\n\t\t\tvar ipixels = me.calculateBarIndexPixels(me.index, index, ruler);\n\n\t\t\tmodel.horizontal = horizontal;\n\t\t\tmodel.base = reset ? base : vpixels.base;\n\t\t\tmodel.x = horizontal ? reset ? base : vpixels.head : ipixels.center;\n\t\t\tmodel.y = horizontal ? ipixels.center : reset ? base : vpixels.head;\n\t\t\tmodel.height = horizontal ? ipixels.size : undefined;\n\t\t\tmodel.width = horizontal ? undefined : ipixels.size;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetValueScaleId: function() {\n\t\t\treturn this.getMeta().yAxisID;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetIndexScaleId: function() {\n\t\t\treturn this.getMeta().xAxisID;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetValueScale: function() {\n\t\t\treturn this.getScaleForId(this.getValueScaleId());\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetIndexScale: function() {\n\t\t\treturn this.getScaleForId(this.getIndexScaleId());\n\t\t},\n\n\t\t/**\n\t\t * Returns the stacks based on groups and bar visibility.\n\t\t * @param {Number} [last] - The dataset index\n\t\t * @returns {Array} The stack list\n\t\t * @private\n\t\t */\n\t\t_getStacks: function(last) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar scale = me.getIndexScale();\n\t\t\tvar stacked = scale.options.stacked;\n\t\t\tvar ilen = last === undefined ? chart.data.datasets.length : last + 1;\n\t\t\tvar stacks = [];\n\t\t\tvar i, meta;\n\n\t\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\tif (meta.bar && chart.isDatasetVisible(i) &&\n\t\t\t\t\t(stacked === false ||\n\t\t\t\t\t(stacked === true && stacks.indexOf(meta.stack) === -1) ||\n\t\t\t\t\t(stacked === undefined && (meta.stack === undefined || stacks.indexOf(meta.stack) === -1)))) {\n\t\t\t\t\tstacks.push(meta.stack);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn stacks;\n\t\t},\n\n\t\t/**\n\t\t * Returns the effective number of stacks based on groups and bar visibility.\n\t\t * @private\n\t\t */\n\t\tgetStackCount: function() {\n\t\t\treturn this._getStacks().length;\n\t\t},\n\n\t\t/**\n\t\t * Returns the stack index for the given dataset based on groups and bar visibility.\n\t\t * @param {Number} [datasetIndex] - The dataset index\n\t\t * @param {String} [name] - The stack name to find\n\t\t * @returns {Number} The stack index\n\t\t * @private\n\t\t */\n\t\tgetStackIndex: function(datasetIndex, name) {\n\t\t\tvar stacks = this._getStacks(datasetIndex);\n\t\t\tvar index = (name !== undefined)\n\t\t\t\t? stacks.indexOf(name)\n\t\t\t\t: -1; // indexOf returns -1 if element is not present\n\n\t\t\treturn (index === -1)\n\t\t\t\t? stacks.length - 1\n\t\t\t\t: index;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetRuler: function() {\n\t\t\tvar me = this;\n\t\t\tvar scale = me.getIndexScale();\n\t\t\tvar stackCount = me.getStackCount();\n\t\t\tvar datasetIndex = me.index;\n\t\t\tvar isHorizontal = scale.isHorizontal();\n\t\t\tvar start = isHorizontal ? scale.left : scale.top;\n\t\t\tvar end = start + (isHorizontal ? scale.width : scale.height);\n\t\t\tvar pixels = [];\n\t\t\tvar i, ilen, min;\n\n\t\t\tfor (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {\n\t\t\t\tpixels.push(scale.getPixelForValue(null, i, datasetIndex));\n\t\t\t}\n\n\t\t\tmin = helpers.isNullOrUndef(scale.options.barThickness)\n\t\t\t\t? computeMinSampleSize(scale, pixels)\n\t\t\t\t: -1;\n\n\t\t\treturn {\n\t\t\t\tmin: min,\n\t\t\t\tpixels: pixels,\n\t\t\t\tstart: start,\n\t\t\t\tend: end,\n\t\t\t\tstackCount: stackCount,\n\t\t\t\tscale: scale\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * Note: pixel values are not clamped to the scale area.\n\t\t * @private\n\t\t */\n\t\tcalculateBarValuePixels: function(datasetIndex, index) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar scale = me.getValueScale();\n\t\t\tvar datasets = chart.data.datasets;\n\t\t\tvar value = scale.getRightValue(datasets[datasetIndex].data[index]);\n\t\t\tvar stacked = scale.options.stacked;\n\t\t\tvar stack = meta.stack;\n\t\t\tvar start = 0;\n\t\t\tvar i, imeta, ivalue, base, head, size;\n\n\t\t\tif (stacked || (stacked === undefined && stack !== undefined)) {\n\t\t\t\tfor (i = 0; i < datasetIndex; ++i) {\n\t\t\t\t\timeta = chart.getDatasetMeta(i);\n\n\t\t\t\t\tif (imeta.bar &&\n\t\t\t\t\t\timeta.stack === stack &&\n\t\t\t\t\t\timeta.controller.getValueScaleId() === scale.id &&\n\t\t\t\t\t\tchart.isDatasetVisible(i)) {\n\n\t\t\t\t\t\tivalue = scale.getRightValue(datasets[i].data[index]);\n\t\t\t\t\t\tif ((value < 0 && ivalue < 0) || (value >= 0 && ivalue > 0)) {\n\t\t\t\t\t\t\tstart += ivalue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbase = scale.getPixelForValue(start);\n\t\t\thead = scale.getPixelForValue(start + value);\n\t\t\tsize = (head - base) / 2;\n\n\t\t\treturn {\n\t\t\t\tsize: size,\n\t\t\t\tbase: base,\n\t\t\t\thead: head,\n\t\t\t\tcenter: head + size / 2\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tcalculateBarIndexPixels: function(datasetIndex, index, ruler) {\n\t\t\tvar me = this;\n\t\t\tvar options = ruler.scale.options;\n\t\t\tvar range = options.barThickness === 'flex'\n\t\t\t\t? computeFlexCategoryTraits(index, ruler, options)\n\t\t\t\t: computeFitCategoryTraits(index, ruler, options);\n\n\t\t\tvar stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack);\n\t\t\tvar center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n\t\t\tvar size = Math.min(\n\t\t\t\thelpers.valueOrDefault(options.maxBarThickness, Infinity),\n\t\t\t\trange.chunk * range.ratio);\n\n\t\t\treturn {\n\t\t\t\tbase: center - size / 2,\n\t\t\t\thead: center + size / 2,\n\t\t\t\tcenter: center,\n\t\t\t\tsize: size\n\t\t\t};\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar scale = me.getValueScale();\n\t\t\tvar rects = me.getMeta().data;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar ilen = rects.length;\n\t\t\tvar i = 0;\n\n\t\t\thelpers.canvas.clipArea(chart.ctx, chart.chartArea);\n\n\t\t\tfor (; i < ilen; ++i) {\n\t\t\t\tif (!isNaN(scale.getRightValue(dataset.data[i]))) {\n\t\t\t\t\trects[i].draw();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\thelpers.canvas.unclipArea(chart.ctx);\n\t\t},\n\t});\n\n\tChart.controllers.horizontalBar = Chart.controllers.bar.extend({\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetValueScaleId: function() {\n\t\t\treturn this.getMeta().xAxisID;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetIndexScaleId: function() {\n\t\t\treturn this.getMeta().yAxisID;\n\t\t}\n\t});\n};\n\n},{\"26\":26,\"41\":41,\"46\":46}],16:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar elements = require(41);\nvar helpers = require(46);\n\ndefaults._set('bubble', {\n\thover: {\n\t\tmode: 'single'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'linear', // bubble should probably use a linear scale by default\n\t\t\tposition: 'bottom',\n\t\t\tid: 'x-axis-0' // need an ID so datasets can reference the scale\n\t\t}],\n\t\tyAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tposition: 'left',\n\t\t\tid: 'y-axis-0'\n\t\t}]\n\t},\n\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\t// Title doesn't make sense for scatter since we format the data as a point\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(item, data) {\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\n\t\t\t\tvar dataPoint = data.datasets[item.datasetIndex].data[item.index];\n\t\t\t\treturn datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')';\n\t\t\t}\n\t\t}\n\t}\n});\n\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.bubble = Chart.DatasetController.extend({\n\t\t/**\n\t\t * @protected\n\t\t */\n\t\tdataElementType: elements.Point,\n\n\t\t/**\n\t\t * @protected\n\t\t */\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar points = meta.data;\n\n\t\t\t// Update Points\n\t\t\thelpers.each(points, function(point, index) {\n\t\t\t\tme.updateElement(point, index, reset);\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * @protected\n\t\t */\n\t\tupdateElement: function(point, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar options = me._resolveElementOptions(point, index);\n\t\t\tvar data = me.getDataset().data[index];\n\t\t\tvar dsIndex = me.index;\n\n\t\t\tvar x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex);\n\t\t\tvar y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex);\n\n\t\t\tpoint._xScale = xScale;\n\t\t\tpoint._yScale = yScale;\n\t\t\tpoint._options = options;\n\t\t\tpoint._datasetIndex = dsIndex;\n\t\t\tpoint._index = index;\n\t\t\tpoint._model = {\n\t\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\t\tborderColor: options.borderColor,\n\t\t\t\tborderWidth: options.borderWidth,\n\t\t\t\thitRadius: options.hitRadius,\n\t\t\t\tpointStyle: options.pointStyle,\n\t\t\t\trotation: options.rotation,\n\t\t\t\tradius: reset ? 0 : options.radius,\n\t\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\t\tx: x,\n\t\t\t\ty: y,\n\t\t\t};\n\n\t\t\tpoint.pivot();\n\t\t},\n\n\t\t/**\n\t\t * @protected\n\t\t */\n\t\tsetHoverStyle: function(point) {\n\t\t\tvar model = point._model;\n\t\t\tvar options = point._options;\n\t\t\tpoint.$previousStyle = {\n\t\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\t\tborderColor: model.borderColor,\n\t\t\t\tborderWidth: model.borderWidth,\n\t\t\t\tradius: model.radius\n\t\t\t};\n\t\t\tmodel.backgroundColor = helpers.valueOrDefault(options.hoverBackgroundColor, helpers.getHoverColor(options.backgroundColor));\n\t\t\tmodel.borderColor = helpers.valueOrDefault(options.hoverBorderColor, helpers.getHoverColor(options.borderColor));\n\t\t\tmodel.borderWidth = helpers.valueOrDefault(options.hoverBorderWidth, options.borderWidth);\n\t\t\tmodel.radius = options.radius + options.hoverRadius;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\t_resolveElementOptions: function(point, index) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar datasets = chart.data.datasets;\n\t\t\tvar dataset = datasets[me.index];\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar options = chart.options.elements.point;\n\t\t\tvar resolve = helpers.options.resolve;\n\t\t\tvar data = dataset.data[index];\n\t\t\tvar values = {};\n\t\t\tvar i, ilen, key;\n\n\t\t\t// Scriptable options\n\t\t\tvar context = {\n\t\t\t\tchart: chart,\n\t\t\t\tdataIndex: index,\n\t\t\t\tdataset: dataset,\n\t\t\t\tdatasetIndex: me.index\n\t\t\t};\n\n\t\t\tvar keys = [\n\t\t\t\t'backgroundColor',\n\t\t\t\t'borderColor',\n\t\t\t\t'borderWidth',\n\t\t\t\t'hoverBackgroundColor',\n\t\t\t\t'hoverBorderColor',\n\t\t\t\t'hoverBorderWidth',\n\t\t\t\t'hoverRadius',\n\t\t\t\t'hitRadius',\n\t\t\t\t'pointStyle',\n\t\t\t\t'rotation'\n\t\t\t];\n\n\t\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\t\t\tkey = keys[i];\n\t\t\t\tvalues[key] = resolve([\n\t\t\t\t\tcustom[key],\n\t\t\t\t\tdataset[key],\n\t\t\t\t\toptions[key]\n\t\t\t\t], context, index);\n\t\t\t}\n\n\t\t\t// Custom radius resolution\n\t\t\tvalues.radius = resolve([\n\t\t\t\tcustom.radius,\n\t\t\t\tdata ? data.r : undefined,\n\t\t\t\tdataset.radius,\n\t\t\t\toptions.radius\n\t\t\t], context, index);\n\t\t\treturn values;\n\t\t}\n\t});\n};\n\n},{\"26\":26,\"41\":41,\"46\":46}],17:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar elements = require(41);\nvar helpers = require(46);\n\ndefaults._set('doughnut', {\n\tanimation: {\n\t\t// Boolean - Whether we animate the rotation of the Doughnut\n\t\tanimateRotate: true,\n\t\t// Boolean - Whether we animate scaling the Doughnut from the centre\n\t\tanimateScale: false\n\t},\n\thover: {\n\t\tmode: 'single'\n\t},\n\tlegendCallback: function(chart) {\n\t\tvar text = [];\n\t\ttext.push('
        ');\n\n\t\tvar data = chart.data;\n\t\tvar datasets = data.datasets;\n\t\tvar labels = data.labels;\n\n\t\tif (datasets.length) {\n\t\t\tfor (var i = 0; i < datasets[0].data.length; ++i) {\n\t\t\t\ttext.push('
      • ');\n\t\t\t\tif (labels[i]) {\n\t\t\t\t\ttext.push(labels[i]);\n\t\t\t\t}\n\t\t\t\ttext.push('
      • ');\n\t\t\t}\n\t\t}\n\n\t\ttext.push('
      ');\n\t\treturn text.join('');\n\t},\n\tlegend: {\n\t\tlabels: {\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\tif (data.labels.length && data.datasets.length) {\n\t\t\t\t\treturn data.labels.map(function(label, i) {\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\n\t\t\t\t\t\tvar ds = data.datasets[0];\n\t\t\t\t\t\tvar arc = meta.data[i];\n\t\t\t\t\t\tvar custom = arc && arc.custom || {};\n\t\t\t\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\t\t\t\tvar arcOpts = chart.options.elements.arc;\n\t\t\t\t\t\tvar fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);\n\t\t\t\t\t\tvar stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);\n\t\t\t\t\t\tvar bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttext: label,\n\t\t\t\t\t\t\tfillStyle: fill,\n\t\t\t\t\t\t\tstrokeStyle: stroke,\n\t\t\t\t\t\t\tlineWidth: bw,\n\t\t\t\t\t\t\thidden: isNaN(ds.data[i]) || meta.data[i].hidden,\n\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\n\t\t\t\t\t\t\tindex: i\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.index;\n\t\t\tvar chart = this.chart;\n\t\t\tvar i, ilen, meta;\n\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\t// toggle visibility of index if exists\n\t\t\t\tif (meta.data[index]) {\n\t\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchart.update();\n\t\t}\n\t},\n\n\t// The percentage of the chart that we cut out of the middle.\n\tcutoutPercentage: 50,\n\n\t// The rotation of the chart, where the first data arc begins.\n\trotation: Math.PI * -0.5,\n\n\t// The total circumference of the chart.\n\tcircumference: Math.PI * 2.0,\n\n\t// Need to override these to give a nice default\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\tvar dataLabel = data.labels[tooltipItem.index];\n\t\t\t\tvar value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\n\n\t\t\t\tif (helpers.isArray(dataLabel)) {\n\t\t\t\t\t// show value on first line of multiline label\n\t\t\t\t\t// need to clone because we are changing the value\n\t\t\t\t\tdataLabel = dataLabel.slice();\n\t\t\t\t\tdataLabel[0] += value;\n\t\t\t\t} else {\n\t\t\t\t\tdataLabel += value;\n\t\t\t\t}\n\n\t\t\t\treturn dataLabel;\n\t\t\t}\n\t\t}\n\t}\n});\n\ndefaults._set('pie', helpers.clone(defaults.doughnut));\ndefaults._set('pie', {\n\tcutoutPercentage: 0\n});\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.doughnut = Chart.controllers.pie = Chart.DatasetController.extend({\n\n\t\tdataElementType: elements.Arc,\n\n\t\tlinkScales: helpers.noop,\n\n\t\t// Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\n\t\tgetRingIndex: function(datasetIndex) {\n\t\t\tvar ringIndex = 0;\n\n\t\t\tfor (var j = 0; j < datasetIndex; ++j) {\n\t\t\t\tif (this.chart.isDatasetVisible(j)) {\n\t\t\t\t\t++ringIndex;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ringIndex;\n\t\t},\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar chartArea = chart.chartArea;\n\t\t\tvar opts = chart.options;\n\t\t\tvar arcOpts = opts.elements.arc;\n\t\t\tvar availableWidth = chartArea.right - chartArea.left - arcOpts.borderWidth;\n\t\t\tvar availableHeight = chartArea.bottom - chartArea.top - arcOpts.borderWidth;\n\t\t\tvar minSize = Math.min(availableWidth, availableHeight);\n\t\t\tvar offset = {x: 0, y: 0};\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar cutoutPercentage = opts.cutoutPercentage;\n\t\t\tvar circumference = opts.circumference;\n\n\t\t\t// If the chart's circumference isn't a full circle, calculate minSize as a ratio of the width/height of the arc\n\t\t\tif (circumference < Math.PI * 2.0) {\n\t\t\t\tvar startAngle = opts.rotation % (Math.PI * 2.0);\n\t\t\t\tstartAngle += Math.PI * 2.0 * (startAngle >= Math.PI ? -1 : startAngle < -Math.PI ? 1 : 0);\n\t\t\t\tvar endAngle = startAngle + circumference;\n\t\t\t\tvar start = {x: Math.cos(startAngle), y: Math.sin(startAngle)};\n\t\t\t\tvar end = {x: Math.cos(endAngle), y: Math.sin(endAngle)};\n\t\t\t\tvar contains0 = (startAngle <= 0 && endAngle >= 0) || (startAngle <= Math.PI * 2.0 && Math.PI * 2.0 <= endAngle);\n\t\t\t\tvar contains90 = (startAngle <= Math.PI * 0.5 && Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 2.5 && Math.PI * 2.5 <= endAngle);\n\t\t\t\tvar contains180 = (startAngle <= -Math.PI && -Math.PI <= endAngle) || (startAngle <= Math.PI && Math.PI <= endAngle);\n\t\t\t\tvar contains270 = (startAngle <= -Math.PI * 0.5 && -Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 1.5 && Math.PI * 1.5 <= endAngle);\n\t\t\t\tvar cutout = cutoutPercentage / 100.0;\n\t\t\t\tvar min = {x: contains180 ? -1 : Math.min(start.x * (start.x < 0 ? 1 : cutout), end.x * (end.x < 0 ? 1 : cutout)), y: contains270 ? -1 : Math.min(start.y * (start.y < 0 ? 1 : cutout), end.y * (end.y < 0 ? 1 : cutout))};\n\t\t\t\tvar max = {x: contains0 ? 1 : Math.max(start.x * (start.x > 0 ? 1 : cutout), end.x * (end.x > 0 ? 1 : cutout)), y: contains90 ? 1 : Math.max(start.y * (start.y > 0 ? 1 : cutout), end.y * (end.y > 0 ? 1 : cutout))};\n\t\t\t\tvar size = {width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5};\n\t\t\t\tminSize = Math.min(availableWidth / size.width, availableHeight / size.height);\n\t\t\t\toffset = {x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5};\n\t\t\t}\n\n\t\t\tchart.borderWidth = me.getMaxBorderWidth(meta.data);\n\t\t\tchart.outerRadius = Math.max((minSize - chart.borderWidth) / 2, 0);\n\t\t\tchart.innerRadius = Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage) : 0, 0);\n\t\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\n\t\t\tchart.offsetX = offset.x * chart.outerRadius;\n\t\t\tchart.offsetY = offset.y * chart.outerRadius;\n\n\t\t\tmeta.total = me.calculateTotal();\n\n\t\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.getRingIndex(me.index));\n\t\t\tme.innerRadius = Math.max(me.outerRadius - chart.radiusLength, 0);\n\n\t\t\thelpers.each(meta.data, function(arc, index) {\n\t\t\t\tme.updateElement(arc, index, reset);\n\t\t\t});\n\t\t},\n\n\t\tupdateElement: function(arc, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar chartArea = chart.chartArea;\n\t\t\tvar opts = chart.options;\n\t\t\tvar animationOpts = opts.animation;\n\t\t\tvar centerX = (chartArea.left + chartArea.right) / 2;\n\t\t\tvar centerY = (chartArea.top + chartArea.bottom) / 2;\n\t\t\tvar startAngle = opts.rotation; // non reset case handled later\n\t\t\tvar endAngle = opts.rotation; // non reset case handled later\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / (2.0 * Math.PI));\n\t\t\tvar innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;\n\t\t\tvar outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;\n\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\n\t\t\thelpers.extend(arc, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index,\n\n\t\t\t\t// Desired view properties\n\t\t\t\t_model: {\n\t\t\t\t\tx: centerX + chart.offsetX,\n\t\t\t\t\ty: centerY + chart.offsetY,\n\t\t\t\t\tstartAngle: startAngle,\n\t\t\t\t\tendAngle: endAngle,\n\t\t\t\t\tcircumference: circumference,\n\t\t\t\t\touterRadius: outerRadius,\n\t\t\t\t\tinnerRadius: innerRadius,\n\t\t\t\t\tlabel: valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvar model = arc._model;\n\n\t\t\t// Resets the visual styles\n\t\t\tvar custom = arc.custom || {};\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\tvar elementOpts = this.chart.options.elements.arc;\n\t\t\tmodel.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor);\n\t\t\tmodel.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor);\n\t\t\tmodel.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth);\n\n\t\t\t// Set correct angles if not resetting\n\t\t\tif (!reset || !animationOpts.animateRotate) {\n\t\t\t\tif (index === 0) {\n\t\t\t\t\tmodel.startAngle = opts.rotation;\n\t\t\t\t} else {\n\t\t\t\t\tmodel.startAngle = me.getMeta().data[index - 1]._model.endAngle;\n\t\t\t\t}\n\n\t\t\t\tmodel.endAngle = model.startAngle + model.circumference;\n\t\t\t}\n\n\t\t\tarc.pivot();\n\t\t},\n\n\t\tcalculateTotal: function() {\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar total = 0;\n\t\t\tvar value;\n\n\t\t\thelpers.each(meta.data, function(element, index) {\n\t\t\t\tvalue = dataset.data[index];\n\t\t\t\tif (!isNaN(value) && !element.hidden) {\n\t\t\t\t\ttotal += Math.abs(value);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t/* if (total === 0) {\n\t\t\t\ttotal = NaN;\n\t\t\t}*/\n\n\t\t\treturn total;\n\t\t},\n\n\t\tcalculateCircumference: function(value) {\n\t\t\tvar total = this.getMeta().total;\n\t\t\tif (total > 0 && !isNaN(value)) {\n\t\t\t\treturn (Math.PI * 2.0) * (Math.abs(value) / total);\n\t\t\t}\n\t\t\treturn 0;\n\t\t},\n\n\t\t// gets the max border or hover width to properly scale pie charts\n\t\tgetMaxBorderWidth: function(arcs) {\n\t\t\tvar max = 0;\n\t\t\tvar index = this.index;\n\t\t\tvar length = arcs.length;\n\t\t\tvar borderWidth;\n\t\t\tvar hoverWidth;\n\n\t\t\tfor (var i = 0; i < length; i++) {\n\t\t\t\tborderWidth = arcs[i]._model ? arcs[i]._model.borderWidth : 0;\n\t\t\t\thoverWidth = arcs[i]._chart ? arcs[i]._chart.config.data.datasets[index].hoverBorderWidth : 0;\n\n\t\t\t\tmax = borderWidth > max ? borderWidth : max;\n\t\t\t\tmax = hoverWidth > max ? hoverWidth : max;\n\t\t\t}\n\t\t\treturn max;\n\t\t}\n\t});\n};\n\n},{\"26\":26,\"41\":41,\"46\":46}],18:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar elements = require(41);\nvar helpers = require(46);\n\ndefaults._set('line', {\n\tshowLines: true,\n\tspanGaps: false,\n\n\thover: {\n\t\tmode: 'label'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'category',\n\t\t\tid: 'x-axis-0'\n\t\t}],\n\t\tyAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tid: 'y-axis-0'\n\t\t}]\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\tfunction lineEnabled(dataset, options) {\n\t\treturn helpers.valueOrDefault(dataset.showLine, options.showLines);\n\t}\n\n\tChart.controllers.line = Chart.DatasetController.extend({\n\n\t\tdatasetElementType: elements.Line,\n\n\t\tdataElementType: elements.Point,\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar line = meta.dataset;\n\t\t\tvar points = meta.data || [];\n\t\t\tvar options = me.chart.options;\n\t\t\tvar lineElementOptions = options.elements.line;\n\t\t\tvar scale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar i, ilen, custom;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar showLine = lineEnabled(dataset, options);\n\n\t\t\t// Update Line\n\t\t\tif (showLine) {\n\t\t\t\tcustom = line.custom || {};\n\n\t\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\t\tif ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\n\t\t\t\t\tdataset.lineTension = dataset.tension;\n\t\t\t\t}\n\n\t\t\t\t// Utility\n\t\t\t\tline._scale = scale;\n\t\t\t\tline._datasetIndex = me.index;\n\t\t\t\t// Data\n\t\t\t\tline._children = points;\n\t\t\t\t// Model\n\t\t\t\tline._model = {\n\t\t\t\t\t// Appearance\n\t\t\t\t\t// The default behavior of lines is to break at null values, according\n\t\t\t\t\t// to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\n\t\t\t\t\t// This option gives lines the ability to span gaps\n\t\t\t\t\tspanGaps: dataset.spanGaps ? dataset.spanGaps : options.spanGaps,\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension),\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),\n\t\t\t\t\tborderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),\n\t\t\t\t\tborderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),\n\t\t\t\t\tborderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),\n\t\t\t\t\tborderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),\n\t\t\t\t\tfill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),\n\t\t\t\t\tsteppedLine: custom.steppedLine ? custom.steppedLine : helpers.valueOrDefault(dataset.steppedLine, lineElementOptions.stepped),\n\t\t\t\t\tcubicInterpolationMode: custom.cubicInterpolationMode ? custom.cubicInterpolationMode : helpers.valueOrDefault(dataset.cubicInterpolationMode, lineElementOptions.cubicInterpolationMode),\n\t\t\t\t};\n\n\t\t\t\tline.pivot();\n\t\t\t}\n\n\t\t\t// Update Points\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\tme.updateElement(points[i], i, reset);\n\t\t\t}\n\n\t\t\tif (showLine && line._model.tension !== 0) {\n\t\t\t\tme.updateBezierControlPoints();\n\t\t\t}\n\n\t\t\t// Now pivot the point for animation\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\tpoints[i].pivot();\n\t\t\t}\n\t\t},\n\n\t\tgetPointBackgroundColor: function(point, index) {\n\t\t\tvar backgroundColor = this.chart.options.elements.point.backgroundColor;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (custom.backgroundColor) {\n\t\t\t\tbackgroundColor = custom.backgroundColor;\n\t\t\t} else if (dataset.pointBackgroundColor) {\n\t\t\t\tbackgroundColor = helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, backgroundColor);\n\t\t\t} else if (dataset.backgroundColor) {\n\t\t\t\tbackgroundColor = dataset.backgroundColor;\n\t\t\t}\n\n\t\t\treturn backgroundColor;\n\t\t},\n\n\t\tgetPointBorderColor: function(point, index) {\n\t\t\tvar borderColor = this.chart.options.elements.point.borderColor;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (custom.borderColor) {\n\t\t\t\tborderColor = custom.borderColor;\n\t\t\t} else if (dataset.pointBorderColor) {\n\t\t\t\tborderColor = helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, borderColor);\n\t\t\t} else if (dataset.borderColor) {\n\t\t\t\tborderColor = dataset.borderColor;\n\t\t\t}\n\n\t\t\treturn borderColor;\n\t\t},\n\n\t\tgetPointBorderWidth: function(point, index) {\n\t\t\tvar borderWidth = this.chart.options.elements.point.borderWidth;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (!isNaN(custom.borderWidth)) {\n\t\t\t\tborderWidth = custom.borderWidth;\n\t\t\t} else if (!isNaN(dataset.pointBorderWidth) || helpers.isArray(dataset.pointBorderWidth)) {\n\t\t\t\tborderWidth = helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, borderWidth);\n\t\t\t} else if (!isNaN(dataset.borderWidth)) {\n\t\t\t\tborderWidth = dataset.borderWidth;\n\t\t\t}\n\n\t\t\treturn borderWidth;\n\t\t},\n\n\t\tgetPointRotation: function(point, index) {\n\t\t\tvar pointRotation = this.chart.options.elements.point.rotation;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (!isNaN(custom.rotation)) {\n\t\t\t\tpointRotation = custom.rotation;\n\t\t\t} else if (!isNaN(dataset.pointRotation) || helpers.isArray(dataset.pointRotation)) {\n\t\t\t\tpointRotation = helpers.valueAtIndexOrDefault(dataset.pointRotation, index, pointRotation);\n\t\t\t}\n\t\t\treturn pointRotation;\n\t\t},\n\n\t\tupdateElement: function(point, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar datasetIndex = me.index;\n\t\t\tvar value = dataset.data[index];\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\t\tvar pointOptions = me.chart.options.elements.point;\n\t\t\tvar x, y;\n\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {\n\t\t\t\tdataset.pointRadius = dataset.radius;\n\t\t\t}\n\t\t\tif ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) {\n\t\t\t\tdataset.pointHitRadius = dataset.hitRadius;\n\t\t\t}\n\n\t\t\tx = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);\n\t\t\ty = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);\n\n\t\t\t// Utility\n\t\t\tpoint._xScale = xScale;\n\t\t\tpoint._yScale = yScale;\n\t\t\tpoint._datasetIndex = datasetIndex;\n\t\t\tpoint._index = index;\n\n\t\t\t// Desired view properties\n\t\t\tpoint._model = {\n\t\t\t\tx: x,\n\t\t\t\ty: y,\n\t\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\t\t// Appearance\n\t\t\t\tradius: custom.radius || helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointOptions.radius),\n\t\t\t\tpointStyle: custom.pointStyle || helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointOptions.pointStyle),\n\t\t\t\trotation: me.getPointRotation(point, index),\n\t\t\t\tbackgroundColor: me.getPointBackgroundColor(point, index),\n\t\t\t\tborderColor: me.getPointBorderColor(point, index),\n\t\t\t\tborderWidth: me.getPointBorderWidth(point, index),\n\t\t\t\ttension: meta.dataset._model ? meta.dataset._model.tension : 0,\n\t\t\t\tsteppedLine: meta.dataset._model ? meta.dataset._model.steppedLine : false,\n\t\t\t\t// Tooltip\n\t\t\t\thitRadius: custom.hitRadius || helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointOptions.hitRadius)\n\t\t\t};\n\t\t},\n\n\t\tcalculatePointY: function(value, index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar sumPos = 0;\n\t\t\tvar sumNeg = 0;\n\t\t\tvar i, ds, dsMeta;\n\n\t\t\tif (yScale.options.stacked) {\n\t\t\t\tfor (i = 0; i < datasetIndex; i++) {\n\t\t\t\t\tds = chart.data.datasets[i];\n\t\t\t\t\tdsMeta = chart.getDatasetMeta(i);\n\t\t\t\t\tif (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id && chart.isDatasetVisible(i)) {\n\t\t\t\t\t\tvar stackedRightValue = Number(yScale.getRightValue(ds.data[index]));\n\t\t\t\t\t\tif (stackedRightValue < 0) {\n\t\t\t\t\t\t\tsumNeg += stackedRightValue || 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsumPos += stackedRightValue || 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar rightValue = Number(yScale.getRightValue(value));\n\t\t\t\tif (rightValue < 0) {\n\t\t\t\t\treturn yScale.getPixelForValue(sumNeg + rightValue);\n\t\t\t\t}\n\t\t\t\treturn yScale.getPixelForValue(sumPos + rightValue);\n\t\t\t}\n\n\t\t\treturn yScale.getPixelForValue(value);\n\t\t},\n\n\t\tupdateBezierControlPoints: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar area = me.chart.chartArea;\n\t\t\tvar points = (meta.data || []);\n\t\t\tvar i, ilen, point, model, controlPoints;\n\n\t\t\t// Only consider points that are drawn in case the spanGaps option is used\n\t\t\tif (meta.dataset._model.spanGaps) {\n\t\t\t\tpoints = points.filter(function(pt) {\n\t\t\t\t\treturn !pt._model.skip;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction capControlPoint(pt, min, max) {\n\t\t\t\treturn Math.max(Math.min(pt, max), min);\n\t\t\t}\n\n\t\t\tif (meta.dataset._model.cubicInterpolationMode === 'monotone') {\n\t\t\t\thelpers.splineCurveMonotone(points);\n\t\t\t} else {\n\t\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\t\tpoint = points[i];\n\t\t\t\t\tmodel = point._model;\n\t\t\t\t\tcontrolPoints = helpers.splineCurve(\n\t\t\t\t\t\thelpers.previousItem(points, i)._model,\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\thelpers.nextItem(points, i)._model,\n\t\t\t\t\t\tmeta.dataset._model.tension\n\t\t\t\t\t);\n\t\t\t\t\tmodel.controlPointPreviousX = controlPoints.previous.x;\n\t\t\t\t\tmodel.controlPointPreviousY = controlPoints.previous.y;\n\t\t\t\t\tmodel.controlPointNextX = controlPoints.next.x;\n\t\t\t\t\tmodel.controlPointNextY = controlPoints.next.y;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (me.chart.options.elements.line.capBezierPoints) {\n\t\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\t\tmodel = points[i]._model;\n\t\t\t\t\tmodel.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);\n\t\t\t\t\tmodel.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);\n\t\t\t\t\tmodel.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);\n\t\t\t\t\tmodel.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar points = meta.data || [];\n\t\t\tvar area = chart.chartArea;\n\t\t\tvar ilen = points.length;\n\t\t\tvar halfBorderWidth;\n\t\t\tvar i = 0;\n\n\t\t\tif (lineEnabled(me.getDataset(), chart.options)) {\n\t\t\t\thalfBorderWidth = (meta.dataset._model.borderWidth || 0) / 2;\n\n\t\t\t\thelpers.canvas.clipArea(chart.ctx, {\n\t\t\t\t\tleft: area.left,\n\t\t\t\t\tright: area.right,\n\t\t\t\t\ttop: area.top - halfBorderWidth,\n\t\t\t\t\tbottom: area.bottom + halfBorderWidth\n\t\t\t\t});\n\n\t\t\t\tmeta.dataset.draw();\n\n\t\t\t\thelpers.canvas.unclipArea(chart.ctx);\n\t\t\t}\n\n\t\t\t// Draw the points\n\t\t\tfor (; i < ilen; ++i) {\n\t\t\t\tpoints[i].draw(area);\n\t\t\t}\n\t\t},\n\n\t\tsetHoverStyle: function(element) {\n\t\t\t// Point\n\t\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\n\t\t\tvar index = element._index;\n\t\t\tvar custom = element.custom || {};\n\t\t\tvar model = element._model;\n\n\t\t\telement.$previousStyle = {\n\t\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\t\tborderColor: model.borderColor,\n\t\t\t\tborderWidth: model.borderWidth,\n\t\t\t\tradius: model.radius\n\t\t\t};\n\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\n\t\t\tmodel.borderColor = custom.hoverBorderColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);\n\t\t\tmodel.radius = custom.hoverRadius || helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);\n\t\t},\n\t});\n};\n\n},{\"26\":26,\"41\":41,\"46\":46}],19:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar elements = require(41);\nvar helpers = require(46);\n\ndefaults._set('polarArea', {\n\tscale: {\n\t\ttype: 'radialLinear',\n\t\tangleLines: {\n\t\t\tdisplay: false\n\t\t},\n\t\tgridLines: {\n\t\t\tcircular: true\n\t\t},\n\t\tpointLabels: {\n\t\t\tdisplay: false\n\t\t},\n\t\tticks: {\n\t\t\tbeginAtZero: true\n\t\t}\n\t},\n\n\t// Boolean - Whether to animate the rotation of the chart\n\tanimation: {\n\t\tanimateRotate: true,\n\t\tanimateScale: true\n\t},\n\n\tstartAngle: -0.5 * Math.PI,\n\tlegendCallback: function(chart) {\n\t\tvar text = [];\n\t\ttext.push('
        ');\n\n\t\tvar data = chart.data;\n\t\tvar datasets = data.datasets;\n\t\tvar labels = data.labels;\n\n\t\tif (datasets.length) {\n\t\t\tfor (var i = 0; i < datasets[0].data.length; ++i) {\n\t\t\t\ttext.push('
      • ');\n\t\t\t\tif (labels[i]) {\n\t\t\t\t\ttext.push(labels[i]);\n\t\t\t\t}\n\t\t\t\ttext.push('
      • ');\n\t\t\t}\n\t\t}\n\n\t\ttext.push('
      ');\n\t\treturn text.join('');\n\t},\n\tlegend: {\n\t\tlabels: {\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\tif (data.labels.length && data.datasets.length) {\n\t\t\t\t\treturn data.labels.map(function(label, i) {\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\n\t\t\t\t\t\tvar ds = data.datasets[0];\n\t\t\t\t\t\tvar arc = meta.data[i];\n\t\t\t\t\t\tvar custom = arc.custom || {};\n\t\t\t\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\t\t\t\tvar arcOpts = chart.options.elements.arc;\n\t\t\t\t\t\tvar fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);\n\t\t\t\t\t\tvar stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);\n\t\t\t\t\t\tvar bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttext: label,\n\t\t\t\t\t\t\tfillStyle: fill,\n\t\t\t\t\t\t\tstrokeStyle: stroke,\n\t\t\t\t\t\t\tlineWidth: bw,\n\t\t\t\t\t\t\thidden: isNaN(ds.data[i]) || meta.data[i].hidden,\n\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\n\t\t\t\t\t\t\tindex: i\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.index;\n\t\t\tvar chart = this.chart;\n\t\t\tvar i, ilen, meta;\n\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\n\t\t\t}\n\n\t\t\tchart.update();\n\t\t}\n\t},\n\n\t// Need to override these to give a nice default\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(item, data) {\n\t\t\t\treturn data.labels[item.index] + ': ' + item.yLabel;\n\t\t\t}\n\t\t}\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.polarArea = Chart.DatasetController.extend({\n\n\t\tdataElementType: elements.Arc,\n\n\t\tlinkScales: helpers.noop,\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar start = me.chart.options.startAngle || 0;\n\t\t\tvar starts = me._starts = [];\n\t\t\tvar angles = me._angles = [];\n\t\t\tvar i, ilen, angle;\n\n\t\t\tme._updateRadius();\n\n\t\t\tmeta.count = me.countVisibleElements();\n\n\t\t\tfor (i = 0, ilen = dataset.data.length; i < ilen; i++) {\n\t\t\t\tstarts[i] = start;\n\t\t\t\tangle = me._computeAngle(i);\n\t\t\t\tangles[i] = angle;\n\t\t\t\tstart += angle;\n\t\t\t}\n\n\t\t\thelpers.each(meta.data, function(arc, index) {\n\t\t\t\tme.updateElement(arc, index, reset);\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\t_updateRadius: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar chartArea = chart.chartArea;\n\t\t\tvar opts = chart.options;\n\t\t\tvar arcOpts = opts.elements.arc;\n\t\t\tvar minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n\n\t\t\tchart.outerRadius = Math.max((minSize - arcOpts.borderWidth / 2) / 2, 0);\n\t\t\tchart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n\t\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\n\n\t\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.index);\n\t\t\tme.innerRadius = me.outerRadius - chart.radiusLength;\n\t\t},\n\n\t\tupdateElement: function(arc, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar opts = chart.options;\n\t\t\tvar animationOpts = opts.animation;\n\t\t\tvar scale = chart.scale;\n\t\t\tvar labels = chart.data.labels;\n\n\t\t\tvar centerX = scale.xCenter;\n\t\t\tvar centerY = scale.yCenter;\n\n\t\t\t// var negHalfPI = -0.5 * Math.PI;\n\t\t\tvar datasetStartAngle = opts.startAngle;\n\t\t\tvar distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\t\t\tvar startAngle = me._starts[index];\n\t\t\tvar endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]);\n\n\t\t\tvar resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\n\t\t\thelpers.extend(arc, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index,\n\t\t\t\t_scale: scale,\n\n\t\t\t\t// Desired view properties\n\t\t\t\t_model: {\n\t\t\t\t\tx: centerX,\n\t\t\t\t\ty: centerY,\n\t\t\t\t\tinnerRadius: 0,\n\t\t\t\t\touterRadius: reset ? resetRadius : distance,\n\t\t\t\t\tstartAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\n\t\t\t\t\tendAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\n\t\t\t\t\tlabel: helpers.valueAtIndexOrDefault(labels, index, labels[index])\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Apply border and fill style\n\t\t\tvar elementOpts = this.chart.options.elements.arc;\n\t\t\tvar custom = arc.custom || {};\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\tvar model = arc._model;\n\n\t\t\tmodel.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor);\n\t\t\tmodel.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor);\n\t\t\tmodel.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth);\n\n\t\t\tarc.pivot();\n\t\t},\n\n\t\tcountVisibleElements: function() {\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar count = 0;\n\n\t\t\thelpers.each(meta.data, function(element, index) {\n\t\t\t\tif (!isNaN(dataset.data[index]) && !element.hidden) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn count;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\t_computeAngle: function(index) {\n\t\t\tvar me = this;\n\t\t\tvar count = this.getMeta().count;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar meta = me.getMeta();\n\n\t\t\tif (isNaN(dataset.data[index]) || meta.data[index].hidden) {\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\t// Scriptable options\n\t\t\tvar context = {\n\t\t\t\tchart: me.chart,\n\t\t\t\tdataIndex: index,\n\t\t\t\tdataset: dataset,\n\t\t\t\tdatasetIndex: me.index\n\t\t\t};\n\n\t\t\treturn helpers.options.resolve([\n\t\t\t\tme.chart.options.elements.arc.angle,\n\t\t\t\t(2 * Math.PI) / count\n\t\t\t], context, index);\n\t\t}\n\t});\n};\n\n},{\"26\":26,\"41\":41,\"46\":46}],20:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar elements = require(41);\nvar helpers = require(46);\n\ndefaults._set('radar', {\n\tscale: {\n\t\ttype: 'radialLinear'\n\t},\n\telements: {\n\t\tline: {\n\t\t\ttension: 0 // no bezier in radar\n\t\t}\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.radar = Chart.DatasetController.extend({\n\n\t\tdatasetElementType: elements.Line,\n\n\t\tdataElementType: elements.Point,\n\n\t\tlinkScales: helpers.noop,\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar line = meta.dataset;\n\t\t\tvar points = meta.data;\n\t\t\tvar custom = line.custom || {};\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar lineElementOptions = me.chart.options.elements.line;\n\t\t\tvar scale = me.chart.scale;\n\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\n\t\t\t\tdataset.lineTension = dataset.tension;\n\t\t\t}\n\n\t\t\thelpers.extend(meta.dataset, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_scale: scale,\n\t\t\t\t// Data\n\t\t\t\t_children: points,\n\t\t\t\t_loop: true,\n\t\t\t\t// Model\n\t\t\t\t_model: {\n\t\t\t\t\t// Appearance\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension),\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),\n\t\t\t\t\tfill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),\n\t\t\t\t\tborderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),\n\t\t\t\t\tborderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),\n\t\t\t\t\tborderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),\n\t\t\t\t\tborderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tmeta.dataset.pivot();\n\n\t\t\t// Update Points\n\t\t\thelpers.each(points, function(point, index) {\n\t\t\t\tme.updateElement(point, index, reset);\n\t\t\t}, me);\n\n\t\t\t// Update bezier control points\n\t\t\tme.updateBezierControlPoints();\n\t\t},\n\t\tupdateElement: function(point, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar scale = me.chart.scale;\n\t\t\tvar pointElementOptions = me.chart.options.elements.point;\n\t\t\tvar pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\n\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {\n\t\t\t\tdataset.pointRadius = dataset.radius;\n\t\t\t}\n\t\t\tif ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) {\n\t\t\t\tdataset.pointHitRadius = dataset.hitRadius;\n\t\t\t}\n\n\t\t\thelpers.extend(point, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index,\n\t\t\t\t_scale: scale,\n\n\t\t\t\t// Desired view properties\n\t\t\t\t_model: {\n\t\t\t\t\tx: reset ? scale.xCenter : pointPosition.x, // value not used in dataset scale, but we want a consistent API between scales\n\t\t\t\t\ty: reset ? scale.yCenter : pointPosition.y,\n\n\t\t\t\t\t// Appearance\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, me.chart.options.elements.line.tension),\n\t\t\t\t\tradius: custom.radius ? custom.radius : helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius),\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor),\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor),\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth),\n\t\t\t\t\tpointStyle: custom.pointStyle ? custom.pointStyle : helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointElementOptions.pointStyle),\n\t\t\t\t\trotation: custom.rotation ? custom.rotation : helpers.valueAtIndexOrDefault(dataset.pointRotation, index, pointElementOptions.rotation),\n\n\t\t\t\t\t// Tooltip\n\t\t\t\t\thitRadius: custom.hitRadius ? custom.hitRadius : helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointElementOptions.hitRadius)\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tpoint._model.skip = custom.skip ? custom.skip : (isNaN(point._model.x) || isNaN(point._model.y));\n\t\t},\n\t\tupdateBezierControlPoints: function() {\n\t\t\tvar chartArea = this.chart.chartArea;\n\t\t\tvar meta = this.getMeta();\n\n\t\t\thelpers.each(meta.data, function(point, index) {\n\t\t\t\tvar model = point._model;\n\t\t\t\tvar controlPoints = helpers.splineCurve(\n\t\t\t\t\thelpers.previousItem(meta.data, index, true)._model,\n\t\t\t\t\tmodel,\n\t\t\t\t\thelpers.nextItem(meta.data, index, true)._model,\n\t\t\t\t\tmodel.tension\n\t\t\t\t);\n\n\t\t\t\t// Prevent the bezier going outside of the bounds of the graph\n\t\t\t\tmodel.controlPointPreviousX = Math.max(Math.min(controlPoints.previous.x, chartArea.right), chartArea.left);\n\t\t\t\tmodel.controlPointPreviousY = Math.max(Math.min(controlPoints.previous.y, chartArea.bottom), chartArea.top);\n\n\t\t\t\tmodel.controlPointNextX = Math.max(Math.min(controlPoints.next.x, chartArea.right), chartArea.left);\n\t\t\t\tmodel.controlPointNextY = Math.max(Math.min(controlPoints.next.y, chartArea.bottom), chartArea.top);\n\n\t\t\t\t// Now pivot the point for animation\n\t\t\t\tpoint.pivot();\n\t\t\t});\n\t\t},\n\n\t\tsetHoverStyle: function(point) {\n\t\t\t// Point\n\t\t\tvar dataset = this.chart.data.datasets[point._datasetIndex];\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar index = point._index;\n\t\t\tvar model = point._model;\n\n\t\t\tpoint.$previousStyle = {\n\t\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\t\tborderColor: model.borderColor,\n\t\t\t\tborderWidth: model.borderWidth,\n\t\t\t\tradius: model.radius\n\t\t\t};\n\n\t\t\tmodel.radius = custom.hoverRadius ? custom.hoverRadius : helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\n\t\t\tmodel.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);\n\t\t},\n\t});\n};\n\n},{\"26\":26,\"41\":41,\"46\":46}],21:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\n\ndefaults._set('scatter', {\n\thover: {\n\t\tmode: 'single'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\tid: 'x-axis-1', // need an ID so datasets can reference the scale\n\t\t\ttype: 'linear', // scatter should not use a category axis\n\t\t\tposition: 'bottom'\n\t\t}],\n\t\tyAxes: [{\n\t\t\tid: 'y-axis-1',\n\t\t\ttype: 'linear',\n\t\t\tposition: 'left'\n\t\t}]\n\t},\n\n\tshowLines: false,\n\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn ''; // doesn't make sense for scatter since data are formatted as a point\n\t\t\t},\n\t\t\tlabel: function(item) {\n\t\t\t\treturn '(' + item.xLabel + ', ' + item.yLabel + ')';\n\t\t\t}\n\t\t}\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\t// Scatter charts use line controllers\n\tChart.controllers.scatter = Chart.controllers.line;\n\n};\n\n},{\"26\":26}],22:[function(require,module,exports){\n'use strict';\n\nvar Element = require(27);\n\nvar exports = module.exports = Element.extend({\n\tchart: null, // the animation associated chart instance\n\tcurrentStep: 0, // the current animation step\n\tnumSteps: 60, // default number of steps\n\teasing: '', // the easing to use for this animation\n\trender: null, // render function used by the animation service\n\n\tonAnimationProgress: null, // user specified callback to fire on each step of the animation\n\tonAnimationComplete: null, // user specified callback to fire when the animation finishes\n});\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.Animation instead\n * @prop Chart.Animation#animationObject\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n */\nObject.defineProperty(exports.prototype, 'animationObject', {\n\tget: function() {\n\t\treturn this;\n\t}\n});\n\n/**\n * Provided for backward compatibility, use Chart.Animation#chart instead\n * @prop Chart.Animation#chartInstance\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n */\nObject.defineProperty(exports.prototype, 'chartInstance', {\n\tget: function() {\n\t\treturn this.chart;\n\t},\n\tset: function(value) {\n\t\tthis.chart = value;\n\t}\n});\n\n},{\"27\":27}],23:[function(require,module,exports){\n/* global window: false */\n'use strict';\n\nvar defaults = require(26);\nvar helpers = require(46);\n\ndefaults._set('global', {\n\tanimation: {\n\t\tduration: 1000,\n\t\teasing: 'easeOutQuart',\n\t\tonProgress: helpers.noop,\n\t\tonComplete: helpers.noop\n\t}\n});\n\nmodule.exports = {\n\tframeDuration: 17,\n\tanimations: [],\n\tdropFrames: 0,\n\trequest: null,\n\n\t/**\n\t * @param {Chart} chart - The chart to animate.\n\t * @param {Chart.Animation} animation - The animation that we will animate.\n\t * @param {Number} duration - The animation duration in ms.\n\t * @param {Boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions\n\t */\n\taddAnimation: function(chart, animation, duration, lazy) {\n\t\tvar animations = this.animations;\n\t\tvar i, ilen;\n\n\t\tanimation.chart = chart;\n\n\t\tif (!lazy) {\n\t\t\tchart.animating = true;\n\t\t}\n\n\t\tfor (i = 0, ilen = animations.length; i < ilen; ++i) {\n\t\t\tif (animations[i].chart === chart) {\n\t\t\t\tanimations[i] = animation;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tanimations.push(animation);\n\n\t\t// If there are no animations queued, manually kickstart a digest, for lack of a better word\n\t\tif (animations.length === 1) {\n\t\t\tthis.requestAnimationFrame();\n\t\t}\n\t},\n\n\tcancelAnimation: function(chart) {\n\t\tvar index = helpers.findIndex(this.animations, function(animation) {\n\t\t\treturn animation.chart === chart;\n\t\t});\n\n\t\tif (index !== -1) {\n\t\t\tthis.animations.splice(index, 1);\n\t\t\tchart.animating = false;\n\t\t}\n\t},\n\n\trequestAnimationFrame: function() {\n\t\tvar me = this;\n\t\tif (me.request === null) {\n\t\t\t// Skip animation frame requests until the active one is executed.\n\t\t\t// This can happen when processing mouse events, e.g. 'mousemove'\n\t\t\t// and 'mouseout' events will trigger multiple renders.\n\t\t\tme.request = helpers.requestAnimFrame.call(window, function() {\n\t\t\t\tme.request = null;\n\t\t\t\tme.startDigest();\n\t\t\t});\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tstartDigest: function() {\n\t\tvar me = this;\n\t\tvar startTime = Date.now();\n\t\tvar framesToDrop = 0;\n\n\t\tif (me.dropFrames > 1) {\n\t\t\tframesToDrop = Math.floor(me.dropFrames);\n\t\t\tme.dropFrames = me.dropFrames % 1;\n\t\t}\n\n\t\tme.advance(1 + framesToDrop);\n\n\t\tvar endTime = Date.now();\n\n\t\tme.dropFrames += (endTime - startTime) / me.frameDuration;\n\n\t\t// Do we have more stuff to animate?\n\t\tif (me.animations.length > 0) {\n\t\t\tme.requestAnimationFrame();\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tadvance: function(count) {\n\t\tvar animations = this.animations;\n\t\tvar animation, chart;\n\t\tvar i = 0;\n\n\t\twhile (i < animations.length) {\n\t\t\tanimation = animations[i];\n\t\t\tchart = animation.chart;\n\n\t\t\tanimation.currentStep = (animation.currentStep || 0) + count;\n\t\t\tanimation.currentStep = Math.min(animation.currentStep, animation.numSteps);\n\n\t\t\thelpers.callback(animation.render, [chart, animation], chart);\n\t\t\thelpers.callback(animation.onAnimationProgress, [animation], chart);\n\n\t\t\tif (animation.currentStep >= animation.numSteps) {\n\t\t\t\thelpers.callback(animation.onAnimationComplete, [animation], chart);\n\t\t\t\tchart.animating = false;\n\t\t\t\tanimations.splice(i, 1);\n\t\t\t} else {\n\t\t\t\t++i;\n\t\t\t}\n\t\t}\n\t}\n};\n\n},{\"26\":26,\"46\":46}],24:[function(require,module,exports){\n'use strict';\n\nvar Animation = require(22);\nvar animations = require(23);\nvar defaults = require(26);\nvar helpers = require(46);\nvar Interaction = require(29);\nvar layouts = require(31);\nvar platform = require(49);\nvar plugins = require(32);\nvar scaleService = require(34);\nvar Tooltip = require(36);\n\nmodule.exports = function(Chart) {\n\n\t// Create a dictionary of chart types, to allow for extension of existing types\n\tChart.types = {};\n\n\t// Store a reference to each instance - allowing us to globally resize chart instances on window resize.\n\t// Destroy method on the chart will remove the instance of the chart from this reference.\n\tChart.instances = {};\n\n\t// Controllers available for dataset visualization eg. bar, line, slice, etc.\n\tChart.controllers = {};\n\n\t/**\n\t * Initializes the given config with global and chart default values.\n\t */\n\tfunction initConfig(config) {\n\t\tconfig = config || {};\n\n\t\t// Do NOT use configMerge() for the data object because this method merges arrays\n\t\t// and so would change references to labels and datasets, preventing data updates.\n\t\tvar data = config.data = config.data || {};\n\t\tdata.datasets = data.datasets || [];\n\t\tdata.labels = data.labels || [];\n\n\t\tconfig.options = helpers.configMerge(\n\t\t\tdefaults.global,\n\t\t\tdefaults[config.type],\n\t\t\tconfig.options || {});\n\n\t\treturn config;\n\t}\n\n\t/**\n\t * Updates the config of the chart\n\t * @param chart {Chart} chart to update the options for\n\t */\n\tfunction updateConfig(chart) {\n\t\tvar newOptions = chart.options;\n\n\t\thelpers.each(chart.scales, function(scale) {\n\t\t\tlayouts.removeBox(chart, scale);\n\t\t});\n\n\t\tnewOptions = helpers.configMerge(\n\t\t\tChart.defaults.global,\n\t\t\tChart.defaults[chart.config.type],\n\t\t\tnewOptions);\n\n\t\tchart.options = chart.config.options = newOptions;\n\t\tchart.ensureScalesHaveIDs();\n\t\tchart.buildOrUpdateScales();\n\t\t// Tooltip\n\t\tchart.tooltip._options = newOptions.tooltips;\n\t\tchart.tooltip.initialize();\n\t}\n\n\tfunction positionIsHorizontal(position) {\n\t\treturn position === 'top' || position === 'bottom';\n\t}\n\n\thelpers.extend(Chart.prototype, /** @lends Chart */ {\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tconstruct: function(item, config) {\n\t\t\tvar me = this;\n\n\t\t\tconfig = initConfig(config);\n\n\t\t\tvar context = platform.acquireContext(item, config);\n\t\t\tvar canvas = context && context.canvas;\n\t\t\tvar height = canvas && canvas.height;\n\t\t\tvar width = canvas && canvas.width;\n\n\t\t\tme.id = helpers.uid();\n\t\t\tme.ctx = context;\n\t\t\tme.canvas = canvas;\n\t\t\tme.config = config;\n\t\t\tme.width = width;\n\t\t\tme.height = height;\n\t\t\tme.aspectRatio = height ? width / height : null;\n\t\t\tme.options = config.options;\n\t\t\tme._bufferedRender = false;\n\n\t\t\t/**\n\t\t\t * Provided for backward compatibility, Chart and Chart.Controller have been merged,\n\t\t\t * the \"instance\" still need to be defined since it might be called from plugins.\n\t\t\t * @prop Chart#chart\n\t\t\t * @deprecated since version 2.6.0\n\t\t\t * @todo remove at version 3\n\t\t\t * @private\n\t\t\t */\n\t\t\tme.chart = me;\n\t\t\tme.controller = me; // chart.chart.controller #inception\n\n\t\t\t// Add the chart instance to the global namespace\n\t\t\tChart.instances[me.id] = me;\n\n\t\t\t// Define alias to the config data: `chart.data === chart.config.data`\n\t\t\tObject.defineProperty(me, 'data', {\n\t\t\t\tget: function() {\n\t\t\t\t\treturn me.config.data;\n\t\t\t\t},\n\t\t\t\tset: function(value) {\n\t\t\t\t\tme.config.data = value;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (!context || !canvas) {\n\t\t\t\t// The given item is not a compatible context2d element, let's return before finalizing\n\t\t\t\t// the chart initialization but after setting basic chart / controller properties that\n\t\t\t\t// can help to figure out that the chart is not valid (e.g chart.canvas !== null);\n\t\t\t\t// https://github.com/chartjs/Chart.js/issues/2807\n\t\t\t\tconsole.error(\"Failed to create chart: can't acquire context from the given item\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tme.initialize();\n\t\t\tme.update();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tinitialize: function() {\n\t\t\tvar me = this;\n\n\t\t\t// Before init plugin notification\n\t\t\tplugins.notify(me, 'beforeInit');\n\n\t\t\thelpers.retinaScale(me, me.options.devicePixelRatio);\n\n\t\t\tme.bindEvents();\n\n\t\t\tif (me.options.responsive) {\n\t\t\t\t// Initial resize before chart draws (must be silent to preserve initial animations).\n\t\t\t\tme.resize(true);\n\t\t\t}\n\n\t\t\t// Make sure scales have IDs and are built before we build any controllers.\n\t\t\tme.ensureScalesHaveIDs();\n\t\t\tme.buildOrUpdateScales();\n\t\t\tme.initToolTip();\n\n\t\t\t// After init plugin notification\n\t\t\tplugins.notify(me, 'afterInit');\n\n\t\t\treturn me;\n\t\t},\n\n\t\tclear: function() {\n\t\t\thelpers.canvas.clear(this);\n\t\t\treturn this;\n\t\t},\n\n\t\tstop: function() {\n\t\t\t// Stops any current animation loop occurring\n\t\t\tanimations.cancelAnimation(this);\n\t\t\treturn this;\n\t\t},\n\n\t\tresize: function(silent) {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\t\t\tvar canvas = me.canvas;\n\t\t\tvar aspectRatio = (options.maintainAspectRatio && me.aspectRatio) || null;\n\n\t\t\t// the canvas render width and height will be casted to integers so make sure that\n\t\t\t// the canvas display style uses the same integer values to avoid blurring effect.\n\n\t\t\t// Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collapsed\n\t\t\tvar newWidth = Math.max(0, Math.floor(helpers.getMaximumWidth(canvas)));\n\t\t\tvar newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers.getMaximumHeight(canvas)));\n\n\t\t\tif (me.width === newWidth && me.height === newHeight) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcanvas.width = me.width = newWidth;\n\t\t\tcanvas.height = me.height = newHeight;\n\t\t\tcanvas.style.width = newWidth + 'px';\n\t\t\tcanvas.style.height = newHeight + 'px';\n\n\t\t\thelpers.retinaScale(me, options.devicePixelRatio);\n\n\t\t\tif (!silent) {\n\t\t\t\t// Notify any plugins about the resize\n\t\t\t\tvar newSize = {width: newWidth, height: newHeight};\n\t\t\t\tplugins.notify(me, 'resize', [newSize]);\n\n\t\t\t\t// Notify of resize\n\t\t\t\tif (me.options.onResize) {\n\t\t\t\t\tme.options.onResize(me, newSize);\n\t\t\t\t}\n\n\t\t\t\tme.stop();\n\t\t\t\tme.update({\n\t\t\t\t\tduration: me.options.responsiveAnimationDuration\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\tensureScalesHaveIDs: function() {\n\t\t\tvar options = this.options;\n\t\t\tvar scalesOptions = options.scales || {};\n\t\t\tvar scaleOptions = options.scale;\n\n\t\t\thelpers.each(scalesOptions.xAxes, function(xAxisOptions, index) {\n\t\t\t\txAxisOptions.id = xAxisOptions.id || ('x-axis-' + index);\n\t\t\t});\n\n\t\t\thelpers.each(scalesOptions.yAxes, function(yAxisOptions, index) {\n\t\t\t\tyAxisOptions.id = yAxisOptions.id || ('y-axis-' + index);\n\t\t\t});\n\n\t\t\tif (scaleOptions) {\n\t\t\t\tscaleOptions.id = scaleOptions.id || 'scale';\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Builds a map of scale ID to scale object for future lookup.\n\t\t */\n\t\tbuildOrUpdateScales: function() {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\t\t\tvar scales = me.scales || {};\n\t\t\tvar items = [];\n\t\t\tvar updated = Object.keys(scales).reduce(function(obj, id) {\n\t\t\t\tobj[id] = false;\n\t\t\t\treturn obj;\n\t\t\t}, {});\n\n\t\t\tif (options.scales) {\n\t\t\t\titems = items.concat(\n\t\t\t\t\t(options.scales.xAxes || []).map(function(xAxisOptions) {\n\t\t\t\t\t\treturn {options: xAxisOptions, dtype: 'category', dposition: 'bottom'};\n\t\t\t\t\t}),\n\t\t\t\t\t(options.scales.yAxes || []).map(function(yAxisOptions) {\n\t\t\t\t\t\treturn {options: yAxisOptions, dtype: 'linear', dposition: 'left'};\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (options.scale) {\n\t\t\t\titems.push({\n\t\t\t\t\toptions: options.scale,\n\t\t\t\t\tdtype: 'radialLinear',\n\t\t\t\t\tisDefault: true,\n\t\t\t\t\tdposition: 'chartArea'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thelpers.each(items, function(item) {\n\t\t\t\tvar scaleOptions = item.options;\n\t\t\t\tvar id = scaleOptions.id;\n\t\t\t\tvar scaleType = helpers.valueOrDefault(scaleOptions.type, item.dtype);\n\n\t\t\t\tif (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) {\n\t\t\t\t\tscaleOptions.position = item.dposition;\n\t\t\t\t}\n\n\t\t\t\tupdated[id] = true;\n\t\t\t\tvar scale = null;\n\t\t\t\tif (id in scales && scales[id].type === scaleType) {\n\t\t\t\t\tscale = scales[id];\n\t\t\t\t\tscale.options = scaleOptions;\n\t\t\t\t\tscale.ctx = me.ctx;\n\t\t\t\t\tscale.chart = me;\n\t\t\t\t} else {\n\t\t\t\t\tvar scaleClass = scaleService.getScaleConstructor(scaleType);\n\t\t\t\t\tif (!scaleClass) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tscale = new scaleClass({\n\t\t\t\t\t\tid: id,\n\t\t\t\t\t\ttype: scaleType,\n\t\t\t\t\t\toptions: scaleOptions,\n\t\t\t\t\t\tctx: me.ctx,\n\t\t\t\t\t\tchart: me\n\t\t\t\t\t});\n\t\t\t\t\tscales[scale.id] = scale;\n\t\t\t\t}\n\n\t\t\t\tscale.mergeTicksOptions();\n\n\t\t\t\t// TODO(SB): I think we should be able to remove this custom case (options.scale)\n\t\t\t\t// and consider it as a regular scale part of the \"scales\"\" map only! This would\n\t\t\t\t// make the logic easier and remove some useless? custom code.\n\t\t\t\tif (item.isDefault) {\n\t\t\t\t\tme.scale = scale;\n\t\t\t\t}\n\t\t\t});\n\t\t\t// clear up discarded scales\n\t\t\thelpers.each(updated, function(hasUpdated, id) {\n\t\t\t\tif (!hasUpdated) {\n\t\t\t\t\tdelete scales[id];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tme.scales = scales;\n\n\t\t\tscaleService.addScalesToLayout(this);\n\t\t},\n\n\t\tbuildOrUpdateControllers: function() {\n\t\t\tvar me = this;\n\t\t\tvar types = [];\n\t\t\tvar newControllers = [];\n\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tvar meta = me.getDatasetMeta(datasetIndex);\n\t\t\t\tvar type = dataset.type || me.config.type;\n\n\t\t\t\tif (meta.type && meta.type !== type) {\n\t\t\t\t\tme.destroyDatasetMeta(datasetIndex);\n\t\t\t\t\tmeta = me.getDatasetMeta(datasetIndex);\n\t\t\t\t}\n\t\t\t\tmeta.type = type;\n\n\t\t\t\ttypes.push(meta.type);\n\n\t\t\t\tif (meta.controller) {\n\t\t\t\t\tmeta.controller.updateIndex(datasetIndex);\n\t\t\t\t\tmeta.controller.linkScales();\n\t\t\t\t} else {\n\t\t\t\t\tvar ControllerClass = Chart.controllers[meta.type];\n\t\t\t\t\tif (ControllerClass === undefined) {\n\t\t\t\t\t\tthrow new Error('\"' + meta.type + '\" is not a chart type.');\n\t\t\t\t\t}\n\n\t\t\t\t\tmeta.controller = new ControllerClass(me, datasetIndex);\n\t\t\t\t\tnewControllers.push(meta.controller);\n\t\t\t\t}\n\t\t\t}, me);\n\n\t\t\treturn newControllers;\n\t\t},\n\n\t\t/**\n\t\t * Reset the elements of all datasets\n\t\t * @private\n\t\t */\n\t\tresetElements: function() {\n\t\t\tvar me = this;\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tme.getDatasetMeta(datasetIndex).controller.reset();\n\t\t\t}, me);\n\t\t},\n\n\t\t/**\n\t\t* Resets the chart back to it's state before the initial animation\n\t\t*/\n\t\treset: function() {\n\t\t\tthis.resetElements();\n\t\t\tthis.tooltip.initialize();\n\t\t},\n\n\t\tupdate: function(config) {\n\t\t\tvar me = this;\n\n\t\t\tif (!config || typeof config !== 'object') {\n\t\t\t\t// backwards compatibility\n\t\t\t\tconfig = {\n\t\t\t\t\tduration: config,\n\t\t\t\t\tlazy: arguments[1]\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tupdateConfig(me);\n\n\t\t\t// plugins options references might have change, let's invalidate the cache\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n\t\t\tplugins._invalidate(me);\n\n\t\t\tif (plugins.notify(me, 'beforeUpdate') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// In case the entire data object changed\n\t\t\tme.tooltip._data = me.data;\n\n\t\t\t// Make sure dataset controllers are updated and new controllers are reset\n\t\t\tvar newControllers = me.buildOrUpdateControllers();\n\n\t\t\t// Make sure all dataset controllers have correct meta data counts\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tme.getDatasetMeta(datasetIndex).controller.buildOrUpdateElements();\n\t\t\t}, me);\n\n\t\t\tme.updateLayout();\n\n\t\t\t// Can only reset the new controllers after the scales have been updated\n\t\t\tif (me.options.animation && me.options.animation.duration) {\n\t\t\t\thelpers.each(newControllers, function(controller) {\n\t\t\t\t\tcontroller.reset();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tme.updateDatasets();\n\n\t\t\t// Need to reset tooltip in case it is displayed with elements that are removed\n\t\t\t// after update.\n\t\t\tme.tooltip.initialize();\n\n\t\t\t// Last active contains items that were previously in the tooltip.\n\t\t\t// When we reset the tooltip, we need to clear it\n\t\t\tme.lastActive = [];\n\n\t\t\t// Do this before render so that any plugins that need final scale updates can use it\n\t\t\tplugins.notify(me, 'afterUpdate');\n\n\t\t\tif (me._bufferedRender) {\n\t\t\t\tme._bufferedRequest = {\n\t\t\t\t\tduration: config.duration,\n\t\t\t\t\teasing: config.easing,\n\t\t\t\t\tlazy: config.lazy\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tme.render(config);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\n\t\t * hook, in which case, plugins will not be called on `afterLayout`.\n\t\t * @private\n\t\t */\n\t\tupdateLayout: function() {\n\t\t\tvar me = this;\n\n\t\t\tif (plugins.notify(me, 'beforeLayout') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlayouts.update(this, this.width, this.height);\n\n\t\t\t/**\n\t\t\t * Provided for backward compatibility, use `afterLayout` instead.\n\t\t\t * @method IPlugin#afterScaleUpdate\n\t\t\t * @deprecated since version 2.5.0\n\t\t\t * @todo remove at version 3\n\t\t\t * @private\n\t\t\t */\n\t\t\tplugins.notify(me, 'afterScaleUpdate');\n\t\t\tplugins.notify(me, 'afterLayout');\n\t\t},\n\n\t\t/**\n\t\t * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\n\t\t * @private\n\t\t */\n\t\tupdateDatasets: function() {\n\t\t\tvar me = this;\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetsUpdate') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n\t\t\t\tme.updateDataset(i);\n\t\t\t}\n\n\t\t\tplugins.notify(me, 'afterDatasetsUpdate');\n\t\t},\n\n\t\t/**\n\t\t * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\n\t\t * @private\n\t\t */\n\t\tupdateDataset: function(index) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getDatasetMeta(index);\n\t\t\tvar args = {\n\t\t\t\tmeta: meta,\n\t\t\t\tindex: index\n\t\t\t};\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmeta.controller.update();\n\n\t\t\tplugins.notify(me, 'afterDatasetUpdate', [args]);\n\t\t},\n\n\t\trender: function(config) {\n\t\t\tvar me = this;\n\n\t\t\tif (!config || typeof config !== 'object') {\n\t\t\t\t// backwards compatibility\n\t\t\t\tconfig = {\n\t\t\t\t\tduration: config,\n\t\t\t\t\tlazy: arguments[1]\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tvar duration = config.duration;\n\t\t\tvar lazy = config.lazy;\n\n\t\t\tif (plugins.notify(me, 'beforeRender') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar animationOptions = me.options.animation;\n\t\t\tvar onComplete = function(animation) {\n\t\t\t\tplugins.notify(me, 'afterRender');\n\t\t\t\thelpers.callback(animationOptions && animationOptions.onComplete, [animation], me);\n\t\t\t};\n\n\t\t\tif (animationOptions && ((typeof duration !== 'undefined' && duration !== 0) || (typeof duration === 'undefined' && animationOptions.duration !== 0))) {\n\t\t\t\tvar animation = new Animation({\n\t\t\t\t\tnumSteps: (duration || animationOptions.duration) / 16.66, // 60 fps\n\t\t\t\t\teasing: config.easing || animationOptions.easing,\n\n\t\t\t\t\trender: function(chart, animationObject) {\n\t\t\t\t\t\tvar easingFunction = helpers.easing.effects[animationObject.easing];\n\t\t\t\t\t\tvar currentStep = animationObject.currentStep;\n\t\t\t\t\t\tvar stepDecimal = currentStep / animationObject.numSteps;\n\n\t\t\t\t\t\tchart.draw(easingFunction(stepDecimal), stepDecimal, currentStep);\n\t\t\t\t\t},\n\n\t\t\t\t\tonAnimationProgress: animationOptions.onProgress,\n\t\t\t\t\tonAnimationComplete: onComplete\n\t\t\t\t});\n\n\t\t\t\tanimations.addAnimation(me, animation, duration, lazy);\n\t\t\t} else {\n\t\t\t\tme.draw();\n\n\t\t\t\t// See https://github.com/chartjs/Chart.js/issues/3781\n\t\t\t\tonComplete(new Animation({numSteps: 0, chart: me}));\n\t\t\t}\n\n\t\t\treturn me;\n\t\t},\n\n\t\tdraw: function(easingValue) {\n\t\t\tvar me = this;\n\n\t\t\tme.clear();\n\n\t\t\tif (helpers.isNullOrUndef(easingValue)) {\n\t\t\t\teasingValue = 1;\n\t\t\t}\n\n\t\t\tme.transition(easingValue);\n\n\t\t\tif (me.width <= 0 || me.height <= 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (plugins.notify(me, 'beforeDraw', [easingValue]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Draw all the scales\n\t\t\thelpers.each(me.boxes, function(box) {\n\t\t\t\tbox.draw(me.chartArea);\n\t\t\t}, me);\n\n\t\t\tif (me.scale) {\n\t\t\t\tme.scale.draw();\n\t\t\t}\n\n\t\t\tme.drawDatasets(easingValue);\n\t\t\tme._drawTooltip(easingValue);\n\n\t\t\tplugins.notify(me, 'afterDraw', [easingValue]);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\ttransition: function(easingValue) {\n\t\t\tvar me = this;\n\n\t\t\tfor (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tif (me.isDatasetVisible(i)) {\n\t\t\t\t\tme.getDatasetMeta(i).controller.transition(easingValue);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tme.tooltip.transition(easingValue);\n\t\t},\n\n\t\t/**\n\t\t * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\n\t\t * @private\n\t\t */\n\t\tdrawDatasets: function(easingValue) {\n\t\t\tvar me = this;\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Draw datasets reversed to support proper line stacking\n\t\t\tfor (var i = (me.data.datasets || []).length - 1; i >= 0; --i) {\n\t\t\t\tif (me.isDatasetVisible(i)) {\n\t\t\t\t\tme.drawDataset(i, easingValue);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tplugins.notify(me, 'afterDatasetsDraw', [easingValue]);\n\t\t},\n\n\t\t/**\n\t\t * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetDraw`.\n\t\t * @private\n\t\t */\n\t\tdrawDataset: function(index, easingValue) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getDatasetMeta(index);\n\t\t\tvar args = {\n\t\t\t\tmeta: meta,\n\t\t\t\tindex: index,\n\t\t\t\teasingValue: easingValue\n\t\t\t};\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetDraw', [args]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmeta.controller.draw(easingValue);\n\n\t\t\tplugins.notify(me, 'afterDatasetDraw', [args]);\n\t\t},\n\n\t\t/**\n\t\t * Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw`\n\t\t * hook, in which case, plugins will not be called on `afterTooltipDraw`.\n\t\t * @private\n\t\t */\n\t\t_drawTooltip: function(easingValue) {\n\t\t\tvar me = this;\n\t\t\tvar tooltip = me.tooltip;\n\t\t\tvar args = {\n\t\t\t\ttooltip: tooltip,\n\t\t\t\teasingValue: easingValue\n\t\t\t};\n\n\t\t\tif (plugins.notify(me, 'beforeTooltipDraw', [args]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttooltip.draw();\n\n\t\t\tplugins.notify(me, 'afterTooltipDraw', [args]);\n\t\t},\n\n\t\t// Get the single element that was clicked on\n\t\t// @return : An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw\n\t\tgetElementAtEvent: function(e) {\n\t\t\treturn Interaction.modes.single(this, e);\n\t\t},\n\n\t\tgetElementsAtEvent: function(e) {\n\t\t\treturn Interaction.modes.label(this, e, {intersect: true});\n\t\t},\n\n\t\tgetElementsAtXAxis: function(e) {\n\t\t\treturn Interaction.modes['x-axis'](this, e, {intersect: true});\n\t\t},\n\n\t\tgetElementsAtEventForMode: function(e, mode, options) {\n\t\t\tvar method = Interaction.modes[mode];\n\t\t\tif (typeof method === 'function') {\n\t\t\t\treturn method(this, e, options);\n\t\t\t}\n\n\t\t\treturn [];\n\t\t},\n\n\t\tgetDatasetAtEvent: function(e) {\n\t\t\treturn Interaction.modes.dataset(this, e, {intersect: true});\n\t\t},\n\n\t\tgetDatasetMeta: function(datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar dataset = me.data.datasets[datasetIndex];\n\t\t\tif (!dataset._meta) {\n\t\t\t\tdataset._meta = {};\n\t\t\t}\n\n\t\t\tvar meta = dataset._meta[me.id];\n\t\t\tif (!meta) {\n\t\t\t\tmeta = dataset._meta[me.id] = {\n\t\t\t\t\ttype: null,\n\t\t\t\t\tdata: [],\n\t\t\t\t\tdataset: null,\n\t\t\t\t\tcontroller: null,\n\t\t\t\t\thidden: null,\t\t\t// See isDatasetVisible() comment\n\t\t\t\t\txAxisID: null,\n\t\t\t\t\tyAxisID: null\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn meta;\n\t\t},\n\n\t\tgetVisibleDatasetCount: function() {\n\t\t\tvar count = 0;\n\t\t\tfor (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n\t\t\t\tif (this.isDatasetVisible(i)) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\tisDatasetVisible: function(datasetIndex) {\n\t\t\tvar meta = this.getDatasetMeta(datasetIndex);\n\n\t\t\t// meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\n\t\t\t// the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\n\t\t\treturn typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden;\n\t\t},\n\n\t\tgenerateLegend: function() {\n\t\t\treturn this.options.legendCallback(this);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tdestroyDatasetMeta: function(datasetIndex) {\n\t\t\tvar id = this.id;\n\t\t\tvar dataset = this.data.datasets[datasetIndex];\n\t\t\tvar meta = dataset._meta && dataset._meta[id];\n\n\t\t\tif (meta) {\n\t\t\t\tmeta.controller.destroy();\n\t\t\t\tdelete dataset._meta[id];\n\t\t\t}\n\t\t},\n\n\t\tdestroy: function() {\n\t\t\tvar me = this;\n\t\t\tvar canvas = me.canvas;\n\t\t\tvar i, ilen;\n\n\t\t\tme.stop();\n\n\t\t\t// dataset controllers need to cleanup associated data\n\t\t\tfor (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n\t\t\t\tme.destroyDatasetMeta(i);\n\t\t\t}\n\n\t\t\tif (canvas) {\n\t\t\t\tme.unbindEvents();\n\t\t\t\thelpers.canvas.clear(me);\n\t\t\t\tplatform.releaseContext(me.ctx);\n\t\t\t\tme.canvas = null;\n\t\t\t\tme.ctx = null;\n\t\t\t}\n\n\t\t\tplugins.notify(me, 'destroy');\n\n\t\t\tdelete Chart.instances[me.id];\n\t\t},\n\n\t\ttoBase64Image: function() {\n\t\t\treturn this.canvas.toDataURL.apply(this.canvas, arguments);\n\t\t},\n\n\t\tinitToolTip: function() {\n\t\t\tvar me = this;\n\t\t\tme.tooltip = new Tooltip({\n\t\t\t\t_chart: me,\n\t\t\t\t_chartInstance: me, // deprecated, backward compatibility\n\t\t\t\t_data: me.data,\n\t\t\t\t_options: me.options.tooltips\n\t\t\t}, me);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tbindEvents: function() {\n\t\t\tvar me = this;\n\t\t\tvar listeners = me._listeners = {};\n\t\t\tvar listener = function() {\n\t\t\t\tme.eventHandler.apply(me, arguments);\n\t\t\t};\n\n\t\t\thelpers.each(me.options.events, function(type) {\n\t\t\t\tplatform.addEventListener(me, type, listener);\n\t\t\t\tlisteners[type] = listener;\n\t\t\t});\n\n\t\t\t// Elements used to detect size change should not be injected for non responsive charts.\n\t\t\t// See https://github.com/chartjs/Chart.js/issues/2210\n\t\t\tif (me.options.responsive) {\n\t\t\t\tlistener = function() {\n\t\t\t\t\tme.resize();\n\t\t\t\t};\n\n\t\t\t\tplatform.addEventListener(me, 'resize', listener);\n\t\t\t\tlisteners.resize = listener;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tunbindEvents: function() {\n\t\t\tvar me = this;\n\t\t\tvar listeners = me._listeners;\n\t\t\tif (!listeners) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdelete me._listeners;\n\t\t\thelpers.each(listeners, function(listener, type) {\n\t\t\t\tplatform.removeEventListener(me, type, listener);\n\t\t\t});\n\t\t},\n\n\t\tupdateHoverStyle: function(elements, mode, enabled) {\n\t\t\tvar method = enabled ? 'setHoverStyle' : 'removeHoverStyle';\n\t\t\tvar element, i, ilen;\n\n\t\t\tfor (i = 0, ilen = elements.length; i < ilen; ++i) {\n\t\t\t\telement = elements[i];\n\t\t\t\tif (element) {\n\t\t\t\t\tthis.getDatasetMeta(element._datasetIndex).controller[method](element);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\teventHandler: function(e) {\n\t\t\tvar me = this;\n\t\t\tvar tooltip = me.tooltip;\n\n\t\t\tif (plugins.notify(me, 'beforeEvent', [e]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Buffer any update calls so that renders do not occur\n\t\t\tme._bufferedRender = true;\n\t\t\tme._bufferedRequest = null;\n\n\t\t\tvar changed = me.handleEvent(e);\n\t\t\t// for smooth tooltip animations issue #4989\n\t\t\t// the tooltip should be the source of change\n\t\t\t// Animation check workaround:\n\t\t\t// tooltip._start will be null when tooltip isn't animating\n\t\t\tif (tooltip) {\n\t\t\t\tchanged = tooltip._start\n\t\t\t\t\t? tooltip.handleEvent(e)\n\t\t\t\t\t: changed | tooltip.handleEvent(e);\n\t\t\t}\n\n\t\t\tplugins.notify(me, 'afterEvent', [e]);\n\n\t\t\tvar bufferedRequest = me._bufferedRequest;\n\t\t\tif (bufferedRequest) {\n\t\t\t\t// If we have an update that was triggered, we need to do a normal render\n\t\t\t\tme.render(bufferedRequest);\n\t\t\t} else if (changed && !me.animating) {\n\t\t\t\t// If entering, leaving, or changing elements, animate the change via pivot\n\t\t\t\tme.stop();\n\n\t\t\t\t// We only need to render at this point. Updating will cause scales to be\n\t\t\t\t// recomputed generating flicker & using more memory than necessary.\n\t\t\t\tme.render({\n\t\t\t\t\tduration: me.options.hover.animationDuration,\n\t\t\t\t\tlazy: true\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tme._bufferedRender = false;\n\t\t\tme._bufferedRequest = null;\n\n\t\t\treturn me;\n\t\t},\n\n\t\t/**\n\t\t * Handle an event\n\t\t * @private\n\t\t * @param {IEvent} event the event to handle\n\t\t * @return {Boolean} true if the chart needs to re-render\n\t\t */\n\t\thandleEvent: function(e) {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options || {};\n\t\t\tvar hoverOptions = options.hover;\n\t\t\tvar changed = false;\n\n\t\t\tme.lastActive = me.lastActive || [];\n\n\t\t\t// Find Active Elements for hover and tooltips\n\t\t\tif (e.type === 'mouseout') {\n\t\t\t\tme.active = [];\n\t\t\t} else {\n\t\t\t\tme.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions);\n\t\t\t}\n\n\t\t\t// Invoke onHover hook\n\t\t\t// Need to call with native event here to not break backwards compatibility\n\t\t\thelpers.callback(options.onHover || options.hover.onHover, [e.native, me.active], me);\n\n\t\t\tif (e.type === 'mouseup' || e.type === 'click') {\n\t\t\t\tif (options.onClick) {\n\t\t\t\t\t// Use e.native here for backwards compatibility\n\t\t\t\t\toptions.onClick.call(me, e.native, me.active);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove styling for last active (even if it may still be active)\n\t\t\tif (me.lastActive.length) {\n\t\t\t\tme.updateHoverStyle(me.lastActive, hoverOptions.mode, false);\n\t\t\t}\n\n\t\t\t// Built in hover styling\n\t\t\tif (me.active.length && hoverOptions.mode) {\n\t\t\t\tme.updateHoverStyle(me.active, hoverOptions.mode, true);\n\t\t\t}\n\n\t\t\tchanged = !helpers.arrayEquals(me.active, me.lastActive);\n\n\t\t\t// Remember Last Actives\n\t\t\tme.lastActive = me.active;\n\n\t\t\treturn changed;\n\t\t}\n\t});\n\n\t/**\n\t * Provided for backward compatibility, use Chart instead.\n\t * @class Chart.Controller\n\t * @deprecated since version 2.6.0\n\t * @todo remove at version 3\n\t * @private\n\t */\n\tChart.Controller = Chart;\n};\n\n},{\"22\":22,\"23\":23,\"26\":26,\"29\":29,\"31\":31,\"32\":32,\"34\":34,\"36\":36,\"46\":46,\"49\":49}],25:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(46);\n\nmodule.exports = function(Chart) {\n\n\tvar arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\n\n\t/**\n\t * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\n\t * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\n\t * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments.\n\t */\n\tfunction listenArrayEvents(array, listener) {\n\t\tif (array._chartjs) {\n\t\t\tarray._chartjs.listeners.push(listener);\n\t\t\treturn;\n\t\t}\n\n\t\tObject.defineProperty(array, '_chartjs', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: {\n\t\t\t\tlisteners: [listener]\n\t\t\t}\n\t\t});\n\n\t\tarrayEvents.forEach(function(key) {\n\t\t\tvar method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);\n\t\t\tvar base = array[key];\n\n\t\t\tObject.defineProperty(array, key, {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: false,\n\t\t\t\tvalue: function() {\n\t\t\t\t\tvar args = Array.prototype.slice.call(arguments);\n\t\t\t\t\tvar res = base.apply(this, args);\n\n\t\t\t\t\thelpers.each(array._chartjs.listeners, function(object) {\n\t\t\t\t\t\tif (typeof object[method] === 'function') {\n\t\t\t\t\t\t\tobject[method].apply(object, args);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Removes the given array event listener and cleanup extra attached properties (such as\n\t * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\n\t */\n\tfunction unlistenArrayEvents(array, listener) {\n\t\tvar stub = array._chartjs;\n\t\tif (!stub) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar listeners = stub.listeners;\n\t\tvar index = listeners.indexOf(listener);\n\t\tif (index !== -1) {\n\t\t\tlisteners.splice(index, 1);\n\t\t}\n\n\t\tif (listeners.length > 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tarrayEvents.forEach(function(key) {\n\t\t\tdelete array[key];\n\t\t});\n\n\t\tdelete array._chartjs;\n\t}\n\n\t// Base class for all dataset controllers (line, bar, etc)\n\tChart.DatasetController = function(chart, datasetIndex) {\n\t\tthis.initialize(chart, datasetIndex);\n\t};\n\n\thelpers.extend(Chart.DatasetController.prototype, {\n\n\t\t/**\n\t\t * Element type used to generate a meta dataset (e.g. Chart.element.Line).\n\t\t * @type {Chart.core.element}\n\t\t */\n\t\tdatasetElementType: null,\n\n\t\t/**\n\t\t * Element type used to generate a meta data (e.g. Chart.element.Point).\n\t\t * @type {Chart.core.element}\n\t\t */\n\t\tdataElementType: null,\n\n\t\tinitialize: function(chart, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tme.chart = chart;\n\t\t\tme.index = datasetIndex;\n\t\t\tme.linkScales();\n\t\t\tme.addElements();\n\t\t},\n\n\t\tupdateIndex: function(datasetIndex) {\n\t\t\tthis.index = datasetIndex;\n\t\t},\n\n\t\tlinkScales: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar dataset = me.getDataset();\n\n\t\t\tif (meta.xAxisID === null || !(meta.xAxisID in me.chart.scales)) {\n\t\t\t\tmeta.xAxisID = dataset.xAxisID || me.chart.options.scales.xAxes[0].id;\n\t\t\t}\n\t\t\tif (meta.yAxisID === null || !(meta.yAxisID in me.chart.scales)) {\n\t\t\t\tmeta.yAxisID = dataset.yAxisID || me.chart.options.scales.yAxes[0].id;\n\t\t\t}\n\t\t},\n\n\t\tgetDataset: function() {\n\t\t\treturn this.chart.data.datasets[this.index];\n\t\t},\n\n\t\tgetMeta: function() {\n\t\t\treturn this.chart.getDatasetMeta(this.index);\n\t\t},\n\n\t\tgetScaleForId: function(scaleID) {\n\t\t\treturn this.chart.scales[scaleID];\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.update(true);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tdestroy: function() {\n\t\t\tif (this._data) {\n\t\t\t\tunlistenArrayEvents(this._data, this);\n\t\t\t}\n\t\t},\n\n\t\tcreateMetaDataset: function() {\n\t\t\tvar me = this;\n\t\t\tvar type = me.datasetElementType;\n\t\t\treturn type && new type({\n\t\t\t\t_chart: me.chart,\n\t\t\t\t_datasetIndex: me.index\n\t\t\t});\n\t\t},\n\n\t\tcreateMetaData: function(index) {\n\t\t\tvar me = this;\n\t\t\tvar type = me.dataElementType;\n\t\t\treturn type && new type({\n\t\t\t\t_chart: me.chart,\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index\n\t\t\t});\n\t\t},\n\n\t\taddElements: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar data = me.getDataset().data || [];\n\t\t\tvar metaData = meta.data;\n\t\t\tvar i, ilen;\n\n\t\t\tfor (i = 0, ilen = data.length; i < ilen; ++i) {\n\t\t\t\tmetaData[i] = metaData[i] || me.createMetaData(i);\n\t\t\t}\n\n\t\t\tmeta.dataset = meta.dataset || me.createMetaDataset();\n\t\t},\n\n\t\taddElementAndReset: function(index) {\n\t\t\tvar element = this.createMetaData(index);\n\t\t\tthis.getMeta().data.splice(index, 0, element);\n\t\t\tthis.updateElement(element, index, true);\n\t\t},\n\n\t\tbuildOrUpdateElements: function() {\n\t\t\tvar me = this;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar data = dataset.data || (dataset.data = []);\n\n\t\t\t// In order to correctly handle data addition/deletion animation (an thus simulate\n\t\t\t// real-time charts), we need to monitor these data modifications and synchronize\n\t\t\t// the internal meta data accordingly.\n\t\t\tif (me._data !== data) {\n\t\t\t\tif (me._data) {\n\t\t\t\t\t// This case happens when the user replaced the data array instance.\n\t\t\t\t\tunlistenArrayEvents(me._data, me);\n\t\t\t\t}\n\n\t\t\t\tlistenArrayEvents(data, me);\n\t\t\t\tme._data = data;\n\t\t\t}\n\n\t\t\t// Re-sync meta data in case the user replaced the data array or if we missed\n\t\t\t// any updates and so make sure that we handle number of datapoints changing.\n\t\t\tme.resyncElements();\n\t\t},\n\n\t\tupdate: helpers.noop,\n\n\t\ttransition: function(easingValue) {\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar elements = meta.data || [];\n\t\t\tvar ilen = elements.length;\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < ilen; ++i) {\n\t\t\t\telements[i].transition(easingValue);\n\t\t\t}\n\n\t\t\tif (meta.dataset) {\n\t\t\t\tmeta.dataset.transition(easingValue);\n\t\t\t}\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar elements = meta.data || [];\n\t\t\tvar ilen = elements.length;\n\t\t\tvar i = 0;\n\n\t\t\tif (meta.dataset) {\n\t\t\t\tmeta.dataset.draw();\n\t\t\t}\n\n\t\t\tfor (; i < ilen; ++i) {\n\t\t\t\telements[i].draw();\n\t\t\t}\n\t\t},\n\n\t\tremoveHoverStyle: function(element) {\n\t\t\thelpers.merge(element._model, element.$previousStyle || {});\n\t\t\tdelete element.$previousStyle;\n\t\t},\n\n\t\tsetHoverStyle: function(element) {\n\t\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\n\t\t\tvar index = element._index;\n\t\t\tvar custom = element.custom || {};\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\tvar getHoverColor = helpers.getHoverColor;\n\t\t\tvar model = element._model;\n\n\t\t\telement.$previousStyle = {\n\t\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\t\tborderColor: model.borderColor,\n\t\t\t\tborderWidth: model.borderWidth\n\t\t\t};\n\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : valueOrDefault(dataset.hoverBackgroundColor, index, getHoverColor(model.backgroundColor));\n\t\t\tmodel.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : valueOrDefault(dataset.hoverBorderColor, index, getHoverColor(model.borderColor));\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : valueOrDefault(dataset.hoverBorderWidth, index, model.borderWidth);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tresyncElements: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar data = me.getDataset().data;\n\t\t\tvar numMeta = meta.data.length;\n\t\t\tvar numData = data.length;\n\n\t\t\tif (numData < numMeta) {\n\t\t\t\tmeta.data.splice(numData, numMeta - numData);\n\t\t\t} else if (numData > numMeta) {\n\t\t\t\tme.insertElements(numMeta, numData - numMeta);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tinsertElements: function(start, count) {\n\t\t\tfor (var i = 0; i < count; ++i) {\n\t\t\t\tthis.addElementAndReset(start + i);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataPush: function() {\n\t\t\tthis.insertElements(this.getDataset().data.length - 1, arguments.length);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataPop: function() {\n\t\t\tthis.getMeta().data.pop();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataShift: function() {\n\t\t\tthis.getMeta().data.shift();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataSplice: function(start, count) {\n\t\t\tthis.getMeta().data.splice(start, count);\n\t\t\tthis.insertElements(start, arguments.length - 2);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataUnshift: function() {\n\t\t\tthis.insertElements(0, arguments.length);\n\t\t}\n\t});\n\n\tChart.DatasetController.extend = helpers.inherits;\n};\n\n},{\"46\":46}],26:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(46);\n\nmodule.exports = {\n\t/**\n\t * @private\n\t */\n\t_set: function(scope, values) {\n\t\treturn helpers.merge(this[scope] || (this[scope] = {}), values);\n\t}\n};\n\n},{\"46\":46}],27:[function(require,module,exports){\n'use strict';\n\nvar color = require(3);\nvar helpers = require(46);\n\nfunction interpolate(start, view, model, ease) {\n\tvar keys = Object.keys(model);\n\tvar i, ilen, key, actual, origin, target, type, c0, c1;\n\n\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\tkey = keys[i];\n\n\t\ttarget = model[key];\n\n\t\t// if a value is added to the model after pivot() has been called, the view\n\t\t// doesn't contain it, so let's initialize the view to the target value.\n\t\tif (!view.hasOwnProperty(key)) {\n\t\t\tview[key] = target;\n\t\t}\n\n\t\tactual = view[key];\n\n\t\tif (actual === target || key[0] === '_') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!start.hasOwnProperty(key)) {\n\t\t\tstart[key] = actual;\n\t\t}\n\n\t\torigin = start[key];\n\n\t\ttype = typeof target;\n\n\t\tif (type === typeof origin) {\n\t\t\tif (type === 'string') {\n\t\t\t\tc0 = color(origin);\n\t\t\t\tif (c0.valid) {\n\t\t\t\t\tc1 = color(target);\n\t\t\t\t\tif (c1.valid) {\n\t\t\t\t\t\tview[key] = c1.mix(c0, ease).rgbString();\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (type === 'number' && isFinite(origin) && isFinite(target)) {\n\t\t\t\tview[key] = origin + (target - origin) * ease;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tview[key] = target;\n\t}\n}\n\nvar Element = function(configuration) {\n\thelpers.extend(this, configuration);\n\tthis.initialize.apply(this, arguments);\n};\n\nhelpers.extend(Element.prototype, {\n\n\tinitialize: function() {\n\t\tthis.hidden = false;\n\t},\n\n\tpivot: function() {\n\t\tvar me = this;\n\t\tif (!me._view) {\n\t\t\tme._view = helpers.clone(me._model);\n\t\t}\n\t\tme._start = {};\n\t\treturn me;\n\t},\n\n\ttransition: function(ease) {\n\t\tvar me = this;\n\t\tvar model = me._model;\n\t\tvar start = me._start;\n\t\tvar view = me._view;\n\n\t\t// No animation -> No Transition\n\t\tif (!model || ease === 1) {\n\t\t\tme._view = model;\n\t\t\tme._start = null;\n\t\t\treturn me;\n\t\t}\n\n\t\tif (!view) {\n\t\t\tview = me._view = {};\n\t\t}\n\n\t\tif (!start) {\n\t\t\tstart = me._start = {};\n\t\t}\n\n\t\tinterpolate(start, view, model, ease);\n\n\t\treturn me;\n\t},\n\n\ttooltipPosition: function() {\n\t\treturn {\n\t\t\tx: this._model.x,\n\t\t\ty: this._model.y\n\t\t};\n\t},\n\n\thasValue: function() {\n\t\treturn helpers.isNumber(this._model.x) && helpers.isNumber(this._model.y);\n\t}\n});\n\nElement.extend = helpers.inherits;\n\nmodule.exports = Element;\n\n},{\"3\":3,\"46\":46}],28:[function(require,module,exports){\n/* global window: false */\n/* global document: false */\n'use strict';\n\nvar color = require(3);\nvar defaults = require(26);\nvar helpers = require(46);\nvar scaleService = require(34);\n\nmodule.exports = function() {\n\n\t// -- Basic js utility methods\n\n\thelpers.configMerge = function(/* objects ... */) {\n\t\treturn helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), {\n\t\t\tmerger: function(key, target, source, options) {\n\t\t\t\tvar tval = target[key] || {};\n\t\t\t\tvar sval = source[key];\n\n\t\t\t\tif (key === 'scales') {\n\t\t\t\t\t// scale config merging is complex. Add our own function here for that\n\t\t\t\t\ttarget[key] = helpers.scaleMerge(tval, sval);\n\t\t\t\t} else if (key === 'scale') {\n\t\t\t\t\t// used in polar area & radar charts since there is only one scale\n\t\t\t\t\ttarget[key] = helpers.merge(tval, [scaleService.getScaleDefaults(sval.type), sval]);\n\t\t\t\t} else {\n\t\t\t\t\thelpers._merger(key, target, source, options);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\n\thelpers.scaleMerge = function(/* objects ... */) {\n\t\treturn helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), {\n\t\t\tmerger: function(key, target, source, options) {\n\t\t\t\tif (key === 'xAxes' || key === 'yAxes') {\n\t\t\t\t\tvar slen = source[key].length;\n\t\t\t\t\tvar i, type, scale;\n\n\t\t\t\t\tif (!target[key]) {\n\t\t\t\t\t\ttarget[key] = [];\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (i = 0; i < slen; ++i) {\n\t\t\t\t\t\tscale = source[key][i];\n\t\t\t\t\t\ttype = helpers.valueOrDefault(scale.type, key === 'xAxes' ? 'category' : 'linear');\n\n\t\t\t\t\t\tif (i >= target[key].length) {\n\t\t\t\t\t\t\ttarget[key].push({});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!target[key][i].type || (scale.type && scale.type !== target[key][i].type)) {\n\t\t\t\t\t\t\t// new/untyped scale or type changed: let's apply the new defaults\n\t\t\t\t\t\t\t// then merge source scale to correctly overwrite the defaults.\n\t\t\t\t\t\t\thelpers.merge(target[key][i], [scaleService.getScaleDefaults(type), scale]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// scales type are the same\n\t\t\t\t\t\t\thelpers.merge(target[key][i], scale);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\thelpers._merger(key, target, source, options);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\n\thelpers.where = function(collection, filterCallback) {\n\t\tif (helpers.isArray(collection) && Array.prototype.filter) {\n\t\t\treturn collection.filter(filterCallback);\n\t\t}\n\t\tvar filtered = [];\n\n\t\thelpers.each(collection, function(item) {\n\t\t\tif (filterCallback(item)) {\n\t\t\t\tfiltered.push(item);\n\t\t\t}\n\t\t});\n\n\t\treturn filtered;\n\t};\n\thelpers.findIndex = Array.prototype.findIndex ?\n\t\tfunction(array, callback, scope) {\n\t\t\treturn array.findIndex(callback, scope);\n\t\t} :\n\t\tfunction(array, callback, scope) {\n\t\t\tscope = scope === undefined ? array : scope;\n\t\t\tfor (var i = 0, ilen = array.length; i < ilen; ++i) {\n\t\t\t\tif (callback.call(scope, array[i], i, array)) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t};\n\thelpers.findNextWhere = function(arrayToSearch, filterCallback, startIndex) {\n\t\t// Default to start of the array\n\t\tif (helpers.isNullOrUndef(startIndex)) {\n\t\t\tstartIndex = -1;\n\t\t}\n\t\tfor (var i = startIndex + 1; i < arrayToSearch.length; i++) {\n\t\t\tvar currentItem = arrayToSearch[i];\n\t\t\tif (filterCallback(currentItem)) {\n\t\t\t\treturn currentItem;\n\t\t\t}\n\t\t}\n\t};\n\thelpers.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) {\n\t\t// Default to end of the array\n\t\tif (helpers.isNullOrUndef(startIndex)) {\n\t\t\tstartIndex = arrayToSearch.length;\n\t\t}\n\t\tfor (var i = startIndex - 1; i >= 0; i--) {\n\t\t\tvar currentItem = arrayToSearch[i];\n\t\t\tif (filterCallback(currentItem)) {\n\t\t\t\treturn currentItem;\n\t\t\t}\n\t\t}\n\t};\n\n\t// -- Math methods\n\thelpers.isNumber = function(n) {\n\t\treturn !isNaN(parseFloat(n)) && isFinite(n);\n\t};\n\thelpers.almostEquals = function(x, y, epsilon) {\n\t\treturn Math.abs(x - y) < epsilon;\n\t};\n\thelpers.almostWhole = function(x, epsilon) {\n\t\tvar rounded = Math.round(x);\n\t\treturn (((rounded - epsilon) < x) && ((rounded + epsilon) > x));\n\t};\n\thelpers.max = function(array) {\n\t\treturn array.reduce(function(max, value) {\n\t\t\tif (!isNaN(value)) {\n\t\t\t\treturn Math.max(max, value);\n\t\t\t}\n\t\t\treturn max;\n\t\t}, Number.NEGATIVE_INFINITY);\n\t};\n\thelpers.min = function(array) {\n\t\treturn array.reduce(function(min, value) {\n\t\t\tif (!isNaN(value)) {\n\t\t\t\treturn Math.min(min, value);\n\t\t\t}\n\t\t\treturn min;\n\t\t}, Number.POSITIVE_INFINITY);\n\t};\n\thelpers.sign = Math.sign ?\n\t\tfunction(x) {\n\t\t\treturn Math.sign(x);\n\t\t} :\n\t\tfunction(x) {\n\t\t\tx = +x; // convert to a number\n\t\t\tif (x === 0 || isNaN(x)) {\n\t\t\t\treturn x;\n\t\t\t}\n\t\t\treturn x > 0 ? 1 : -1;\n\t\t};\n\thelpers.log10 = Math.log10 ?\n\t\tfunction(x) {\n\t\t\treturn Math.log10(x);\n\t\t} :\n\t\tfunction(x) {\n\t\t\tvar exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10.\n\t\t\t// Check for whole powers of 10,\n\t\t\t// which due to floating point rounding error should be corrected.\n\t\t\tvar powerOf10 = Math.round(exponent);\n\t\t\tvar isPowerOf10 = x === Math.pow(10, powerOf10);\n\n\t\t\treturn isPowerOf10 ? powerOf10 : exponent;\n\t\t};\n\thelpers.toRadians = function(degrees) {\n\t\treturn degrees * (Math.PI / 180);\n\t};\n\thelpers.toDegrees = function(radians) {\n\t\treturn radians * (180 / Math.PI);\n\t};\n\t// Gets the angle from vertical upright to the point about a centre.\n\thelpers.getAngleFromPoint = function(centrePoint, anglePoint) {\n\t\tvar distanceFromXCenter = anglePoint.x - centrePoint.x;\n\t\tvar distanceFromYCenter = anglePoint.y - centrePoint.y;\n\t\tvar radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n\n\t\tvar angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n\n\t\tif (angle < (-0.5 * Math.PI)) {\n\t\t\tangle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n\t\t}\n\n\t\treturn {\n\t\t\tangle: angle,\n\t\t\tdistance: radialDistanceFromCenter\n\t\t};\n\t};\n\thelpers.distanceBetweenPoints = function(pt1, pt2) {\n\t\treturn Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n\t};\n\thelpers.aliasPixel = function(pixelWidth) {\n\t\treturn (pixelWidth % 2 === 0) ? 0 : 0.5;\n\t};\n\thelpers.splineCurve = function(firstPoint, middlePoint, afterPoint, t) {\n\t\t// Props to Rob Spencer at scaled innovation for his post on splining between points\n\t\t// http://scaledinnovation.com/analytics/splines/aboutSplines.html\n\n\t\t// This function must also respect \"skipped\" points\n\n\t\tvar previous = firstPoint.skip ? middlePoint : firstPoint;\n\t\tvar current = middlePoint;\n\t\tvar next = afterPoint.skip ? middlePoint : afterPoint;\n\n\t\tvar d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2));\n\t\tvar d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2));\n\n\t\tvar s01 = d01 / (d01 + d12);\n\t\tvar s12 = d12 / (d01 + d12);\n\n\t\t// If all points are the same, s01 & s02 will be inf\n\t\ts01 = isNaN(s01) ? 0 : s01;\n\t\ts12 = isNaN(s12) ? 0 : s12;\n\n\t\tvar fa = t * s01; // scaling factor for triangle Ta\n\t\tvar fb = t * s12;\n\n\t\treturn {\n\t\t\tprevious: {\n\t\t\t\tx: current.x - fa * (next.x - previous.x),\n\t\t\t\ty: current.y - fa * (next.y - previous.y)\n\t\t\t},\n\t\t\tnext: {\n\t\t\t\tx: current.x + fb * (next.x - previous.x),\n\t\t\t\ty: current.y + fb * (next.y - previous.y)\n\t\t\t}\n\t\t};\n\t};\n\thelpers.EPSILON = Number.EPSILON || 1e-14;\n\thelpers.splineCurveMonotone = function(points) {\n\t\t// This function calculates Bézier control points in a similar way than |splineCurve|,\n\t\t// but preserves monotonicity of the provided data and ensures no local extremums are added\n\t\t// between the dataset discrete points due to the interpolation.\n\t\t// See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n\n\t\tvar pointsWithTangents = (points || []).map(function(point) {\n\t\t\treturn {\n\t\t\t\tmodel: point._model,\n\t\t\t\tdeltaK: 0,\n\t\t\t\tmK: 0\n\t\t\t};\n\t\t});\n\n\t\t// Calculate slopes (deltaK) and initialize tangents (mK)\n\t\tvar pointsLen = pointsWithTangents.length;\n\t\tvar i, pointBefore, pointCurrent, pointAfter;\n\t\tfor (i = 0; i < pointsLen; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tif (pointCurrent.model.skip) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\n\t\t\t\tvar slopeDeltaX = (pointAfter.model.x - pointCurrent.model.x);\n\n\t\t\t\t// In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n\t\t\t\tpointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0;\n\t\t\t}\n\n\t\t\tif (!pointBefore || pointBefore.model.skip) {\n\t\t\t\tpointCurrent.mK = pointCurrent.deltaK;\n\t\t\t} else if (!pointAfter || pointAfter.model.skip) {\n\t\t\t\tpointCurrent.mK = pointBefore.deltaK;\n\t\t\t} else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) {\n\t\t\t\tpointCurrent.mK = 0;\n\t\t\t} else {\n\t\t\t\tpointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2;\n\t\t\t}\n\t\t}\n\n\t\t// Adjust tangents to ensure monotonic properties\n\t\tvar alphaK, betaK, tauK, squaredMagnitude;\n\t\tfor (i = 0; i < pointsLen - 1; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tpointAfter = pointsWithTangents[i + 1];\n\t\t\tif (pointCurrent.model.skip || pointAfter.model.skip) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (helpers.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) {\n\t\t\t\tpointCurrent.mK = pointAfter.mK = 0;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\talphaK = pointCurrent.mK / pointCurrent.deltaK;\n\t\t\tbetaK = pointAfter.mK / pointCurrent.deltaK;\n\t\t\tsquaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n\t\t\tif (squaredMagnitude <= 9) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\ttauK = 3 / Math.sqrt(squaredMagnitude);\n\t\t\tpointCurrent.mK = alphaK * tauK * pointCurrent.deltaK;\n\t\t\tpointAfter.mK = betaK * tauK * pointCurrent.deltaK;\n\t\t}\n\n\t\t// Compute control points\n\t\tvar deltaX;\n\t\tfor (i = 0; i < pointsLen; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tif (pointCurrent.model.skip) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\n\t\t\tif (pointBefore && !pointBefore.model.skip) {\n\t\t\t\tdeltaX = (pointCurrent.model.x - pointBefore.model.x) / 3;\n\t\t\t\tpointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX;\n\t\t\t\tpointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK;\n\t\t\t}\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\n\t\t\t\tdeltaX = (pointAfter.model.x - pointCurrent.model.x) / 3;\n\t\t\t\tpointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX;\n\t\t\t\tpointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK;\n\t\t\t}\n\t\t}\n\t};\n\thelpers.nextItem = function(collection, index, loop) {\n\t\tif (loop) {\n\t\t\treturn index >= collection.length - 1 ? collection[0] : collection[index + 1];\n\t\t}\n\t\treturn index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1];\n\t};\n\thelpers.previousItem = function(collection, index, loop) {\n\t\tif (loop) {\n\t\t\treturn index <= 0 ? collection[collection.length - 1] : collection[index - 1];\n\t\t}\n\t\treturn index <= 0 ? collection[0] : collection[index - 1];\n\t};\n\t// Implementation of the nice number algorithm used in determining where axis labels will go\n\thelpers.niceNum = function(range, round) {\n\t\tvar exponent = Math.floor(helpers.log10(range));\n\t\tvar fraction = range / Math.pow(10, exponent);\n\t\tvar niceFraction;\n\n\t\tif (round) {\n\t\t\tif (fraction < 1.5) {\n\t\t\t\tniceFraction = 1;\n\t\t\t} else if (fraction < 3) {\n\t\t\t\tniceFraction = 2;\n\t\t\t} else if (fraction < 7) {\n\t\t\t\tniceFraction = 5;\n\t\t\t} else {\n\t\t\t\tniceFraction = 10;\n\t\t\t}\n\t\t} else if (fraction <= 1.0) {\n\t\t\tniceFraction = 1;\n\t\t} else if (fraction <= 2) {\n\t\t\tniceFraction = 2;\n\t\t} else if (fraction <= 5) {\n\t\t\tniceFraction = 5;\n\t\t} else {\n\t\t\tniceFraction = 10;\n\t\t}\n\n\t\treturn niceFraction * Math.pow(10, exponent);\n\t};\n\t// Request animation polyfill - http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/\n\thelpers.requestAnimFrame = (function() {\n\t\tif (typeof window === 'undefined') {\n\t\t\treturn function(callback) {\n\t\t\t\tcallback();\n\t\t\t};\n\t\t}\n\t\treturn window.requestAnimationFrame ||\n\t\t\twindow.webkitRequestAnimationFrame ||\n\t\t\twindow.mozRequestAnimationFrame ||\n\t\t\twindow.oRequestAnimationFrame ||\n\t\t\twindow.msRequestAnimationFrame ||\n\t\t\tfunction(callback) {\n\t\t\t\treturn window.setTimeout(callback, 1000 / 60);\n\t\t\t};\n\t}());\n\t// -- DOM methods\n\thelpers.getRelativePosition = function(evt, chart) {\n\t\tvar mouseX, mouseY;\n\t\tvar e = evt.originalEvent || evt;\n\t\tvar canvas = evt.target || evt.srcElement;\n\t\tvar boundingRect = canvas.getBoundingClientRect();\n\n\t\tvar touches = e.touches;\n\t\tif (touches && touches.length > 0) {\n\t\t\tmouseX = touches[0].clientX;\n\t\t\tmouseY = touches[0].clientY;\n\n\t\t} else {\n\t\t\tmouseX = e.clientX;\n\t\t\tmouseY = e.clientY;\n\t\t}\n\n\t\t// Scale mouse coordinates into canvas coordinates\n\t\t// by following the pattern laid out by 'jerryj' in the comments of\n\t\t// http://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/\n\t\tvar paddingLeft = parseFloat(helpers.getStyle(canvas, 'padding-left'));\n\t\tvar paddingTop = parseFloat(helpers.getStyle(canvas, 'padding-top'));\n\t\tvar paddingRight = parseFloat(helpers.getStyle(canvas, 'padding-right'));\n\t\tvar paddingBottom = parseFloat(helpers.getStyle(canvas, 'padding-bottom'));\n\t\tvar width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight;\n\t\tvar height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom;\n\n\t\t// We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However\n\t\t// the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here\n\t\tmouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / (width) * canvas.width / chart.currentDevicePixelRatio);\n\t\tmouseY = Math.round((mouseY - boundingRect.top - paddingTop) / (height) * canvas.height / chart.currentDevicePixelRatio);\n\n\t\treturn {\n\t\t\tx: mouseX,\n\t\t\ty: mouseY\n\t\t};\n\n\t};\n\n\t// Private helper function to convert max-width/max-height values that may be percentages into a number\n\tfunction parseMaxStyle(styleValue, node, parentProperty) {\n\t\tvar valueInPixels;\n\t\tif (typeof styleValue === 'string') {\n\t\t\tvalueInPixels = parseInt(styleValue, 10);\n\n\t\t\tif (styleValue.indexOf('%') !== -1) {\n\t\t\t\t// percentage * size in dimension\n\t\t\t\tvalueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n\t\t\t}\n\t\t} else {\n\t\t\tvalueInPixels = styleValue;\n\t\t}\n\n\t\treturn valueInPixels;\n\t}\n\n\t/**\n\t * Returns if the given value contains an effective constraint.\n\t * @private\n\t */\n\tfunction isConstrainedValue(value) {\n\t\treturn value !== undefined && value !== null && value !== 'none';\n\t}\n\n\t// Private helper to get a constraint dimension\n\t// @param domNode : the node to check the constraint on\n\t// @param maxStyle : the style that defines the maximum for the direction we are using (maxWidth / maxHeight)\n\t// @param percentageProperty : property of parent to use when calculating width as a percentage\n\t// @see http://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser\n\tfunction getConstraintDimension(domNode, maxStyle, percentageProperty) {\n\t\tvar view = document.defaultView;\n\t\tvar parentNode = helpers._getParentNode(domNode);\n\t\tvar constrainedNode = view.getComputedStyle(domNode)[maxStyle];\n\t\tvar constrainedContainer = view.getComputedStyle(parentNode)[maxStyle];\n\t\tvar hasCNode = isConstrainedValue(constrainedNode);\n\t\tvar hasCContainer = isConstrainedValue(constrainedContainer);\n\t\tvar infinity = Number.POSITIVE_INFINITY;\n\n\t\tif (hasCNode || hasCContainer) {\n\t\t\treturn Math.min(\n\t\t\t\thasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity,\n\t\t\t\thasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity);\n\t\t}\n\n\t\treturn 'none';\n\t}\n\t// returns Number or undefined if no constraint\n\thelpers.getConstraintWidth = function(domNode) {\n\t\treturn getConstraintDimension(domNode, 'max-width', 'clientWidth');\n\t};\n\t// returns Number or undefined if no constraint\n\thelpers.getConstraintHeight = function(domNode) {\n\t\treturn getConstraintDimension(domNode, 'max-height', 'clientHeight');\n\t};\n\t/**\n\t * @private\n \t */\n\thelpers._calculatePadding = function(container, padding, parentDimension) {\n\t\tpadding = helpers.getStyle(container, padding);\n\n\t\treturn padding.indexOf('%') > -1 ? parentDimension / parseInt(padding, 10) : parseInt(padding, 10);\n\t};\n\t/**\n\t * @private\n\t */\n\thelpers._getParentNode = function(domNode) {\n\t\tvar parent = domNode.parentNode;\n\t\tif (parent && parent.host) {\n\t\t\tparent = parent.host;\n\t\t}\n\t\treturn parent;\n\t};\n\thelpers.getMaximumWidth = function(domNode) {\n\t\tvar container = helpers._getParentNode(domNode);\n\t\tif (!container) {\n\t\t\treturn domNode.clientWidth;\n\t\t}\n\n\t\tvar clientWidth = container.clientWidth;\n\t\tvar paddingLeft = helpers._calculatePadding(container, 'padding-left', clientWidth);\n\t\tvar paddingRight = helpers._calculatePadding(container, 'padding-right', clientWidth);\n\n\t\tvar w = clientWidth - paddingLeft - paddingRight;\n\t\tvar cw = helpers.getConstraintWidth(domNode);\n\t\treturn isNaN(cw) ? w : Math.min(w, cw);\n\t};\n\thelpers.getMaximumHeight = function(domNode) {\n\t\tvar container = helpers._getParentNode(domNode);\n\t\tif (!container) {\n\t\t\treturn domNode.clientHeight;\n\t\t}\n\n\t\tvar clientHeight = container.clientHeight;\n\t\tvar paddingTop = helpers._calculatePadding(container, 'padding-top', clientHeight);\n\t\tvar paddingBottom = helpers._calculatePadding(container, 'padding-bottom', clientHeight);\n\n\t\tvar h = clientHeight - paddingTop - paddingBottom;\n\t\tvar ch = helpers.getConstraintHeight(domNode);\n\t\treturn isNaN(ch) ? h : Math.min(h, ch);\n\t};\n\thelpers.getStyle = function(el, property) {\n\t\treturn el.currentStyle ?\n\t\t\tel.currentStyle[property] :\n\t\t\tdocument.defaultView.getComputedStyle(el, null).getPropertyValue(property);\n\t};\n\thelpers.retinaScale = function(chart, forceRatio) {\n\t\tvar pixelRatio = chart.currentDevicePixelRatio = forceRatio || (typeof window !== 'undefined' && window.devicePixelRatio) || 1;\n\t\tif (pixelRatio === 1) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar canvas = chart.canvas;\n\t\tvar height = chart.height;\n\t\tvar width = chart.width;\n\n\t\tcanvas.height = height * pixelRatio;\n\t\tcanvas.width = width * pixelRatio;\n\t\tchart.ctx.scale(pixelRatio, pixelRatio);\n\n\t\t// If no style has been set on the canvas, the render size is used as display size,\n\t\t// making the chart visually bigger, so let's enforce it to the \"correct\" values.\n\t\t// See https://github.com/chartjs/Chart.js/issues/3575\n\t\tif (!canvas.style.height && !canvas.style.width) {\n\t\t\tcanvas.style.height = height + 'px';\n\t\t\tcanvas.style.width = width + 'px';\n\t\t}\n\t};\n\t// -- Canvas methods\n\thelpers.fontString = function(pixelSize, fontStyle, fontFamily) {\n\t\treturn fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n\t};\n\thelpers.longestText = function(ctx, font, arrayOfThings, cache) {\n\t\tcache = cache || {};\n\t\tvar data = cache.data = cache.data || {};\n\t\tvar gc = cache.garbageCollect = cache.garbageCollect || [];\n\n\t\tif (cache.font !== font) {\n\t\t\tdata = cache.data = {};\n\t\t\tgc = cache.garbageCollect = [];\n\t\t\tcache.font = font;\n\t\t}\n\n\t\tctx.font = font;\n\t\tvar longest = 0;\n\t\thelpers.each(arrayOfThings, function(thing) {\n\t\t\t// Undefined strings and arrays should not be measured\n\t\t\tif (thing !== undefined && thing !== null && helpers.isArray(thing) !== true) {\n\t\t\t\tlongest = helpers.measureText(ctx, data, gc, longest, thing);\n\t\t\t} else if (helpers.isArray(thing)) {\n\t\t\t\t// if it is an array lets measure each element\n\t\t\t\t// to do maybe simplify this function a bit so we can do this more recursively?\n\t\t\t\thelpers.each(thing, function(nestedThing) {\n\t\t\t\t\t// Undefined strings and arrays should not be measured\n\t\t\t\t\tif (nestedThing !== undefined && nestedThing !== null && !helpers.isArray(nestedThing)) {\n\t\t\t\t\t\tlongest = helpers.measureText(ctx, data, gc, longest, nestedThing);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tvar gcLen = gc.length / 2;\n\t\tif (gcLen > arrayOfThings.length) {\n\t\t\tfor (var i = 0; i < gcLen; i++) {\n\t\t\t\tdelete data[gc[i]];\n\t\t\t}\n\t\t\tgc.splice(0, gcLen);\n\t\t}\n\t\treturn longest;\n\t};\n\thelpers.measureText = function(ctx, data, gc, longest, string) {\n\t\tvar textWidth = data[string];\n\t\tif (!textWidth) {\n\t\t\ttextWidth = data[string] = ctx.measureText(string).width;\n\t\t\tgc.push(string);\n\t\t}\n\t\tif (textWidth > longest) {\n\t\t\tlongest = textWidth;\n\t\t}\n\t\treturn longest;\n\t};\n\thelpers.numberOfLabelLines = function(arrayOfThings) {\n\t\tvar numberOfLines = 1;\n\t\thelpers.each(arrayOfThings, function(thing) {\n\t\t\tif (helpers.isArray(thing)) {\n\t\t\t\tif (thing.length > numberOfLines) {\n\t\t\t\t\tnumberOfLines = thing.length;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn numberOfLines;\n\t};\n\n\thelpers.color = !color ?\n\t\tfunction(value) {\n\t\t\tconsole.error('Color.js not found!');\n\t\t\treturn value;\n\t\t} :\n\t\tfunction(value) {\n\t\t\t/* global CanvasGradient */\n\t\t\tif (value instanceof CanvasGradient) {\n\t\t\t\tvalue = defaults.global.defaultColor;\n\t\t\t}\n\n\t\t\treturn color(value);\n\t\t};\n\n\thelpers.getHoverColor = function(colorValue) {\n\t\t/* global CanvasPattern */\n\t\treturn (colorValue instanceof CanvasPattern) ?\n\t\t\tcolorValue :\n\t\t\thelpers.color(colorValue).saturate(0.5).darken(0.1).rgbString();\n\t};\n};\n\n},{\"26\":26,\"3\":3,\"34\":34,\"46\":46}],29:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(46);\n\n/**\n * Helper function to get relative position for an event\n * @param {Event|IEvent} event - The event to get the position for\n * @param {Chart} chart - The chart\n * @returns {Point} the event position\n */\nfunction getRelativePosition(e, chart) {\n\tif (e.native) {\n\t\treturn {\n\t\t\tx: e.x,\n\t\t\ty: e.y\n\t\t};\n\t}\n\n\treturn helpers.getRelativePosition(e, chart);\n}\n\n/**\n * Helper function to traverse all of the visible elements in the chart\n * @param chart {chart} the chart\n * @param handler {Function} the callback to execute for each visible item\n */\nfunction parseVisibleItems(chart, handler) {\n\tvar datasets = chart.data.datasets;\n\tvar meta, i, j, ilen, jlen;\n\n\tfor (i = 0, ilen = datasets.length; i < ilen; ++i) {\n\t\tif (!chart.isDatasetVisible(i)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tmeta = chart.getDatasetMeta(i);\n\t\tfor (j = 0, jlen = meta.data.length; j < jlen; ++j) {\n\t\t\tvar element = meta.data[j];\n\t\t\tif (!element._view.skip) {\n\t\t\t\thandler(element);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Helper function to get the items that intersect the event position\n * @param items {ChartElement[]} elements to filter\n * @param position {Point} the point to be nearest to\n * @return {ChartElement[]} the nearest items\n */\nfunction getIntersectItems(chart, position) {\n\tvar elements = [];\n\n\tparseVisibleItems(chart, function(element) {\n\t\tif (element.inRange(position.x, position.y)) {\n\t\t\telements.push(element);\n\t\t}\n\t});\n\n\treturn elements;\n}\n\n/**\n * Helper function to get the items nearest to the event position considering all visible items in teh chart\n * @param chart {Chart} the chart to look at elements from\n * @param position {Point} the point to be nearest to\n * @param intersect {Boolean} if true, only consider items that intersect the position\n * @param distanceMetric {Function} function to provide the distance between points\n * @return {ChartElement[]} the nearest items\n */\nfunction getNearestItems(chart, position, intersect, distanceMetric) {\n\tvar minDistance = Number.POSITIVE_INFINITY;\n\tvar nearestItems = [];\n\n\tparseVisibleItems(chart, function(element) {\n\t\tif (intersect && !element.inRange(position.x, position.y)) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar center = element.getCenterPoint();\n\t\tvar distance = distanceMetric(position, center);\n\n\t\tif (distance < minDistance) {\n\t\t\tnearestItems = [element];\n\t\t\tminDistance = distance;\n\t\t} else if (distance === minDistance) {\n\t\t\t// Can have multiple items at the same distance in which case we sort by size\n\t\t\tnearestItems.push(element);\n\t\t}\n\t});\n\n\treturn nearestItems;\n}\n\n/**\n * Get a distance metric function for two points based on the\n * axis mode setting\n * @param {String} axis the axis mode. x|y|xy\n */\nfunction getDistanceMetricForAxis(axis) {\n\tvar useX = axis.indexOf('x') !== -1;\n\tvar useY = axis.indexOf('y') !== -1;\n\n\treturn function(pt1, pt2) {\n\t\tvar deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n\t\tvar deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n\t\treturn Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n\t};\n}\n\nfunction indexMode(chart, e, options) {\n\tvar position = getRelativePosition(e, chart);\n\t// Default axis for index mode is 'x' to match old behaviour\n\toptions.axis = options.axis || 'x';\n\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n\tvar elements = [];\n\n\tif (!items.length) {\n\t\treturn [];\n\t}\n\n\tchart.data.datasets.forEach(function(dataset, datasetIndex) {\n\t\tif (chart.isDatasetVisible(datasetIndex)) {\n\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\tvar element = meta.data[items[0]._index];\n\n\t\t\t// don't count items that are skipped (null data)\n\t\t\tif (element && !element._view.skip) {\n\t\t\t\telements.push(element);\n\t\t\t}\n\t\t}\n\t});\n\n\treturn elements;\n}\n\n/**\n * @interface IInteractionOptions\n */\n/**\n * If true, only consider items that intersect the point\n * @name IInterfaceOptions#boolean\n * @type Boolean\n */\n\n/**\n * Contains interaction related functions\n * @namespace Chart.Interaction\n */\nmodule.exports = {\n\t// Helper function for different modes\n\tmodes: {\n\t\tsingle: function(chart, e) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar elements = [];\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\telements.push(element);\n\t\t\t\t\treturn elements;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn elements.slice(0, 1);\n\t\t},\n\n\t\t/**\n\t\t * @function Chart.Interaction.modes.label\n\t\t * @deprecated since version 2.4.0\n\t\t * @todo remove at version 3\n\t\t * @private\n\t\t */\n\t\tlabel: indexMode,\n\n\t\t/**\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\n\t\t * @function Chart.Interaction.modes.index\n\t\t * @since v2.4.0\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use during interaction\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tindex: indexMode,\n\n\t\t/**\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\n\t\t * @function Chart.Interaction.modes.dataset\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use during interaction\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tdataset: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\toptions.axis = options.axis || 'xy';\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\t\t\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n\n\t\t\tif (items.length > 0) {\n\t\t\t\titems = chart.getDatasetMeta(items[0]._datasetIndex).data;\n\t\t\t}\n\n\t\t\treturn items;\n\t\t},\n\n\t\t/**\n\t\t * @function Chart.Interaction.modes.x-axis\n\t\t * @deprecated since version 2.4.0. Use index mode and intersect == true\n\t\t * @todo remove at version 3\n\t\t * @private\n\t\t */\n\t\t'x-axis': function(chart, e) {\n\t\t\treturn indexMode(chart, e, {intersect: false});\n\t\t},\n\n\t\t/**\n\t\t * Point mode returns all elements that hit test based on the event position\n\t\t * of the event\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tpoint: function(chart, e) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\treturn getIntersectItems(chart, position);\n\t\t},\n\n\t\t/**\n\t\t * nearest mode returns the element closest to the point\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tnearest: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\toptions.axis = options.axis || 'xy';\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\t\t\tvar nearestItems = getNearestItems(chart, position, options.intersect, distanceMetric);\n\n\t\t\t// We have multiple items at the same distance from the event. Now sort by smallest\n\t\t\tif (nearestItems.length > 1) {\n\t\t\t\tnearestItems.sort(function(a, b) {\n\t\t\t\t\tvar sizeA = a.getArea();\n\t\t\t\t\tvar sizeB = b.getArea();\n\t\t\t\t\tvar ret = sizeA - sizeB;\n\n\t\t\t\t\tif (ret === 0) {\n\t\t\t\t\t\t// if equal sort by dataset index\n\t\t\t\t\t\tret = a._datasetIndex - b._datasetIndex;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn ret;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Return only 1 item\n\t\t\treturn nearestItems.slice(0, 1);\n\t\t},\n\n\t\t/**\n\t\t * x mode returns the elements that hit-test at the current x coordinate\n\t\t * @function Chart.Interaction.modes.x\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tx: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar items = [];\n\t\t\tvar intersectsItem = false;\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inXRange(position.x)) {\n\t\t\t\t\titems.push(element);\n\t\t\t\t}\n\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\tintersectsItem = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// If we want to trigger on an intersect and we don't have any items\n\t\t\t// that intersect the position, return nothing\n\t\t\tif (options.intersect && !intersectsItem) {\n\t\t\t\titems = [];\n\t\t\t}\n\t\t\treturn items;\n\t\t},\n\n\t\t/**\n\t\t * y mode returns the elements that hit-test at the current y coordinate\n\t\t * @function Chart.Interaction.modes.y\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\ty: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar items = [];\n\t\t\tvar intersectsItem = false;\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inYRange(position.y)) {\n\t\t\t\t\titems.push(element);\n\t\t\t\t}\n\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\tintersectsItem = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// If we want to trigger on an intersect and we don't have any items\n\t\t\t// that intersect the position, return nothing\n\t\t\tif (options.intersect && !intersectsItem) {\n\t\t\t\titems = [];\n\t\t\t}\n\t\t\treturn items;\n\t\t}\n\t}\n};\n\n},{\"46\":46}],30:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\n\ndefaults._set('global', {\n\tresponsive: true,\n\tresponsiveAnimationDuration: 0,\n\tmaintainAspectRatio: true,\n\tevents: ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove'],\n\thover: {\n\t\tonHover: null,\n\t\tmode: 'nearest',\n\t\tintersect: true,\n\t\tanimationDuration: 400\n\t},\n\tonClick: null,\n\tdefaultColor: 'rgba(0,0,0,0.1)',\n\tdefaultFontColor: '#666',\n\tdefaultFontFamily: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n\tdefaultFontSize: 12,\n\tdefaultFontStyle: 'normal',\n\tshowLines: true,\n\n\t// Element defaults defined in element extensions\n\telements: {},\n\n\t// Layout options such as padding\n\tlayout: {\n\t\tpadding: {\n\t\t\ttop: 0,\n\t\t\tright: 0,\n\t\t\tbottom: 0,\n\t\t\tleft: 0\n\t\t}\n\t}\n});\n\nmodule.exports = function() {\n\n\t// Occupy the global variable of Chart, and create a simple base class\n\tvar Chart = function(item, config) {\n\t\tthis.construct(item, config);\n\t\treturn this;\n\t};\n\n\tChart.Chart = Chart;\n\n\treturn Chart;\n};\n\n},{\"26\":26}],31:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(46);\n\nfunction filterByPosition(array, position) {\n\treturn helpers.where(array, function(v) {\n\t\treturn v.position === position;\n\t});\n}\n\nfunction sortByWeight(array, reverse) {\n\tarray.forEach(function(v, i) {\n\t\tv._tmpIndex_ = i;\n\t\treturn v;\n\t});\n\tarray.sort(function(a, b) {\n\t\tvar v0 = reverse ? b : a;\n\t\tvar v1 = reverse ? a : b;\n\t\treturn v0.weight === v1.weight ?\n\t\t\tv0._tmpIndex_ - v1._tmpIndex_ :\n\t\t\tv0.weight - v1.weight;\n\t});\n\tarray.forEach(function(v) {\n\t\tdelete v._tmpIndex_;\n\t});\n}\n\n/**\n * @interface ILayoutItem\n * @prop {String} position - The position of the item in the chart layout. Possible values are\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\n * @prop {Number} weight - The weight used to sort the item. Higher weights are further away from the chart area\n * @prop {Boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down\n * @prop {Function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\n * @prop {Function} update - Takes two parameters: width and height. Returns size of item\n * @prop {Function} getPadding - Returns an object with padding on the edges\n * @prop {Number} width - Width of item. Must be valid after update()\n * @prop {Number} height - Height of item. Must be valid after update()\n * @prop {Number} left - Left edge of the item. Set by layout system and cannot be used in update\n * @prop {Number} top - Top edge of the item. Set by layout system and cannot be used in update\n * @prop {Number} right - Right edge of the item. Set by layout system and cannot be used in update\n * @prop {Number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\n */\n\n// The layout service is very self explanatory. It's responsible for the layout within a chart.\n// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\n// It is this service's responsibility of carrying out that layout.\nmodule.exports = {\n\tdefaults: {},\n\n\t/**\n\t * Register a box to a chart.\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\n\t * @param {Chart} chart - the chart to use\n\t * @param {ILayoutItem} item - the item to add to be layed out\n\t */\n\taddBox: function(chart, item) {\n\t\tif (!chart.boxes) {\n\t\t\tchart.boxes = [];\n\t\t}\n\n\t\t// initialize item with default values\n\t\titem.fullWidth = item.fullWidth || false;\n\t\titem.position = item.position || 'top';\n\t\titem.weight = item.weight || 0;\n\n\t\tchart.boxes.push(item);\n\t},\n\n\t/**\n\t * Remove a layoutItem from a chart\n\t * @param {Chart} chart - the chart to remove the box from\n\t * @param {Object} layoutItem - the item to remove from the layout\n\t */\n\tremoveBox: function(chart, layoutItem) {\n\t\tvar index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n\t\tif (index !== -1) {\n\t\t\tchart.boxes.splice(index, 1);\n\t\t}\n\t},\n\n\t/**\n\t * Sets (or updates) options on the given `item`.\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\n\t * @param {Object} item - the item to configure with the given options\n\t * @param {Object} options - the new item options.\n\t */\n\tconfigure: function(chart, item, options) {\n\t\tvar props = ['fullWidth', 'position', 'weight'];\n\t\tvar ilen = props.length;\n\t\tvar i = 0;\n\t\tvar prop;\n\n\t\tfor (; i < ilen; ++i) {\n\t\t\tprop = props[i];\n\t\t\tif (options.hasOwnProperty(prop)) {\n\t\t\t\titem[prop] = options[prop];\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Fits boxes of the given chart into the given size by having each box measure itself\n\t * then running a fitting algorithm\n\t * @param {Chart} chart - the chart\n\t * @param {Number} width - the width to fit into\n\t * @param {Number} height - the height to fit into\n\t */\n\tupdate: function(chart, width, height) {\n\t\tif (!chart) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar layoutOptions = chart.options.layout || {};\n\t\tvar padding = helpers.options.toPadding(layoutOptions.padding);\n\t\tvar leftPadding = padding.left;\n\t\tvar rightPadding = padding.right;\n\t\tvar topPadding = padding.top;\n\t\tvar bottomPadding = padding.bottom;\n\n\t\tvar leftBoxes = filterByPosition(chart.boxes, 'left');\n\t\tvar rightBoxes = filterByPosition(chart.boxes, 'right');\n\t\tvar topBoxes = filterByPosition(chart.boxes, 'top');\n\t\tvar bottomBoxes = filterByPosition(chart.boxes, 'bottom');\n\t\tvar chartAreaBoxes = filterByPosition(chart.boxes, 'chartArea');\n\n\t\t// Sort boxes by weight. A higher weight is further away from the chart area\n\t\tsortByWeight(leftBoxes, true);\n\t\tsortByWeight(rightBoxes, false);\n\t\tsortByWeight(topBoxes, true);\n\t\tsortByWeight(bottomBoxes, false);\n\n\t\t// Essentially we now have any number of boxes on each of the 4 sides.\n\t\t// Our canvas looks like the following.\n\t\t// The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\n\t\t// B1 is the bottom axis\n\t\t// There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\n\t\t// These locations are single-box locations only, when trying to register a chartArea location that is already taken,\n\t\t// an error will be thrown.\n\t\t//\n\t\t// |----------------------------------------------------|\n\t\t// | T1 (Full Width) |\n\t\t// |----------------------------------------------------|\n\t\t// | | | T2 | |\n\t\t// | |----|-------------------------------------|----|\n\t\t// | | | C1 | | C2 | |\n\t\t// | | |----| |----| |\n\t\t// | | | | |\n\t\t// | L1 | L2 | ChartArea (C0) | R1 |\n\t\t// | | | | |\n\t\t// | | |----| |----| |\n\t\t// | | | C3 | | C4 | |\n\t\t// | |----|-------------------------------------|----|\n\t\t// | | | B1 | |\n\t\t// |----------------------------------------------------|\n\t\t// | B2 (Full Width) |\n\t\t// |----------------------------------------------------|\n\t\t//\n\t\t// What we do to find the best sizing, we do the following\n\t\t// 1. Determine the minimum size of the chart area.\n\t\t// 2. Split the remaining width equally between each vertical axis\n\t\t// 3. Split the remaining height equally between each horizontal axis\n\t\t// 4. Give each layout the maximum size it can be. The layout will return it's minimum size\n\t\t// 5. Adjust the sizes of each axis based on it's minimum reported size.\n\t\t// 6. Refit each axis\n\t\t// 7. Position each axis in the final location\n\t\t// 8. Tell the chart the final location of the chart area\n\t\t// 9. Tell any axes that overlay the chart area the positions of the chart area\n\n\t\t// Step 1\n\t\tvar chartWidth = width - leftPadding - rightPadding;\n\t\tvar chartHeight = height - topPadding - bottomPadding;\n\t\tvar chartAreaWidth = chartWidth / 2; // min 50%\n\t\tvar chartAreaHeight = chartHeight / 2; // min 50%\n\n\t\t// Step 2\n\t\tvar verticalBoxWidth = (width - chartAreaWidth) / (leftBoxes.length + rightBoxes.length);\n\n\t\t// Step 3\n\t\tvar horizontalBoxHeight = (height - chartAreaHeight) / (topBoxes.length + bottomBoxes.length);\n\n\t\t// Step 4\n\t\tvar maxChartAreaWidth = chartWidth;\n\t\tvar maxChartAreaHeight = chartHeight;\n\t\tvar minBoxSizes = [];\n\n\t\tfunction getMinimumBoxSize(box) {\n\t\t\tvar minSize;\n\t\t\tvar isHorizontal = box.isHorizontal();\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tminSize = box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, horizontalBoxHeight);\n\t\t\t\tmaxChartAreaHeight -= minSize.height;\n\t\t\t} else {\n\t\t\t\tminSize = box.update(verticalBoxWidth, maxChartAreaHeight);\n\t\t\t\tmaxChartAreaWidth -= minSize.width;\n\t\t\t}\n\n\t\t\tminBoxSizes.push({\n\t\t\t\thorizontal: isHorizontal,\n\t\t\t\tminSize: minSize,\n\t\t\t\tbox: box,\n\t\t\t});\n\t\t}\n\n\t\thelpers.each(leftBoxes.concat(rightBoxes, topBoxes, bottomBoxes), getMinimumBoxSize);\n\n\t\t// If a horizontal box has padding, we move the left boxes over to avoid ugly charts (see issue #2478)\n\t\tvar maxHorizontalLeftPadding = 0;\n\t\tvar maxHorizontalRightPadding = 0;\n\t\tvar maxVerticalTopPadding = 0;\n\t\tvar maxVerticalBottomPadding = 0;\n\n\t\thelpers.each(topBoxes.concat(bottomBoxes), function(horizontalBox) {\n\t\t\tif (horizontalBox.getPadding) {\n\t\t\t\tvar boxPadding = horizontalBox.getPadding();\n\t\t\t\tmaxHorizontalLeftPadding = Math.max(maxHorizontalLeftPadding, boxPadding.left);\n\t\t\t\tmaxHorizontalRightPadding = Math.max(maxHorizontalRightPadding, boxPadding.right);\n\t\t\t}\n\t\t});\n\n\t\thelpers.each(leftBoxes.concat(rightBoxes), function(verticalBox) {\n\t\t\tif (verticalBox.getPadding) {\n\t\t\t\tvar boxPadding = verticalBox.getPadding();\n\t\t\t\tmaxVerticalTopPadding = Math.max(maxVerticalTopPadding, boxPadding.top);\n\t\t\t\tmaxVerticalBottomPadding = Math.max(maxVerticalBottomPadding, boxPadding.bottom);\n\t\t\t}\n\t\t});\n\n\t\t// At this point, maxChartAreaHeight and maxChartAreaWidth are the size the chart area could\n\t\t// be if the axes are drawn at their minimum sizes.\n\t\t// Steps 5 & 6\n\t\tvar totalLeftBoxesWidth = leftPadding;\n\t\tvar totalRightBoxesWidth = rightPadding;\n\t\tvar totalTopBoxesHeight = topPadding;\n\t\tvar totalBottomBoxesHeight = bottomPadding;\n\n\t\t// Function to fit a box\n\t\tfunction fitBox(box) {\n\t\t\tvar minBoxSize = helpers.findNextWhere(minBoxSizes, function(minBox) {\n\t\t\t\treturn minBox.box === box;\n\t\t\t});\n\n\t\t\tif (minBoxSize) {\n\t\t\t\tif (box.isHorizontal()) {\n\t\t\t\t\tvar scaleMargin = {\n\t\t\t\t\t\tleft: Math.max(totalLeftBoxesWidth, maxHorizontalLeftPadding),\n\t\t\t\t\t\tright: Math.max(totalRightBoxesWidth, maxHorizontalRightPadding),\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tbottom: 0\n\t\t\t\t\t};\n\n\t\t\t\t\t// Don't use min size here because of label rotation. When the labels are rotated, their rotation highly depends\n\t\t\t\t\t// on the margin. Sometimes they need to increase in size slightly\n\t\t\t\t\tbox.update(box.fullWidth ? chartWidth : maxChartAreaWidth, chartHeight / 2, scaleMargin);\n\t\t\t\t} else {\n\t\t\t\t\tbox.update(minBoxSize.minSize.width, maxChartAreaHeight);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Update, and calculate the left and right margins for the horizontal boxes\n\t\thelpers.each(leftBoxes.concat(rightBoxes), fitBox);\n\n\t\thelpers.each(leftBoxes, function(box) {\n\t\t\ttotalLeftBoxesWidth += box.width;\n\t\t});\n\n\t\thelpers.each(rightBoxes, function(box) {\n\t\t\ttotalRightBoxesWidth += box.width;\n\t\t});\n\n\t\t// Set the Left and Right margins for the horizontal boxes\n\t\thelpers.each(topBoxes.concat(bottomBoxes), fitBox);\n\n\t\t// Figure out how much margin is on the top and bottom of the vertical boxes\n\t\thelpers.each(topBoxes, function(box) {\n\t\t\ttotalTopBoxesHeight += box.height;\n\t\t});\n\n\t\thelpers.each(bottomBoxes, function(box) {\n\t\t\ttotalBottomBoxesHeight += box.height;\n\t\t});\n\n\t\tfunction finalFitVerticalBox(box) {\n\t\t\tvar minBoxSize = helpers.findNextWhere(minBoxSizes, function(minSize) {\n\t\t\t\treturn minSize.box === box;\n\t\t\t});\n\n\t\t\tvar scaleMargin = {\n\t\t\t\tleft: 0,\n\t\t\t\tright: 0,\n\t\t\t\ttop: totalTopBoxesHeight,\n\t\t\t\tbottom: totalBottomBoxesHeight\n\t\t\t};\n\n\t\t\tif (minBoxSize) {\n\t\t\t\tbox.update(minBoxSize.minSize.width, maxChartAreaHeight, scaleMargin);\n\t\t\t}\n\t\t}\n\n\t\t// Let the left layout know the final margin\n\t\thelpers.each(leftBoxes.concat(rightBoxes), finalFitVerticalBox);\n\n\t\t// Recalculate because the size of each layout might have changed slightly due to the margins (label rotation for instance)\n\t\ttotalLeftBoxesWidth = leftPadding;\n\t\ttotalRightBoxesWidth = rightPadding;\n\t\ttotalTopBoxesHeight = topPadding;\n\t\ttotalBottomBoxesHeight = bottomPadding;\n\n\t\thelpers.each(leftBoxes, function(box) {\n\t\t\ttotalLeftBoxesWidth += box.width;\n\t\t});\n\n\t\thelpers.each(rightBoxes, function(box) {\n\t\t\ttotalRightBoxesWidth += box.width;\n\t\t});\n\n\t\thelpers.each(topBoxes, function(box) {\n\t\t\ttotalTopBoxesHeight += box.height;\n\t\t});\n\t\thelpers.each(bottomBoxes, function(box) {\n\t\t\ttotalBottomBoxesHeight += box.height;\n\t\t});\n\n\t\t// We may be adding some padding to account for rotated x axis labels\n\t\tvar leftPaddingAddition = Math.max(maxHorizontalLeftPadding - totalLeftBoxesWidth, 0);\n\t\ttotalLeftBoxesWidth += leftPaddingAddition;\n\t\ttotalRightBoxesWidth += Math.max(maxHorizontalRightPadding - totalRightBoxesWidth, 0);\n\n\t\tvar topPaddingAddition = Math.max(maxVerticalTopPadding - totalTopBoxesHeight, 0);\n\t\ttotalTopBoxesHeight += topPaddingAddition;\n\t\ttotalBottomBoxesHeight += Math.max(maxVerticalBottomPadding - totalBottomBoxesHeight, 0);\n\n\t\t// Figure out if our chart area changed. This would occur if the dataset layout label rotation\n\t\t// changed due to the application of the margins in step 6. Since we can only get bigger, this is safe to do\n\t\t// without calling `fit` again\n\t\tvar newMaxChartAreaHeight = height - totalTopBoxesHeight - totalBottomBoxesHeight;\n\t\tvar newMaxChartAreaWidth = width - totalLeftBoxesWidth - totalRightBoxesWidth;\n\n\t\tif (newMaxChartAreaWidth !== maxChartAreaWidth || newMaxChartAreaHeight !== maxChartAreaHeight) {\n\t\t\thelpers.each(leftBoxes, function(box) {\n\t\t\t\tbox.height = newMaxChartAreaHeight;\n\t\t\t});\n\n\t\t\thelpers.each(rightBoxes, function(box) {\n\t\t\t\tbox.height = newMaxChartAreaHeight;\n\t\t\t});\n\n\t\t\thelpers.each(topBoxes, function(box) {\n\t\t\t\tif (!box.fullWidth) {\n\t\t\t\t\tbox.width = newMaxChartAreaWidth;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\thelpers.each(bottomBoxes, function(box) {\n\t\t\t\tif (!box.fullWidth) {\n\t\t\t\t\tbox.width = newMaxChartAreaWidth;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tmaxChartAreaHeight = newMaxChartAreaHeight;\n\t\t\tmaxChartAreaWidth = newMaxChartAreaWidth;\n\t\t}\n\n\t\t// Step 7 - Position the boxes\n\t\tvar left = leftPadding + leftPaddingAddition;\n\t\tvar top = topPadding + topPaddingAddition;\n\n\t\tfunction placeBox(box) {\n\t\t\tif (box.isHorizontal()) {\n\t\t\t\tbox.left = box.fullWidth ? leftPadding : totalLeftBoxesWidth;\n\t\t\t\tbox.right = box.fullWidth ? width - rightPadding : totalLeftBoxesWidth + maxChartAreaWidth;\n\t\t\t\tbox.top = top;\n\t\t\t\tbox.bottom = top + box.height;\n\n\t\t\t\t// Move to next point\n\t\t\t\ttop = box.bottom;\n\n\t\t\t} else {\n\n\t\t\t\tbox.left = left;\n\t\t\t\tbox.right = left + box.width;\n\t\t\t\tbox.top = totalTopBoxesHeight;\n\t\t\t\tbox.bottom = totalTopBoxesHeight + maxChartAreaHeight;\n\n\t\t\t\t// Move to next point\n\t\t\t\tleft = box.right;\n\t\t\t}\n\t\t}\n\n\t\thelpers.each(leftBoxes.concat(topBoxes), placeBox);\n\n\t\t// Account for chart width and height\n\t\tleft += maxChartAreaWidth;\n\t\ttop += maxChartAreaHeight;\n\n\t\thelpers.each(rightBoxes, placeBox);\n\t\thelpers.each(bottomBoxes, placeBox);\n\n\t\t// Step 8\n\t\tchart.chartArea = {\n\t\t\tleft: totalLeftBoxesWidth,\n\t\t\ttop: totalTopBoxesHeight,\n\t\t\tright: totalLeftBoxesWidth + maxChartAreaWidth,\n\t\t\tbottom: totalTopBoxesHeight + maxChartAreaHeight\n\t\t};\n\n\t\t// Step 9\n\t\thelpers.each(chartAreaBoxes, function(box) {\n\t\t\tbox.left = chart.chartArea.left;\n\t\t\tbox.top = chart.chartArea.top;\n\t\t\tbox.right = chart.chartArea.right;\n\t\t\tbox.bottom = chart.chartArea.bottom;\n\n\t\t\tbox.update(maxChartAreaWidth, maxChartAreaHeight);\n\t\t});\n\t}\n};\n\n},{\"46\":46}],32:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar helpers = require(46);\n\ndefaults._set('global', {\n\tplugins: {}\n});\n\n/**\n * The plugin service singleton\n * @namespace Chart.plugins\n * @since 2.1.0\n */\nmodule.exports = {\n\t/**\n\t * Globally registered plugins.\n\t * @private\n\t */\n\t_plugins: [],\n\n\t/**\n\t * This identifier is used to invalidate the descriptors cache attached to each chart\n\t * when a global plugin is registered or unregistered. In this case, the cache ID is\n\t * incremented and descriptors are regenerated during following API calls.\n\t * @private\n\t */\n\t_cacheId: 0,\n\n\t/**\n\t * Registers the given plugin(s) if not already registered.\n\t * @param {Array|Object} plugins plugin instance(s).\n\t */\n\tregister: function(plugins) {\n\t\tvar p = this._plugins;\n\t\t([]).concat(plugins).forEach(function(plugin) {\n\t\t\tif (p.indexOf(plugin) === -1) {\n\t\t\t\tp.push(plugin);\n\t\t\t}\n\t\t});\n\n\t\tthis._cacheId++;\n\t},\n\n\t/**\n\t * Unregisters the given plugin(s) only if registered.\n\t * @param {Array|Object} plugins plugin instance(s).\n\t */\n\tunregister: function(plugins) {\n\t\tvar p = this._plugins;\n\t\t([]).concat(plugins).forEach(function(plugin) {\n\t\t\tvar idx = p.indexOf(plugin);\n\t\t\tif (idx !== -1) {\n\t\t\t\tp.splice(idx, 1);\n\t\t\t}\n\t\t});\n\n\t\tthis._cacheId++;\n\t},\n\n\t/**\n\t * Remove all registered plugins.\n\t * @since 2.1.5\n\t */\n\tclear: function() {\n\t\tthis._plugins = [];\n\t\tthis._cacheId++;\n\t},\n\n\t/**\n\t * Returns the number of registered plugins?\n\t * @returns {Number}\n\t * @since 2.1.5\n\t */\n\tcount: function() {\n\t\treturn this._plugins.length;\n\t},\n\n\t/**\n\t * Returns all registered plugin instances.\n\t * @returns {Array} array of plugin objects.\n\t * @since 2.1.5\n\t */\n\tgetAll: function() {\n\t\treturn this._plugins;\n\t},\n\n\t/**\n\t * Calls enabled plugins for `chart` on the specified hook and with the given args.\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\n\t * returned value can be used, for instance, to interrupt the current action.\n\t * @param {Object} chart - The chart instance for which plugins should be called.\n\t * @param {String} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n\t * @param {Array} [args] - Extra arguments to apply to the hook call.\n\t * @returns {Boolean} false if any of the plugins return false, else returns true.\n\t */\n\tnotify: function(chart, hook, args) {\n\t\tvar descriptors = this.descriptors(chart);\n\t\tvar ilen = descriptors.length;\n\t\tvar i, descriptor, plugin, params, method;\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\tdescriptor = descriptors[i];\n\t\t\tplugin = descriptor.plugin;\n\t\t\tmethod = plugin[hook];\n\t\t\tif (typeof method === 'function') {\n\t\t\t\tparams = [chart].concat(args || []);\n\t\t\t\tparams.push(descriptor.options);\n\t\t\t\tif (method.apply(plugin, params) === false) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t/**\n\t * Returns descriptors of enabled plugins for the given chart.\n\t * @returns {Array} [{ plugin, options }]\n\t * @private\n\t */\n\tdescriptors: function(chart) {\n\t\tvar cache = chart.$plugins || (chart.$plugins = {});\n\t\tif (cache.id === this._cacheId) {\n\t\t\treturn cache.descriptors;\n\t\t}\n\n\t\tvar plugins = [];\n\t\tvar descriptors = [];\n\t\tvar config = (chart && chart.config) || {};\n\t\tvar options = (config.options && config.options.plugins) || {};\n\n\t\tthis._plugins.concat(config.plugins || []).forEach(function(plugin) {\n\t\t\tvar idx = plugins.indexOf(plugin);\n\t\t\tif (idx !== -1) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar id = plugin.id;\n\t\t\tvar opts = options[id];\n\t\t\tif (opts === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (opts === true) {\n\t\t\t\topts = helpers.clone(defaults.global.plugins[id]);\n\t\t\t}\n\n\t\t\tplugins.push(plugin);\n\t\t\tdescriptors.push({\n\t\t\t\tplugin: plugin,\n\t\t\t\toptions: opts || {}\n\t\t\t});\n\t\t});\n\n\t\tcache.descriptors = descriptors;\n\t\tcache.id = this._cacheId;\n\t\treturn descriptors;\n\t},\n\n\t/**\n\t * Invalidates cache for the given chart: descriptors hold a reference on plugin option,\n\t * but in some cases, this reference can be changed by the user when updating options.\n\t * https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n\t * @private\n\t */\n\t_invalidate: function(chart) {\n\t\tdelete chart.$plugins;\n\t}\n};\n\n/**\n * Plugin extension hooks.\n * @interface IPlugin\n * @since 2.1.0\n */\n/**\n * @method IPlugin#beforeInit\n * @desc Called before initializing `chart`.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#afterInit\n * @desc Called after `chart` has been initialized and before the first update.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeUpdate\n * @desc Called before updating `chart`. If any plugin returns `false`, the update\n * is cancelled (and thus subsequent render(s)) until another `update` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart update.\n */\n/**\n * @method IPlugin#afterUpdate\n * @desc Called after `chart` has been updated and before rendering. Note that this\n * hook will not be called if the chart update has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeDatasetsUpdate\n * @desc Called before updating the `chart` datasets. If any plugin returns `false`,\n * the datasets update is cancelled until another `update` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} false to cancel the datasets update.\n * @since version 2.1.5\n*/\n/**\n * @method IPlugin#afterDatasetsUpdate\n * @desc Called after the `chart` datasets have been updated. Note that this hook\n * will not be called if the datasets update has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @since version 2.1.5\n */\n/**\n * @method IPlugin#beforeDatasetUpdate\n * @desc Called before updating the `chart` dataset at the given `args.index`. If any plugin\n * returns `false`, the datasets update is cancelled until another `update` is triggered.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Number} args.index - The dataset index.\n * @param {Object} args.meta - The dataset metadata.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\n */\n/**\n * @method IPlugin#afterDatasetUpdate\n * @desc Called after the `chart` datasets at the given `args.index` has been updated. Note\n * that this hook will not be called if the datasets update has been previously cancelled.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Number} args.index - The dataset index.\n * @param {Object} args.meta - The dataset metadata.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeLayout\n * @desc Called before laying out `chart`. If any plugin returns `false`,\n * the layout update is cancelled until another `update` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart layout.\n */\n/**\n * @method IPlugin#afterLayout\n * @desc Called after the `chart` has been layed out. Note that this hook will not\n * be called if the layout update has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeRender\n * @desc Called before rendering `chart`. If any plugin returns `false`,\n * the rendering is cancelled until another `render` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart rendering.\n */\n/**\n * @method IPlugin#afterRender\n * @desc Called after the `chart` has been fully rendered (and animation completed). Note\n * that this hook will not be called if the rendering has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeDraw\n * @desc Called before drawing `chart` at every animation frame specified by the given\n * easing value. If any plugin returns `false`, the frame drawing is cancelled until\n * another `render` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart drawing.\n */\n/**\n * @method IPlugin#afterDraw\n * @desc Called after the `chart` has been drawn for the specific easing value. Note\n * that this hook will not be called if the drawing has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeDatasetsDraw\n * @desc Called before drawing the `chart` datasets. If any plugin returns `false`,\n * the datasets drawing is cancelled until another `render` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\n */\n/**\n * @method IPlugin#afterDatasetsDraw\n * @desc Called after the `chart` datasets have been drawn. Note that this hook\n * will not be called if the datasets drawing has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeDatasetDraw\n * @desc Called before drawing the `chart` dataset at the given `args.index` (datasets\n * are drawn in the reverse order). If any plugin returns `false`, the datasets drawing\n * is cancelled until another `render` is triggered.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Number} args.index - The dataset index.\n * @param {Object} args.meta - The dataset metadata.\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\n */\n/**\n * @method IPlugin#afterDatasetDraw\n * @desc Called after the `chart` datasets at the given `args.index` have been drawn\n * (datasets are drawn in the reverse order). Note that this hook will not be called\n * if the datasets drawing has been previously cancelled.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Number} args.index - The dataset index.\n * @param {Object} args.meta - The dataset metadata.\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeTooltipDraw\n * @desc Called before drawing the `tooltip`. If any plugin returns `false`,\n * the tooltip drawing is cancelled until another `render` is triggered.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Object} args.tooltip - The tooltip.\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart tooltip drawing.\n */\n/**\n * @method IPlugin#afterTooltipDraw\n * @desc Called after drawing the `tooltip`. Note that this hook will not\n * be called if the tooltip drawing has been previously cancelled.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Object} args.tooltip - The tooltip.\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeEvent\n * @desc Called before processing the specified `event`. If any plugin returns `false`,\n * the event will be discarded.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {IEvent} event - The event object.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#afterEvent\n * @desc Called after the `event` has been consumed. Note that this hook\n * will not be called if the `event` has been previously discarded.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {IEvent} event - The event object.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#resize\n * @desc Called after the chart as been resized.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} size - The new canvas display size (eq. canvas.style width & height).\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#destroy\n * @desc Called after the chart as been destroyed.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n\n},{\"26\":26,\"46\":46}],33:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar Element = require(27);\nvar helpers = require(46);\nvar Ticks = require(35);\n\ndefaults._set('scale', {\n\tdisplay: true,\n\tposition: 'left',\n\toffset: false,\n\n\t// grid line settings\n\tgridLines: {\n\t\tdisplay: true,\n\t\tcolor: 'rgba(0, 0, 0, 0.1)',\n\t\tlineWidth: 1,\n\t\tdrawBorder: true,\n\t\tdrawOnChartArea: true,\n\t\tdrawTicks: true,\n\t\ttickMarkLength: 10,\n\t\tzeroLineWidth: 1,\n\t\tzeroLineColor: 'rgba(0,0,0,0.25)',\n\t\tzeroLineBorderDash: [],\n\t\tzeroLineBorderDashOffset: 0.0,\n\t\toffsetGridLines: false,\n\t\tborderDash: [],\n\t\tborderDashOffset: 0.0\n\t},\n\n\t// scale label\n\tscaleLabel: {\n\t\t// display property\n\t\tdisplay: false,\n\n\t\t// actual label\n\t\tlabelString: '',\n\n\t\t// line height\n\t\tlineHeight: 1.2,\n\n\t\t// top/bottom padding\n\t\tpadding: {\n\t\t\ttop: 4,\n\t\t\tbottom: 4\n\t\t}\n\t},\n\n\t// label settings\n\tticks: {\n\t\tbeginAtZero: false,\n\t\tminRotation: 0,\n\t\tmaxRotation: 50,\n\t\tmirror: false,\n\t\tpadding: 0,\n\t\treverse: false,\n\t\tdisplay: true,\n\t\tautoSkip: true,\n\t\tautoSkipPadding: 0,\n\t\tlabelOffset: 0,\n\t\t// We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\n\t\tcallback: Ticks.formatters.values,\n\t\tminor: {},\n\t\tmajor: {}\n\t}\n});\n\nfunction labelsFromTicks(ticks) {\n\tvar labels = [];\n\tvar i, ilen;\n\n\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\n\t\tlabels.push(ticks[i].label);\n\t}\n\n\treturn labels;\n}\n\nfunction getLineValue(scale, index, offsetGridLines) {\n\tvar lineValue = scale.getPixelForTick(index);\n\n\tif (offsetGridLines) {\n\t\tif (index === 0) {\n\t\t\tlineValue -= (scale.getPixelForTick(1) - lineValue) / 2;\n\t\t} else {\n\t\t\tlineValue -= (lineValue - scale.getPixelForTick(index - 1)) / 2;\n\t\t}\n\t}\n\treturn lineValue;\n}\n\nfunction computeTextSize(context, tick, font) {\n\treturn helpers.isArray(tick) ?\n\t\thelpers.longestText(context, font, tick) :\n\t\tcontext.measureText(tick).width;\n}\n\nfunction parseFontOptions(options) {\n\tvar valueOrDefault = helpers.valueOrDefault;\n\tvar globalDefaults = defaults.global;\n\tvar size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);\n\tvar style = valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle);\n\tvar family = valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily);\n\n\treturn {\n\t\tsize: size,\n\t\tstyle: style,\n\t\tfamily: family,\n\t\tfont: helpers.fontString(size, style, family)\n\t};\n}\n\nfunction parseLineHeight(options) {\n\treturn helpers.options.toLineHeight(\n\t\thelpers.valueOrDefault(options.lineHeight, 1.2),\n\t\thelpers.valueOrDefault(options.fontSize, defaults.global.defaultFontSize));\n}\n\nmodule.exports = Element.extend({\n\t/**\n\t * Get the padding needed for the scale\n\t * @method getPadding\n\t * @private\n\t * @returns {Padding} the necessary padding\n\t */\n\tgetPadding: function() {\n\t\tvar me = this;\n\t\treturn {\n\t\t\tleft: me.paddingLeft || 0,\n\t\t\ttop: me.paddingTop || 0,\n\t\t\tright: me.paddingRight || 0,\n\t\t\tbottom: me.paddingBottom || 0\n\t\t};\n\t},\n\n\t/**\n\t * Returns the scale tick objects ({label, major})\n\t * @since 2.7\n\t */\n\tgetTicks: function() {\n\t\treturn this._ticks;\n\t},\n\n\t// These methods are ordered by lifecyle. Utilities then follow.\n\t// Any function defined here is inherited by all scale types.\n\t// Any function can be extended by the scale type\n\n\tmergeTicksOptions: function() {\n\t\tvar ticks = this.options.ticks;\n\t\tif (ticks.minor === false) {\n\t\t\tticks.minor = {\n\t\t\t\tdisplay: false\n\t\t\t};\n\t\t}\n\t\tif (ticks.major === false) {\n\t\t\tticks.major = {\n\t\t\t\tdisplay: false\n\t\t\t};\n\t\t}\n\t\tfor (var key in ticks) {\n\t\t\tif (key !== 'major' && key !== 'minor') {\n\t\t\t\tif (typeof ticks.minor[key] === 'undefined') {\n\t\t\t\t\tticks.minor[key] = ticks[key];\n\t\t\t\t}\n\t\t\t\tif (typeof ticks.major[key] === 'undefined') {\n\t\t\t\t\tticks.major[key] = ticks[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tbeforeUpdate: function() {\n\t\thelpers.callback(this.options.beforeUpdate, [this]);\n\t},\n\n\tupdate: function(maxWidth, maxHeight, margins) {\n\t\tvar me = this;\n\t\tvar i, ilen, labels, label, ticks, tick;\n\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\tme.beforeUpdate();\n\n\t\t// Absorb the master measurements\n\t\tme.maxWidth = maxWidth;\n\t\tme.maxHeight = maxHeight;\n\t\tme.margins = helpers.extend({\n\t\t\tleft: 0,\n\t\t\tright: 0,\n\t\t\ttop: 0,\n\t\t\tbottom: 0\n\t\t}, margins);\n\t\tme.longestTextCache = me.longestTextCache || {};\n\n\t\t// Dimensions\n\t\tme.beforeSetDimensions();\n\t\tme.setDimensions();\n\t\tme.afterSetDimensions();\n\n\t\t// Data min/max\n\t\tme.beforeDataLimits();\n\t\tme.determineDataLimits();\n\t\tme.afterDataLimits();\n\n\t\t// Ticks - `this.ticks` is now DEPRECATED!\n\t\t// Internal ticks are now stored as objects in the PRIVATE `this._ticks` member\n\t\t// and must not be accessed directly from outside this class. `this.ticks` being\n\t\t// around for long time and not marked as private, we can't change its structure\n\t\t// without unexpected breaking changes. If you need to access the scale ticks,\n\t\t// use scale.getTicks() instead.\n\n\t\tme.beforeBuildTicks();\n\n\t\t// New implementations should return an array of objects but for BACKWARD COMPAT,\n\t\t// we still support no return (`this.ticks` internally set by calling this method).\n\t\tticks = me.buildTicks() || [];\n\n\t\tme.afterBuildTicks();\n\n\t\tme.beforeTickToLabelConversion();\n\n\t\t// New implementations should return the formatted tick labels but for BACKWARD\n\t\t// COMPAT, we still support no return (`this.ticks` internally changed by calling\n\t\t// this method and supposed to contain only string values).\n\t\tlabels = me.convertTicksToLabels(ticks) || me.ticks;\n\n\t\tme.afterTickToLabelConversion();\n\n\t\tme.ticks = labels; // BACKWARD COMPATIBILITY\n\n\t\t// IMPORTANT: from this point, we consider that `this.ticks` will NEVER change!\n\n\t\t// BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`)\n\t\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\n\t\t\tlabel = labels[i];\n\t\t\ttick = ticks[i];\n\t\t\tif (!tick) {\n\t\t\t\tticks.push(tick = {\n\t\t\t\t\tlabel: label,\n\t\t\t\t\tmajor: false\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\ttick.label = label;\n\t\t\t}\n\t\t}\n\n\t\tme._ticks = ticks;\n\n\t\t// Tick Rotation\n\t\tme.beforeCalculateTickRotation();\n\t\tme.calculateTickRotation();\n\t\tme.afterCalculateTickRotation();\n\t\t// Fit\n\t\tme.beforeFit();\n\t\tme.fit();\n\t\tme.afterFit();\n\t\t//\n\t\tme.afterUpdate();\n\n\t\treturn me.minSize;\n\n\t},\n\tafterUpdate: function() {\n\t\thelpers.callback(this.options.afterUpdate, [this]);\n\t},\n\n\t//\n\n\tbeforeSetDimensions: function() {\n\t\thelpers.callback(this.options.beforeSetDimensions, [this]);\n\t},\n\tsetDimensions: function() {\n\t\tvar me = this;\n\t\t// Set the unconstrained dimension before label rotation\n\t\tif (me.isHorizontal()) {\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.left = 0;\n\t\t\tme.right = me.width;\n\t\t} else {\n\t\t\tme.height = me.maxHeight;\n\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.top = 0;\n\t\t\tme.bottom = me.height;\n\t\t}\n\n\t\t// Reset padding\n\t\tme.paddingLeft = 0;\n\t\tme.paddingTop = 0;\n\t\tme.paddingRight = 0;\n\t\tme.paddingBottom = 0;\n\t},\n\tafterSetDimensions: function() {\n\t\thelpers.callback(this.options.afterSetDimensions, [this]);\n\t},\n\n\t// Data limits\n\tbeforeDataLimits: function() {\n\t\thelpers.callback(this.options.beforeDataLimits, [this]);\n\t},\n\tdetermineDataLimits: helpers.noop,\n\tafterDataLimits: function() {\n\t\thelpers.callback(this.options.afterDataLimits, [this]);\n\t},\n\n\t//\n\tbeforeBuildTicks: function() {\n\t\thelpers.callback(this.options.beforeBuildTicks, [this]);\n\t},\n\tbuildTicks: helpers.noop,\n\tafterBuildTicks: function() {\n\t\thelpers.callback(this.options.afterBuildTicks, [this]);\n\t},\n\n\tbeforeTickToLabelConversion: function() {\n\t\thelpers.callback(this.options.beforeTickToLabelConversion, [this]);\n\t},\n\tconvertTicksToLabels: function() {\n\t\tvar me = this;\n\t\t// Convert ticks to strings\n\t\tvar tickOpts = me.options.ticks;\n\t\tme.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this);\n\t},\n\tafterTickToLabelConversion: function() {\n\t\thelpers.callback(this.options.afterTickToLabelConversion, [this]);\n\t},\n\n\t//\n\n\tbeforeCalculateTickRotation: function() {\n\t\thelpers.callback(this.options.beforeCalculateTickRotation, [this]);\n\t},\n\tcalculateTickRotation: function() {\n\t\tvar me = this;\n\t\tvar context = me.ctx;\n\t\tvar tickOpts = me.options.ticks;\n\t\tvar labels = labelsFromTicks(me._ticks);\n\n\t\t// Get the width of each grid by calculating the difference\n\t\t// between x offsets between 0 and 1.\n\t\tvar tickFont = parseFontOptions(tickOpts);\n\t\tcontext.font = tickFont.font;\n\n\t\tvar labelRotation = tickOpts.minRotation || 0;\n\n\t\tif (labels.length && me.options.display && me.isHorizontal()) {\n\t\t\tvar originalLabelWidth = helpers.longestText(context, tickFont.font, labels, me.longestTextCache);\n\t\t\tvar labelWidth = originalLabelWidth;\n\t\t\tvar cosRotation, sinRotation;\n\n\t\t\t// Allow 3 pixels x2 padding either side for label readability\n\t\t\tvar tickWidth = me.getPixelForTick(1) - me.getPixelForTick(0) - 6;\n\n\t\t\t// Max label rotation can be set or default to 90 - also act as a loop counter\n\t\t\twhile (labelWidth > tickWidth && labelRotation < tickOpts.maxRotation) {\n\t\t\t\tvar angleRadians = helpers.toRadians(labelRotation);\n\t\t\t\tcosRotation = Math.cos(angleRadians);\n\t\t\t\tsinRotation = Math.sin(angleRadians);\n\n\t\t\t\tif (sinRotation * originalLabelWidth > me.maxHeight) {\n\t\t\t\t\t// go back one step\n\t\t\t\t\tlabelRotation--;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tlabelRotation++;\n\t\t\t\tlabelWidth = cosRotation * originalLabelWidth;\n\t\t\t}\n\t\t}\n\n\t\tme.labelRotation = labelRotation;\n\t},\n\tafterCalculateTickRotation: function() {\n\t\thelpers.callback(this.options.afterCalculateTickRotation, [this]);\n\t},\n\n\t//\n\n\tbeforeFit: function() {\n\t\thelpers.callback(this.options.beforeFit, [this]);\n\t},\n\tfit: function() {\n\t\tvar me = this;\n\t\t// Reset\n\t\tvar minSize = me.minSize = {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\n\t\tvar labels = labelsFromTicks(me._ticks);\n\n\t\tvar opts = me.options;\n\t\tvar tickOpts = opts.ticks;\n\t\tvar scaleLabelOpts = opts.scaleLabel;\n\t\tvar gridLineOpts = opts.gridLines;\n\t\tvar display = opts.display;\n\t\tvar isHorizontal = me.isHorizontal();\n\n\t\tvar tickFont = parseFontOptions(tickOpts);\n\t\tvar tickMarkLength = opts.gridLines.tickMarkLength;\n\n\t\t// Width\n\t\tif (isHorizontal) {\n\t\t\t// subtract the margins to line up with the chartArea if we are a full width scale\n\t\t\tminSize.width = me.isFullWidth() ? me.maxWidth - me.margins.left - me.margins.right : me.maxWidth;\n\t\t} else {\n\t\t\tminSize.width = display && gridLineOpts.drawTicks ? tickMarkLength : 0;\n\t\t}\n\n\t\t// height\n\t\tif (isHorizontal) {\n\t\t\tminSize.height = display && gridLineOpts.drawTicks ? tickMarkLength : 0;\n\t\t} else {\n\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t}\n\n\t\t// Are we showing a title for the scale?\n\t\tif (scaleLabelOpts.display && display) {\n\t\t\tvar scaleLabelLineHeight = parseLineHeight(scaleLabelOpts);\n\t\t\tvar scaleLabelPadding = helpers.options.toPadding(scaleLabelOpts.padding);\n\t\t\tvar deltaHeight = scaleLabelLineHeight + scaleLabelPadding.height;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tminSize.height += deltaHeight;\n\t\t\t} else {\n\t\t\t\tminSize.width += deltaHeight;\n\t\t\t}\n\t\t}\n\n\t\t// Don't bother fitting the ticks if we are not showing them\n\t\tif (tickOpts.display && display) {\n\t\t\tvar largestTextWidth = helpers.longestText(me.ctx, tickFont.font, labels, me.longestTextCache);\n\t\t\tvar tallestLabelHeightInLines = helpers.numberOfLabelLines(labels);\n\t\t\tvar lineSpace = tickFont.size * 0.5;\n\t\t\tvar tickPadding = me.options.ticks.padding;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\t// A horizontal axis is more constrained by the height.\n\t\t\t\tme.longestLabelWidth = largestTextWidth;\n\n\t\t\t\tvar angleRadians = helpers.toRadians(me.labelRotation);\n\t\t\t\tvar cosRotation = Math.cos(angleRadians);\n\t\t\t\tvar sinRotation = Math.sin(angleRadians);\n\n\t\t\t\t// TODO - improve this calculation\n\t\t\t\tvar labelHeight = (sinRotation * largestTextWidth)\n\t\t\t\t\t+ (tickFont.size * tallestLabelHeightInLines)\n\t\t\t\t\t+ (lineSpace * (tallestLabelHeightInLines - 1))\n\t\t\t\t\t+ lineSpace; // padding\n\n\t\t\t\tminSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding);\n\n\t\t\t\tme.ctx.font = tickFont.font;\n\t\t\t\tvar firstLabelWidth = computeTextSize(me.ctx, labels[0], tickFont.font);\n\t\t\t\tvar lastLabelWidth = computeTextSize(me.ctx, labels[labels.length - 1], tickFont.font);\n\n\t\t\t\t// Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned\n\t\t\t\t// which means that the right padding is dominated by the font height\n\t\t\t\tif (me.labelRotation !== 0) {\n\t\t\t\t\tme.paddingLeft = opts.position === 'bottom' ? (cosRotation * firstLabelWidth) + 3 : (cosRotation * lineSpace) + 3; // add 3 px to move away from canvas edges\n\t\t\t\t\tme.paddingRight = opts.position === 'bottom' ? (cosRotation * lineSpace) + 3 : (cosRotation * lastLabelWidth) + 3;\n\t\t\t\t} else {\n\t\t\t\t\tme.paddingLeft = firstLabelWidth / 2 + 3; // add 3 px to move away from canvas edges\n\t\t\t\t\tme.paddingRight = lastLabelWidth / 2 + 3;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// A vertical axis is more constrained by the width. Labels are the\n\t\t\t\t// dominant factor here, so get that length first and account for padding\n\t\t\t\tif (tickOpts.mirror) {\n\t\t\t\t\tlargestTextWidth = 0;\n\t\t\t\t} else {\n\t\t\t\t\t// use lineSpace for consistency with horizontal axis\n\t\t\t\t\t// tickPadding is not implemented for horizontal\n\t\t\t\t\tlargestTextWidth += tickPadding + lineSpace;\n\t\t\t\t}\n\n\t\t\t\tminSize.width = Math.min(me.maxWidth, minSize.width + largestTextWidth);\n\n\t\t\t\tme.paddingTop = tickFont.size / 2;\n\t\t\t\tme.paddingBottom = tickFont.size / 2;\n\t\t\t}\n\t\t}\n\n\t\tme.handleMargins();\n\n\t\tme.width = minSize.width;\n\t\tme.height = minSize.height;\n\t},\n\n\t/**\n\t * Handle margins and padding interactions\n\t * @private\n\t */\n\thandleMargins: function() {\n\t\tvar me = this;\n\t\tif (me.margins) {\n\t\t\tme.paddingLeft = Math.max(me.paddingLeft - me.margins.left, 0);\n\t\t\tme.paddingTop = Math.max(me.paddingTop - me.margins.top, 0);\n\t\t\tme.paddingRight = Math.max(me.paddingRight - me.margins.right, 0);\n\t\t\tme.paddingBottom = Math.max(me.paddingBottom - me.margins.bottom, 0);\n\t\t}\n\t},\n\n\tafterFit: function() {\n\t\thelpers.callback(this.options.afterFit, [this]);\n\t},\n\n\t// Shared Methods\n\tisHorizontal: function() {\n\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\n\t},\n\tisFullWidth: function() {\n\t\treturn (this.options.fullWidth);\n\t},\n\n\t// Get the correct value. NaN bad inputs, If the value type is object get the x or y based on whether we are horizontal or not\n\tgetRightValue: function(rawValue) {\n\t\t// Null and undefined values first\n\t\tif (helpers.isNullOrUndef(rawValue)) {\n\t\t\treturn NaN;\n\t\t}\n\t\t// isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values\n\t\tif (typeof rawValue === 'number' && !isFinite(rawValue)) {\n\t\t\treturn NaN;\n\t\t}\n\t\t// If it is in fact an object, dive in one more level\n\t\tif (rawValue) {\n\t\t\tif (this.isHorizontal()) {\n\t\t\t\tif (rawValue.x !== undefined) {\n\t\t\t\t\treturn this.getRightValue(rawValue.x);\n\t\t\t\t}\n\t\t\t} else if (rawValue.y !== undefined) {\n\t\t\t\treturn this.getRightValue(rawValue.y);\n\t\t\t}\n\t\t}\n\n\t\t// Value is good, return it\n\t\treturn rawValue;\n\t},\n\n\t/**\n\t * Used to get the value to display in the tooltip for the data at the given index\n\t * @param index\n\t * @param datasetIndex\n\t */\n\tgetLabelForIndex: helpers.noop,\n\n\t/**\n\t * Returns the location of the given data point. Value can either be an index or a numerical value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param value\n\t * @param index\n\t * @param datasetIndex\n\t */\n\tgetPixelForValue: helpers.noop,\n\n\t/**\n\t * Used to get the data value from a given pixel. This is the inverse of getPixelForValue\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param pixel\n\t */\n\tgetValueForPixel: helpers.noop,\n\n\t/**\n\t * Returns the location of the tick at the given index\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t */\n\tgetPixelForTick: function(index) {\n\t\tvar me = this;\n\t\tvar offset = me.options.offset;\n\t\tif (me.isHorizontal()) {\n\t\t\tvar innerWidth = me.width - (me.paddingLeft + me.paddingRight);\n\t\t\tvar tickWidth = innerWidth / Math.max((me._ticks.length - (offset ? 0 : 1)), 1);\n\t\t\tvar pixel = (tickWidth * index) + me.paddingLeft;\n\n\t\t\tif (offset) {\n\t\t\t\tpixel += tickWidth / 2;\n\t\t\t}\n\n\t\t\tvar finalVal = me.left + Math.round(pixel);\n\t\t\tfinalVal += me.isFullWidth() ? me.margins.left : 0;\n\t\t\treturn finalVal;\n\t\t}\n\t\tvar innerHeight = me.height - (me.paddingTop + me.paddingBottom);\n\t\treturn me.top + (index * (innerHeight / (me._ticks.length - 1)));\n\t},\n\n\t/**\n\t * Utility for getting the pixel location of a percentage of scale\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t */\n\tgetPixelForDecimal: function(decimal) {\n\t\tvar me = this;\n\t\tif (me.isHorizontal()) {\n\t\t\tvar innerWidth = me.width - (me.paddingLeft + me.paddingRight);\n\t\t\tvar valueOffset = (innerWidth * decimal) + me.paddingLeft;\n\n\t\t\tvar finalVal = me.left + Math.round(valueOffset);\n\t\t\tfinalVal += me.isFullWidth() ? me.margins.left : 0;\n\t\t\treturn finalVal;\n\t\t}\n\t\treturn me.top + (decimal * me.height);\n\t},\n\n\t/**\n\t * Returns the pixel for the minimum chart value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t */\n\tgetBasePixel: function() {\n\t\treturn this.getPixelForValue(this.getBaseValue());\n\t},\n\n\tgetBaseValue: function() {\n\t\tvar me = this;\n\t\tvar min = me.min;\n\t\tvar max = me.max;\n\n\t\treturn me.beginAtZero ? 0 :\n\t\t\tmin < 0 && max < 0 ? max :\n\t\t\tmin > 0 && max > 0 ? min :\n\t\t\t0;\n\t},\n\n\t/**\n\t * Returns a subset of ticks to be plotted to avoid overlapping labels.\n\t * @private\n\t */\n\t_autoSkip: function(ticks) {\n\t\tvar skipRatio;\n\t\tvar me = this;\n\t\tvar isHorizontal = me.isHorizontal();\n\t\tvar optionTicks = me.options.ticks.minor;\n\t\tvar tickCount = ticks.length;\n\t\tvar labelRotationRadians = helpers.toRadians(me.labelRotation);\n\t\tvar cosRotation = Math.cos(labelRotationRadians);\n\t\tvar longestRotatedLabel = me.longestLabelWidth * cosRotation;\n\t\tvar result = [];\n\t\tvar i, tick, shouldSkip;\n\n\t\t// figure out the maximum number of gridlines to show\n\t\tvar maxTicks;\n\t\tif (optionTicks.maxTicksLimit) {\n\t\t\tmaxTicks = optionTicks.maxTicksLimit;\n\t\t}\n\n\t\tif (isHorizontal) {\n\t\t\tskipRatio = false;\n\n\t\t\tif ((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount > (me.width - (me.paddingLeft + me.paddingRight))) {\n\t\t\t\tskipRatio = 1 + Math.floor(((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount) / (me.width - (me.paddingLeft + me.paddingRight)));\n\t\t\t}\n\n\t\t\t// if they defined a max number of optionTicks,\n\t\t\t// increase skipRatio until that number is met\n\t\t\tif (maxTicks && tickCount > maxTicks) {\n\t\t\t\tskipRatio = Math.max(skipRatio, Math.floor(tickCount / maxTicks));\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0; i < tickCount; i++) {\n\t\t\ttick = ticks[i];\n\n\t\t\t// Since we always show the last tick,we need may need to hide the last shown one before\n\t\t\tshouldSkip = (skipRatio > 1 && i % skipRatio > 0) || (i % skipRatio === 0 && i + skipRatio >= tickCount);\n\t\t\tif (shouldSkip && i !== tickCount - 1) {\n\t\t\t\t// leave tick in place but make sure it's not displayed (#4635)\n\t\t\t\tdelete tick.label;\n\t\t\t}\n\t\t\tresult.push(tick);\n\t\t}\n\t\treturn result;\n\t},\n\n\t// Actually draw the scale on the canvas\n\t// @param {rectangle} chartArea : the area of the chart to draw full grid lines on\n\tdraw: function(chartArea) {\n\t\tvar me = this;\n\t\tvar options = me.options;\n\t\tif (!options.display) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar context = me.ctx;\n\t\tvar globalDefaults = defaults.global;\n\t\tvar optionTicks = options.ticks.minor;\n\t\tvar optionMajorTicks = options.ticks.major || optionTicks;\n\t\tvar gridLines = options.gridLines;\n\t\tvar scaleLabel = options.scaleLabel;\n\n\t\tvar isRotated = me.labelRotation !== 0;\n\t\tvar isHorizontal = me.isHorizontal();\n\n\t\tvar ticks = optionTicks.autoSkip ? me._autoSkip(me.getTicks()) : me.getTicks();\n\t\tvar tickFontColor = helpers.valueOrDefault(optionTicks.fontColor, globalDefaults.defaultFontColor);\n\t\tvar tickFont = parseFontOptions(optionTicks);\n\t\tvar majorTickFontColor = helpers.valueOrDefault(optionMajorTicks.fontColor, globalDefaults.defaultFontColor);\n\t\tvar majorTickFont = parseFontOptions(optionMajorTicks);\n\n\t\tvar tl = gridLines.drawTicks ? gridLines.tickMarkLength : 0;\n\n\t\tvar scaleLabelFontColor = helpers.valueOrDefault(scaleLabel.fontColor, globalDefaults.defaultFontColor);\n\t\tvar scaleLabelFont = parseFontOptions(scaleLabel);\n\t\tvar scaleLabelPadding = helpers.options.toPadding(scaleLabel.padding);\n\t\tvar labelRotationRadians = helpers.toRadians(me.labelRotation);\n\n\t\tvar itemsToDraw = [];\n\n\t\tvar axisWidth = me.options.gridLines.lineWidth;\n\t\tvar xTickStart = options.position === 'right' ? me.left : me.right - axisWidth - tl;\n\t\tvar xTickEnd = options.position === 'right' ? me.left + tl : me.right;\n\t\tvar yTickStart = options.position === 'bottom' ? me.top + axisWidth : me.bottom - tl - axisWidth;\n\t\tvar yTickEnd = options.position === 'bottom' ? me.top + axisWidth + tl : me.bottom + axisWidth;\n\n\t\thelpers.each(ticks, function(tick, index) {\n\t\t\t// autoskipper skipped this tick (#4635)\n\t\t\tif (helpers.isNullOrUndef(tick.label)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar label = tick.label;\n\t\t\tvar lineWidth, lineColor, borderDash, borderDashOffset;\n\t\t\tif (index === me.zeroLineIndex && options.offset === gridLines.offsetGridLines) {\n\t\t\t\t// Draw the first index specially\n\t\t\t\tlineWidth = gridLines.zeroLineWidth;\n\t\t\t\tlineColor = gridLines.zeroLineColor;\n\t\t\t\tborderDash = gridLines.zeroLineBorderDash;\n\t\t\t\tborderDashOffset = gridLines.zeroLineBorderDashOffset;\n\t\t\t} else {\n\t\t\t\tlineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, index);\n\t\t\t\tlineColor = helpers.valueAtIndexOrDefault(gridLines.color, index);\n\t\t\t\tborderDash = helpers.valueOrDefault(gridLines.borderDash, globalDefaults.borderDash);\n\t\t\t\tborderDashOffset = helpers.valueOrDefault(gridLines.borderDashOffset, globalDefaults.borderDashOffset);\n\t\t\t}\n\n\t\t\t// Common properties\n\t\t\tvar tx1, ty1, tx2, ty2, x1, y1, x2, y2, labelX, labelY;\n\t\t\tvar textAlign = 'middle';\n\t\t\tvar textBaseline = 'middle';\n\t\t\tvar tickPadding = optionTicks.padding;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tvar labelYOffset = tl + tickPadding;\n\n\t\t\t\tif (options.position === 'bottom') {\n\t\t\t\t\t// bottom\n\t\t\t\t\ttextBaseline = !isRotated ? 'top' : 'middle';\n\t\t\t\t\ttextAlign = !isRotated ? 'center' : 'right';\n\t\t\t\t\tlabelY = me.top + labelYOffset;\n\t\t\t\t} else {\n\t\t\t\t\t// top\n\t\t\t\t\ttextBaseline = !isRotated ? 'bottom' : 'middle';\n\t\t\t\t\ttextAlign = !isRotated ? 'center' : 'left';\n\t\t\t\t\tlabelY = me.bottom - labelYOffset;\n\t\t\t\t}\n\n\t\t\t\tvar xLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1);\n\t\t\t\tif (xLineValue < me.left) {\n\t\t\t\t\tlineColor = 'rgba(0,0,0,0)';\n\t\t\t\t}\n\t\t\t\txLineValue += helpers.aliasPixel(lineWidth);\n\n\t\t\t\tlabelX = me.getPixelForTick(index) + optionTicks.labelOffset; // x values for optionTicks (need to consider offsetLabel option)\n\n\t\t\t\ttx1 = tx2 = x1 = x2 = xLineValue;\n\t\t\t\tty1 = yTickStart;\n\t\t\t\tty2 = yTickEnd;\n\t\t\t\ty1 = chartArea.top;\n\t\t\t\ty2 = chartArea.bottom + axisWidth;\n\t\t\t} else {\n\t\t\t\tvar isLeft = options.position === 'left';\n\t\t\t\tvar labelXOffset;\n\n\t\t\t\tif (optionTicks.mirror) {\n\t\t\t\t\ttextAlign = isLeft ? 'left' : 'right';\n\t\t\t\t\tlabelXOffset = tickPadding;\n\t\t\t\t} else {\n\t\t\t\t\ttextAlign = isLeft ? 'right' : 'left';\n\t\t\t\t\tlabelXOffset = tl + tickPadding;\n\t\t\t\t}\n\n\t\t\t\tlabelX = isLeft ? me.right - labelXOffset : me.left + labelXOffset;\n\n\t\t\t\tvar yLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1);\n\t\t\t\tif (yLineValue < me.top) {\n\t\t\t\t\tlineColor = 'rgba(0,0,0,0)';\n\t\t\t\t}\n\t\t\t\tyLineValue += helpers.aliasPixel(lineWidth);\n\n\t\t\t\tlabelY = me.getPixelForTick(index) + optionTicks.labelOffset;\n\n\t\t\t\ttx1 = xTickStart;\n\t\t\t\ttx2 = xTickEnd;\n\t\t\t\tx1 = chartArea.left;\n\t\t\t\tx2 = chartArea.right + axisWidth;\n\t\t\t\tty1 = ty2 = y1 = y2 = yLineValue;\n\t\t\t}\n\n\t\t\titemsToDraw.push({\n\t\t\t\ttx1: tx1,\n\t\t\t\tty1: ty1,\n\t\t\t\ttx2: tx2,\n\t\t\t\tty2: ty2,\n\t\t\t\tx1: x1,\n\t\t\t\ty1: y1,\n\t\t\t\tx2: x2,\n\t\t\t\ty2: y2,\n\t\t\t\tlabelX: labelX,\n\t\t\t\tlabelY: labelY,\n\t\t\t\tglWidth: lineWidth,\n\t\t\t\tglColor: lineColor,\n\t\t\t\tglBorderDash: borderDash,\n\t\t\t\tglBorderDashOffset: borderDashOffset,\n\t\t\t\trotation: -1 * labelRotationRadians,\n\t\t\t\tlabel: label,\n\t\t\t\tmajor: tick.major,\n\t\t\t\ttextBaseline: textBaseline,\n\t\t\t\ttextAlign: textAlign\n\t\t\t});\n\t\t});\n\n\t\t// Draw all of the tick labels, tick marks, and grid lines at the correct places\n\t\thelpers.each(itemsToDraw, function(itemToDraw) {\n\t\t\tif (gridLines.display) {\n\t\t\t\tcontext.save();\n\t\t\t\tcontext.lineWidth = itemToDraw.glWidth;\n\t\t\t\tcontext.strokeStyle = itemToDraw.glColor;\n\t\t\t\tif (context.setLineDash) {\n\t\t\t\t\tcontext.setLineDash(itemToDraw.glBorderDash);\n\t\t\t\t\tcontext.lineDashOffset = itemToDraw.glBorderDashOffset;\n\t\t\t\t}\n\n\t\t\t\tcontext.beginPath();\n\n\t\t\t\tif (gridLines.drawTicks) {\n\t\t\t\t\tcontext.moveTo(itemToDraw.tx1, itemToDraw.ty1);\n\t\t\t\t\tcontext.lineTo(itemToDraw.tx2, itemToDraw.ty2);\n\t\t\t\t}\n\n\t\t\t\tif (gridLines.drawOnChartArea) {\n\t\t\t\t\tcontext.moveTo(itemToDraw.x1, itemToDraw.y1);\n\t\t\t\t\tcontext.lineTo(itemToDraw.x2, itemToDraw.y2);\n\t\t\t\t}\n\n\t\t\t\tcontext.stroke();\n\t\t\t\tcontext.restore();\n\t\t\t}\n\n\t\t\tif (optionTicks.display) {\n\t\t\t\t// Make sure we draw text in the correct color and font\n\t\t\t\tcontext.save();\n\t\t\t\tcontext.translate(itemToDraw.labelX, itemToDraw.labelY);\n\t\t\t\tcontext.rotate(itemToDraw.rotation);\n\t\t\t\tcontext.font = itemToDraw.major ? majorTickFont.font : tickFont.font;\n\t\t\t\tcontext.fillStyle = itemToDraw.major ? majorTickFontColor : tickFontColor;\n\t\t\t\tcontext.textBaseline = itemToDraw.textBaseline;\n\t\t\t\tcontext.textAlign = itemToDraw.textAlign;\n\n\t\t\t\tvar label = itemToDraw.label;\n\t\t\t\tif (helpers.isArray(label)) {\n\t\t\t\t\tvar lineCount = label.length;\n\t\t\t\t\tvar lineHeight = tickFont.size * 1.5;\n\t\t\t\t\tvar y = me.isHorizontal() ? 0 : -lineHeight * (lineCount - 1) / 2;\n\n\t\t\t\t\tfor (var i = 0; i < lineCount; ++i) {\n\t\t\t\t\t\t// We just make sure the multiline element is a string here..\n\t\t\t\t\t\tcontext.fillText('' + label[i], 0, y);\n\t\t\t\t\t\t// apply same lineSpacing as calculated @ L#320\n\t\t\t\t\t\ty += lineHeight;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcontext.fillText(label, 0, 0);\n\t\t\t\t}\n\t\t\t\tcontext.restore();\n\t\t\t}\n\t\t});\n\n\t\tif (scaleLabel.display) {\n\t\t\t// Draw the scale label\n\t\t\tvar scaleLabelX;\n\t\t\tvar scaleLabelY;\n\t\t\tvar rotation = 0;\n\t\t\tvar halfLineHeight = parseLineHeight(scaleLabel) / 2;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tscaleLabelX = me.left + ((me.right - me.left) / 2); // midpoint of the width\n\t\t\t\tscaleLabelY = options.position === 'bottom'\n\t\t\t\t\t? me.bottom - halfLineHeight - scaleLabelPadding.bottom\n\t\t\t\t\t: me.top + halfLineHeight + scaleLabelPadding.top;\n\t\t\t} else {\n\t\t\t\tvar isLeft = options.position === 'left';\n\t\t\t\tscaleLabelX = isLeft\n\t\t\t\t\t? me.left + halfLineHeight + scaleLabelPadding.top\n\t\t\t\t\t: me.right - halfLineHeight - scaleLabelPadding.top;\n\t\t\t\tscaleLabelY = me.top + ((me.bottom - me.top) / 2);\n\t\t\t\trotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI;\n\t\t\t}\n\n\t\t\tcontext.save();\n\t\t\tcontext.translate(scaleLabelX, scaleLabelY);\n\t\t\tcontext.rotate(rotation);\n\t\t\tcontext.textAlign = 'center';\n\t\t\tcontext.textBaseline = 'middle';\n\t\t\tcontext.fillStyle = scaleLabelFontColor; // render in correct colour\n\t\t\tcontext.font = scaleLabelFont.font;\n\t\t\tcontext.fillText(scaleLabel.labelString, 0, 0);\n\t\t\tcontext.restore();\n\t\t}\n\n\t\tif (gridLines.drawBorder) {\n\t\t\t// Draw the line at the edge of the axis\n\t\t\tcontext.lineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, 0);\n\t\t\tcontext.strokeStyle = helpers.valueAtIndexOrDefault(gridLines.color, 0);\n\t\t\tvar x1 = me.left;\n\t\t\tvar x2 = me.right + axisWidth;\n\t\t\tvar y1 = me.top;\n\t\t\tvar y2 = me.bottom + axisWidth;\n\n\t\t\tvar aliasPixel = helpers.aliasPixel(context.lineWidth);\n\t\t\tif (isHorizontal) {\n\t\t\t\ty1 = y2 = options.position === 'top' ? me.bottom : me.top;\n\t\t\t\ty1 += aliasPixel;\n\t\t\t\ty2 += aliasPixel;\n\t\t\t} else {\n\t\t\t\tx1 = x2 = options.position === 'left' ? me.right : me.left;\n\t\t\t\tx1 += aliasPixel;\n\t\t\t\tx2 += aliasPixel;\n\t\t\t}\n\n\t\t\tcontext.beginPath();\n\t\t\tcontext.moveTo(x1, y1);\n\t\t\tcontext.lineTo(x2, y2);\n\t\t\tcontext.stroke();\n\t\t}\n\t}\n});\n\n},{\"26\":26,\"27\":27,\"35\":35,\"46\":46}],34:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar helpers = require(46);\nvar layouts = require(31);\n\nmodule.exports = {\n\t// Scale registration object. Extensions can register new scale types (such as log or DB scales) and then\n\t// use the new chart options to grab the correct scale\n\tconstructors: {},\n\t// Use a registration function so that we can move to an ES6 map when we no longer need to support\n\t// old browsers\n\n\t// Scale config defaults\n\tdefaults: {},\n\tregisterScaleType: function(type, scaleConstructor, scaleDefaults) {\n\t\tthis.constructors[type] = scaleConstructor;\n\t\tthis.defaults[type] = helpers.clone(scaleDefaults);\n\t},\n\tgetScaleConstructor: function(type) {\n\t\treturn this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined;\n\t},\n\tgetScaleDefaults: function(type) {\n\t\t// Return the scale defaults merged with the global settings so that we always use the latest ones\n\t\treturn this.defaults.hasOwnProperty(type) ? helpers.merge({}, [defaults.scale, this.defaults[type]]) : {};\n\t},\n\tupdateScaleDefaults: function(type, additions) {\n\t\tvar me = this;\n\t\tif (me.defaults.hasOwnProperty(type)) {\n\t\t\tme.defaults[type] = helpers.extend(me.defaults[type], additions);\n\t\t}\n\t},\n\taddScalesToLayout: function(chart) {\n\t\t// Adds each scale to the chart.boxes array to be sized accordingly\n\t\thelpers.each(chart.scales, function(scale) {\n\t\t\t// Set ILayoutItem parameters for backwards compatibility\n\t\t\tscale.fullWidth = scale.options.fullWidth;\n\t\t\tscale.position = scale.options.position;\n\t\t\tscale.weight = scale.options.weight;\n\t\t\tlayouts.addBox(chart, scale);\n\t\t});\n\t}\n};\n\n},{\"26\":26,\"31\":31,\"46\":46}],35:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(46);\n\n/**\n * Namespace to hold static tick generation functions\n * @namespace Chart.Ticks\n */\nmodule.exports = {\n\t/**\n\t * Namespace to hold formatters for different types of ticks\n\t * @namespace Chart.Ticks.formatters\n\t */\n\tformatters: {\n\t\t/**\n\t\t * Formatter for value labels\n\t\t * @method Chart.Ticks.formatters.values\n\t\t * @param value the value to display\n\t\t * @return {String|Array} the label to display\n\t\t */\n\t\tvalues: function(value) {\n\t\t\treturn helpers.isArray(value) ? value : '' + value;\n\t\t},\n\n\t\t/**\n\t\t * Formatter for linear numeric ticks\n\t\t * @method Chart.Ticks.formatters.linear\n\t\t * @param tickValue {Number} the value to be formatted\n\t\t * @param index {Number} the position of the tickValue parameter in the ticks array\n\t\t * @param ticks {Array} the list of ticks being converted\n\t\t * @return {String} string representation of the tickValue parameter\n\t\t */\n\t\tlinear: function(tickValue, index, ticks) {\n\t\t\t// If we have lots of ticks, don't use the ones\n\t\t\tvar delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0];\n\n\t\t\t// If we have a number like 2.5 as the delta, figure out how many decimal places we need\n\t\t\tif (Math.abs(delta) > 1) {\n\t\t\t\tif (tickValue !== Math.floor(tickValue)) {\n\t\t\t\t\t// not an integer\n\t\t\t\t\tdelta = tickValue - Math.floor(tickValue);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar logDelta = helpers.log10(Math.abs(delta));\n\t\t\tvar tickString = '';\n\n\t\t\tif (tickValue !== 0) {\n\t\t\t\tvar maxTick = Math.max(Math.abs(ticks[0]), Math.abs(ticks[ticks.length - 1]));\n\t\t\t\tif (maxTick < 1e-4) { // all ticks are small numbers; use scientific notation\n\t\t\t\t\tvar logTick = helpers.log10(Math.abs(tickValue));\n\t\t\t\t\ttickString = tickValue.toExponential(Math.floor(logTick) - Math.floor(logDelta));\n\t\t\t\t} else {\n\t\t\t\t\tvar numDecimal = -1 * Math.floor(logDelta);\n\t\t\t\t\tnumDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places\n\t\t\t\t\ttickString = tickValue.toFixed(numDecimal);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttickString = '0'; // never show decimal places for 0\n\t\t\t}\n\n\t\t\treturn tickString;\n\t\t},\n\n\t\tlogarithmic: function(tickValue, index, ticks) {\n\t\t\tvar remain = tickValue / (Math.pow(10, Math.floor(helpers.log10(tickValue))));\n\n\t\t\tif (tickValue === 0) {\n\t\t\t\treturn '0';\n\t\t\t} else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) {\n\t\t\t\treturn tickValue.toExponential();\n\t\t\t}\n\t\t\treturn '';\n\t\t}\n\t}\n};\n\n},{\"46\":46}],36:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar Element = require(27);\nvar helpers = require(46);\n\ndefaults._set('global', {\n\ttooltips: {\n\t\tenabled: true,\n\t\tcustom: null,\n\t\tmode: 'nearest',\n\t\tposition: 'average',\n\t\tintersect: true,\n\t\tbackgroundColor: 'rgba(0,0,0,0.8)',\n\t\ttitleFontStyle: 'bold',\n\t\ttitleSpacing: 2,\n\t\ttitleMarginBottom: 6,\n\t\ttitleFontColor: '#fff',\n\t\ttitleAlign: 'left',\n\t\tbodySpacing: 2,\n\t\tbodyFontColor: '#fff',\n\t\tbodyAlign: 'left',\n\t\tfooterFontStyle: 'bold',\n\t\tfooterSpacing: 2,\n\t\tfooterMarginTop: 6,\n\t\tfooterFontColor: '#fff',\n\t\tfooterAlign: 'left',\n\t\tyPadding: 6,\n\t\txPadding: 6,\n\t\tcaretPadding: 2,\n\t\tcaretSize: 5,\n\t\tcornerRadius: 6,\n\t\tmultiKeyBackground: '#fff',\n\t\tdisplayColors: true,\n\t\tborderColor: 'rgba(0,0,0,0)',\n\t\tborderWidth: 0,\n\t\tcallbacks: {\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeTitle: helpers.noop,\n\t\t\ttitle: function(tooltipItems, data) {\n\t\t\t\t// Pick first xLabel for now\n\t\t\t\tvar title = '';\n\t\t\t\tvar labels = data.labels;\n\t\t\t\tvar labelCount = labels ? labels.length : 0;\n\n\t\t\t\tif (tooltipItems.length > 0) {\n\t\t\t\t\tvar item = tooltipItems[0];\n\n\t\t\t\t\tif (item.xLabel) {\n\t\t\t\t\t\ttitle = item.xLabel;\n\t\t\t\t\t} else if (labelCount > 0 && item.index < labelCount) {\n\t\t\t\t\t\ttitle = labels[item.index];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn title;\n\t\t\t},\n\t\t\tafterTitle: helpers.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeBody: helpers.noop,\n\n\t\t\t// Args are: (tooltipItem, data)\n\t\t\tbeforeLabel: helpers.noop,\n\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\tvar label = data.datasets[tooltipItem.datasetIndex].label || '';\n\n\t\t\t\tif (label) {\n\t\t\t\t\tlabel += ': ';\n\t\t\t\t}\n\t\t\t\tlabel += tooltipItem.yLabel;\n\t\t\t\treturn label;\n\t\t\t},\n\t\t\tlabelColor: function(tooltipItem, chart) {\n\t\t\t\tvar meta = chart.getDatasetMeta(tooltipItem.datasetIndex);\n\t\t\t\tvar activeElement = meta.data[tooltipItem.index];\n\t\t\t\tvar view = activeElement._view;\n\t\t\t\treturn {\n\t\t\t\t\tborderColor: view.borderColor,\n\t\t\t\t\tbackgroundColor: view.backgroundColor\n\t\t\t\t};\n\t\t\t},\n\t\t\tlabelTextColor: function() {\n\t\t\t\treturn this._options.bodyFontColor;\n\t\t\t},\n\t\t\tafterLabel: helpers.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tafterBody: helpers.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeFooter: helpers.noop,\n\t\t\tfooter: helpers.noop,\n\t\t\tafterFooter: helpers.noop\n\t\t}\n\t}\n});\n\nvar positioners = {\n\t/**\n\t * Average mode places the tooltip at the average position of the elements shown\n\t * @function Chart.Tooltip.positioners.average\n\t * @param elements {ChartElement[]} the elements being displayed in the tooltip\n\t * @returns {Point} tooltip position\n\t */\n\taverage: function(elements) {\n\t\tif (!elements.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar i, len;\n\t\tvar x = 0;\n\t\tvar y = 0;\n\t\tvar count = 0;\n\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\n\t\t\tvar el = elements[i];\n\t\t\tif (el && el.hasValue()) {\n\t\t\t\tvar pos = el.tooltipPosition();\n\t\t\t\tx += pos.x;\n\t\t\t\ty += pos.y;\n\t\t\t\t++count;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tx: Math.round(x / count),\n\t\t\ty: Math.round(y / count)\n\t\t};\n\t},\n\n\t/**\n\t * Gets the tooltip position nearest of the item nearest to the event position\n\t * @function Chart.Tooltip.positioners.nearest\n\t * @param elements {Chart.Element[]} the tooltip elements\n\t * @param eventPosition {Point} the position of the event in canvas coordinates\n\t * @returns {Point} the tooltip position\n\t */\n\tnearest: function(elements, eventPosition) {\n\t\tvar x = eventPosition.x;\n\t\tvar y = eventPosition.y;\n\t\tvar minDistance = Number.POSITIVE_INFINITY;\n\t\tvar i, len, nearestElement;\n\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\n\t\t\tvar el = elements[i];\n\t\t\tif (el && el.hasValue()) {\n\t\t\t\tvar center = el.getCenterPoint();\n\t\t\t\tvar d = helpers.distanceBetweenPoints(eventPosition, center);\n\n\t\t\t\tif (d < minDistance) {\n\t\t\t\t\tminDistance = d;\n\t\t\t\t\tnearestElement = el;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (nearestElement) {\n\t\t\tvar tp = nearestElement.tooltipPosition();\n\t\t\tx = tp.x;\n\t\t\ty = tp.y;\n\t\t}\n\n\t\treturn {\n\t\t\tx: x,\n\t\t\ty: y\n\t\t};\n\t}\n};\n\n/**\n * Helper method to merge the opacity into a color\n */\nfunction mergeOpacity(colorString, opacity) {\n\tvar color = helpers.color(colorString);\n\treturn color.alpha(opacity * color.alpha()).rgbaString();\n}\n\n// Helper to push or concat based on if the 2nd parameter is an array or not\nfunction pushOrConcat(base, toPush) {\n\tif (toPush) {\n\t\tif (helpers.isArray(toPush)) {\n\t\t\t// base = base.concat(toPush);\n\t\t\tArray.prototype.push.apply(base, toPush);\n\t\t} else {\n\t\t\tbase.push(toPush);\n\t\t}\n\t}\n\n\treturn base;\n}\n\n/**\n * Returns array of strings split by newline\n * @param {String} value - The value to split by newline.\n * @returns {Array} value if newline present - Returned from String split() method\n * @function\n */\nfunction splitNewlines(str) {\n\tif ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n\t\treturn str.split('\\n');\n\t}\n\treturn str;\n}\n\n\n// Private helper to create a tooltip item model\n// @param element : the chart element (point, arc, bar) to create the tooltip item for\n// @return : new tooltip item\nfunction createTooltipItem(element) {\n\tvar xScale = element._xScale;\n\tvar yScale = element._yScale || element._scale; // handle radar || polarArea charts\n\tvar index = element._index;\n\tvar datasetIndex = element._datasetIndex;\n\n\treturn {\n\t\txLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '',\n\t\tyLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '',\n\t\tindex: index,\n\t\tdatasetIndex: datasetIndex,\n\t\tx: element._model.x,\n\t\ty: element._model.y\n\t};\n}\n\n/**\n * Helper to get the reset model for the tooltip\n * @param tooltipOpts {Object} the tooltip options\n */\nfunction getBaseModel(tooltipOpts) {\n\tvar globalDefaults = defaults.global;\n\tvar valueOrDefault = helpers.valueOrDefault;\n\n\treturn {\n\t\t// Positioning\n\t\txPadding: tooltipOpts.xPadding,\n\t\tyPadding: tooltipOpts.yPadding,\n\t\txAlign: tooltipOpts.xAlign,\n\t\tyAlign: tooltipOpts.yAlign,\n\n\t\t// Body\n\t\tbodyFontColor: tooltipOpts.bodyFontColor,\n\t\t_bodyFontFamily: valueOrDefault(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily),\n\t\t_bodyFontStyle: valueOrDefault(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle),\n\t\t_bodyAlign: tooltipOpts.bodyAlign,\n\t\tbodyFontSize: valueOrDefault(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize),\n\t\tbodySpacing: tooltipOpts.bodySpacing,\n\n\t\t// Title\n\t\ttitleFontColor: tooltipOpts.titleFontColor,\n\t\t_titleFontFamily: valueOrDefault(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily),\n\t\t_titleFontStyle: valueOrDefault(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle),\n\t\ttitleFontSize: valueOrDefault(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize),\n\t\t_titleAlign: tooltipOpts.titleAlign,\n\t\ttitleSpacing: tooltipOpts.titleSpacing,\n\t\ttitleMarginBottom: tooltipOpts.titleMarginBottom,\n\n\t\t// Footer\n\t\tfooterFontColor: tooltipOpts.footerFontColor,\n\t\t_footerFontFamily: valueOrDefault(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily),\n\t\t_footerFontStyle: valueOrDefault(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle),\n\t\tfooterFontSize: valueOrDefault(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize),\n\t\t_footerAlign: tooltipOpts.footerAlign,\n\t\tfooterSpacing: tooltipOpts.footerSpacing,\n\t\tfooterMarginTop: tooltipOpts.footerMarginTop,\n\n\t\t// Appearance\n\t\tcaretSize: tooltipOpts.caretSize,\n\t\tcornerRadius: tooltipOpts.cornerRadius,\n\t\tbackgroundColor: tooltipOpts.backgroundColor,\n\t\topacity: 0,\n\t\tlegendColorBackground: tooltipOpts.multiKeyBackground,\n\t\tdisplayColors: tooltipOpts.displayColors,\n\t\tborderColor: tooltipOpts.borderColor,\n\t\tborderWidth: tooltipOpts.borderWidth\n\t};\n}\n\n/**\n * Get the size of the tooltip\n */\nfunction getTooltipSize(tooltip, model) {\n\tvar ctx = tooltip._chart.ctx;\n\n\tvar height = model.yPadding * 2; // Tooltip Padding\n\tvar width = 0;\n\n\t// Count of all lines in the body\n\tvar body = model.body;\n\tvar combinedBodyLength = body.reduce(function(count, bodyItem) {\n\t\treturn count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length;\n\t}, 0);\n\tcombinedBodyLength += model.beforeBody.length + model.afterBody.length;\n\n\tvar titleLineCount = model.title.length;\n\tvar footerLineCount = model.footer.length;\n\tvar titleFontSize = model.titleFontSize;\n\tvar bodyFontSize = model.bodyFontSize;\n\tvar footerFontSize = model.footerFontSize;\n\n\theight += titleLineCount * titleFontSize; // Title Lines\n\theight += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing\n\theight += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin\n\theight += combinedBodyLength * bodyFontSize; // Body Lines\n\theight += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing\n\theight += footerLineCount ? model.footerMarginTop : 0; // Footer Margin\n\theight += footerLineCount * (footerFontSize); // Footer Lines\n\theight += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing\n\n\t// Title width\n\tvar widthPadding = 0;\n\tvar maxLineWidth = function(line) {\n\t\twidth = Math.max(width, ctx.measureText(line).width + widthPadding);\n\t};\n\n\tctx.font = helpers.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily);\n\thelpers.each(model.title, maxLineWidth);\n\n\t// Body width\n\tctx.font = helpers.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily);\n\thelpers.each(model.beforeBody.concat(model.afterBody), maxLineWidth);\n\n\t// Body lines may include some extra width due to the color box\n\twidthPadding = model.displayColors ? (bodyFontSize + 2) : 0;\n\thelpers.each(body, function(bodyItem) {\n\t\thelpers.each(bodyItem.before, maxLineWidth);\n\t\thelpers.each(bodyItem.lines, maxLineWidth);\n\t\thelpers.each(bodyItem.after, maxLineWidth);\n\t});\n\n\t// Reset back to 0\n\twidthPadding = 0;\n\n\t// Footer width\n\tctx.font = helpers.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily);\n\thelpers.each(model.footer, maxLineWidth);\n\n\t// Add padding\n\twidth += 2 * model.xPadding;\n\n\treturn {\n\t\twidth: width,\n\t\theight: height\n\t};\n}\n\n/**\n * Helper to get the alignment of a tooltip given the size\n */\nfunction determineAlignment(tooltip, size) {\n\tvar model = tooltip._model;\n\tvar chart = tooltip._chart;\n\tvar chartArea = tooltip._chart.chartArea;\n\tvar xAlign = 'center';\n\tvar yAlign = 'center';\n\n\tif (model.y < size.height) {\n\t\tyAlign = 'top';\n\t} else if (model.y > (chart.height - size.height)) {\n\t\tyAlign = 'bottom';\n\t}\n\n\tvar lf, rf; // functions to determine left, right alignment\n\tvar olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart\n\tvar yf; // function to get the y alignment if the tooltip goes outside of the left or right edges\n\tvar midX = (chartArea.left + chartArea.right) / 2;\n\tvar midY = (chartArea.top + chartArea.bottom) / 2;\n\n\tif (yAlign === 'center') {\n\t\tlf = function(x) {\n\t\t\treturn x <= midX;\n\t\t};\n\t\trf = function(x) {\n\t\t\treturn x > midX;\n\t\t};\n\t} else {\n\t\tlf = function(x) {\n\t\t\treturn x <= (size.width / 2);\n\t\t};\n\t\trf = function(x) {\n\t\t\treturn x >= (chart.width - (size.width / 2));\n\t\t};\n\t}\n\n\tolf = function(x) {\n\t\treturn x + size.width + model.caretSize + model.caretPadding > chart.width;\n\t};\n\torf = function(x) {\n\t\treturn x - size.width - model.caretSize - model.caretPadding < 0;\n\t};\n\tyf = function(y) {\n\t\treturn y <= midY ? 'top' : 'bottom';\n\t};\n\n\tif (lf(model.x)) {\n\t\txAlign = 'left';\n\n\t\t// Is tooltip too wide and goes over the right side of the chart.?\n\t\tif (olf(model.x)) {\n\t\t\txAlign = 'center';\n\t\t\tyAlign = yf(model.y);\n\t\t}\n\t} else if (rf(model.x)) {\n\t\txAlign = 'right';\n\n\t\t// Is tooltip too wide and goes outside left edge of canvas?\n\t\tif (orf(model.x)) {\n\t\t\txAlign = 'center';\n\t\t\tyAlign = yf(model.y);\n\t\t}\n\t}\n\n\tvar opts = tooltip._options;\n\treturn {\n\t\txAlign: opts.xAlign ? opts.xAlign : xAlign,\n\t\tyAlign: opts.yAlign ? opts.yAlign : yAlign\n\t};\n}\n\n/**\n * Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment\n */\nfunction getBackgroundPoint(vm, size, alignment, chart) {\n\t// Background Position\n\tvar x = vm.x;\n\tvar y = vm.y;\n\n\tvar caretSize = vm.caretSize;\n\tvar caretPadding = vm.caretPadding;\n\tvar cornerRadius = vm.cornerRadius;\n\tvar xAlign = alignment.xAlign;\n\tvar yAlign = alignment.yAlign;\n\tvar paddingAndSize = caretSize + caretPadding;\n\tvar radiusAndPadding = cornerRadius + caretPadding;\n\n\tif (xAlign === 'right') {\n\t\tx -= size.width;\n\t} else if (xAlign === 'center') {\n\t\tx -= (size.width / 2);\n\t\tif (x + size.width > chart.width) {\n\t\t\tx = chart.width - size.width;\n\t\t}\n\t\tif (x < 0) {\n\t\t\tx = 0;\n\t\t}\n\t}\n\n\tif (yAlign === 'top') {\n\t\ty += paddingAndSize;\n\t} else if (yAlign === 'bottom') {\n\t\ty -= size.height + paddingAndSize;\n\t} else {\n\t\ty -= (size.height / 2);\n\t}\n\n\tif (yAlign === 'center') {\n\t\tif (xAlign === 'left') {\n\t\t\tx += paddingAndSize;\n\t\t} else if (xAlign === 'right') {\n\t\t\tx -= paddingAndSize;\n\t\t}\n\t} else if (xAlign === 'left') {\n\t\tx -= radiusAndPadding;\n\t} else if (xAlign === 'right') {\n\t\tx += radiusAndPadding;\n\t}\n\n\treturn {\n\t\tx: x,\n\t\ty: y\n\t};\n}\n\n/**\n * Helper to build before and after body lines\n */\nfunction getBeforeAfterBodyLines(callback) {\n\treturn pushOrConcat([], splitNewlines(callback));\n}\n\nvar exports = module.exports = Element.extend({\n\tinitialize: function() {\n\t\tthis._model = getBaseModel(this._options);\n\t\tthis._lastActive = [];\n\t},\n\n\t// Get the title\n\t// Args are: (tooltipItem, data)\n\tgetTitle: function() {\n\t\tvar me = this;\n\t\tvar opts = me._options;\n\t\tvar callbacks = opts.callbacks;\n\n\t\tvar beforeTitle = callbacks.beforeTitle.apply(me, arguments);\n\t\tvar title = callbacks.title.apply(me, arguments);\n\t\tvar afterTitle = callbacks.afterTitle.apply(me, arguments);\n\n\t\tvar lines = [];\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeTitle));\n\t\tlines = pushOrConcat(lines, splitNewlines(title));\n\t\tlines = pushOrConcat(lines, splitNewlines(afterTitle));\n\n\t\treturn lines;\n\t},\n\n\t// Args are: (tooltipItem, data)\n\tgetBeforeBody: function() {\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.beforeBody.apply(this, arguments));\n\t},\n\n\t// Args are: (tooltipItem, data)\n\tgetBody: function(tooltipItems, data) {\n\t\tvar me = this;\n\t\tvar callbacks = me._options.callbacks;\n\t\tvar bodyItems = [];\n\n\t\thelpers.each(tooltipItems, function(tooltipItem) {\n\t\t\tvar bodyItem = {\n\t\t\t\tbefore: [],\n\t\t\t\tlines: [],\n\t\t\t\tafter: []\n\t\t\t};\n\t\t\tpushOrConcat(bodyItem.before, splitNewlines(callbacks.beforeLabel.call(me, tooltipItem, data)));\n\t\t\tpushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data));\n\t\t\tpushOrConcat(bodyItem.after, splitNewlines(callbacks.afterLabel.call(me, tooltipItem, data)));\n\n\t\t\tbodyItems.push(bodyItem);\n\t\t});\n\n\t\treturn bodyItems;\n\t},\n\n\t// Args are: (tooltipItem, data)\n\tgetAfterBody: function() {\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.afterBody.apply(this, arguments));\n\t},\n\n\t// Get the footer and beforeFooter and afterFooter lines\n\t// Args are: (tooltipItem, data)\n\tgetFooter: function() {\n\t\tvar me = this;\n\t\tvar callbacks = me._options.callbacks;\n\n\t\tvar beforeFooter = callbacks.beforeFooter.apply(me, arguments);\n\t\tvar footer = callbacks.footer.apply(me, arguments);\n\t\tvar afterFooter = callbacks.afterFooter.apply(me, arguments);\n\n\t\tvar lines = [];\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeFooter));\n\t\tlines = pushOrConcat(lines, splitNewlines(footer));\n\t\tlines = pushOrConcat(lines, splitNewlines(afterFooter));\n\n\t\treturn lines;\n\t},\n\n\tupdate: function(changed) {\n\t\tvar me = this;\n\t\tvar opts = me._options;\n\n\t\t// Need to regenerate the model because its faster than using extend and it is necessary due to the optimization in Chart.Element.transition\n\t\t// that does _view = _model if ease === 1. This causes the 2nd tooltip update to set properties in both the view and model at the same time\n\t\t// which breaks any animations.\n\t\tvar existingModel = me._model;\n\t\tvar model = me._model = getBaseModel(opts);\n\t\tvar active = me._active;\n\n\t\tvar data = me._data;\n\n\t\t// In the case where active.length === 0 we need to keep these at existing values for good animations\n\t\tvar alignment = {\n\t\t\txAlign: existingModel.xAlign,\n\t\t\tyAlign: existingModel.yAlign\n\t\t};\n\t\tvar backgroundPoint = {\n\t\t\tx: existingModel.x,\n\t\t\ty: existingModel.y\n\t\t};\n\t\tvar tooltipSize = {\n\t\t\twidth: existingModel.width,\n\t\t\theight: existingModel.height\n\t\t};\n\t\tvar tooltipPosition = {\n\t\t\tx: existingModel.caretX,\n\t\t\ty: existingModel.caretY\n\t\t};\n\n\t\tvar i, len;\n\n\t\tif (active.length) {\n\t\t\tmodel.opacity = 1;\n\n\t\t\tvar labelColors = [];\n\t\t\tvar labelTextColors = [];\n\t\t\ttooltipPosition = positioners[opts.position].call(me, active, me._eventPosition);\n\n\t\t\tvar tooltipItems = [];\n\t\t\tfor (i = 0, len = active.length; i < len; ++i) {\n\t\t\t\ttooltipItems.push(createTooltipItem(active[i]));\n\t\t\t}\n\n\t\t\t// If the user provided a filter function, use it to modify the tooltip items\n\t\t\tif (opts.filter) {\n\t\t\t\ttooltipItems = tooltipItems.filter(function(a) {\n\t\t\t\t\treturn opts.filter(a, data);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// If the user provided a sorting function, use it to modify the tooltip items\n\t\t\tif (opts.itemSort) {\n\t\t\t\ttooltipItems = tooltipItems.sort(function(a, b) {\n\t\t\t\t\treturn opts.itemSort(a, b, data);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Determine colors for boxes\n\t\t\thelpers.each(tooltipItems, function(tooltipItem) {\n\t\t\t\tlabelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart));\n\t\t\t\tlabelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart));\n\t\t\t});\n\n\n\t\t\t// Build the Text Lines\n\t\t\tmodel.title = me.getTitle(tooltipItems, data);\n\t\t\tmodel.beforeBody = me.getBeforeBody(tooltipItems, data);\n\t\t\tmodel.body = me.getBody(tooltipItems, data);\n\t\t\tmodel.afterBody = me.getAfterBody(tooltipItems, data);\n\t\t\tmodel.footer = me.getFooter(tooltipItems, data);\n\n\t\t\t// Initial positioning and colors\n\t\t\tmodel.x = Math.round(tooltipPosition.x);\n\t\t\tmodel.y = Math.round(tooltipPosition.y);\n\t\t\tmodel.caretPadding = opts.caretPadding;\n\t\t\tmodel.labelColors = labelColors;\n\t\t\tmodel.labelTextColors = labelTextColors;\n\n\t\t\t// data points\n\t\t\tmodel.dataPoints = tooltipItems;\n\n\t\t\t// We need to determine alignment of the tooltip\n\t\t\ttooltipSize = getTooltipSize(this, model);\n\t\t\talignment = determineAlignment(this, tooltipSize);\n\t\t\t// Final Size and Position\n\t\t\tbackgroundPoint = getBackgroundPoint(model, tooltipSize, alignment, me._chart);\n\t\t} else {\n\t\t\tmodel.opacity = 0;\n\t\t}\n\n\t\tmodel.xAlign = alignment.xAlign;\n\t\tmodel.yAlign = alignment.yAlign;\n\t\tmodel.x = backgroundPoint.x;\n\t\tmodel.y = backgroundPoint.y;\n\t\tmodel.width = tooltipSize.width;\n\t\tmodel.height = tooltipSize.height;\n\n\t\t// Point where the caret on the tooltip points to\n\t\tmodel.caretX = tooltipPosition.x;\n\t\tmodel.caretY = tooltipPosition.y;\n\n\t\tme._model = model;\n\n\t\tif (changed && opts.custom) {\n\t\t\topts.custom.call(me, model);\n\t\t}\n\n\t\treturn me;\n\t},\n\n\tdrawCaret: function(tooltipPoint, size) {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar caretPosition = this.getCaretPosition(tooltipPoint, size, vm);\n\n\t\tctx.lineTo(caretPosition.x1, caretPosition.y1);\n\t\tctx.lineTo(caretPosition.x2, caretPosition.y2);\n\t\tctx.lineTo(caretPosition.x3, caretPosition.y3);\n\t},\n\tgetCaretPosition: function(tooltipPoint, size, vm) {\n\t\tvar x1, x2, x3, y1, y2, y3;\n\t\tvar caretSize = vm.caretSize;\n\t\tvar cornerRadius = vm.cornerRadius;\n\t\tvar xAlign = vm.xAlign;\n\t\tvar yAlign = vm.yAlign;\n\t\tvar ptX = tooltipPoint.x;\n\t\tvar ptY = tooltipPoint.y;\n\t\tvar width = size.width;\n\t\tvar height = size.height;\n\n\t\tif (yAlign === 'center') {\n\t\t\ty2 = ptY + (height / 2);\n\n\t\t\tif (xAlign === 'left') {\n\t\t\t\tx1 = ptX;\n\t\t\t\tx2 = x1 - caretSize;\n\t\t\t\tx3 = x1;\n\n\t\t\t\ty1 = y2 + caretSize;\n\t\t\t\ty3 = y2 - caretSize;\n\t\t\t} else {\n\t\t\t\tx1 = ptX + width;\n\t\t\t\tx2 = x1 + caretSize;\n\t\t\t\tx3 = x1;\n\n\t\t\t\ty1 = y2 - caretSize;\n\t\t\t\ty3 = y2 + caretSize;\n\t\t\t}\n\t\t} else {\n\t\t\tif (xAlign === 'left') {\n\t\t\t\tx2 = ptX + cornerRadius + (caretSize);\n\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\tx3 = x2 + caretSize;\n\t\t\t} else if (xAlign === 'right') {\n\t\t\t\tx2 = ptX + width - cornerRadius - caretSize;\n\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\tx3 = x2 + caretSize;\n\t\t\t} else {\n\t\t\t\tx2 = vm.caretX;\n\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\tx3 = x2 + caretSize;\n\t\t\t}\n\t\t\tif (yAlign === 'top') {\n\t\t\t\ty1 = ptY;\n\t\t\t\ty2 = y1 - caretSize;\n\t\t\t\ty3 = y1;\n\t\t\t} else {\n\t\t\t\ty1 = ptY + height;\n\t\t\t\ty2 = y1 + caretSize;\n\t\t\t\ty3 = y1;\n\t\t\t\t// invert drawing order\n\t\t\t\tvar tmp = x3;\n\t\t\t\tx3 = x1;\n\t\t\t\tx1 = tmp;\n\t\t\t}\n\t\t}\n\t\treturn {x1: x1, x2: x2, x3: x3, y1: y1, y2: y2, y3: y3};\n\t},\n\n\tdrawTitle: function(pt, vm, ctx, opacity) {\n\t\tvar title = vm.title;\n\n\t\tif (title.length) {\n\t\t\tctx.textAlign = vm._titleAlign;\n\t\t\tctx.textBaseline = 'top';\n\n\t\t\tvar titleFontSize = vm.titleFontSize;\n\t\t\tvar titleSpacing = vm.titleSpacing;\n\n\t\t\tctx.fillStyle = mergeOpacity(vm.titleFontColor, opacity);\n\t\t\tctx.font = helpers.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily);\n\n\t\t\tvar i, len;\n\t\t\tfor (i = 0, len = title.length; i < len; ++i) {\n\t\t\t\tctx.fillText(title[i], pt.x, pt.y);\n\t\t\t\tpt.y += titleFontSize + titleSpacing; // Line Height and spacing\n\n\t\t\t\tif (i + 1 === title.length) {\n\t\t\t\t\tpt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tdrawBody: function(pt, vm, ctx, opacity) {\n\t\tvar bodyFontSize = vm.bodyFontSize;\n\t\tvar bodySpacing = vm.bodySpacing;\n\t\tvar body = vm.body;\n\n\t\tctx.textAlign = vm._bodyAlign;\n\t\tctx.textBaseline = 'top';\n\t\tctx.font = helpers.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily);\n\n\t\t// Before Body\n\t\tvar xLinePadding = 0;\n\t\tvar fillLineOfText = function(line) {\n\t\t\tctx.fillText(line, pt.x + xLinePadding, pt.y);\n\t\t\tpt.y += bodyFontSize + bodySpacing;\n\t\t};\n\n\t\t// Before body lines\n\t\tctx.fillStyle = mergeOpacity(vm.bodyFontColor, opacity);\n\t\thelpers.each(vm.beforeBody, fillLineOfText);\n\n\t\tvar drawColorBoxes = vm.displayColors;\n\t\txLinePadding = drawColorBoxes ? (bodyFontSize + 2) : 0;\n\n\t\t// Draw body lines now\n\t\thelpers.each(body, function(bodyItem, i) {\n\t\t\tvar textColor = mergeOpacity(vm.labelTextColors[i], opacity);\n\t\t\tctx.fillStyle = textColor;\n\t\t\thelpers.each(bodyItem.before, fillLineOfText);\n\n\t\t\thelpers.each(bodyItem.lines, function(line) {\n\t\t\t\t// Draw Legend-like boxes if needed\n\t\t\t\tif (drawColorBoxes) {\n\t\t\t\t\t// Fill a white rect so that colours merge nicely if the opacity is < 1\n\t\t\t\t\tctx.fillStyle = mergeOpacity(vm.legendColorBackground, opacity);\n\t\t\t\t\tctx.fillRect(pt.x, pt.y, bodyFontSize, bodyFontSize);\n\n\t\t\t\t\t// Border\n\t\t\t\t\tctx.lineWidth = 1;\n\t\t\t\t\tctx.strokeStyle = mergeOpacity(vm.labelColors[i].borderColor, opacity);\n\t\t\t\t\tctx.strokeRect(pt.x, pt.y, bodyFontSize, bodyFontSize);\n\n\t\t\t\t\t// Inner square\n\t\t\t\t\tctx.fillStyle = mergeOpacity(vm.labelColors[i].backgroundColor, opacity);\n\t\t\t\t\tctx.fillRect(pt.x + 1, pt.y + 1, bodyFontSize - 2, bodyFontSize - 2);\n\t\t\t\t\tctx.fillStyle = textColor;\n\t\t\t\t}\n\n\t\t\t\tfillLineOfText(line);\n\t\t\t});\n\n\t\t\thelpers.each(bodyItem.after, fillLineOfText);\n\t\t});\n\n\t\t// Reset back to 0 for after body\n\t\txLinePadding = 0;\n\n\t\t// After body lines\n\t\thelpers.each(vm.afterBody, fillLineOfText);\n\t\tpt.y -= bodySpacing; // Remove last body spacing\n\t},\n\n\tdrawFooter: function(pt, vm, ctx, opacity) {\n\t\tvar footer = vm.footer;\n\n\t\tif (footer.length) {\n\t\t\tpt.y += vm.footerMarginTop;\n\n\t\t\tctx.textAlign = vm._footerAlign;\n\t\t\tctx.textBaseline = 'top';\n\n\t\t\tctx.fillStyle = mergeOpacity(vm.footerFontColor, opacity);\n\t\t\tctx.font = helpers.fontString(vm.footerFontSize, vm._footerFontStyle, vm._footerFontFamily);\n\n\t\t\thelpers.each(footer, function(line) {\n\t\t\t\tctx.fillText(line, pt.x, pt.y);\n\t\t\t\tpt.y += vm.footerFontSize + vm.footerSpacing;\n\t\t\t});\n\t\t}\n\t},\n\n\tdrawBackground: function(pt, vm, ctx, tooltipSize, opacity) {\n\t\tctx.fillStyle = mergeOpacity(vm.backgroundColor, opacity);\n\t\tctx.strokeStyle = mergeOpacity(vm.borderColor, opacity);\n\t\tctx.lineWidth = vm.borderWidth;\n\t\tvar xAlign = vm.xAlign;\n\t\tvar yAlign = vm.yAlign;\n\t\tvar x = pt.x;\n\t\tvar y = pt.y;\n\t\tvar width = tooltipSize.width;\n\t\tvar height = tooltipSize.height;\n\t\tvar radius = vm.cornerRadius;\n\n\t\tctx.beginPath();\n\t\tctx.moveTo(x + radius, y);\n\t\tif (yAlign === 'top') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x + width - radius, y);\n\t\tctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n\t\tif (yAlign === 'center' && xAlign === 'right') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x + width, y + height - radius);\n\t\tctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\n\t\tif (yAlign === 'bottom') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x + radius, y + height);\n\t\tctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n\t\tif (yAlign === 'center' && xAlign === 'left') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x, y + radius);\n\t\tctx.quadraticCurveTo(x, y, x + radius, y);\n\t\tctx.closePath();\n\n\t\tctx.fill();\n\n\t\tif (vm.borderWidth > 0) {\n\t\t\tctx.stroke();\n\t\t}\n\t},\n\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\n\t\tif (vm.opacity === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar tooltipSize = {\n\t\t\twidth: vm.width,\n\t\t\theight: vm.height\n\t\t};\n\t\tvar pt = {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\n\t\t// IE11/Edge does not like very small opacities, so snap to 0\n\t\tvar opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity;\n\n\t\t// Truthy/falsey value for empty tooltip\n\t\tvar hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length;\n\n\t\tif (this._options.enabled && hasTooltipContent) {\n\t\t\t// Draw Background\n\t\t\tthis.drawBackground(pt, vm, ctx, tooltipSize, opacity);\n\n\t\t\t// Draw Title, Body, and Footer\n\t\t\tpt.x += vm.xPadding;\n\t\t\tpt.y += vm.yPadding;\n\n\t\t\t// Titles\n\t\t\tthis.drawTitle(pt, vm, ctx, opacity);\n\n\t\t\t// Body\n\t\t\tthis.drawBody(pt, vm, ctx, opacity);\n\n\t\t\t// Footer\n\t\t\tthis.drawFooter(pt, vm, ctx, opacity);\n\t\t}\n\t},\n\n\t/**\n\t * Handle an event\n\t * @private\n\t * @param {IEvent} event - The event to handle\n\t * @returns {Boolean} true if the tooltip changed\n\t */\n\thandleEvent: function(e) {\n\t\tvar me = this;\n\t\tvar options = me._options;\n\t\tvar changed = false;\n\n\t\tme._lastActive = me._lastActive || [];\n\n\t\t// Find Active Elements for tooltips\n\t\tif (e.type === 'mouseout') {\n\t\t\tme._active = [];\n\t\t} else {\n\t\t\tme._active = me._chart.getElementsAtEventForMode(e, options.mode, options);\n\t\t}\n\n\t\t// Remember Last Actives\n\t\tchanged = !helpers.arrayEquals(me._active, me._lastActive);\n\n\t\t// Only handle target event on tooltip change\n\t\tif (changed) {\n\t\t\tme._lastActive = me._active;\n\n\t\t\tif (options.enabled || options.custom) {\n\t\t\t\tme._eventPosition = {\n\t\t\t\t\tx: e.x,\n\t\t\t\t\ty: e.y\n\t\t\t\t};\n\n\t\t\t\tme.update(true);\n\t\t\t\tme.pivot();\n\t\t\t}\n\t\t}\n\n\t\treturn changed;\n\t}\n});\n\n/**\n * @namespace Chart.Tooltip.positioners\n */\nexports.positioners = positioners;\n\n\n},{\"26\":26,\"27\":27,\"46\":46}],37:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar Element = require(27);\nvar helpers = require(46);\n\ndefaults._set('global', {\n\telements: {\n\t\tarc: {\n\t\t\tbackgroundColor: defaults.global.defaultColor,\n\t\t\tborderColor: '#fff',\n\t\t\tborderWidth: 2\n\t\t}\n\t}\n});\n\nmodule.exports = Element.extend({\n\tinLabelRange: function(mouseX) {\n\t\tvar vm = this._view;\n\n\t\tif (vm) {\n\t\t\treturn (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2));\n\t\t}\n\t\treturn false;\n\t},\n\n\tinRange: function(chartX, chartY) {\n\t\tvar vm = this._view;\n\n\t\tif (vm) {\n\t\t\tvar pointRelativePosition = helpers.getAngleFromPoint(vm, {x: chartX, y: chartY});\n\t\t\tvar\tangle = pointRelativePosition.angle;\n\t\t\tvar distance = pointRelativePosition.distance;\n\n\t\t\t// Sanitise angle range\n\t\t\tvar startAngle = vm.startAngle;\n\t\t\tvar endAngle = vm.endAngle;\n\t\t\twhile (endAngle < startAngle) {\n\t\t\t\tendAngle += 2.0 * Math.PI;\n\t\t\t}\n\t\t\twhile (angle > endAngle) {\n\t\t\t\tangle -= 2.0 * Math.PI;\n\t\t\t}\n\t\t\twhile (angle < startAngle) {\n\t\t\t\tangle += 2.0 * Math.PI;\n\t\t\t}\n\n\t\t\t// Check if within the range of the open/close angle\n\t\t\tvar betweenAngles = (angle >= startAngle && angle <= endAngle);\n\t\t\tvar withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius);\n\n\t\t\treturn (betweenAngles && withinRadius);\n\t\t}\n\t\treturn false;\n\t},\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\tvar halfAngle = (vm.startAngle + vm.endAngle) / 2;\n\t\tvar halfRadius = (vm.innerRadius + vm.outerRadius) / 2;\n\t\treturn {\n\t\t\tx: vm.x + Math.cos(halfAngle) * halfRadius,\n\t\t\ty: vm.y + Math.sin(halfAngle) * halfRadius\n\t\t};\n\t},\n\n\tgetArea: function() {\n\t\tvar vm = this._view;\n\t\treturn Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2));\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\tvar centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2);\n\t\tvar rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius;\n\n\t\treturn {\n\t\t\tx: vm.x + (Math.cos(centreAngle) * rangeFromCentre),\n\t\t\ty: vm.y + (Math.sin(centreAngle) * rangeFromCentre)\n\t\t};\n\t},\n\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar sA = vm.startAngle;\n\t\tvar eA = vm.endAngle;\n\n\t\tctx.beginPath();\n\n\t\tctx.arc(vm.x, vm.y, vm.outerRadius, sA, eA);\n\t\tctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true);\n\n\t\tctx.closePath();\n\t\tctx.strokeStyle = vm.borderColor;\n\t\tctx.lineWidth = vm.borderWidth;\n\n\t\tctx.fillStyle = vm.backgroundColor;\n\n\t\tctx.fill();\n\t\tctx.lineJoin = 'bevel';\n\n\t\tif (vm.borderWidth) {\n\t\t\tctx.stroke();\n\t\t}\n\t}\n});\n\n},{\"26\":26,\"27\":27,\"46\":46}],38:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar Element = require(27);\nvar helpers = require(46);\n\nvar globalDefaults = defaults.global;\n\ndefaults._set('global', {\n\telements: {\n\t\tline: {\n\t\t\ttension: 0.4,\n\t\t\tbackgroundColor: globalDefaults.defaultColor,\n\t\t\tborderWidth: 3,\n\t\t\tborderColor: globalDefaults.defaultColor,\n\t\t\tborderCapStyle: 'butt',\n\t\t\tborderDash: [],\n\t\t\tborderDashOffset: 0.0,\n\t\t\tborderJoinStyle: 'miter',\n\t\t\tcapBezierPoints: true,\n\t\t\tfill: true, // do we fill in the area between the line and its base axis\n\t\t}\n\t}\n});\n\nmodule.exports = Element.extend({\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar vm = me._view;\n\t\tvar ctx = me._chart.ctx;\n\t\tvar spanGaps = vm.spanGaps;\n\t\tvar points = me._children.slice(); // clone array\n\t\tvar globalOptionLineElements = globalDefaults.elements.line;\n\t\tvar lastDrawnIndex = -1;\n\t\tvar index, current, previous, currentVM;\n\n\t\t// If we are looping, adding the first point again\n\t\tif (me._loop && points.length) {\n\t\t\tpoints.push(points[0]);\n\t\t}\n\n\t\tctx.save();\n\n\t\t// Stroke Line Options\n\t\tctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle;\n\n\t\t// IE 9 and 10 do not support line dash\n\t\tif (ctx.setLineDash) {\n\t\t\tctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash);\n\t\t}\n\n\t\tctx.lineDashOffset = vm.borderDashOffset || globalOptionLineElements.borderDashOffset;\n\t\tctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\n\t\tctx.lineWidth = vm.borderWidth || globalOptionLineElements.borderWidth;\n\t\tctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor;\n\n\t\t// Stroke Line\n\t\tctx.beginPath();\n\t\tlastDrawnIndex = -1;\n\n\t\tfor (index = 0; index < points.length; ++index) {\n\t\t\tcurrent = points[index];\n\t\t\tprevious = helpers.previousItem(points, index);\n\t\t\tcurrentVM = current._view;\n\n\t\t\t// First point moves to it's starting position no matter what\n\t\t\tif (index === 0) {\n\t\t\t\tif (!currentVM.skip) {\n\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\n\t\t\t\t\tlastDrawnIndex = index;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tprevious = lastDrawnIndex === -1 ? previous : points[lastDrawnIndex];\n\n\t\t\t\tif (!currentVM.skip) {\n\t\t\t\t\tif ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) {\n\t\t\t\t\t\t// There was a gap and this is the first point after the gap\n\t\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Line to next point\n\t\t\t\t\t\thelpers.canvas.lineTo(ctx, previous._view, current._view);\n\t\t\t\t\t}\n\t\t\t\t\tlastDrawnIndex = index;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tctx.stroke();\n\t\tctx.restore();\n\t}\n});\n\n},{\"26\":26,\"27\":27,\"46\":46}],39:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar Element = require(27);\nvar helpers = require(46);\n\nvar defaultColor = defaults.global.defaultColor;\n\ndefaults._set('global', {\n\telements: {\n\t\tpoint: {\n\t\t\tradius: 3,\n\t\t\tpointStyle: 'circle',\n\t\t\tbackgroundColor: defaultColor,\n\t\t\tborderColor: defaultColor,\n\t\t\tborderWidth: 1,\n\t\t\t// Hover\n\t\t\thitRadius: 1,\n\t\t\thoverRadius: 4,\n\t\t\thoverBorderWidth: 1\n\t\t}\n\t}\n});\n\nfunction xRange(mouseX) {\n\tvar vm = this._view;\n\treturn vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false;\n}\n\nfunction yRange(mouseY) {\n\tvar vm = this._view;\n\treturn vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false;\n}\n\nmodule.exports = Element.extend({\n\tinRange: function(mouseX, mouseY) {\n\t\tvar vm = this._view;\n\t\treturn vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false;\n\t},\n\n\tinLabelRange: xRange,\n\tinXRange: xRange,\n\tinYRange: yRange,\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\t},\n\n\tgetArea: function() {\n\t\treturn Math.PI * Math.pow(this._view.radius, 2);\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y,\n\t\t\tpadding: vm.radius + vm.borderWidth\n\t\t};\n\t},\n\n\tdraw: function(chartArea) {\n\t\tvar vm = this._view;\n\t\tvar model = this._model;\n\t\tvar ctx = this._chart.ctx;\n\t\tvar pointStyle = vm.pointStyle;\n\t\tvar rotation = vm.rotation;\n\t\tvar radius = vm.radius;\n\t\tvar x = vm.x;\n\t\tvar y = vm.y;\n\t\tvar errMargin = 1.01; // 1.01 is margin for Accumulated error. (Especially Edge, IE.)\n\n\t\tif (vm.skip) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Clipping for Points.\n\t\tif (chartArea === undefined || (model.x >= chartArea.left && chartArea.right * errMargin >= model.x && model.y >= chartArea.top && chartArea.bottom * errMargin >= model.y)) {\n\t\t\tctx.strokeStyle = vm.borderColor || defaultColor;\n\t\t\tctx.lineWidth = helpers.valueOrDefault(vm.borderWidth, defaults.global.elements.point.borderWidth);\n\t\t\tctx.fillStyle = vm.backgroundColor || defaultColor;\n\t\t\thelpers.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation);\n\t\t}\n\t}\n});\n\n},{\"26\":26,\"27\":27,\"46\":46}],40:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar Element = require(27);\n\ndefaults._set('global', {\n\telements: {\n\t\trectangle: {\n\t\t\tbackgroundColor: defaults.global.defaultColor,\n\t\t\tborderColor: defaults.global.defaultColor,\n\t\t\tborderSkipped: 'bottom',\n\t\t\tborderWidth: 0\n\t\t}\n\t}\n});\n\nfunction isVertical(bar) {\n\treturn bar._view.width !== undefined;\n}\n\n/**\n * Helper function to get the bounds of the bar regardless of the orientation\n * @param bar {Chart.Element.Rectangle} the bar\n * @return {Bounds} bounds of the bar\n * @private\n */\nfunction getBarBounds(bar) {\n\tvar vm = bar._view;\n\tvar x1, x2, y1, y2;\n\n\tif (isVertical(bar)) {\n\t\t// vertical\n\t\tvar halfWidth = vm.width / 2;\n\t\tx1 = vm.x - halfWidth;\n\t\tx2 = vm.x + halfWidth;\n\t\ty1 = Math.min(vm.y, vm.base);\n\t\ty2 = Math.max(vm.y, vm.base);\n\t} else {\n\t\t// horizontal bar\n\t\tvar halfHeight = vm.height / 2;\n\t\tx1 = Math.min(vm.x, vm.base);\n\t\tx2 = Math.max(vm.x, vm.base);\n\t\ty1 = vm.y - halfHeight;\n\t\ty2 = vm.y + halfHeight;\n\t}\n\n\treturn {\n\t\tleft: x1,\n\t\ttop: y1,\n\t\tright: x2,\n\t\tbottom: y2\n\t};\n}\n\nmodule.exports = Element.extend({\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar left, right, top, bottom, signX, signY, borderSkipped;\n\t\tvar borderWidth = vm.borderWidth;\n\n\t\tif (!vm.horizontal) {\n\t\t\t// bar\n\t\t\tleft = vm.x - vm.width / 2;\n\t\t\tright = vm.x + vm.width / 2;\n\t\t\ttop = vm.y;\n\t\t\tbottom = vm.base;\n\t\t\tsignX = 1;\n\t\t\tsignY = bottom > top ? 1 : -1;\n\t\t\tborderSkipped = vm.borderSkipped || 'bottom';\n\t\t} else {\n\t\t\t// horizontal bar\n\t\t\tleft = vm.base;\n\t\t\tright = vm.x;\n\t\t\ttop = vm.y - vm.height / 2;\n\t\t\tbottom = vm.y + vm.height / 2;\n\t\t\tsignX = right > left ? 1 : -1;\n\t\t\tsignY = 1;\n\t\t\tborderSkipped = vm.borderSkipped || 'left';\n\t\t}\n\n\t\t// Canvas doesn't allow us to stroke inside the width so we can\n\t\t// adjust the sizes to fit if we're setting a stroke on the line\n\t\tif (borderWidth) {\n\t\t\t// borderWidth shold be less than bar width and bar height.\n\t\t\tvar barSize = Math.min(Math.abs(left - right), Math.abs(top - bottom));\n\t\t\tborderWidth = borderWidth > barSize ? barSize : borderWidth;\n\t\t\tvar halfStroke = borderWidth / 2;\n\t\t\t// Adjust borderWidth when bar top position is near vm.base(zero).\n\t\t\tvar borderLeft = left + (borderSkipped !== 'left' ? halfStroke * signX : 0);\n\t\t\tvar borderRight = right + (borderSkipped !== 'right' ? -halfStroke * signX : 0);\n\t\t\tvar borderTop = top + (borderSkipped !== 'top' ? halfStroke * signY : 0);\n\t\t\tvar borderBottom = bottom + (borderSkipped !== 'bottom' ? -halfStroke * signY : 0);\n\t\t\t// not become a vertical line?\n\t\t\tif (borderLeft !== borderRight) {\n\t\t\t\ttop = borderTop;\n\t\t\t\tbottom = borderBottom;\n\t\t\t}\n\t\t\t// not become a horizontal line?\n\t\t\tif (borderTop !== borderBottom) {\n\t\t\t\tleft = borderLeft;\n\t\t\t\tright = borderRight;\n\t\t\t}\n\t\t}\n\n\t\tctx.beginPath();\n\t\tctx.fillStyle = vm.backgroundColor;\n\t\tctx.strokeStyle = vm.borderColor;\n\t\tctx.lineWidth = borderWidth;\n\n\t\t// Corner points, from bottom-left to bottom-right clockwise\n\t\t// | 1 2 |\n\t\t// | 0 3 |\n\t\tvar corners = [\n\t\t\t[left, bottom],\n\t\t\t[left, top],\n\t\t\t[right, top],\n\t\t\t[right, bottom]\n\t\t];\n\n\t\t// Find first (starting) corner with fallback to 'bottom'\n\t\tvar borders = ['bottom', 'left', 'top', 'right'];\n\t\tvar startCorner = borders.indexOf(borderSkipped, 0);\n\t\tif (startCorner === -1) {\n\t\t\tstartCorner = 0;\n\t\t}\n\n\t\tfunction cornerAt(index) {\n\t\t\treturn corners[(startCorner + index) % 4];\n\t\t}\n\n\t\t// Draw rectangle from 'startCorner'\n\t\tvar corner = cornerAt(0);\n\t\tctx.moveTo(corner[0], corner[1]);\n\n\t\tfor (var i = 1; i < 4; i++) {\n\t\t\tcorner = cornerAt(i);\n\t\t\tctx.lineTo(corner[0], corner[1]);\n\t\t}\n\n\t\tctx.fill();\n\t\tif (borderWidth) {\n\t\t\tctx.stroke();\n\t\t}\n\t},\n\n\theight: function() {\n\t\tvar vm = this._view;\n\t\treturn vm.base - vm.y;\n\t},\n\n\tinRange: function(mouseX, mouseY) {\n\t\tvar inRange = false;\n\n\t\tif (this._view) {\n\t\t\tvar bounds = getBarBounds(this);\n\t\t\tinRange = mouseX >= bounds.left && mouseX <= bounds.right && mouseY >= bounds.top && mouseY <= bounds.bottom;\n\t\t}\n\n\t\treturn inRange;\n\t},\n\n\tinLabelRange: function(mouseX, mouseY) {\n\t\tvar me = this;\n\t\tif (!me._view) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar inRange = false;\n\t\tvar bounds = getBarBounds(me);\n\n\t\tif (isVertical(me)) {\n\t\t\tinRange = mouseX >= bounds.left && mouseX <= bounds.right;\n\t\t} else {\n\t\t\tinRange = mouseY >= bounds.top && mouseY <= bounds.bottom;\n\t\t}\n\n\t\treturn inRange;\n\t},\n\n\tinXRange: function(mouseX) {\n\t\tvar bounds = getBarBounds(this);\n\t\treturn mouseX >= bounds.left && mouseX <= bounds.right;\n\t},\n\n\tinYRange: function(mouseY) {\n\t\tvar bounds = getBarBounds(this);\n\t\treturn mouseY >= bounds.top && mouseY <= bounds.bottom;\n\t},\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\tvar x, y;\n\t\tif (isVertical(this)) {\n\t\t\tx = vm.x;\n\t\t\ty = (vm.y + vm.base) / 2;\n\t\t} else {\n\t\t\tx = (vm.x + vm.base) / 2;\n\t\t\ty = vm.y;\n\t\t}\n\n\t\treturn {x: x, y: y};\n\t},\n\n\tgetArea: function() {\n\t\tvar vm = this._view;\n\t\treturn vm.width * Math.abs(vm.y - vm.base);\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\t}\n});\n\n},{\"26\":26,\"27\":27}],41:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {};\nmodule.exports.Arc = require(37);\nmodule.exports.Line = require(38);\nmodule.exports.Point = require(39);\nmodule.exports.Rectangle = require(40);\n\n},{\"37\":37,\"38\":38,\"39\":39,\"40\":40}],42:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(43);\n\n/**\n * @namespace Chart.helpers.canvas\n */\nvar exports = module.exports = {\n\t/**\n\t * Clears the entire canvas associated to the given `chart`.\n\t * @param {Chart} chart - The chart for which to clear the canvas.\n\t */\n\tclear: function(chart) {\n\t\tchart.ctx.clearRect(0, 0, chart.width, chart.height);\n\t},\n\n\t/**\n\t * Creates a \"path\" for a rectangle with rounded corners at position (x, y) with a\n\t * given size (width, height) and the same `radius` for all corners.\n\t * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context.\n\t * @param {Number} x - The x axis of the coordinate for the rectangle starting point.\n\t * @param {Number} y - The y axis of the coordinate for the rectangle starting point.\n\t * @param {Number} width - The rectangle's width.\n\t * @param {Number} height - The rectangle's height.\n\t * @param {Number} radius - The rounded amount (in pixels) for the four corners.\n\t * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object?\n\t */\n\troundedRect: function(ctx, x, y, width, height, radius) {\n\t\tif (radius) {\n\t\t\t// NOTE(SB) `epsilon` helps to prevent minor artifacts appearing\n\t\t\t// on Chrome when `r` is exactly half the height or the width.\n\t\t\tvar epsilon = 0.0000001;\n\t\t\tvar r = Math.min(radius, (height / 2) - epsilon, (width / 2) - epsilon);\n\n\t\t\tctx.moveTo(x + r, y);\n\t\t\tctx.lineTo(x + width - r, y);\n\t\t\tctx.arcTo(x + width, y, x + width, y + r, r);\n\t\t\tctx.lineTo(x + width, y + height - r);\n\t\t\tctx.arcTo(x + width, y + height, x + width - r, y + height, r);\n\t\t\tctx.lineTo(x + r, y + height);\n\t\t\tctx.arcTo(x, y + height, x, y + height - r, r);\n\t\t\tctx.lineTo(x, y + r);\n\t\t\tctx.arcTo(x, y, x + r, y, r);\n\t\t\tctx.closePath();\n\t\t\tctx.moveTo(x, y);\n\t\t} else {\n\t\t\tctx.rect(x, y, width, height);\n\t\t}\n\t},\n\n\tdrawPoint: function(ctx, style, radius, x, y, rotation) {\n\t\tvar type, edgeLength, xOffset, yOffset, height, size;\n\t\trotation = rotation || 0;\n\n\t\tif (style && typeof style === 'object') {\n\t\t\ttype = style.toString();\n\t\t\tif (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n\t\t\t\tctx.drawImage(style, x - style.width / 2, y - style.height / 2, style.width, style.height);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (isNaN(radius) || radius <= 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tctx.save();\n\t\tctx.translate(x, y);\n\t\tctx.rotate(rotation * Math.PI / 180);\n\t\tctx.beginPath();\n\n\t\tswitch (style) {\n\t\t// Default includes circle\n\t\tdefault:\n\t\t\tctx.arc(0, 0, radius, 0, Math.PI * 2);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'triangle':\n\t\t\tedgeLength = 3 * radius / Math.sqrt(3);\n\t\t\theight = edgeLength * Math.sqrt(3) / 2;\n\t\t\tctx.moveTo(-edgeLength / 2, height / 3);\n\t\t\tctx.lineTo(edgeLength / 2, height / 3);\n\t\t\tctx.lineTo(0, -2 * height / 3);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'rect':\n\t\t\tsize = 1 / Math.SQRT2 * radius;\n\t\t\tctx.rect(-size, -size, 2 * size, 2 * size);\n\t\t\tbreak;\n\t\tcase 'rectRounded':\n\t\t\tvar offset = radius / Math.SQRT2;\n\t\t\tvar leftX = -offset;\n\t\t\tvar topY = -offset;\n\t\t\tvar sideSize = Math.SQRT2 * radius;\n\n\t\t\t// NOTE(SB) the rounded rect implementation changed to use `arcTo`\n\t\t\t// instead of `quadraticCurveTo` since it generates better results\n\t\t\t// when rect is almost a circle. 0.425 (instead of 0.5) produces\n\t\t\t// results visually closer to the previous impl.\n\t\t\tthis.roundedRect(ctx, leftX, topY, sideSize, sideSize, radius * 0.425);\n\t\t\tbreak;\n\t\tcase 'rectRot':\n\t\t\tsize = 1 / Math.SQRT2 * radius;\n\t\t\tctx.moveTo(-size, 0);\n\t\t\tctx.lineTo(0, size);\n\t\t\tctx.lineTo(size, 0);\n\t\t\tctx.lineTo(0, -size);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'cross':\n\t\t\tctx.moveTo(0, radius);\n\t\t\tctx.lineTo(0, -radius);\n\t\t\tctx.moveTo(-radius, 0);\n\t\t\tctx.lineTo(radius, 0);\n\t\t\tbreak;\n\t\tcase 'crossRot':\n\t\t\txOffset = Math.cos(Math.PI / 4) * radius;\n\t\t\tyOffset = Math.sin(Math.PI / 4) * radius;\n\t\t\tctx.moveTo(-xOffset, -yOffset);\n\t\t\tctx.lineTo(xOffset, yOffset);\n\t\t\tctx.moveTo(-xOffset, yOffset);\n\t\t\tctx.lineTo(xOffset, -yOffset);\n\t\t\tbreak;\n\t\tcase 'star':\n\t\t\tctx.moveTo(0, radius);\n\t\t\tctx.lineTo(0, -radius);\n\t\t\tctx.moveTo(-radius, 0);\n\t\t\tctx.lineTo(radius, 0);\n\t\t\txOffset = Math.cos(Math.PI / 4) * radius;\n\t\t\tyOffset = Math.sin(Math.PI / 4) * radius;\n\t\t\tctx.moveTo(-xOffset, -yOffset);\n\t\t\tctx.lineTo(xOffset, yOffset);\n\t\t\tctx.moveTo(-xOffset, yOffset);\n\t\t\tctx.lineTo(xOffset, -yOffset);\n\t\t\tbreak;\n\t\tcase 'line':\n\t\t\tctx.moveTo(-radius, 0);\n\t\t\tctx.lineTo(radius, 0);\n\t\t\tbreak;\n\t\tcase 'dash':\n\t\t\tctx.moveTo(0, 0);\n\t\t\tctx.lineTo(radius, 0);\n\t\t\tbreak;\n\t\t}\n\n\t\tctx.fill();\n\t\tctx.stroke();\n\t\tctx.restore();\n\t},\n\n\tclipArea: function(ctx, area) {\n\t\tctx.save();\n\t\tctx.beginPath();\n\t\tctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n\t\tctx.clip();\n\t},\n\n\tunclipArea: function(ctx) {\n\t\tctx.restore();\n\t},\n\n\tlineTo: function(ctx, previous, target, flip) {\n\t\tif (target.steppedLine) {\n\t\t\tif ((target.steppedLine === 'after' && !flip) || (target.steppedLine !== 'after' && flip)) {\n\t\t\t\tctx.lineTo(previous.x, target.y);\n\t\t\t} else {\n\t\t\t\tctx.lineTo(target.x, previous.y);\n\t\t\t}\n\t\t\tctx.lineTo(target.x, target.y);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!target.tension) {\n\t\t\tctx.lineTo(target.x, target.y);\n\t\t\treturn;\n\t\t}\n\n\t\tctx.bezierCurveTo(\n\t\t\tflip ? previous.controlPointPreviousX : previous.controlPointNextX,\n\t\t\tflip ? previous.controlPointPreviousY : previous.controlPointNextY,\n\t\t\tflip ? target.controlPointNextX : target.controlPointPreviousX,\n\t\t\tflip ? target.controlPointNextY : target.controlPointPreviousY,\n\t\t\ttarget.x,\n\t\t\ttarget.y);\n\t}\n};\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.canvas.clear instead.\n * @namespace Chart.helpers.clear\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.clear = exports.clear;\n\n/**\n * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead.\n * @namespace Chart.helpers.drawRoundedRectangle\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.drawRoundedRectangle = function(ctx) {\n\tctx.beginPath();\n\texports.roundedRect.apply(exports, arguments);\n};\n\n},{\"43\":43}],43:[function(require,module,exports){\n'use strict';\n\n/**\n * @namespace Chart.helpers\n */\nvar helpers = {\n\t/**\n\t * An empty function that can be used, for example, for optional callback.\n\t */\n\tnoop: function() {},\n\n\t/**\n\t * Returns a unique id, sequentially generated from a global variable.\n\t * @returns {Number}\n\t * @function\n\t */\n\tuid: (function() {\n\t\tvar id = 0;\n\t\treturn function() {\n\t\t\treturn id++;\n\t\t};\n\t}()),\n\n\t/**\n\t * Returns true if `value` is neither null nor undefined, else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {Boolean}\n\t * @since 2.7.0\n\t */\n\tisNullOrUndef: function(value) {\n\t\treturn value === null || typeof value === 'undefined';\n\t},\n\n\t/**\n\t * Returns true if `value` is an array, else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {Boolean}\n\t * @function\n\t */\n\tisArray: Array.isArray ? Array.isArray : function(value) {\n\t\treturn Object.prototype.toString.call(value) === '[object Array]';\n\t},\n\n\t/**\n\t * Returns true if `value` is an object (excluding null), else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {Boolean}\n\t * @since 2.7.0\n\t */\n\tisObject: function(value) {\n\t\treturn value !== null && Object.prototype.toString.call(value) === '[object Object]';\n\t},\n\n\t/**\n\t * Returns `value` if defined, else returns `defaultValue`.\n\t * @param {*} value - The value to return if defined.\n\t * @param {*} defaultValue - The value to return if `value` is undefined.\n\t * @returns {*}\n\t */\n\tvalueOrDefault: function(value, defaultValue) {\n\t\treturn typeof value === 'undefined' ? defaultValue : value;\n\t},\n\n\t/**\n\t * Returns value at the given `index` in array if defined, else returns `defaultValue`.\n\t * @param {Array} value - The array to lookup for value at `index`.\n\t * @param {Number} index - The index in `value` to lookup for value.\n\t * @param {*} defaultValue - The value to return if `value[index]` is undefined.\n\t * @returns {*}\n\t */\n\tvalueAtIndexOrDefault: function(value, index, defaultValue) {\n\t\treturn helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue);\n\t},\n\n\t/**\n\t * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n\t * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n\t * @param {Function} fn - The function to call.\n\t * @param {Array|undefined|null} args - The arguments with which `fn` should be called.\n\t * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`.\n\t * @returns {*}\n\t */\n\tcallback: function(fn, args, thisArg) {\n\t\tif (fn && typeof fn.call === 'function') {\n\t\t\treturn fn.apply(thisArg, args);\n\t\t}\n\t},\n\n\t/**\n\t * Note(SB) for performance sake, this method should only be used when loopable type\n\t * is unknown or in none intensive code (not called often and small loopable). Else\n\t * it's preferable to use a regular for() loop and save extra function calls.\n\t * @param {Object|Array} loopable - The object or array to be iterated.\n\t * @param {Function} fn - The function to call for each item.\n\t * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`.\n\t * @param {Boolean} [reverse] - If true, iterates backward on the loopable.\n\t */\n\teach: function(loopable, fn, thisArg, reverse) {\n\t\tvar i, len, keys;\n\t\tif (helpers.isArray(loopable)) {\n\t\t\tlen = loopable.length;\n\t\t\tif (reverse) {\n\t\t\t\tfor (i = len - 1; i >= 0; i--) {\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (helpers.isObject(loopable)) {\n\t\t\tkeys = Object.keys(loopable);\n\t\t\tlen = keys.length;\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tfn.call(thisArg, loopable[keys[i]], keys[i]);\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n\t * @see http://stackoverflow.com/a/14853974\n\t * @param {Array} a0 - The array to compare\n\t * @param {Array} a1 - The array to compare\n\t * @returns {Boolean}\n\t */\n\tarrayEquals: function(a0, a1) {\n\t\tvar i, ilen, v0, v1;\n\n\t\tif (!a0 || !a1 || a0.length !== a1.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (i = 0, ilen = a0.length; i < ilen; ++i) {\n\t\t\tv0 = a0[i];\n\t\t\tv1 = a1[i];\n\n\t\t\tif (v0 instanceof Array && v1 instanceof Array) {\n\t\t\t\tif (!helpers.arrayEquals(v0, v1)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else if (v0 !== v1) {\n\t\t\t\t// NOTE: two different object instances will never be equal: {x:20} != {x:20}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t/**\n\t * Returns a deep copy of `source` without keeping references on objects and arrays.\n\t * @param {*} source - The value to clone.\n\t * @returns {*}\n\t */\n\tclone: function(source) {\n\t\tif (helpers.isArray(source)) {\n\t\t\treturn source.map(helpers.clone);\n\t\t}\n\n\t\tif (helpers.isObject(source)) {\n\t\t\tvar target = {};\n\t\t\tvar keys = Object.keys(source);\n\t\t\tvar klen = keys.length;\n\t\t\tvar k = 0;\n\n\t\t\tfor (; k < klen; ++k) {\n\t\t\t\ttarget[keys[k]] = helpers.clone(source[keys[k]]);\n\t\t\t}\n\n\t\t\treturn target;\n\t\t}\n\n\t\treturn source;\n\t},\n\n\t/**\n\t * The default merger when Chart.helpers.merge is called without merger option.\n\t * Note(SB): this method is also used by configMerge and scaleMerge as fallback.\n\t * @private\n\t */\n\t_merger: function(key, target, source, options) {\n\t\tvar tval = target[key];\n\t\tvar sval = source[key];\n\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\n\t\t\thelpers.merge(tval, sval, options);\n\t\t} else {\n\t\t\ttarget[key] = helpers.clone(sval);\n\t\t}\n\t},\n\n\t/**\n\t * Merges source[key] in target[key] only if target[key] is undefined.\n\t * @private\n\t */\n\t_mergerIf: function(key, target, source) {\n\t\tvar tval = target[key];\n\t\tvar sval = source[key];\n\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\n\t\t\thelpers.mergeIf(tval, sval);\n\t\t} else if (!target.hasOwnProperty(key)) {\n\t\t\ttarget[key] = helpers.clone(sval);\n\t\t}\n\t},\n\n\t/**\n\t * Recursively deep copies `source` properties into `target` with the given `options`.\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n\t * @param {Object} target - The target object in which all sources are merged into.\n\t * @param {Object|Array(Object)} source - Object(s) to merge into `target`.\n\t * @param {Object} [options] - Merging options:\n\t * @param {Function} [options.merger] - The merge method (key, target, source, options)\n\t * @returns {Object} The `target` object.\n\t */\n\tmerge: function(target, source, options) {\n\t\tvar sources = helpers.isArray(source) ? source : [source];\n\t\tvar ilen = sources.length;\n\t\tvar merge, i, keys, klen, k;\n\n\t\tif (!helpers.isObject(target)) {\n\t\t\treturn target;\n\t\t}\n\n\t\toptions = options || {};\n\t\tmerge = options.merger || helpers._merger;\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\tsource = sources[i];\n\t\t\tif (!helpers.isObject(source)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tkeys = Object.keys(source);\n\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\n\t\t\t\tmerge(keys[k], target, source, options);\n\t\t\t}\n\t\t}\n\n\t\treturn target;\n\t},\n\n\t/**\n\t * Recursively deep copies `source` properties into `target` *only* if not defined in target.\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n\t * @param {Object} target - The target object in which all sources are merged into.\n\t * @param {Object|Array(Object)} source - Object(s) to merge into `target`.\n\t * @returns {Object} The `target` object.\n\t */\n\tmergeIf: function(target, source) {\n\t\treturn helpers.merge(target, source, {merger: helpers._mergerIf});\n\t},\n\n\t/**\n\t * Applies the contents of two or more objects together into the first object.\n\t * @param {Object} target - The target object in which all objects are merged into.\n\t * @param {Object} arg1 - Object containing additional properties to merge in target.\n\t * @param {Object} argN - Additional objects containing properties to merge in target.\n\t * @returns {Object} The `target` object.\n\t */\n\textend: function(target) {\n\t\tvar setFn = function(value, key) {\n\t\t\ttarget[key] = value;\n\t\t};\n\t\tfor (var i = 1, ilen = arguments.length; i < ilen; ++i) {\n\t\t\thelpers.each(arguments[i], setFn);\n\t\t}\n\t\treturn target;\n\t},\n\n\t/**\n\t * Basic javascript inheritance based on the model created in Backbone.js\n\t */\n\tinherits: function(extensions) {\n\t\tvar me = this;\n\t\tvar ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() {\n\t\t\treturn me.apply(this, arguments);\n\t\t};\n\n\t\tvar Surrogate = function() {\n\t\t\tthis.constructor = ChartElement;\n\t\t};\n\n\t\tSurrogate.prototype = me.prototype;\n\t\tChartElement.prototype = new Surrogate();\n\t\tChartElement.extend = helpers.inherits;\n\n\t\tif (extensions) {\n\t\t\thelpers.extend(ChartElement.prototype, extensions);\n\t\t}\n\n\t\tChartElement.__super__ = me.prototype;\n\t\treturn ChartElement;\n\t}\n};\n\nmodule.exports = helpers;\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.callback instead.\n * @function Chart.helpers.callCallback\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n * @private\n */\nhelpers.callCallback = helpers.callback;\n\n/**\n * Provided for backward compatibility, use Array.prototype.indexOf instead.\n * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+\n * @function Chart.helpers.indexOf\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.indexOf = function(array, item, fromIndex) {\n\treturn Array.prototype.indexOf.call(array, item, fromIndex);\n};\n\n/**\n * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead.\n * @function Chart.helpers.getValueOrDefault\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.getValueOrDefault = helpers.valueOrDefault;\n\n/**\n * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead.\n * @function Chart.helpers.getValueAtIndexOrDefault\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\n},{}],44:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(43);\n\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easingEffects\n * @see http://www.robertpenner.com/easing/\n */\nvar effects = {\n\tlinear: function(t) {\n\t\treturn t;\n\t},\n\n\teaseInQuad: function(t) {\n\t\treturn t * t;\n\t},\n\n\teaseOutQuad: function(t) {\n\t\treturn -t * (t - 2);\n\t},\n\n\teaseInOutQuad: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t;\n\t\t}\n\t\treturn -0.5 * ((--t) * (t - 2) - 1);\n\t},\n\n\teaseInCubic: function(t) {\n\t\treturn t * t * t;\n\t},\n\n\teaseOutCubic: function(t) {\n\t\treturn (t = t - 1) * t * t + 1;\n\t},\n\n\teaseInOutCubic: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t;\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * t + 2);\n\t},\n\n\teaseInQuart: function(t) {\n\t\treturn t * t * t * t;\n\t},\n\n\teaseOutQuart: function(t) {\n\t\treturn -((t = t - 1) * t * t * t - 1);\n\t},\n\n\teaseInOutQuart: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t * t;\n\t\t}\n\t\treturn -0.5 * ((t -= 2) * t * t * t - 2);\n\t},\n\n\teaseInQuint: function(t) {\n\t\treturn t * t * t * t * t;\n\t},\n\n\teaseOutQuint: function(t) {\n\t\treturn (t = t - 1) * t * t * t * t + 1;\n\t},\n\n\teaseInOutQuint: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t * t * t;\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\n\t},\n\n\teaseInSine: function(t) {\n\t\treturn -Math.cos(t * (Math.PI / 2)) + 1;\n\t},\n\n\teaseOutSine: function(t) {\n\t\treturn Math.sin(t * (Math.PI / 2));\n\t},\n\n\teaseInOutSine: function(t) {\n\t\treturn -0.5 * (Math.cos(Math.PI * t) - 1);\n\t},\n\n\teaseInExpo: function(t) {\n\t\treturn (t === 0) ? 0 : Math.pow(2, 10 * (t - 1));\n\t},\n\n\teaseOutExpo: function(t) {\n\t\treturn (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1;\n\t},\n\n\teaseInOutExpo: function(t) {\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * Math.pow(2, 10 * (t - 1));\n\t\t}\n\t\treturn 0.5 * (-Math.pow(2, -10 * --t) + 2);\n\t},\n\n\teaseInCirc: function(t) {\n\t\tif (t >= 1) {\n\t\t\treturn t;\n\t\t}\n\t\treturn -(Math.sqrt(1 - t * t) - 1);\n\t},\n\n\teaseOutCirc: function(t) {\n\t\treturn Math.sqrt(1 - (t = t - 1) * t);\n\t},\n\n\teaseInOutCirc: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn -0.5 * (Math.sqrt(1 - t * t) - 1);\n\t\t}\n\t\treturn 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n\t},\n\n\teaseInElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.3;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\treturn -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n\t},\n\n\teaseOutElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.3;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\treturn a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1;\n\t},\n\n\teaseInOutElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif ((t /= 0.5) === 2) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.45;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\tif (t < 1) {\n\t\t\treturn -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n\t\t}\n\t\treturn a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1;\n\t},\n\teaseInBack: function(t) {\n\t\tvar s = 1.70158;\n\t\treturn t * t * ((s + 1) * t - s);\n\t},\n\n\teaseOutBack: function(t) {\n\t\tvar s = 1.70158;\n\t\treturn (t = t - 1) * t * ((s + 1) * t + s) + 1;\n\t},\n\n\teaseInOutBack: function(t) {\n\t\tvar s = 1.70158;\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n\t},\n\n\teaseInBounce: function(t) {\n\t\treturn 1 - effects.easeOutBounce(1 - t);\n\t},\n\n\teaseOutBounce: function(t) {\n\t\tif (t < (1 / 2.75)) {\n\t\t\treturn 7.5625 * t * t;\n\t\t}\n\t\tif (t < (2 / 2.75)) {\n\t\t\treturn 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75;\n\t\t}\n\t\tif (t < (2.5 / 2.75)) {\n\t\t\treturn 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375;\n\t\t}\n\t\treturn 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;\n\t},\n\n\teaseInOutBounce: function(t) {\n\t\tif (t < 0.5) {\n\t\t\treturn effects.easeInBounce(t * 2) * 0.5;\n\t\t}\n\t\treturn effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;\n\t}\n};\n\nmodule.exports = {\n\teffects: effects\n};\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.easing.effects instead.\n * @function Chart.helpers.easingEffects\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.easingEffects = effects;\n\n},{\"43\":43}],45:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(43);\n\n/**\n * @alias Chart.helpers.options\n * @namespace\n */\nmodule.exports = {\n\t/**\n\t * Converts the given line height `value` in pixels for a specific font `size`.\n\t * @param {Number|String} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n\t * @param {Number} size - The font size (in pixels) used to resolve relative `value`.\n\t * @returns {Number} The effective line height in pixels (size * 1.2 if value is invalid).\n\t * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n\t * @since 2.7.0\n\t */\n\ttoLineHeight: function(value, size) {\n\t\tvar matches = ('' + value).match(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\n\t\tif (!matches || matches[1] === 'normal') {\n\t\t\treturn size * 1.2;\n\t\t}\n\n\t\tvalue = +matches[2];\n\n\t\tswitch (matches[3]) {\n\t\tcase 'px':\n\t\t\treturn value;\n\t\tcase '%':\n\t\t\tvalue /= 100;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t\t}\n\n\t\treturn size * value;\n\t},\n\n\t/**\n\t * Converts the given value into a padding object with pre-computed width/height.\n\t * @param {Number|Object} value - If a number, set the value to all TRBL component,\n\t * else, if and object, use defined properties and sets undefined ones to 0.\n\t * @returns {Object} The padding values (top, right, bottom, left, width, height)\n\t * @since 2.7.0\n\t */\n\ttoPadding: function(value) {\n\t\tvar t, r, b, l;\n\n\t\tif (helpers.isObject(value)) {\n\t\t\tt = +value.top || 0;\n\t\t\tr = +value.right || 0;\n\t\t\tb = +value.bottom || 0;\n\t\t\tl = +value.left || 0;\n\t\t} else {\n\t\t\tt = r = b = l = +value || 0;\n\t\t}\n\n\t\treturn {\n\t\t\ttop: t,\n\t\t\tright: r,\n\t\t\tbottom: b,\n\t\t\tleft: l,\n\t\t\theight: t + b,\n\t\t\twidth: l + r\n\t\t};\n\t},\n\n\t/**\n\t * Evaluates the given `inputs` sequentially and returns the first defined value.\n\t * @param {Array[]} inputs - An array of values, falling back to the last value.\n\t * @param {Object} [context] - If defined and the current value is a function, the value\n\t * is called with `context` as first argument and the result becomes the new input.\n\t * @param {Number} [index] - If defined and the current value is an array, the value\n\t * at `index` become the new input.\n\t * @since 2.7.0\n\t */\n\tresolve: function(inputs, context, index) {\n\t\tvar i, ilen, value;\n\n\t\tfor (i = 0, ilen = inputs.length; i < ilen; ++i) {\n\t\t\tvalue = inputs[i];\n\t\t\tif (value === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (context !== undefined && typeof value === 'function') {\n\t\t\t\tvalue = value(context);\n\t\t\t}\n\t\t\tif (index !== undefined && helpers.isArray(value)) {\n\t\t\t\tvalue = value[index];\n\t\t\t}\n\t\t\tif (value !== undefined) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t}\n};\n\n},{\"43\":43}],46:[function(require,module,exports){\n'use strict';\n\nmodule.exports = require(43);\nmodule.exports.easing = require(44);\nmodule.exports.canvas = require(42);\nmodule.exports.options = require(45);\n\n},{\"42\":42,\"43\":43,\"44\":44,\"45\":45}],47:[function(require,module,exports){\n/**\n * Platform fallback implementation (minimal).\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\n */\n\nmodule.exports = {\n\tacquireContext: function(item) {\n\t\tif (item && item.canvas) {\n\t\t\t// Support for any object associated to a canvas (including a context2d)\n\t\t\titem = item.canvas;\n\t\t}\n\n\t\treturn item && item.getContext('2d') || null;\n\t}\n};\n\n},{}],48:[function(require,module,exports){\n/**\n * Chart.Platform implementation for targeting a web browser\n */\n\n'use strict';\n\nvar helpers = require(46);\n\nvar EXPANDO_KEY = '$chartjs';\nvar CSS_PREFIX = 'chartjs-';\nvar CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor';\nvar CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation';\nvar ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart'];\n\n/**\n * DOM event types -> Chart.js event types.\n * Note: only events with different types are mapped.\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\n */\nvar EVENT_TYPES = {\n\ttouchstart: 'mousedown',\n\ttouchmove: 'mousemove',\n\ttouchend: 'mouseup',\n\tpointerenter: 'mouseenter',\n\tpointerdown: 'mousedown',\n\tpointermove: 'mousemove',\n\tpointerup: 'mouseup',\n\tpointerleave: 'mouseout',\n\tpointerout: 'mouseout'\n};\n\n/**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns {Number} Size in pixels or undefined if unknown.\n */\nfunction readUsedSize(element, property) {\n\tvar value = helpers.getStyle(element, property);\n\tvar matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n\treturn matches ? Number(matches[1]) : undefined;\n}\n\n/**\n * Initializes the canvas style and render size without modifying the canvas display size,\n * since responsiveness is handled by the controller.resize() method. The config is used\n * to determine the aspect ratio to apply in case no explicit height has been specified.\n */\nfunction initCanvas(canvas, config) {\n\tvar style = canvas.style;\n\n\t// NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\n\t// returns null or '' if no explicit value has been set to the canvas attribute.\n\tvar renderHeight = canvas.getAttribute('height');\n\tvar renderWidth = canvas.getAttribute('width');\n\n\t// Chart.js modifies some canvas values that we want to restore on destroy\n\tcanvas[EXPANDO_KEY] = {\n\t\tinitial: {\n\t\t\theight: renderHeight,\n\t\t\twidth: renderWidth,\n\t\t\tstyle: {\n\t\t\t\tdisplay: style.display,\n\t\t\t\theight: style.height,\n\t\t\t\twidth: style.width\n\t\t\t}\n\t\t}\n\t};\n\n\t// Force canvas to display as block to avoid extra space caused by inline\n\t// elements, which would interfere with the responsive resize process.\n\t// https://github.com/chartjs/Chart.js/issues/2538\n\tstyle.display = style.display || 'block';\n\n\tif (renderWidth === null || renderWidth === '') {\n\t\tvar displayWidth = readUsedSize(canvas, 'width');\n\t\tif (displayWidth !== undefined) {\n\t\t\tcanvas.width = displayWidth;\n\t\t}\n\t}\n\n\tif (renderHeight === null || renderHeight === '') {\n\t\tif (canvas.style.height === '') {\n\t\t\t// If no explicit render height and style height, let's apply the aspect ratio,\n\t\t\t// which one can be specified by the user but also by charts as default option\n\t\t\t// (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\n\t\t\tcanvas.height = canvas.width / (config.options.aspectRatio || 2);\n\t\t} else {\n\t\t\tvar displayHeight = readUsedSize(canvas, 'height');\n\t\t\tif (displayWidth !== undefined) {\n\t\t\t\tcanvas.height = displayHeight;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn canvas;\n}\n\n/**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */\nvar supportsEventListenerOptions = (function() {\n\tvar supports = false;\n\ttry {\n\t\tvar options = Object.defineProperty({}, 'passive', {\n\t\t\tget: function() {\n\t\t\t\tsupports = true;\n\t\t\t}\n\t\t});\n\t\twindow.addEventListener('e', null, options);\n\t} catch (e) {\n\t\t// continue regardless of error\n\t}\n\treturn supports;\n}());\n\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\n// https://github.com/chartjs/Chart.js/issues/4287\nvar eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\n\nfunction addEventListener(node, type, listener) {\n\tnode.addEventListener(type, listener, eventListenerOptions);\n}\n\nfunction removeEventListener(node, type, listener) {\n\tnode.removeEventListener(type, listener, eventListenerOptions);\n}\n\nfunction createEvent(type, chart, x, y, nativeEvent) {\n\treturn {\n\t\ttype: type,\n\t\tchart: chart,\n\t\tnative: nativeEvent || null,\n\t\tx: x !== undefined ? x : null,\n\t\ty: y !== undefined ? y : null,\n\t};\n}\n\nfunction fromNativeEvent(event, chart) {\n\tvar type = EVENT_TYPES[event.type] || event.type;\n\tvar pos = helpers.getRelativePosition(event, chart);\n\treturn createEvent(type, chart, pos.x, pos.y, event);\n}\n\nfunction throttled(fn, thisArg) {\n\tvar ticking = false;\n\tvar args = [];\n\n\treturn function() {\n\t\targs = Array.prototype.slice.call(arguments);\n\t\tthisArg = thisArg || this;\n\n\t\tif (!ticking) {\n\t\t\tticking = true;\n\t\t\thelpers.requestAnimFrame.call(window, function() {\n\t\t\t\tticking = false;\n\t\t\t\tfn.apply(thisArg, args);\n\t\t\t});\n\t\t}\n\t};\n}\n\n// Implementation based on https://github.com/marcj/css-element-queries\nfunction createResizer(handler) {\n\tvar resizer = document.createElement('div');\n\tvar cls = CSS_PREFIX + 'size-monitor';\n\tvar maxSize = 1000000;\n\tvar style =\n\t\t'position:absolute;' +\n\t\t'left:0;' +\n\t\t'top:0;' +\n\t\t'right:0;' +\n\t\t'bottom:0;' +\n\t\t'overflow:hidden;' +\n\t\t'pointer-events:none;' +\n\t\t'visibility:hidden;' +\n\t\t'z-index:-1;';\n\n\tresizer.style.cssText = style;\n\tresizer.className = cls;\n\tresizer.innerHTML =\n\t\t'
      ' +\n\t\t\t'
      ' +\n\t\t\t'
      ' +\n\t\t'
      ' +\n\t\t'
      ' +\n\t\t\t'
      ' +\n\t\t\t'
      ' +\n\t\t'
      ';\n\n\tvar expand = resizer.childNodes[0];\n\tvar shrink = resizer.childNodes[1];\n\n\tresizer._reset = function() {\n\t\texpand.scrollLeft = maxSize;\n\t\texpand.scrollTop = maxSize;\n\t\tshrink.scrollLeft = maxSize;\n\t\tshrink.scrollTop = maxSize;\n\t};\n\tvar onScroll = function() {\n\t\tresizer._reset();\n\t\thandler();\n\t};\n\n\taddEventListener(expand, 'scroll', onScroll.bind(expand, 'expand'));\n\taddEventListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink'));\n\n\treturn resizer;\n}\n\n// https://davidwalsh.name/detect-node-insertion\nfunction watchForRender(node, handler) {\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\n\tvar proxy = expando.renderProxy = function(e) {\n\t\tif (e.animationName === CSS_RENDER_ANIMATION) {\n\t\t\thandler();\n\t\t}\n\t};\n\n\thelpers.each(ANIMATION_START_EVENTS, function(type) {\n\t\taddEventListener(node, type, proxy);\n\t});\n\n\t// #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class\n\t// is removed then added back immediately (same animation frame?). Accessing the\n\t// `offsetParent` property will force a reflow and re-evaluate the CSS animation.\n\t// https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics\n\t// https://github.com/chartjs/Chart.js/issues/4737\n\texpando.reflow = !!node.offsetParent;\n\n\tnode.classList.add(CSS_RENDER_MONITOR);\n}\n\nfunction unwatchForRender(node) {\n\tvar expando = node[EXPANDO_KEY] || {};\n\tvar proxy = expando.renderProxy;\n\n\tif (proxy) {\n\t\thelpers.each(ANIMATION_START_EVENTS, function(type) {\n\t\t\tremoveEventListener(node, type, proxy);\n\t\t});\n\n\t\tdelete expando.renderProxy;\n\t}\n\n\tnode.classList.remove(CSS_RENDER_MONITOR);\n}\n\nfunction addResizeListener(node, listener, chart) {\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\n\n\t// Let's keep track of this added resizer and thus avoid DOM query when removing it.\n\tvar resizer = expando.resizer = createResizer(throttled(function() {\n\t\tif (expando.resizer) {\n\t\t\treturn listener(createEvent('resize', chart));\n\t\t}\n\t}));\n\n\t// The resizer needs to be attached to the node parent, so we first need to be\n\t// sure that `node` is attached to the DOM before injecting the resizer element.\n\twatchForRender(node, function() {\n\t\tif (expando.resizer) {\n\t\t\tvar container = node.parentNode;\n\t\t\tif (container && container !== resizer.parentNode) {\n\t\t\t\tcontainer.insertBefore(resizer, container.firstChild);\n\t\t\t}\n\n\t\t\t// The container size might have changed, let's reset the resizer state.\n\t\t\tresizer._reset();\n\t\t}\n\t});\n}\n\nfunction removeResizeListener(node) {\n\tvar expando = node[EXPANDO_KEY] || {};\n\tvar resizer = expando.resizer;\n\n\tdelete expando.resizer;\n\tunwatchForRender(node);\n\n\tif (resizer && resizer.parentNode) {\n\t\tresizer.parentNode.removeChild(resizer);\n\t}\n}\n\nfunction injectCSS(platform, css) {\n\t// http://stackoverflow.com/q/3922139\n\tvar style = platform._style || document.createElement('style');\n\tif (!platform._style) {\n\t\tplatform._style = style;\n\t\tcss = '/* Chart.js */\\n' + css;\n\t\tstyle.setAttribute('type', 'text/css');\n\t\tdocument.getElementsByTagName('head')[0].appendChild(style);\n\t}\n\n\tstyle.appendChild(document.createTextNode(css));\n}\n\nmodule.exports = {\n\t/**\n\t * This property holds whether this platform is enabled for the current environment.\n\t * Currently used by platform.js to select the proper implementation.\n\t * @private\n\t */\n\t_enabled: typeof window !== 'undefined' && typeof document !== 'undefined',\n\n\tinitialize: function() {\n\t\tvar keyframes = 'from{opacity:0.99}to{opacity:1}';\n\n\t\tinjectCSS(this,\n\t\t\t// DOM rendering detection\n\t\t\t// https://davidwalsh.name/detect-node-insertion\n\t\t\t'@-webkit-keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' +\n\t\t\t'@keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' +\n\t\t\t'.' + CSS_RENDER_MONITOR + '{' +\n\t\t\t\t'-webkit-animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' +\n\t\t\t\t'animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' +\n\t\t\t'}'\n\t\t);\n\t},\n\n\tacquireContext: function(item, config) {\n\t\tif (typeof item === 'string') {\n\t\t\titem = document.getElementById(item);\n\t\t} else if (item.length) {\n\t\t\t// Support for array based queries (such as jQuery)\n\t\t\titem = item[0];\n\t\t}\n\n\t\tif (item && item.canvas) {\n\t\t\t// Support for any object associated to a canvas (including a context2d)\n\t\t\titem = item.canvas;\n\t\t}\n\n\t\t// To prevent canvas fingerprinting, some add-ons undefine the getContext\n\t\t// method, for example: https://github.com/kkapsner/CanvasBlocker\n\t\t// https://github.com/chartjs/Chart.js/issues/2807\n\t\tvar context = item && item.getContext && item.getContext('2d');\n\n\t\t// `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is\n\t\t// inside an iframe or when running in a protected environment. We could guess the\n\t\t// types from their toString() value but let's keep things flexible and assume it's\n\t\t// a sufficient condition if the item has a context2D which has item as `canvas`.\n\t\t// https://github.com/chartjs/Chart.js/issues/3887\n\t\t// https://github.com/chartjs/Chart.js/issues/4102\n\t\t// https://github.com/chartjs/Chart.js/issues/4152\n\t\tif (context && context.canvas === item) {\n\t\t\tinitCanvas(item, config);\n\t\t\treturn context;\n\t\t}\n\n\t\treturn null;\n\t},\n\n\treleaseContext: function(context) {\n\t\tvar canvas = context.canvas;\n\t\tif (!canvas[EXPANDO_KEY]) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar initial = canvas[EXPANDO_KEY].initial;\n\t\t['height', 'width'].forEach(function(prop) {\n\t\t\tvar value = initial[prop];\n\t\t\tif (helpers.isNullOrUndef(value)) {\n\t\t\t\tcanvas.removeAttribute(prop);\n\t\t\t} else {\n\t\t\t\tcanvas.setAttribute(prop, value);\n\t\t\t}\n\t\t});\n\n\t\thelpers.each(initial.style || {}, function(value, key) {\n\t\t\tcanvas.style[key] = value;\n\t\t});\n\n\t\t// The canvas render size might have been changed (and thus the state stack discarded),\n\t\t// we can't use save() and restore() to restore the initial state. So make sure that at\n\t\t// least the canvas context is reset to the default state by setting the canvas width.\n\t\t// https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html\n\t\tcanvas.width = canvas.width;\n\n\t\tdelete canvas[EXPANDO_KEY];\n\t},\n\n\taddEventListener: function(chart, type, listener) {\n\t\tvar canvas = chart.canvas;\n\t\tif (type === 'resize') {\n\t\t\t// Note: the resize event is not supported on all browsers.\n\t\t\taddResizeListener(canvas, listener, chart);\n\t\t\treturn;\n\t\t}\n\n\t\tvar expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {});\n\t\tvar proxies = expando.proxies || (expando.proxies = {});\n\t\tvar proxy = proxies[chart.id + '_' + type] = function(event) {\n\t\t\tlistener(fromNativeEvent(event, chart));\n\t\t};\n\n\t\taddEventListener(canvas, type, proxy);\n\t},\n\n\tremoveEventListener: function(chart, type, listener) {\n\t\tvar canvas = chart.canvas;\n\t\tif (type === 'resize') {\n\t\t\t// Note: the resize event is not supported on all browsers.\n\t\t\tremoveResizeListener(canvas, listener);\n\t\t\treturn;\n\t\t}\n\n\t\tvar expando = listener[EXPANDO_KEY] || {};\n\t\tvar proxies = expando.proxies || {};\n\t\tvar proxy = proxies[chart.id + '_' + type];\n\t\tif (!proxy) {\n\t\t\treturn;\n\t\t}\n\n\t\tremoveEventListener(canvas, type, proxy);\n\t}\n};\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use EventTarget.addEventListener instead.\n * EventTarget.addEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\n * @function Chart.helpers.addEvent\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.addEvent = addEventListener;\n\n/**\n * Provided for backward compatibility, use EventTarget.removeEventListener instead.\n * EventTarget.removeEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener\n * @function Chart.helpers.removeEvent\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.removeEvent = removeEventListener;\n\n},{\"46\":46}],49:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(46);\nvar basic = require(47);\nvar dom = require(48);\n\n// @TODO Make possible to select another platform at build time.\nvar implementation = dom._enabled ? dom : basic;\n\n/**\n * @namespace Chart.platform\n * @see https://chartjs.gitbooks.io/proposals/content/Platform.html\n * @since 2.4.0\n */\nmodule.exports = helpers.extend({\n\t/**\n\t * @since 2.7.0\n\t */\n\tinitialize: function() {},\n\n\t/**\n\t * Called at chart construction time, returns a context2d instance implementing\n\t * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.\n\t * @param {*} item - The native item from which to acquire context (platform specific)\n\t * @param {Object} options - The chart options\n\t * @returns {CanvasRenderingContext2D} context2d instance\n\t */\n\tacquireContext: function() {},\n\n\t/**\n\t * Called at chart destruction time, releases any resources associated to the context\n\t * previously returned by the acquireContext() method.\n\t * @param {CanvasRenderingContext2D} context - The context2d instance\n\t * @returns {Boolean} true if the method succeeded, else false\n\t */\n\treleaseContext: function() {},\n\n\t/**\n\t * Registers the specified listener on the given chart.\n\t * @param {Chart} chart - Chart from which to listen for event\n\t * @param {String} type - The ({@link IEvent}) type to listen for\n\t * @param {Function} listener - Receives a notification (an object that implements\n\t * the {@link IEvent} interface) when an event of the specified type occurs.\n\t */\n\taddEventListener: function() {},\n\n\t/**\n\t * Removes the specified listener previously registered with addEventListener.\n\t * @param {Chart} chart -Chart from which to remove the listener\n\t * @param {String} type - The ({@link IEvent}) type to remove\n\t * @param {Function} listener - The listener function to remove from the event target.\n\t */\n\tremoveEventListener: function() {}\n\n}, implementation);\n\n/**\n * @interface IPlatform\n * Allows abstracting platform dependencies away from the chart\n * @borrows Chart.platform.acquireContext as acquireContext\n * @borrows Chart.platform.releaseContext as releaseContext\n * @borrows Chart.platform.addEventListener as addEventListener\n * @borrows Chart.platform.removeEventListener as removeEventListener\n */\n\n/**\n * @interface IEvent\n * @prop {String} type - The event type name, possible values are:\n * 'contextmenu', 'mouseenter', 'mousedown', 'mousemove', 'mouseup', 'mouseout',\n * 'click', 'dblclick', 'keydown', 'keypress', 'keyup' and 'resize'\n * @prop {*} native - The original native event (null for emulated events, e.g. 'resize')\n * @prop {Number} x - The mouse x position, relative to the canvas (null for incompatible events)\n * @prop {Number} y - The mouse y position, relative to the canvas (null for incompatible events)\n */\n\n},{\"46\":46,\"47\":47,\"48\":48}],50:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {};\nmodule.exports.filler = require(51);\nmodule.exports.legend = require(52);\nmodule.exports.title = require(53);\n\n},{\"51\":51,\"52\":52,\"53\":53}],51:[function(require,module,exports){\n/**\n * Plugin based on discussion from the following Chart.js issues:\n * @see https://github.com/chartjs/Chart.js/issues/2380#issuecomment-279961569\n * @see https://github.com/chartjs/Chart.js/issues/2440#issuecomment-256461897\n */\n\n'use strict';\n\nvar defaults = require(26);\nvar elements = require(41);\nvar helpers = require(46);\n\ndefaults._set('global', {\n\tplugins: {\n\t\tfiller: {\n\t\t\tpropagate: true\n\t\t}\n\t}\n});\n\nvar mappers = {\n\tdataset: function(source) {\n\t\tvar index = source.fill;\n\t\tvar chart = source.chart;\n\t\tvar meta = chart.getDatasetMeta(index);\n\t\tvar visible = meta && chart.isDatasetVisible(index);\n\t\tvar points = (visible && meta.dataset._children) || [];\n\t\tvar length = points.length || 0;\n\n\t\treturn !length ? null : function(point, i) {\n\t\t\treturn (i < length && points[i]._view) || null;\n\t\t};\n\t},\n\n\tboundary: function(source) {\n\t\tvar boundary = source.boundary;\n\t\tvar x = boundary ? boundary.x : null;\n\t\tvar y = boundary ? boundary.y : null;\n\n\t\treturn function(point) {\n\t\t\treturn {\n\t\t\t\tx: x === null ? point.x : x,\n\t\t\t\ty: y === null ? point.y : y,\n\t\t\t};\n\t\t};\n\t}\n};\n\n// @todo if (fill[0] === '#')\nfunction decodeFill(el, index, count) {\n\tvar model = el._model || {};\n\tvar fill = model.fill;\n\tvar target;\n\n\tif (fill === undefined) {\n\t\tfill = !!model.backgroundColor;\n\t}\n\n\tif (fill === false || fill === null) {\n\t\treturn false;\n\t}\n\n\tif (fill === true) {\n\t\treturn 'origin';\n\t}\n\n\ttarget = parseFloat(fill, 10);\n\tif (isFinite(target) && Math.floor(target) === target) {\n\t\tif (fill[0] === '-' || fill[0] === '+') {\n\t\t\ttarget = index + target;\n\t\t}\n\n\t\tif (target === index || target < 0 || target >= count) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn target;\n\t}\n\n\tswitch (fill) {\n\t// compatibility\n\tcase 'bottom':\n\t\treturn 'start';\n\tcase 'top':\n\t\treturn 'end';\n\tcase 'zero':\n\t\treturn 'origin';\n\t// supported boundaries\n\tcase 'origin':\n\tcase 'start':\n\tcase 'end':\n\t\treturn fill;\n\t// invalid fill values\n\tdefault:\n\t\treturn false;\n\t}\n}\n\nfunction computeBoundary(source) {\n\tvar model = source.el._model || {};\n\tvar scale = source.el._scale || {};\n\tvar fill = source.fill;\n\tvar target = null;\n\tvar horizontal;\n\n\tif (isFinite(fill)) {\n\t\treturn null;\n\t}\n\n\t// Backward compatibility: until v3, we still need to support boundary values set on\n\t// the model (scaleTop, scaleBottom and scaleZero) because some external plugins and\n\t// controllers might still use it (e.g. the Smith chart).\n\n\tif (fill === 'start') {\n\t\ttarget = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom;\n\t} else if (fill === 'end') {\n\t\ttarget = model.scaleTop === undefined ? scale.top : model.scaleTop;\n\t} else if (model.scaleZero !== undefined) {\n\t\ttarget = model.scaleZero;\n\t} else if (scale.getBasePosition) {\n\t\ttarget = scale.getBasePosition();\n\t} else if (scale.getBasePixel) {\n\t\ttarget = scale.getBasePixel();\n\t}\n\n\tif (target !== undefined && target !== null) {\n\t\tif (target.x !== undefined && target.y !== undefined) {\n\t\t\treturn target;\n\t\t}\n\n\t\tif (typeof target === 'number' && isFinite(target)) {\n\t\t\thorizontal = scale.isHorizontal();\n\t\t\treturn {\n\t\t\t\tx: horizontal ? target : null,\n\t\t\t\ty: horizontal ? null : target\n\t\t\t};\n\t\t}\n\t}\n\n\treturn null;\n}\n\nfunction resolveTarget(sources, index, propagate) {\n\tvar source = sources[index];\n\tvar fill = source.fill;\n\tvar visited = [index];\n\tvar target;\n\n\tif (!propagate) {\n\t\treturn fill;\n\t}\n\n\twhile (fill !== false && visited.indexOf(fill) === -1) {\n\t\tif (!isFinite(fill)) {\n\t\t\treturn fill;\n\t\t}\n\n\t\ttarget = sources[fill];\n\t\tif (!target) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (target.visible) {\n\t\t\treturn fill;\n\t\t}\n\n\t\tvisited.push(fill);\n\t\tfill = target.fill;\n\t}\n\n\treturn false;\n}\n\nfunction createMapper(source) {\n\tvar fill = source.fill;\n\tvar type = 'dataset';\n\n\tif (fill === false) {\n\t\treturn null;\n\t}\n\n\tif (!isFinite(fill)) {\n\t\ttype = 'boundary';\n\t}\n\n\treturn mappers[type](source);\n}\n\nfunction isDrawable(point) {\n\treturn point && !point.skip;\n}\n\nfunction drawArea(ctx, curve0, curve1, len0, len1) {\n\tvar i;\n\n\tif (!len0 || !len1) {\n\t\treturn;\n\t}\n\n\t// building first area curve (normal)\n\tctx.moveTo(curve0[0].x, curve0[0].y);\n\tfor (i = 1; i < len0; ++i) {\n\t\thelpers.canvas.lineTo(ctx, curve0[i - 1], curve0[i]);\n\t}\n\n\t// joining the two area curves\n\tctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y);\n\n\t// building opposite area curve (reverse)\n\tfor (i = len1 - 1; i > 0; --i) {\n\t\thelpers.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true);\n\t}\n}\n\nfunction doFill(ctx, points, mapper, view, color, loop) {\n\tvar count = points.length;\n\tvar span = view.spanGaps;\n\tvar curve0 = [];\n\tvar curve1 = [];\n\tvar len0 = 0;\n\tvar len1 = 0;\n\tvar i, ilen, index, p0, p1, d0, d1;\n\n\tctx.beginPath();\n\n\tfor (i = 0, ilen = (count + !!loop); i < ilen; ++i) {\n\t\tindex = i % count;\n\t\tp0 = points[index]._view;\n\t\tp1 = mapper(p0, index, view);\n\t\td0 = isDrawable(p0);\n\t\td1 = isDrawable(p1);\n\n\t\tif (d0 && d1) {\n\t\t\tlen0 = curve0.push(p0);\n\t\t\tlen1 = curve1.push(p1);\n\t\t} else if (len0 && len1) {\n\t\t\tif (!span) {\n\t\t\t\tdrawArea(ctx, curve0, curve1, len0, len1);\n\t\t\t\tlen0 = len1 = 0;\n\t\t\t\tcurve0 = [];\n\t\t\t\tcurve1 = [];\n\t\t\t} else {\n\t\t\t\tif (d0) {\n\t\t\t\t\tcurve0.push(p0);\n\t\t\t\t}\n\t\t\t\tif (d1) {\n\t\t\t\t\tcurve1.push(p1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tdrawArea(ctx, curve0, curve1, len0, len1);\n\n\tctx.closePath();\n\tctx.fillStyle = color;\n\tctx.fill();\n}\n\nmodule.exports = {\n\tid: 'filler',\n\n\tafterDatasetsUpdate: function(chart, options) {\n\t\tvar count = (chart.data.datasets || []).length;\n\t\tvar propagate = options.propagate;\n\t\tvar sources = [];\n\t\tvar meta, i, el, source;\n\n\t\tfor (i = 0; i < count; ++i) {\n\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\tel = meta.dataset;\n\t\t\tsource = null;\n\n\t\t\tif (el && el._model && el instanceof elements.Line) {\n\t\t\t\tsource = {\n\t\t\t\t\tvisible: chart.isDatasetVisible(i),\n\t\t\t\t\tfill: decodeFill(el, i, count),\n\t\t\t\t\tchart: chart,\n\t\t\t\t\tel: el\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tmeta.$filler = source;\n\t\t\tsources.push(source);\n\t\t}\n\n\t\tfor (i = 0; i < count; ++i) {\n\t\t\tsource = sources[i];\n\t\t\tif (!source) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tsource.fill = resolveTarget(sources, i, propagate);\n\t\t\tsource.boundary = computeBoundary(source);\n\t\t\tsource.mapper = createMapper(source);\n\t\t}\n\t},\n\n\tbeforeDatasetDraw: function(chart, args) {\n\t\tvar meta = args.meta.$filler;\n\t\tif (!meta) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar ctx = chart.ctx;\n\t\tvar el = meta.el;\n\t\tvar view = el._view;\n\t\tvar points = el._children || [];\n\t\tvar mapper = meta.mapper;\n\t\tvar color = view.backgroundColor || defaults.global.defaultColor;\n\n\t\tif (mapper && color && points.length) {\n\t\t\thelpers.canvas.clipArea(ctx, chart.chartArea);\n\t\t\tdoFill(ctx, points, mapper, view, color, el._loop);\n\t\t\thelpers.canvas.unclipArea(ctx);\n\t\t}\n\t}\n};\n\n},{\"26\":26,\"41\":41,\"46\":46}],52:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar Element = require(27);\nvar helpers = require(46);\nvar layouts = require(31);\n\nvar noop = helpers.noop;\n\ndefaults._set('global', {\n\tlegend: {\n\t\tdisplay: true,\n\t\tposition: 'top',\n\t\tfullWidth: true,\n\t\treverse: false,\n\t\tweight: 1000,\n\n\t\t// a callback that will handle\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.datasetIndex;\n\t\t\tvar ci = this.chart;\n\t\t\tvar meta = ci.getDatasetMeta(index);\n\n\t\t\t// See controller.isDatasetVisible comment\n\t\t\tmeta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;\n\n\t\t\t// We hid a dataset ... rerender the chart\n\t\t\tci.update();\n\t\t},\n\n\t\tonHover: null,\n\n\t\tlabels: {\n\t\t\tboxWidth: 40,\n\t\t\tpadding: 10,\n\t\t\t// Generates labels shown in the legend\n\t\t\t// Valid properties to return:\n\t\t\t// text : text to display\n\t\t\t// fillStyle : fill of coloured box\n\t\t\t// strokeStyle: stroke of coloured box\n\t\t\t// hidden : if this legend item refers to a hidden item\n\t\t\t// lineCap : cap style for line\n\t\t\t// lineDash\n\t\t\t// lineDashOffset :\n\t\t\t// lineJoin :\n\t\t\t// lineWidth :\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\treturn helpers.isArray(data.datasets) ? data.datasets.map(function(dataset, i) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttext: dataset.label,\n\t\t\t\t\t\tfillStyle: (!helpers.isArray(dataset.backgroundColor) ? dataset.backgroundColor : dataset.backgroundColor[0]),\n\t\t\t\t\t\thidden: !chart.isDatasetVisible(i),\n\t\t\t\t\t\tlineCap: dataset.borderCapStyle,\n\t\t\t\t\t\tlineDash: dataset.borderDash,\n\t\t\t\t\t\tlineDashOffset: dataset.borderDashOffset,\n\t\t\t\t\t\tlineJoin: dataset.borderJoinStyle,\n\t\t\t\t\t\tlineWidth: dataset.borderWidth,\n\t\t\t\t\t\tstrokeStyle: dataset.borderColor,\n\t\t\t\t\t\tpointStyle: dataset.pointStyle,\n\n\t\t\t\t\t\t// Below is extra data used for toggling the datasets\n\t\t\t\t\t\tdatasetIndex: i\n\t\t\t\t\t};\n\t\t\t\t}, this) : [];\n\t\t\t}\n\t\t}\n\t},\n\n\tlegendCallback: function(chart) {\n\t\tvar text = [];\n\t\ttext.push('
        ');\n\t\tfor (var i = 0; i < chart.data.datasets.length; i++) {\n\t\t\ttext.push('
      • ');\n\t\t\tif (chart.data.datasets[i].label) {\n\t\t\t\ttext.push(chart.data.datasets[i].label);\n\t\t\t}\n\t\t\ttext.push('
      • ');\n\t\t}\n\t\ttext.push('
      ');\n\t\treturn text.join('');\n\t}\n});\n\n/**\n * Helper function to get the box width based on the usePointStyle option\n * @param labelopts {Object} the label options on the legend\n * @param fontSize {Number} the label font size\n * @return {Number} width of the color box area\n */\nfunction getBoxWidth(labelOpts, fontSize) {\n\treturn labelOpts.usePointStyle ?\n\t\tfontSize * Math.SQRT2 :\n\t\tlabelOpts.boxWidth;\n}\n\n/**\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\n */\nvar Legend = Element.extend({\n\n\tinitialize: function(config) {\n\t\thelpers.extend(this, config);\n\n\t\t// Contains hit boxes for each dataset (in dataset order)\n\t\tthis.legendHitBoxes = [];\n\n\t\t// Are we in doughnut mode which has a different data type\n\t\tthis.doughnutMode = false;\n\t},\n\n\t// These methods are ordered by lifecycle. Utilities then follow.\n\t// Any function defined here is inherited by all legend types.\n\t// Any function can be extended by the legend type\n\n\tbeforeUpdate: noop,\n\tupdate: function(maxWidth, maxHeight, margins) {\n\t\tvar me = this;\n\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\tme.beforeUpdate();\n\n\t\t// Absorb the master measurements\n\t\tme.maxWidth = maxWidth;\n\t\tme.maxHeight = maxHeight;\n\t\tme.margins = margins;\n\n\t\t// Dimensions\n\t\tme.beforeSetDimensions();\n\t\tme.setDimensions();\n\t\tme.afterSetDimensions();\n\t\t// Labels\n\t\tme.beforeBuildLabels();\n\t\tme.buildLabels();\n\t\tme.afterBuildLabels();\n\n\t\t// Fit\n\t\tme.beforeFit();\n\t\tme.fit();\n\t\tme.afterFit();\n\t\t//\n\t\tme.afterUpdate();\n\n\t\treturn me.minSize;\n\t},\n\tafterUpdate: noop,\n\n\t//\n\n\tbeforeSetDimensions: noop,\n\tsetDimensions: function() {\n\t\tvar me = this;\n\t\t// Set the unconstrained dimension before label rotation\n\t\tif (me.isHorizontal()) {\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.left = 0;\n\t\t\tme.right = me.width;\n\t\t} else {\n\t\t\tme.height = me.maxHeight;\n\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.top = 0;\n\t\t\tme.bottom = me.height;\n\t\t}\n\n\t\t// Reset padding\n\t\tme.paddingLeft = 0;\n\t\tme.paddingTop = 0;\n\t\tme.paddingRight = 0;\n\t\tme.paddingBottom = 0;\n\n\t\t// Reset minSize\n\t\tme.minSize = {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\t},\n\tafterSetDimensions: noop,\n\n\t//\n\n\tbeforeBuildLabels: noop,\n\tbuildLabels: function() {\n\t\tvar me = this;\n\t\tvar labelOpts = me.options.labels || {};\n\t\tvar legendItems = helpers.callback(labelOpts.generateLabels, [me.chart], me) || [];\n\n\t\tif (labelOpts.filter) {\n\t\t\tlegendItems = legendItems.filter(function(item) {\n\t\t\t\treturn labelOpts.filter(item, me.chart.data);\n\t\t\t});\n\t\t}\n\n\t\tif (me.options.reverse) {\n\t\t\tlegendItems.reverse();\n\t\t}\n\n\t\tme.legendItems = legendItems;\n\t},\n\tafterBuildLabels: noop,\n\n\t//\n\n\tbeforeFit: noop,\n\tfit: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar labelOpts = opts.labels;\n\t\tvar display = opts.display;\n\n\t\tvar ctx = me.ctx;\n\n\t\tvar globalDefault = defaults.global;\n\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\tvar fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize);\n\t\tvar fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle);\n\t\tvar fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily);\n\t\tvar labelFont = helpers.fontString(fontSize, fontStyle, fontFamily);\n\n\t\t// Reset hit boxes\n\t\tvar hitboxes = me.legendHitBoxes = [];\n\n\t\tvar minSize = me.minSize;\n\t\tvar isHorizontal = me.isHorizontal();\n\n\t\tif (isHorizontal) {\n\t\t\tminSize.width = me.maxWidth; // fill all the width\n\t\t\tminSize.height = display ? 10 : 0;\n\t\t} else {\n\t\t\tminSize.width = display ? 10 : 0;\n\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t}\n\n\t\t// Increase sizes here\n\t\tif (display) {\n\t\t\tctx.font = labelFont;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\t// Labels\n\n\t\t\t\t// Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one\n\t\t\t\tvar lineWidths = me.lineWidths = [0];\n\t\t\t\tvar totalHeight = me.legendItems.length ? fontSize + (labelOpts.padding) : 0;\n\n\t\t\t\tctx.textAlign = 'left';\n\t\t\t\tctx.textBaseline = 'top';\n\n\t\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\n\t\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\t\t\t\tvar width = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n\t\t\t\t\tif (lineWidths[lineWidths.length - 1] + width + labelOpts.padding >= me.width) {\n\t\t\t\t\t\ttotalHeight += fontSize + (labelOpts.padding);\n\t\t\t\t\t\tlineWidths[lineWidths.length] = me.left;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\n\t\t\t\t\thitboxes[i] = {\n\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: fontSize\n\t\t\t\t\t};\n\n\t\t\t\t\tlineWidths[lineWidths.length - 1] += width + labelOpts.padding;\n\t\t\t\t});\n\n\t\t\t\tminSize.height += totalHeight;\n\n\t\t\t} else {\n\t\t\t\tvar vPadding = labelOpts.padding;\n\t\t\t\tvar columnWidths = me.columnWidths = [];\n\t\t\t\tvar totalWidth = labelOpts.padding;\n\t\t\t\tvar currentColWidth = 0;\n\t\t\t\tvar currentColHeight = 0;\n\t\t\t\tvar itemHeight = fontSize + vPadding;\n\n\t\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\n\t\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\t\t\t\tvar itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n\t\t\t\t\t// If too tall, go to new column\n\t\t\t\t\tif (currentColHeight + itemHeight > minSize.height) {\n\t\t\t\t\t\ttotalWidth += currentColWidth + labelOpts.padding;\n\t\t\t\t\t\tcolumnWidths.push(currentColWidth); // previous column width\n\n\t\t\t\t\t\tcurrentColWidth = 0;\n\t\t\t\t\t\tcurrentColHeight = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Get max width\n\t\t\t\t\tcurrentColWidth = Math.max(currentColWidth, itemWidth);\n\t\t\t\t\tcurrentColHeight += itemHeight;\n\n\t\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\n\t\t\t\t\thitboxes[i] = {\n\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\twidth: itemWidth,\n\t\t\t\t\t\theight: fontSize\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\ttotalWidth += currentColWidth;\n\t\t\t\tcolumnWidths.push(currentColWidth);\n\t\t\t\tminSize.width += totalWidth;\n\t\t\t}\n\t\t}\n\n\t\tme.width = minSize.width;\n\t\tme.height = minSize.height;\n\t},\n\tafterFit: noop,\n\n\t// Shared Methods\n\tisHorizontal: function() {\n\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\n\t},\n\n\t// Actually draw the legend on the canvas\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar labelOpts = opts.labels;\n\t\tvar globalDefault = defaults.global;\n\t\tvar lineDefault = globalDefault.elements.line;\n\t\tvar legendWidth = me.width;\n\t\tvar lineWidths = me.lineWidths;\n\n\t\tif (opts.display) {\n\t\t\tvar ctx = me.ctx;\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\t\tvar fontColor = valueOrDefault(labelOpts.fontColor, globalDefault.defaultFontColor);\n\t\t\tvar fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize);\n\t\t\tvar fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle);\n\t\t\tvar fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily);\n\t\t\tvar labelFont = helpers.fontString(fontSize, fontStyle, fontFamily);\n\t\t\tvar cursor;\n\n\t\t\t// Canvas setup\n\t\t\tctx.textAlign = 'left';\n\t\t\tctx.textBaseline = 'middle';\n\t\t\tctx.lineWidth = 0.5;\n\t\t\tctx.strokeStyle = fontColor; // for strikethrough effect\n\t\t\tctx.fillStyle = fontColor; // render in correct colour\n\t\t\tctx.font = labelFont;\n\n\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\t\tvar hitboxes = me.legendHitBoxes;\n\n\t\t\t// current position\n\t\t\tvar drawLegendBox = function(x, y, legendItem) {\n\t\t\t\tif (isNaN(boxWidth) || boxWidth <= 0) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Set the ctx for the box\n\t\t\t\tctx.save();\n\n\t\t\t\tctx.fillStyle = valueOrDefault(legendItem.fillStyle, globalDefault.defaultColor);\n\t\t\t\tctx.lineCap = valueOrDefault(legendItem.lineCap, lineDefault.borderCapStyle);\n\t\t\t\tctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, lineDefault.borderDashOffset);\n\t\t\t\tctx.lineJoin = valueOrDefault(legendItem.lineJoin, lineDefault.borderJoinStyle);\n\t\t\t\tctx.lineWidth = valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth);\n\t\t\t\tctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, globalDefault.defaultColor);\n\t\t\t\tvar isLineWidthZero = (valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth) === 0);\n\n\t\t\t\tif (ctx.setLineDash) {\n\t\t\t\t\t// IE 9 and 10 do not support line dash\n\t\t\t\t\tctx.setLineDash(valueOrDefault(legendItem.lineDash, lineDefault.borderDash));\n\t\t\t\t}\n\n\t\t\t\tif (opts.labels && opts.labels.usePointStyle) {\n\t\t\t\t\t// Recalculate x and y for drawPoint() because its expecting\n\t\t\t\t\t// x and y to be center of figure (instead of top left)\n\t\t\t\t\tvar radius = fontSize * Math.SQRT2 / 2;\n\t\t\t\t\tvar offSet = radius / Math.SQRT2;\n\t\t\t\t\tvar centerX = x + offSet;\n\t\t\t\t\tvar centerY = y + offSet;\n\n\t\t\t\t\t// Draw pointStyle as legend symbol\n\t\t\t\t\thelpers.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY);\n\t\t\t\t} else {\n\t\t\t\t\t// Draw box as legend symbol\n\t\t\t\t\tif (!isLineWidthZero) {\n\t\t\t\t\t\tctx.strokeRect(x, y, boxWidth, fontSize);\n\t\t\t\t\t}\n\t\t\t\t\tctx.fillRect(x, y, boxWidth, fontSize);\n\t\t\t\t}\n\n\t\t\t\tctx.restore();\n\t\t\t};\n\t\t\tvar fillText = function(x, y, legendItem, textWidth) {\n\t\t\t\tvar halfFontSize = fontSize / 2;\n\t\t\t\tvar xLeft = boxWidth + halfFontSize + x;\n\t\t\t\tvar yMiddle = y + halfFontSize;\n\n\t\t\t\tctx.fillText(legendItem.text, xLeft, yMiddle);\n\n\t\t\t\tif (legendItem.hidden) {\n\t\t\t\t\t// Strikethrough the text if hidden\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.lineWidth = 2;\n\t\t\t\t\tctx.moveTo(xLeft, yMiddle);\n\t\t\t\t\tctx.lineTo(xLeft + textWidth, yMiddle);\n\t\t\t\t\tctx.stroke();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// Horizontal\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tif (isHorizontal) {\n\t\t\t\tcursor = {\n\t\t\t\t\tx: me.left + ((legendWidth - lineWidths[0]) / 2),\n\t\t\t\t\ty: me.top + labelOpts.padding,\n\t\t\t\t\tline: 0\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tcursor = {\n\t\t\t\t\tx: me.left + labelOpts.padding,\n\t\t\t\t\ty: me.top + labelOpts.padding,\n\t\t\t\t\tline: 0\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tvar itemHeight = fontSize + labelOpts.padding;\n\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\n\t\t\t\tvar textWidth = ctx.measureText(legendItem.text).width;\n\t\t\t\tvar width = boxWidth + (fontSize / 2) + textWidth;\n\t\t\t\tvar x = cursor.x;\n\t\t\t\tvar y = cursor.y;\n\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\tif (x + width >= legendWidth) {\n\t\t\t\t\t\ty = cursor.y += itemHeight;\n\t\t\t\t\t\tcursor.line++;\n\t\t\t\t\t\tx = cursor.x = me.left + ((legendWidth - lineWidths[cursor.line]) / 2);\n\t\t\t\t\t}\n\t\t\t\t} else if (y + itemHeight > me.bottom) {\n\t\t\t\t\tx = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding;\n\t\t\t\t\ty = cursor.y = me.top + labelOpts.padding;\n\t\t\t\t\tcursor.line++;\n\t\t\t\t}\n\n\t\t\t\tdrawLegendBox(x, y, legendItem);\n\n\t\t\t\thitboxes[i].left = x;\n\t\t\t\thitboxes[i].top = y;\n\n\t\t\t\t// Fill the actual label\n\t\t\t\tfillText(x, y, legendItem, textWidth);\n\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\tcursor.x += width + (labelOpts.padding);\n\t\t\t\t} else {\n\t\t\t\t\tcursor.y += itemHeight;\n\t\t\t\t}\n\n\t\t\t});\n\t\t}\n\t},\n\n\t/**\n\t * Handle an event\n\t * @private\n\t * @param {IEvent} event - The event to handle\n\t * @return {Boolean} true if a change occured\n\t */\n\thandleEvent: function(e) {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar type = e.type === 'mouseup' ? 'click' : e.type;\n\t\tvar changed = false;\n\n\t\tif (type === 'mousemove') {\n\t\t\tif (!opts.onHover) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (type === 'click') {\n\t\t\tif (!opts.onClick) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\n\t\t// Chart event already has relative position in it\n\t\tvar x = e.x;\n\t\tvar y = e.y;\n\n\t\tif (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) {\n\t\t\t// See if we are touching one of the dataset boxes\n\t\t\tvar lh = me.legendHitBoxes;\n\t\t\tfor (var i = 0; i < lh.length; ++i) {\n\t\t\t\tvar hitBox = lh[i];\n\n\t\t\t\tif (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) {\n\t\t\t\t\t// Touching an element\n\t\t\t\t\tif (type === 'click') {\n\t\t\t\t\t\t// use e.native for backwards compatibility\n\t\t\t\t\t\topts.onClick.call(me, e.native, me.legendItems[i]);\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else if (type === 'mousemove') {\n\t\t\t\t\t\t// use e.native for backwards compatibility\n\t\t\t\t\t\topts.onHover.call(me, e.native, me.legendItems[i]);\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn changed;\n\t}\n});\n\nfunction createNewLegendAndAttach(chart, legendOpts) {\n\tvar legend = new Legend({\n\t\tctx: chart.ctx,\n\t\toptions: legendOpts,\n\t\tchart: chart\n\t});\n\n\tlayouts.configure(chart, legend, legendOpts);\n\tlayouts.addBox(chart, legend);\n\tchart.legend = legend;\n}\n\nmodule.exports = {\n\tid: 'legend',\n\n\t/**\n\t * Backward compatibility: since 2.1.5, the legend is registered as a plugin, making\n\t * Chart.Legend obsolete. To avoid a breaking change, we export the Legend as part of\n\t * the plugin, which one will be re-exposed in the chart.js file.\n\t * https://github.com/chartjs/Chart.js/pull/2640\n\t * @private\n\t */\n\t_element: Legend,\n\n\tbeforeInit: function(chart) {\n\t\tvar legendOpts = chart.options.legend;\n\n\t\tif (legendOpts) {\n\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\n\t\t}\n\t},\n\n\tbeforeUpdate: function(chart) {\n\t\tvar legendOpts = chart.options.legend;\n\t\tvar legend = chart.legend;\n\n\t\tif (legendOpts) {\n\t\t\thelpers.mergeIf(legendOpts, defaults.global.legend);\n\n\t\t\tif (legend) {\n\t\t\t\tlayouts.configure(chart, legend, legendOpts);\n\t\t\t\tlegend.options = legendOpts;\n\t\t\t} else {\n\t\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\n\t\t\t}\n\t\t} else if (legend) {\n\t\t\tlayouts.removeBox(chart, legend);\n\t\t\tdelete chart.legend;\n\t\t}\n\t},\n\n\tafterEvent: function(chart, e) {\n\t\tvar legend = chart.legend;\n\t\tif (legend) {\n\t\t\tlegend.handleEvent(e);\n\t\t}\n\t}\n};\n\n},{\"26\":26,\"27\":27,\"31\":31,\"46\":46}],53:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar Element = require(27);\nvar helpers = require(46);\nvar layouts = require(31);\n\nvar noop = helpers.noop;\n\ndefaults._set('global', {\n\ttitle: {\n\t\tdisplay: false,\n\t\tfontStyle: 'bold',\n\t\tfullWidth: true,\n\t\tlineHeight: 1.2,\n\t\tpadding: 10,\n\t\tposition: 'top',\n\t\ttext: '',\n\t\tweight: 2000 // by default greater than legend (1000) to be above\n\t}\n});\n\n/**\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\n */\nvar Title = Element.extend({\n\tinitialize: function(config) {\n\t\tvar me = this;\n\t\thelpers.extend(me, config);\n\n\t\t// Contains hit boxes for each dataset (in dataset order)\n\t\tme.legendHitBoxes = [];\n\t},\n\n\t// These methods are ordered by lifecycle. Utilities then follow.\n\n\tbeforeUpdate: noop,\n\tupdate: function(maxWidth, maxHeight, margins) {\n\t\tvar me = this;\n\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\tme.beforeUpdate();\n\n\t\t// Absorb the master measurements\n\t\tme.maxWidth = maxWidth;\n\t\tme.maxHeight = maxHeight;\n\t\tme.margins = margins;\n\n\t\t// Dimensions\n\t\tme.beforeSetDimensions();\n\t\tme.setDimensions();\n\t\tme.afterSetDimensions();\n\t\t// Labels\n\t\tme.beforeBuildLabels();\n\t\tme.buildLabels();\n\t\tme.afterBuildLabels();\n\n\t\t// Fit\n\t\tme.beforeFit();\n\t\tme.fit();\n\t\tme.afterFit();\n\t\t//\n\t\tme.afterUpdate();\n\n\t\treturn me.minSize;\n\n\t},\n\tafterUpdate: noop,\n\n\t//\n\n\tbeforeSetDimensions: noop,\n\tsetDimensions: function() {\n\t\tvar me = this;\n\t\t// Set the unconstrained dimension before label rotation\n\t\tif (me.isHorizontal()) {\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.left = 0;\n\t\t\tme.right = me.width;\n\t\t} else {\n\t\t\tme.height = me.maxHeight;\n\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.top = 0;\n\t\t\tme.bottom = me.height;\n\t\t}\n\n\t\t// Reset padding\n\t\tme.paddingLeft = 0;\n\t\tme.paddingTop = 0;\n\t\tme.paddingRight = 0;\n\t\tme.paddingBottom = 0;\n\n\t\t// Reset minSize\n\t\tme.minSize = {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\t},\n\tafterSetDimensions: noop,\n\n\t//\n\n\tbeforeBuildLabels: noop,\n\tbuildLabels: noop,\n\tafterBuildLabels: noop,\n\n\t//\n\n\tbeforeFit: noop,\n\tfit: function() {\n\t\tvar me = this;\n\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\tvar opts = me.options;\n\t\tvar display = opts.display;\n\t\tvar fontSize = valueOrDefault(opts.fontSize, defaults.global.defaultFontSize);\n\t\tvar minSize = me.minSize;\n\t\tvar lineCount = helpers.isArray(opts.text) ? opts.text.length : 1;\n\t\tvar lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize);\n\t\tvar textSize = display ? (lineCount * lineHeight) + (opts.padding * 2) : 0;\n\n\t\tif (me.isHorizontal()) {\n\t\t\tminSize.width = me.maxWidth; // fill all the width\n\t\t\tminSize.height = textSize;\n\t\t} else {\n\t\t\tminSize.width = textSize;\n\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t}\n\n\t\tme.width = minSize.width;\n\t\tme.height = minSize.height;\n\n\t},\n\tafterFit: noop,\n\n\t// Shared Methods\n\tisHorizontal: function() {\n\t\tvar pos = this.options.position;\n\t\treturn pos === 'top' || pos === 'bottom';\n\t},\n\n\t// Actually draw the title block on the canvas\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar ctx = me.ctx;\n\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\tvar opts = me.options;\n\t\tvar globalDefaults = defaults.global;\n\n\t\tif (opts.display) {\n\t\t\tvar fontSize = valueOrDefault(opts.fontSize, globalDefaults.defaultFontSize);\n\t\t\tvar fontStyle = valueOrDefault(opts.fontStyle, globalDefaults.defaultFontStyle);\n\t\t\tvar fontFamily = valueOrDefault(opts.fontFamily, globalDefaults.defaultFontFamily);\n\t\t\tvar titleFont = helpers.fontString(fontSize, fontStyle, fontFamily);\n\t\t\tvar lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize);\n\t\t\tvar offset = lineHeight / 2 + opts.padding;\n\t\t\tvar rotation = 0;\n\t\t\tvar top = me.top;\n\t\t\tvar left = me.left;\n\t\t\tvar bottom = me.bottom;\n\t\t\tvar right = me.right;\n\t\t\tvar maxWidth, titleX, titleY;\n\n\t\t\tctx.fillStyle = valueOrDefault(opts.fontColor, globalDefaults.defaultFontColor); // render in correct colour\n\t\t\tctx.font = titleFont;\n\n\t\t\t// Horizontal\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\ttitleX = left + ((right - left) / 2); // midpoint of the width\n\t\t\t\ttitleY = top + offset;\n\t\t\t\tmaxWidth = right - left;\n\t\t\t} else {\n\t\t\t\ttitleX = opts.position === 'left' ? left + offset : right - offset;\n\t\t\t\ttitleY = top + ((bottom - top) / 2);\n\t\t\t\tmaxWidth = bottom - top;\n\t\t\t\trotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5);\n\t\t\t}\n\n\t\t\tctx.save();\n\t\t\tctx.translate(titleX, titleY);\n\t\t\tctx.rotate(rotation);\n\t\t\tctx.textAlign = 'center';\n\t\t\tctx.textBaseline = 'middle';\n\n\t\t\tvar text = opts.text;\n\t\t\tif (helpers.isArray(text)) {\n\t\t\t\tvar y = 0;\n\t\t\t\tfor (var i = 0; i < text.length; ++i) {\n\t\t\t\t\tctx.fillText(text[i], 0, y, maxWidth);\n\t\t\t\t\ty += lineHeight;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tctx.fillText(text, 0, 0, maxWidth);\n\t\t\t}\n\n\t\t\tctx.restore();\n\t\t}\n\t}\n});\n\nfunction createNewTitleBlockAndAttach(chart, titleOpts) {\n\tvar title = new Title({\n\t\tctx: chart.ctx,\n\t\toptions: titleOpts,\n\t\tchart: chart\n\t});\n\n\tlayouts.configure(chart, title, titleOpts);\n\tlayouts.addBox(chart, title);\n\tchart.titleBlock = title;\n}\n\nmodule.exports = {\n\tid: 'title',\n\n\t/**\n\t * Backward compatibility: since 2.1.5, the title is registered as a plugin, making\n\t * Chart.Title obsolete. To avoid a breaking change, we export the Title as part of\n\t * the plugin, which one will be re-exposed in the chart.js file.\n\t * https://github.com/chartjs/Chart.js/pull/2640\n\t * @private\n\t */\n\t_element: Title,\n\n\tbeforeInit: function(chart) {\n\t\tvar titleOpts = chart.options.title;\n\n\t\tif (titleOpts) {\n\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\n\t\t}\n\t},\n\n\tbeforeUpdate: function(chart) {\n\t\tvar titleOpts = chart.options.title;\n\t\tvar titleBlock = chart.titleBlock;\n\n\t\tif (titleOpts) {\n\t\t\thelpers.mergeIf(titleOpts, defaults.global.title);\n\n\t\t\tif (titleBlock) {\n\t\t\t\tlayouts.configure(chart, titleBlock, titleOpts);\n\t\t\t\ttitleBlock.options = titleOpts;\n\t\t\t} else {\n\t\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\n\t\t\t}\n\t\t} else if (titleBlock) {\n\t\t\tlayouts.removeBox(chart, titleBlock);\n\t\t\tdelete chart.titleBlock;\n\t\t}\n\t}\n};\n\n},{\"26\":26,\"27\":27,\"31\":31,\"46\":46}],54:[function(require,module,exports){\n'use strict';\n\nvar Scale = require(33);\nvar scaleService = require(34);\n\nmodule.exports = function() {\n\n\t// Default config for a category scale\n\tvar defaultConfig = {\n\t\tposition: 'bottom'\n\t};\n\n\tvar DatasetScale = Scale.extend({\n\t\t/**\n\t\t* Internal function to get the correct labels. If data.xLabels or data.yLabels are defined, use those\n\t\t* else fall back to data.labels\n\t\t* @private\n\t\t*/\n\t\tgetLabels: function() {\n\t\t\tvar data = this.chart.data;\n\t\t\treturn this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels;\n\t\t},\n\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar labels = me.getLabels();\n\t\t\tme.minIndex = 0;\n\t\t\tme.maxIndex = labels.length - 1;\n\t\t\tvar findIndex;\n\n\t\t\tif (me.options.ticks.min !== undefined) {\n\t\t\t\t// user specified min value\n\t\t\t\tfindIndex = labels.indexOf(me.options.ticks.min);\n\t\t\t\tme.minIndex = findIndex !== -1 ? findIndex : me.minIndex;\n\t\t\t}\n\n\t\t\tif (me.options.ticks.max !== undefined) {\n\t\t\t\t// user specified max value\n\t\t\t\tfindIndex = labels.indexOf(me.options.ticks.max);\n\t\t\t\tme.maxIndex = findIndex !== -1 ? findIndex : me.maxIndex;\n\t\t\t}\n\n\t\t\tme.min = labels[me.minIndex];\n\t\t\tme.max = labels[me.maxIndex];\n\t\t},\n\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar labels = me.getLabels();\n\t\t\t// If we are viewing some subset of labels, slice the original array\n\t\t\tme.ticks = (me.minIndex === 0 && me.maxIndex === labels.length - 1) ? labels : labels.slice(me.minIndex, me.maxIndex + 1);\n\t\t},\n\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar data = me.chart.data;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\n\t\t\tif (data.yLabels && !isHorizontal) {\n\t\t\t\treturn me.getRightValue(data.datasets[datasetIndex].data[index]);\n\t\t\t}\n\t\t\treturn me.ticks[index - me.minIndex];\n\t\t},\n\n\t\t// Used to get data value locations. Value can either be an index or a numerical value\n\t\tgetPixelForValue: function(value, index) {\n\t\t\tvar me = this;\n\t\t\tvar offset = me.options.offset;\n\t\t\t// 1 is added because we need the length but we have the indexes\n\t\t\tvar offsetAmt = Math.max((me.maxIndex + 1 - me.minIndex - (offset ? 0 : 1)), 1);\n\n\t\t\t// If value is a data object, then index is the index in the data array,\n\t\t\t// not the index of the scale. We need to change that.\n\t\t\tvar valueCategory;\n\t\t\tif (value !== undefined && value !== null) {\n\t\t\t\tvalueCategory = me.isHorizontal() ? value.x : value.y;\n\t\t\t}\n\t\t\tif (valueCategory !== undefined || (value !== undefined && isNaN(index))) {\n\t\t\t\tvar labels = me.getLabels();\n\t\t\t\tvalue = valueCategory || value;\n\t\t\t\tvar idx = labels.indexOf(value);\n\t\t\t\tindex = idx !== -1 ? idx : index;\n\t\t\t}\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tvar valueWidth = me.width / offsetAmt;\n\t\t\t\tvar widthOffset = (valueWidth * (index - me.minIndex));\n\n\t\t\t\tif (offset) {\n\t\t\t\t\twidthOffset += (valueWidth / 2);\n\t\t\t\t}\n\n\t\t\t\treturn me.left + Math.round(widthOffset);\n\t\t\t}\n\t\t\tvar valueHeight = me.height / offsetAmt;\n\t\t\tvar heightOffset = (valueHeight * (index - me.minIndex));\n\n\t\t\tif (offset) {\n\t\t\t\theightOffset += (valueHeight / 2);\n\t\t\t}\n\n\t\t\treturn me.top + Math.round(heightOffset);\n\t\t},\n\t\tgetPixelForTick: function(index) {\n\t\t\treturn this.getPixelForValue(this.ticks[index], index + this.minIndex, null);\n\t\t},\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar offset = me.options.offset;\n\t\t\tvar value;\n\t\t\tvar offsetAmt = Math.max((me._ticks.length - (offset ? 0 : 1)), 1);\n\t\t\tvar horz = me.isHorizontal();\n\t\t\tvar valueDimension = (horz ? me.width : me.height) / offsetAmt;\n\n\t\t\tpixel -= horz ? me.left : me.top;\n\n\t\t\tif (offset) {\n\t\t\t\tpixel -= (valueDimension / 2);\n\t\t\t}\n\n\t\t\tif (pixel <= 0) {\n\t\t\t\tvalue = 0;\n\t\t\t} else {\n\t\t\t\tvalue = Math.round(pixel / valueDimension);\n\t\t\t}\n\n\t\t\treturn value + me.minIndex;\n\t\t},\n\t\tgetBasePixel: function() {\n\t\t\treturn this.bottom;\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('category', DatasetScale, defaultConfig);\n};\n\n},{\"33\":33,\"34\":34}],55:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar helpers = require(46);\nvar scaleService = require(34);\nvar Ticks = require(35);\n\nmodule.exports = function(Chart) {\n\n\tvar defaultConfig = {\n\t\tposition: 'left',\n\t\tticks: {\n\t\t\tcallback: Ticks.formatters.linear\n\t\t}\n\t};\n\n\tvar LinearScale = Chart.LinearScaleBase.extend({\n\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar chart = me.chart;\n\t\t\tvar data = chart.data;\n\t\t\tvar datasets = data.datasets;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tvar DEFAULT_MIN = 0;\n\t\t\tvar DEFAULT_MAX = 1;\n\n\t\t\tfunction IDMatches(meta) {\n\t\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\n\t\t\t}\n\n\t\t\t// First Calculate the range\n\t\t\tme.min = null;\n\t\t\tme.max = null;\n\n\t\t\tvar hasStacks = opts.stacked;\n\t\t\tif (hasStacks === undefined) {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tif (hasStacks) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\n\t\t\t\t\t\tmeta.stack !== undefined) {\n\t\t\t\t\t\thasStacks = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (opts.stacked || hasStacks) {\n\t\t\t\tvar valuesPerStack = {};\n\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tvar key = [\n\t\t\t\t\t\tmeta.type,\n\t\t\t\t\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\n\t\t\t\t\t\t((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\n\t\t\t\t\t\tmeta.stack\n\t\t\t\t\t].join('.');\n\n\t\t\t\t\tif (valuesPerStack[key] === undefined) {\n\t\t\t\t\t\tvaluesPerStack[key] = {\n\t\t\t\t\t\t\tpositiveValues: [],\n\t\t\t\t\t\t\tnegativeValues: []\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Store these per type\n\t\t\t\t\tvar positiveValues = valuesPerStack[key].positiveValues;\n\t\t\t\t\tvar negativeValues = valuesPerStack[key].negativeValues;\n\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tpositiveValues[index] = positiveValues[index] || 0;\n\t\t\t\t\t\t\tnegativeValues[index] = negativeValues[index] || 0;\n\n\t\t\t\t\t\t\tif (opts.relativePoints) {\n\t\t\t\t\t\t\t\tpositiveValues[index] = 100;\n\t\t\t\t\t\t\t} else if (value < 0) {\n\t\t\t\t\t\t\t\tnegativeValues[index] += value;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tpositiveValues[index] += value;\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\n\t\t\t\thelpers.each(valuesPerStack, function(valuesForType) {\n\t\t\t\t\tvar values = valuesForType.positiveValues.concat(valuesForType.negativeValues);\n\t\t\t\t\tvar minVal = helpers.min(values);\n\t\t\t\t\tvar maxVal = helpers.max(values);\n\t\t\t\t\tme.min = me.min === null ? minVal : Math.min(me.min, minVal);\n\t\t\t\t\tme.max = me.max === null ? maxVal : Math.max(me.max, maxVal);\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.min === null) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t} else if (value < me.min) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.max === null) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t} else if (value > me.max) {\n\t\t\t\t\t\t\t\tme.max = value;\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\n\t\t\tme.min = isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN;\n\t\t\tme.max = isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX;\n\n\t\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\n\t\t\tthis.handleTickRangeOptions();\n\t\t},\n\t\tgetTickLimit: function() {\n\t\t\tvar maxTicks;\n\t\t\tvar me = this;\n\t\t\tvar tickOpts = me.options.ticks;\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tmaxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.width / 50));\n\t\t\t} else {\n\t\t\t\t// The factor of 2 used to scale the font size has been experimentally determined.\n\t\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, defaults.global.defaultFontSize);\n\t\t\t\tmaxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.height / (2 * tickFontSize)));\n\t\t\t}\n\n\t\t\treturn maxTicks;\n\t\t},\n\t\t// Called after the ticks are built. We need\n\t\thandleDirectionalChanges: function() {\n\t\t\tif (!this.isHorizontal()) {\n\t\t\t\t// We are in a vertical orientation. The top value is the highest. So reverse the array\n\t\t\t\tthis.ticks.reverse();\n\t\t\t}\n\t\t},\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t\t},\n\t\t// Utils\n\t\tgetPixelForValue: function(value) {\n\t\t\t// This must be called after fit has been run so that\n\t\t\t// this.left, this.top, this.right, and this.bottom have been defined\n\t\t\tvar me = this;\n\t\t\tvar start = me.start;\n\n\t\t\tvar rightValue = +me.getRightValue(value);\n\t\t\tvar pixel;\n\t\t\tvar range = me.end - start;\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tpixel = me.left + (me.width / range * (rightValue - start));\n\t\t\t} else {\n\t\t\t\tpixel = me.bottom - (me.height / range * (rightValue - start));\n\t\t\t}\n\t\t\treturn pixel;\n\t\t},\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tvar innerDimension = isHorizontal ? me.width : me.height;\n\t\t\tvar offset = (isHorizontal ? pixel - me.left : me.bottom - pixel) / innerDimension;\n\t\t\treturn me.start + ((me.end - me.start) * offset);\n\t\t},\n\t\tgetPixelForTick: function(index) {\n\t\t\treturn this.getPixelForValue(this.ticksAsNumbers[index]);\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('linear', LinearScale, defaultConfig);\n};\n\n},{\"26\":26,\"34\":34,\"35\":35,\"46\":46}],56:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(46);\nvar Scale = require(33);\n\n/**\n * Generate a set of linear ticks\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {Array} array of tick values\n */\nfunction generateTicks(generationOptions, dataRange) {\n\tvar ticks = [];\n\t// To get a \"nice\" value for the tick spacing, we will use the appropriately named\n\t// \"nice number\" algorithm. See http://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\n\t// for details.\n\n\tvar factor;\n\tvar precision;\n\tvar spacing;\n\n\tif (generationOptions.stepSize && generationOptions.stepSize > 0) {\n\t\tspacing = generationOptions.stepSize;\n\t} else {\n\t\tvar niceRange = helpers.niceNum(dataRange.max - dataRange.min, false);\n\t\tspacing = helpers.niceNum(niceRange / (generationOptions.maxTicks - 1), true);\n\n\t\tprecision = generationOptions.precision;\n\t\tif (precision !== undefined) {\n\t\t\t// If the user specified a precision, round to that number of decimal places\n\t\t\tfactor = Math.pow(10, precision);\n\t\t\tspacing = Math.ceil(spacing * factor) / factor;\n\t\t}\n\t}\n\tvar niceMin = Math.floor(dataRange.min / spacing) * spacing;\n\tvar niceMax = Math.ceil(dataRange.max / spacing) * spacing;\n\n\t// If min, max and stepSize is set and they make an evenly spaced scale use it.\n\tif (!helpers.isNullOrUndef(generationOptions.min) && !helpers.isNullOrUndef(generationOptions.max) && generationOptions.stepSize) {\n\t\t// If very close to our whole number, use it.\n\t\tif (helpers.almostWhole((generationOptions.max - generationOptions.min) / generationOptions.stepSize, spacing / 1000)) {\n\t\t\tniceMin = generationOptions.min;\n\t\t\tniceMax = generationOptions.max;\n\t\t}\n\t}\n\n\tvar numSpaces = (niceMax - niceMin) / spacing;\n\t// If very close to our rounded value, use it.\n\tif (helpers.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n\t\tnumSpaces = Math.round(numSpaces);\n\t} else {\n\t\tnumSpaces = Math.ceil(numSpaces);\n\t}\n\n\tprecision = 1;\n\tif (spacing < 1) {\n\t\tprecision = Math.pow(10, 1 - Math.floor(helpers.log10(spacing)));\n\t\tniceMin = Math.round(niceMin * precision) / precision;\n\t\tniceMax = Math.round(niceMax * precision) / precision;\n\t}\n\tticks.push(generationOptions.min !== undefined ? generationOptions.min : niceMin);\n\tfor (var j = 1; j < numSpaces; ++j) {\n\t\tticks.push(Math.round((niceMin + j * spacing) * precision) / precision);\n\t}\n\tticks.push(generationOptions.max !== undefined ? generationOptions.max : niceMax);\n\n\treturn ticks;\n}\n\nmodule.exports = function(Chart) {\n\n\tvar noop = helpers.noop;\n\n\tChart.LinearScaleBase = Scale.extend({\n\t\tgetRightValue: function(value) {\n\t\t\tif (typeof value === 'string') {\n\t\t\t\treturn +value;\n\t\t\t}\n\t\t\treturn Scale.prototype.getRightValue.call(this, value);\n\t\t},\n\n\t\thandleTickRangeOptions: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\n\t\t\t// If we are forcing it to begin at 0, but 0 will already be rendered on the chart,\n\t\t\t// do nothing since that would make the chart weird. If the user really wants a weird chart\n\t\t\t// axis, they can manually override it\n\t\t\tif (tickOpts.beginAtZero) {\n\t\t\t\tvar minSign = helpers.sign(me.min);\n\t\t\t\tvar maxSign = helpers.sign(me.max);\n\n\t\t\t\tif (minSign < 0 && maxSign < 0) {\n\t\t\t\t\t// move the top up to 0\n\t\t\t\t\tme.max = 0;\n\t\t\t\t} else if (minSign > 0 && maxSign > 0) {\n\t\t\t\t\t// move the bottom down to 0\n\t\t\t\t\tme.min = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined;\n\t\t\tvar setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined;\n\n\t\t\tif (tickOpts.min !== undefined) {\n\t\t\t\tme.min = tickOpts.min;\n\t\t\t} else if (tickOpts.suggestedMin !== undefined) {\n\t\t\t\tif (me.min === null) {\n\t\t\t\t\tme.min = tickOpts.suggestedMin;\n\t\t\t\t} else {\n\t\t\t\t\tme.min = Math.min(me.min, tickOpts.suggestedMin);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (tickOpts.max !== undefined) {\n\t\t\t\tme.max = tickOpts.max;\n\t\t\t} else if (tickOpts.suggestedMax !== undefined) {\n\t\t\t\tif (me.max === null) {\n\t\t\t\t\tme.max = tickOpts.suggestedMax;\n\t\t\t\t} else {\n\t\t\t\t\tme.max = Math.max(me.max, tickOpts.suggestedMax);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (setMin !== setMax) {\n\t\t\t\t// We set the min or the max but not both.\n\t\t\t\t// So ensure that our range is good\n\t\t\t\t// Inverted or 0 length range can happen when\n\t\t\t\t// ticks.min is set, and no datasets are visible\n\t\t\t\tif (me.min >= me.max) {\n\t\t\t\t\tif (setMin) {\n\t\t\t\t\t\tme.max = me.min + 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tme.min = me.max - 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (me.min === me.max) {\n\t\t\t\tme.max++;\n\n\t\t\t\tif (!tickOpts.beginAtZero) {\n\t\t\t\t\tme.min--;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tgetTickLimit: noop,\n\t\thandleDirectionalChanges: noop,\n\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\n\t\t\t// Figure out what the max number of ticks we can support it is based on the size of\n\t\t\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 50\n\t\t\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n\t\t\t// the graph. Make sure we always have at least 2 ticks\n\t\t\tvar maxTicks = me.getTickLimit();\n\t\t\tmaxTicks = Math.max(2, maxTicks);\n\n\t\t\tvar numericGeneratorOptions = {\n\t\t\t\tmaxTicks: maxTicks,\n\t\t\t\tmin: tickOpts.min,\n\t\t\t\tmax: tickOpts.max,\n\t\t\t\tprecision: tickOpts.precision,\n\t\t\t\tstepSize: helpers.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize)\n\t\t\t};\n\t\t\tvar ticks = me.ticks = generateTicks(numericGeneratorOptions, me);\n\n\t\t\tme.handleDirectionalChanges();\n\n\t\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\n\t\t\t// range of the scale\n\t\t\tme.max = helpers.max(ticks);\n\t\t\tme.min = helpers.min(ticks);\n\n\t\t\tif (tickOpts.reverse) {\n\t\t\t\tticks.reverse();\n\n\t\t\t\tme.start = me.max;\n\t\t\t\tme.end = me.min;\n\t\t\t} else {\n\t\t\t\tme.start = me.min;\n\t\t\t\tme.end = me.max;\n\t\t\t}\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tvar me = this;\n\t\t\tme.ticksAsNumbers = me.ticks.slice();\n\t\t\tme.zeroLineIndex = me.ticks.indexOf(0);\n\n\t\t\tScale.prototype.convertTicksToLabels.call(me);\n\t\t}\n\t});\n};\n\n},{\"33\":33,\"46\":46}],57:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(46);\nvar Scale = require(33);\nvar scaleService = require(34);\nvar Ticks = require(35);\n\n/**\n * Generate a set of logarithmic ticks\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {Array} array of tick values\n */\nfunction generateTicks(generationOptions, dataRange) {\n\tvar ticks = [];\n\tvar valueOrDefault = helpers.valueOrDefault;\n\n\t// Figure out what the max number of ticks we can support it is based on the size of\n\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 50\n\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n\t// the graph\n\tvar tickVal = valueOrDefault(generationOptions.min, Math.pow(10, Math.floor(helpers.log10(dataRange.min))));\n\n\tvar endExp = Math.floor(helpers.log10(dataRange.max));\n\tvar endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n\tvar exp, significand;\n\n\tif (tickVal === 0) {\n\t\texp = Math.floor(helpers.log10(dataRange.minNotZero));\n\t\tsignificand = Math.floor(dataRange.minNotZero / Math.pow(10, exp));\n\n\t\tticks.push(tickVal);\n\t\ttickVal = significand * Math.pow(10, exp);\n\t} else {\n\t\texp = Math.floor(helpers.log10(tickVal));\n\t\tsignificand = Math.floor(tickVal / Math.pow(10, exp));\n\t}\n\tvar precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n\n\tdo {\n\t\tticks.push(tickVal);\n\n\t\t++significand;\n\t\tif (significand === 10) {\n\t\t\tsignificand = 1;\n\t\t\t++exp;\n\t\t\tprecision = exp >= 0 ? 1 : precision;\n\t\t}\n\n\t\ttickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n\t} while (exp < endExp || (exp === endExp && significand < endSignificand));\n\n\tvar lastTick = valueOrDefault(generationOptions.max, tickVal);\n\tticks.push(lastTick);\n\n\treturn ticks;\n}\n\n\nmodule.exports = function(Chart) {\n\n\tvar defaultConfig = {\n\t\tposition: 'left',\n\n\t\t// label settings\n\t\tticks: {\n\t\t\tcallback: Ticks.formatters.logarithmic\n\t\t}\n\t};\n\n\tvar LogarithmicScale = Scale.extend({\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar chart = me.chart;\n\t\t\tvar data = chart.data;\n\t\t\tvar datasets = data.datasets;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tfunction IDMatches(meta) {\n\t\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\n\t\t\t}\n\n\t\t\t// Calculate Range\n\t\t\tme.min = null;\n\t\t\tme.max = null;\n\t\t\tme.minNotZero = null;\n\n\t\t\tvar hasStacks = opts.stacked;\n\t\t\tif (hasStacks === undefined) {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tif (hasStacks) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\n\t\t\t\t\t\tmeta.stack !== undefined) {\n\t\t\t\t\t\thasStacks = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (opts.stacked || hasStacks) {\n\t\t\t\tvar valuesPerStack = {};\n\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tvar key = [\n\t\t\t\t\t\tmeta.type,\n\t\t\t\t\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\n\t\t\t\t\t\t((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\n\t\t\t\t\t\tmeta.stack\n\t\t\t\t\t].join('.');\n\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\tif (valuesPerStack[key] === undefined) {\n\t\t\t\t\t\t\tvaluesPerStack[key] = [];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar values = valuesPerStack[key];\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\t// invalid, hidden and negative values are ignored\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden || value < 0) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvalues[index] = values[index] || 0;\n\t\t\t\t\t\t\tvalues[index] += value;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\thelpers.each(valuesPerStack, function(valuesForType) {\n\t\t\t\t\tif (valuesForType.length > 0) {\n\t\t\t\t\t\tvar minVal = helpers.min(valuesForType);\n\t\t\t\t\t\tvar maxVal = helpers.max(valuesForType);\n\t\t\t\t\t\tme.min = me.min === null ? minVal : Math.min(me.min, minVal);\n\t\t\t\t\t\tme.max = me.max === null ? maxVal : Math.max(me.max, maxVal);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\t// invalid, hidden and negative values are ignored\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden || value < 0) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.min === null) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t} else if (value < me.min) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.max === null) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t} else if (value > me.max) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (value !== 0 && (me.minNotZero === null || value < me.minNotZero)) {\n\t\t\t\t\t\t\t\tme.minNotZero = value;\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\n\t\t\t// Common base implementation to handle ticks.min, ticks.max\n\t\t\tthis.handleTickRangeOptions();\n\t\t},\n\t\thandleTickRangeOptions: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\t\tvar DEFAULT_MIN = 1;\n\t\t\tvar DEFAULT_MAX = 10;\n\n\t\t\tme.min = valueOrDefault(tickOpts.min, me.min);\n\t\t\tme.max = valueOrDefault(tickOpts.max, me.max);\n\n\t\t\tif (me.min === me.max) {\n\t\t\t\tif (me.min !== 0 && me.min !== null) {\n\t\t\t\t\tme.min = Math.pow(10, Math.floor(helpers.log10(me.min)) - 1);\n\t\t\t\t\tme.max = Math.pow(10, Math.floor(helpers.log10(me.max)) + 1);\n\t\t\t\t} else {\n\t\t\t\t\tme.min = DEFAULT_MIN;\n\t\t\t\t\tme.max = DEFAULT_MAX;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (me.min === null) {\n\t\t\t\tme.min = Math.pow(10, Math.floor(helpers.log10(me.max)) - 1);\n\t\t\t}\n\t\t\tif (me.max === null) {\n\t\t\t\tme.max = me.min !== 0\n\t\t\t\t\t? Math.pow(10, Math.floor(helpers.log10(me.min)) + 1)\n\t\t\t\t\t: DEFAULT_MAX;\n\t\t\t}\n\t\t\tif (me.minNotZero === null) {\n\t\t\t\tif (me.min > 0) {\n\t\t\t\t\tme.minNotZero = me.min;\n\t\t\t\t} else if (me.max < 1) {\n\t\t\t\t\tme.minNotZero = Math.pow(10, Math.floor(helpers.log10(me.max)));\n\t\t\t\t} else {\n\t\t\t\t\tme.minNotZero = DEFAULT_MIN;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\tvar reverse = !me.isHorizontal();\n\n\t\t\tvar generationOptions = {\n\t\t\t\tmin: tickOpts.min,\n\t\t\t\tmax: tickOpts.max\n\t\t\t};\n\t\t\tvar ticks = me.ticks = generateTicks(generationOptions, me);\n\n\t\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\n\t\t\t// range of the scale\n\t\t\tme.max = helpers.max(ticks);\n\t\t\tme.min = helpers.min(ticks);\n\n\t\t\tif (tickOpts.reverse) {\n\t\t\t\treverse = !reverse;\n\t\t\t\tme.start = me.max;\n\t\t\t\tme.end = me.min;\n\t\t\t} else {\n\t\t\t\tme.start = me.min;\n\t\t\t\tme.end = me.max;\n\t\t\t}\n\t\t\tif (reverse) {\n\t\t\t\tticks.reverse();\n\t\t\t}\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tthis.tickValues = this.ticks.slice();\n\n\t\t\tScale.prototype.convertTicksToLabels.call(this);\n\t\t},\n\t\t// Get the correct tooltip label\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t\t},\n\t\tgetPixelForTick: function(index) {\n\t\t\treturn this.getPixelForValue(this.tickValues[index]);\n\t\t},\n\t\t/**\n\t\t * Returns the value of the first tick.\n\t\t * @param {Number} value - The minimum not zero value.\n\t\t * @return {Number} The first tick value.\n\t\t * @private\n\t\t */\n\t\t_getFirstTickValue: function(value) {\n\t\t\tvar exp = Math.floor(helpers.log10(value));\n\t\t\tvar significand = Math.floor(value / Math.pow(10, exp));\n\n\t\t\treturn significand * Math.pow(10, exp);\n\t\t},\n\t\tgetPixelForValue: function(value) {\n\t\t\tvar me = this;\n\t\t\tvar reverse = me.options.ticks.reverse;\n\t\t\tvar log10 = helpers.log10;\n\t\t\tvar firstTickValue = me._getFirstTickValue(me.minNotZero);\n\t\t\tvar offset = 0;\n\t\t\tvar innerDimension, pixel, start, end, sign;\n\n\t\t\tvalue = +me.getRightValue(value);\n\t\t\tif (reverse) {\n\t\t\t\tstart = me.end;\n\t\t\t\tend = me.start;\n\t\t\t\tsign = -1;\n\t\t\t} else {\n\t\t\t\tstart = me.start;\n\t\t\t\tend = me.end;\n\t\t\t\tsign = 1;\n\t\t\t}\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tinnerDimension = me.width;\n\t\t\t\tpixel = reverse ? me.right : me.left;\n\t\t\t} else {\n\t\t\t\tinnerDimension = me.height;\n\t\t\t\tsign *= -1; // invert, since the upper-left corner of the canvas is at pixel (0, 0)\n\t\t\t\tpixel = reverse ? me.top : me.bottom;\n\t\t\t}\n\t\t\tif (value !== start) {\n\t\t\t\tif (start === 0) { // include zero tick\n\t\t\t\t\toffset = helpers.getValueOrDefault(\n\t\t\t\t\t\tme.options.ticks.fontSize,\n\t\t\t\t\t\tChart.defaults.global.defaultFontSize\n\t\t\t\t\t);\n\t\t\t\t\tinnerDimension -= offset;\n\t\t\t\t\tstart = firstTickValue;\n\t\t\t\t}\n\t\t\t\tif (value !== 0) {\n\t\t\t\t\toffset += innerDimension / (log10(end) - log10(start)) * (log10(value) - log10(start));\n\t\t\t\t}\n\t\t\t\tpixel += sign * offset;\n\t\t\t}\n\t\t\treturn pixel;\n\t\t},\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar reverse = me.options.ticks.reverse;\n\t\t\tvar log10 = helpers.log10;\n\t\t\tvar firstTickValue = me._getFirstTickValue(me.minNotZero);\n\t\t\tvar innerDimension, start, end, value;\n\n\t\t\tif (reverse) {\n\t\t\t\tstart = me.end;\n\t\t\t\tend = me.start;\n\t\t\t} else {\n\t\t\t\tstart = me.start;\n\t\t\t\tend = me.end;\n\t\t\t}\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tinnerDimension = me.width;\n\t\t\t\tvalue = reverse ? me.right - pixel : pixel - me.left;\n\t\t\t} else {\n\t\t\t\tinnerDimension = me.height;\n\t\t\t\tvalue = reverse ? pixel - me.top : me.bottom - pixel;\n\t\t\t}\n\t\t\tif (value !== start) {\n\t\t\t\tif (start === 0) { // include zero tick\n\t\t\t\t\tvar offset = helpers.getValueOrDefault(\n\t\t\t\t\t\tme.options.ticks.fontSize,\n\t\t\t\t\t\tChart.defaults.global.defaultFontSize\n\t\t\t\t\t);\n\t\t\t\t\tvalue -= offset;\n\t\t\t\t\tinnerDimension -= offset;\n\t\t\t\t\tstart = firstTickValue;\n\t\t\t\t}\n\t\t\t\tvalue *= log10(end) - log10(start);\n\t\t\t\tvalue /= innerDimension;\n\t\t\t\tvalue = Math.pow(10, log10(start) + value);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('logarithmic', LogarithmicScale, defaultConfig);\n};\n\n},{\"33\":33,\"34\":34,\"35\":35,\"46\":46}],58:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar helpers = require(46);\nvar scaleService = require(34);\nvar Ticks = require(35);\n\nmodule.exports = function(Chart) {\n\n\tvar globalDefaults = defaults.global;\n\n\tvar defaultConfig = {\n\t\tdisplay: true,\n\n\t\t// Boolean - Whether to animate scaling the chart from the centre\n\t\tanimate: true,\n\t\tposition: 'chartArea',\n\n\t\tangleLines: {\n\t\t\tdisplay: true,\n\t\t\tcolor: 'rgba(0, 0, 0, 0.1)',\n\t\t\tlineWidth: 1\n\t\t},\n\n\t\tgridLines: {\n\t\t\tcircular: false\n\t\t},\n\n\t\t// label settings\n\t\tticks: {\n\t\t\t// Boolean - Show a backdrop to the scale label\n\t\t\tshowLabelBackdrop: true,\n\n\t\t\t// String - The colour of the label backdrop\n\t\t\tbackdropColor: 'rgba(255,255,255,0.75)',\n\n\t\t\t// Number - The backdrop padding above & below the label in pixels\n\t\t\tbackdropPaddingY: 2,\n\n\t\t\t// Number - The backdrop padding to the side of the label in pixels\n\t\t\tbackdropPaddingX: 2,\n\n\t\t\tcallback: Ticks.formatters.linear\n\t\t},\n\n\t\tpointLabels: {\n\t\t\t// Boolean - if true, show point labels\n\t\t\tdisplay: true,\n\n\t\t\t// Number - Point label font size in pixels\n\t\t\tfontSize: 10,\n\n\t\t\t// Function - Used to convert point labels\n\t\t\tcallback: function(label) {\n\t\t\t\treturn label;\n\t\t\t}\n\t\t}\n\t};\n\n\tfunction getValueCount(scale) {\n\t\tvar opts = scale.options;\n\t\treturn opts.angleLines.display || opts.pointLabels.display ? scale.chart.data.labels.length : 0;\n\t}\n\n\tfunction getPointLabelFontOptions(scale) {\n\t\tvar pointLabelOptions = scale.options.pointLabels;\n\t\tvar fontSize = helpers.valueOrDefault(pointLabelOptions.fontSize, globalDefaults.defaultFontSize);\n\t\tvar fontStyle = helpers.valueOrDefault(pointLabelOptions.fontStyle, globalDefaults.defaultFontStyle);\n\t\tvar fontFamily = helpers.valueOrDefault(pointLabelOptions.fontFamily, globalDefaults.defaultFontFamily);\n\t\tvar font = helpers.fontString(fontSize, fontStyle, fontFamily);\n\n\t\treturn {\n\t\t\tsize: fontSize,\n\t\t\tstyle: fontStyle,\n\t\t\tfamily: fontFamily,\n\t\t\tfont: font\n\t\t};\n\t}\n\n\tfunction measureLabelSize(ctx, fontSize, label) {\n\t\tif (helpers.isArray(label)) {\n\t\t\treturn {\n\t\t\t\tw: helpers.longestText(ctx, ctx.font, label),\n\t\t\t\th: (label.length * fontSize) + ((label.length - 1) * 1.5 * fontSize)\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tw: ctx.measureText(label).width,\n\t\t\th: fontSize\n\t\t};\n\t}\n\n\tfunction determineLimits(angle, pos, size, min, max) {\n\t\tif (angle === min || angle === max) {\n\t\t\treturn {\n\t\t\t\tstart: pos - (size / 2),\n\t\t\t\tend: pos + (size / 2)\n\t\t\t};\n\t\t} else if (angle < min || angle > max) {\n\t\t\treturn {\n\t\t\t\tstart: pos - size - 5,\n\t\t\t\tend: pos\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tstart: pos,\n\t\t\tend: pos + size + 5\n\t\t};\n\t}\n\n\t/**\n\t * Helper function to fit a radial linear scale with point labels\n\t */\n\tfunction fitWithPointLabels(scale) {\n\t\t/*\n\t\t * Right, this is really confusing and there is a lot of maths going on here\n\t\t * The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\n\t\t *\n\t\t * Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\n\t\t *\n\t\t * Solution:\n\t\t *\n\t\t * We assume the radius of the polygon is half the size of the canvas at first\n\t\t * at each index we check if the text overlaps.\n\t\t *\n\t\t * Where it does, we store that angle and that index.\n\t\t *\n\t\t * After finding the largest index and angle we calculate how much we need to remove\n\t\t * from the shape radius to move the point inwards by that x.\n\t\t *\n\t\t * We average the left and right distances to get the maximum shape radius that can fit in the box\n\t\t * along with labels.\n\t\t *\n\t\t * Once we have that, we can find the centre point for the chart, by taking the x text protrusion\n\t\t * on each side, removing that from the size, halving it and adding the left x protrusion width.\n\t\t *\n\t\t * This will mean we have a shape fitted to the canvas, as large as it can be with the labels\n\t\t * and position it in the most space efficient manner\n\t\t *\n\t\t * https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\n\t\t */\n\n\t\tvar plFont = getPointLabelFontOptions(scale);\n\n\t\t// Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\n\t\t// Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\n\t\tvar largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2);\n\t\tvar furthestLimits = {\n\t\t\tr: scale.width,\n\t\t\tl: 0,\n\t\t\tt: scale.height,\n\t\t\tb: 0\n\t\t};\n\t\tvar furthestAngles = {};\n\t\tvar i, textSize, pointPosition;\n\n\t\tscale.ctx.font = plFont.font;\n\t\tscale._pointLabelSizes = [];\n\n\t\tvar valueCount = getValueCount(scale);\n\t\tfor (i = 0; i < valueCount; i++) {\n\t\t\tpointPosition = scale.getPointPosition(i, largestPossibleRadius);\n\t\t\ttextSize = measureLabelSize(scale.ctx, plFont.size, scale.pointLabels[i] || '');\n\t\t\tscale._pointLabelSizes[i] = textSize;\n\n\t\t\t// Add quarter circle to make degree 0 mean top of circle\n\t\t\tvar angleRadians = scale.getIndexAngle(i);\n\t\t\tvar angle = helpers.toDegrees(angleRadians) % 360;\n\t\t\tvar hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n\t\t\tvar vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n\n\t\t\tif (hLimits.start < furthestLimits.l) {\n\t\t\t\tfurthestLimits.l = hLimits.start;\n\t\t\t\tfurthestAngles.l = angleRadians;\n\t\t\t}\n\n\t\t\tif (hLimits.end > furthestLimits.r) {\n\t\t\t\tfurthestLimits.r = hLimits.end;\n\t\t\t\tfurthestAngles.r = angleRadians;\n\t\t\t}\n\n\t\t\tif (vLimits.start < furthestLimits.t) {\n\t\t\t\tfurthestLimits.t = vLimits.start;\n\t\t\t\tfurthestAngles.t = angleRadians;\n\t\t\t}\n\n\t\t\tif (vLimits.end > furthestLimits.b) {\n\t\t\t\tfurthestLimits.b = vLimits.end;\n\t\t\t\tfurthestAngles.b = angleRadians;\n\t\t\t}\n\t\t}\n\n\t\tscale.setReductions(largestPossibleRadius, furthestLimits, furthestAngles);\n\t}\n\n\t/**\n\t * Helper function to fit a radial linear scale with no point labels\n\t */\n\tfunction fit(scale) {\n\t\tvar largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2);\n\t\tscale.drawingArea = Math.round(largestPossibleRadius);\n\t\tscale.setCenterPoint(0, 0, 0, 0);\n\t}\n\n\tfunction getTextAlignForAngle(angle) {\n\t\tif (angle === 0 || angle === 180) {\n\t\t\treturn 'center';\n\t\t} else if (angle < 180) {\n\t\t\treturn 'left';\n\t\t}\n\n\t\treturn 'right';\n\t}\n\n\tfunction fillText(ctx, text, position, fontSize) {\n\t\tif (helpers.isArray(text)) {\n\t\t\tvar y = position.y;\n\t\t\tvar spacing = 1.5 * fontSize;\n\n\t\t\tfor (var i = 0; i < text.length; ++i) {\n\t\t\t\tctx.fillText(text[i], position.x, y);\n\t\t\t\ty += spacing;\n\t\t\t}\n\t\t} else {\n\t\t\tctx.fillText(text, position.x, position.y);\n\t\t}\n\t}\n\n\tfunction adjustPointPositionForLabelHeight(angle, textSize, position) {\n\t\tif (angle === 90 || angle === 270) {\n\t\t\tposition.y -= (textSize.h / 2);\n\t\t} else if (angle > 270 || angle < 90) {\n\t\t\tposition.y -= textSize.h;\n\t\t}\n\t}\n\n\tfunction drawPointLabels(scale) {\n\t\tvar ctx = scale.ctx;\n\t\tvar opts = scale.options;\n\t\tvar angleLineOpts = opts.angleLines;\n\t\tvar pointLabelOpts = opts.pointLabels;\n\n\t\tctx.lineWidth = angleLineOpts.lineWidth;\n\t\tctx.strokeStyle = angleLineOpts.color;\n\n\t\tvar outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max);\n\n\t\t// Point Label Font\n\t\tvar plFont = getPointLabelFontOptions(scale);\n\n\t\tctx.textBaseline = 'top';\n\n\t\tfor (var i = getValueCount(scale) - 1; i >= 0; i--) {\n\t\t\tif (angleLineOpts.display) {\n\t\t\t\tvar outerPosition = scale.getPointPosition(i, outerDistance);\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(scale.xCenter, scale.yCenter);\n\t\t\t\tctx.lineTo(outerPosition.x, outerPosition.y);\n\t\t\t\tctx.stroke();\n\t\t\t\tctx.closePath();\n\t\t\t}\n\n\t\t\tif (pointLabelOpts.display) {\n\t\t\t\t// Extra 3px out for some label spacing\n\t\t\t\tvar pointLabelPosition = scale.getPointPosition(i, outerDistance + 5);\n\n\t\t\t\t// Keep this in loop since we may support array properties here\n\t\t\t\tvar pointLabelFontColor = helpers.valueAtIndexOrDefault(pointLabelOpts.fontColor, i, globalDefaults.defaultFontColor);\n\t\t\t\tctx.font = plFont.font;\n\t\t\t\tctx.fillStyle = pointLabelFontColor;\n\n\t\t\t\tvar angleRadians = scale.getIndexAngle(i);\n\t\t\t\tvar angle = helpers.toDegrees(angleRadians);\n\t\t\t\tctx.textAlign = getTextAlignForAngle(angle);\n\t\t\t\tadjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition);\n\t\t\t\tfillText(ctx, scale.pointLabels[i] || '', pointLabelPosition, plFont.size);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction drawRadiusLine(scale, gridLineOpts, radius, index) {\n\t\tvar ctx = scale.ctx;\n\t\tctx.strokeStyle = helpers.valueAtIndexOrDefault(gridLineOpts.color, index - 1);\n\t\tctx.lineWidth = helpers.valueAtIndexOrDefault(gridLineOpts.lineWidth, index - 1);\n\n\t\tif (scale.options.gridLines.circular) {\n\t\t\t// Draw circular arcs between the points\n\t\t\tctx.beginPath();\n\t\t\tctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2);\n\t\t\tctx.closePath();\n\t\t\tctx.stroke();\n\t\t} else {\n\t\t\t// Draw straight lines connecting each index\n\t\t\tvar valueCount = getValueCount(scale);\n\n\t\t\tif (valueCount === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tctx.beginPath();\n\t\t\tvar pointPosition = scale.getPointPosition(0, radius);\n\t\t\tctx.moveTo(pointPosition.x, pointPosition.y);\n\n\t\t\tfor (var i = 1; i < valueCount; i++) {\n\t\t\t\tpointPosition = scale.getPointPosition(i, radius);\n\t\t\t\tctx.lineTo(pointPosition.x, pointPosition.y);\n\t\t\t}\n\n\t\t\tctx.closePath();\n\t\t\tctx.stroke();\n\t\t}\n\t}\n\n\tfunction numberOrZero(param) {\n\t\treturn helpers.isNumber(param) ? param : 0;\n\t}\n\n\tvar LinearRadialScale = Chart.LinearScaleBase.extend({\n\t\tsetDimensions: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\t// Set the unconstrained dimension before label rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.height = me.maxHeight;\n\t\t\tme.xCenter = Math.round(me.width / 2);\n\t\t\tme.yCenter = Math.round(me.height / 2);\n\n\t\t\tvar minSize = helpers.min([me.height, me.width]);\n\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\n\t\t\tme.drawingArea = opts.display ? (minSize / 2) - (tickFontSize / 2 + tickOpts.backdropPaddingY) : (minSize / 2);\n\t\t},\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar min = Number.POSITIVE_INFINITY;\n\t\t\tvar max = Number.NEGATIVE_INFINITY;\n\n\t\t\thelpers.each(chart.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex)) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\n\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmin = Math.min(value, min);\n\t\t\t\t\t\tmax = Math.max(value, max);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tme.min = (min === Number.POSITIVE_INFINITY ? 0 : min);\n\t\t\tme.max = (max === Number.NEGATIVE_INFINITY ? 0 : max);\n\n\t\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\n\t\t\tme.handleTickRangeOptions();\n\t\t},\n\t\tgetTickLimit: function() {\n\t\t\tvar tickOpts = this.options.ticks;\n\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\n\t\t\treturn Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(this.drawingArea / (1.5 * tickFontSize)));\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tvar me = this;\n\n\t\t\tChart.LinearScaleBase.prototype.convertTicksToLabels.call(me);\n\n\t\t\t// Point labels\n\t\t\tme.pointLabels = me.chart.data.labels.map(me.options.pointLabels.callback, me);\n\t\t},\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t\t},\n\t\tfit: function() {\n\t\t\tif (this.options.pointLabels.display) {\n\t\t\t\tfitWithPointLabels(this);\n\t\t\t} else {\n\t\t\t\tfit(this);\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Set radius reductions and determine new radius and center point\n\t\t * @private\n\t\t */\n\t\tsetReductions: function(largestPossibleRadius, furthestLimits, furthestAngles) {\n\t\t\tvar me = this;\n\t\t\tvar radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l);\n\t\t\tvar radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r);\n\t\t\tvar radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t);\n\t\t\tvar radiusReductionBottom = -Math.max(furthestLimits.b - me.height, 0) / Math.cos(furthestAngles.b);\n\n\t\t\tradiusReductionLeft = numberOrZero(radiusReductionLeft);\n\t\t\tradiusReductionRight = numberOrZero(radiusReductionRight);\n\t\t\tradiusReductionTop = numberOrZero(radiusReductionTop);\n\t\t\tradiusReductionBottom = numberOrZero(radiusReductionBottom);\n\n\t\t\tme.drawingArea = Math.min(\n\t\t\t\tMath.round(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2),\n\t\t\t\tMath.round(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2));\n\t\t\tme.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom);\n\t\t},\n\t\tsetCenterPoint: function(leftMovement, rightMovement, topMovement, bottomMovement) {\n\t\t\tvar me = this;\n\t\t\tvar maxRight = me.width - rightMovement - me.drawingArea;\n\t\t\tvar maxLeft = leftMovement + me.drawingArea;\n\t\t\tvar maxTop = topMovement + me.drawingArea;\n\t\t\tvar maxBottom = me.height - bottomMovement - me.drawingArea;\n\n\t\t\tme.xCenter = Math.round(((maxLeft + maxRight) / 2) + me.left);\n\t\t\tme.yCenter = Math.round(((maxTop + maxBottom) / 2) + me.top);\n\t\t},\n\n\t\tgetIndexAngle: function(index) {\n\t\t\tvar angleMultiplier = (Math.PI * 2) / getValueCount(this);\n\t\t\tvar startAngle = this.chart.options && this.chart.options.startAngle ?\n\t\t\t\tthis.chart.options.startAngle :\n\t\t\t\t0;\n\n\t\t\tvar startAngleRadians = startAngle * Math.PI * 2 / 360;\n\n\t\t\t// Start from the top instead of right, so remove a quarter of the circle\n\t\t\treturn index * angleMultiplier + startAngleRadians;\n\t\t},\n\t\tgetDistanceFromCenterForValue: function(value) {\n\t\t\tvar me = this;\n\n\t\t\tif (value === null) {\n\t\t\t\treturn 0; // null always in center\n\t\t\t}\n\n\t\t\t// Take into account half font size + the yPadding of the top value\n\t\t\tvar scalingFactor = me.drawingArea / (me.max - me.min);\n\t\t\tif (me.options.ticks.reverse) {\n\t\t\t\treturn (me.max - value) * scalingFactor;\n\t\t\t}\n\t\t\treturn (value - me.min) * scalingFactor;\n\t\t},\n\t\tgetPointPosition: function(index, distanceFromCenter) {\n\t\t\tvar me = this;\n\t\t\tvar thisAngle = me.getIndexAngle(index) - (Math.PI / 2);\n\t\t\treturn {\n\t\t\t\tx: Math.round(Math.cos(thisAngle) * distanceFromCenter) + me.xCenter,\n\t\t\t\ty: Math.round(Math.sin(thisAngle) * distanceFromCenter) + me.yCenter\n\t\t\t};\n\t\t},\n\t\tgetPointPositionForValue: function(index, value) {\n\t\t\treturn this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n\t\t},\n\n\t\tgetBasePosition: function() {\n\t\t\tvar me = this;\n\t\t\tvar min = me.min;\n\t\t\tvar max = me.max;\n\n\t\t\treturn me.getPointPositionForValue(0,\n\t\t\t\tme.beginAtZero ? 0 :\n\t\t\t\tmin < 0 && max < 0 ? max :\n\t\t\t\tmin > 0 && max > 0 ? min :\n\t\t\t\t0);\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar gridLineOpts = opts.gridLines;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\n\n\t\t\tif (opts.display) {\n\t\t\t\tvar ctx = me.ctx;\n\t\t\t\tvar startAngle = this.getIndexAngle(0);\n\n\t\t\t\t// Tick Font\n\t\t\t\tvar tickFontSize = valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\n\t\t\t\tvar tickFontStyle = valueOrDefault(tickOpts.fontStyle, globalDefaults.defaultFontStyle);\n\t\t\t\tvar tickFontFamily = valueOrDefault(tickOpts.fontFamily, globalDefaults.defaultFontFamily);\n\t\t\t\tvar tickLabelFont = helpers.fontString(tickFontSize, tickFontStyle, tickFontFamily);\n\n\t\t\t\thelpers.each(me.ticks, function(label, index) {\n\t\t\t\t\t// Don't draw a centre value (if it is minimum)\n\t\t\t\t\tif (index > 0 || tickOpts.reverse) {\n\t\t\t\t\t\tvar yCenterOffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\n\n\t\t\t\t\t\t// Draw circular lines around the scale\n\t\t\t\t\t\tif (gridLineOpts.display && index !== 0) {\n\t\t\t\t\t\t\tdrawRadiusLine(me, gridLineOpts, yCenterOffset, index);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (tickOpts.display) {\n\t\t\t\t\t\t\tvar tickFontColor = valueOrDefault(tickOpts.fontColor, globalDefaults.defaultFontColor);\n\t\t\t\t\t\t\tctx.font = tickLabelFont;\n\n\t\t\t\t\t\t\tctx.save();\n\t\t\t\t\t\t\tctx.translate(me.xCenter, me.yCenter);\n\t\t\t\t\t\t\tctx.rotate(startAngle);\n\n\t\t\t\t\t\t\tif (tickOpts.showLabelBackdrop) {\n\t\t\t\t\t\t\t\tvar labelWidth = ctx.measureText(label).width;\n\t\t\t\t\t\t\t\tctx.fillStyle = tickOpts.backdropColor;\n\t\t\t\t\t\t\t\tctx.fillRect(\n\t\t\t\t\t\t\t\t\t-labelWidth / 2 - tickOpts.backdropPaddingX,\n\t\t\t\t\t\t\t\t\t-yCenterOffset - tickFontSize / 2 - tickOpts.backdropPaddingY,\n\t\t\t\t\t\t\t\t\tlabelWidth + tickOpts.backdropPaddingX * 2,\n\t\t\t\t\t\t\t\t\ttickFontSize + tickOpts.backdropPaddingY * 2\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tctx.textAlign = 'center';\n\t\t\t\t\t\t\tctx.textBaseline = 'middle';\n\t\t\t\t\t\t\tctx.fillStyle = tickFontColor;\n\t\t\t\t\t\t\tctx.fillText(label, 0, -yCenterOffset);\n\t\t\t\t\t\t\tctx.restore();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (opts.angleLines.display || opts.pointLabels.display) {\n\t\t\t\t\tdrawPointLabels(me);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('radialLinear', LinearRadialScale, defaultConfig);\n};\n\n},{\"26\":26,\"34\":34,\"35\":35,\"46\":46}],59:[function(require,module,exports){\n/* global window: false */\n'use strict';\n\nvar moment = require(1);\nmoment = typeof moment === 'function' ? moment : window.moment;\n\nvar defaults = require(26);\nvar helpers = require(46);\nvar Scale = require(33);\nvar scaleService = require(34);\n\n// Integer constants are from the ES6 spec.\nvar MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;\nvar MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\n\nvar INTERVALS = {\n\tmillisecond: {\n\t\tcommon: true,\n\t\tsize: 1,\n\t\tsteps: [1, 2, 5, 10, 20, 50, 100, 250, 500]\n\t},\n\tsecond: {\n\t\tcommon: true,\n\t\tsize: 1000,\n\t\tsteps: [1, 2, 5, 10, 15, 30]\n\t},\n\tminute: {\n\t\tcommon: true,\n\t\tsize: 60000,\n\t\tsteps: [1, 2, 5, 10, 15, 30]\n\t},\n\thour: {\n\t\tcommon: true,\n\t\tsize: 3600000,\n\t\tsteps: [1, 2, 3, 6, 12]\n\t},\n\tday: {\n\t\tcommon: true,\n\t\tsize: 86400000,\n\t\tsteps: [1, 2, 5]\n\t},\n\tweek: {\n\t\tcommon: false,\n\t\tsize: 604800000,\n\t\tsteps: [1, 2, 3, 4]\n\t},\n\tmonth: {\n\t\tcommon: true,\n\t\tsize: 2.628e9,\n\t\tsteps: [1, 2, 3]\n\t},\n\tquarter: {\n\t\tcommon: false,\n\t\tsize: 7.884e9,\n\t\tsteps: [1, 2, 3, 4]\n\t},\n\tyear: {\n\t\tcommon: true,\n\t\tsize: 3.154e10\n\t}\n};\n\nvar UNITS = Object.keys(INTERVALS);\n\nfunction sorter(a, b) {\n\treturn a - b;\n}\n\nfunction arrayUnique(items) {\n\tvar hash = {};\n\tvar out = [];\n\tvar i, ilen, item;\n\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\n\t\titem = items[i];\n\t\tif (!hash[item]) {\n\t\t\thash[item] = true;\n\t\t\tout.push(item);\n\t\t}\n\t}\n\n\treturn out;\n}\n\n/**\n * Returns an array of {time, pos} objects used to interpolate a specific `time` or position\n * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is\n * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other\n * extremity (left + width or top + height). Note that it would be more optimized to directly\n * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need\n * to create the lookup table. The table ALWAYS contains at least two items: min and max.\n *\n * @param {Number[]} timestamps - timestamps sorted from lowest to highest.\n * @param {String} distribution - If 'linear', timestamps will be spread linearly along the min\n * and max range, so basically, the table will contains only two items: {min, 0} and {max, 1}.\n * If 'series', timestamps will be positioned at the same distance from each other. In this\n * case, only timestamps that break the time linearity are registered, meaning that in the\n * best case, all timestamps are linear, the table contains only min and max.\n */\nfunction buildLookupTable(timestamps, min, max, distribution) {\n\tif (distribution === 'linear' || !timestamps.length) {\n\t\treturn [\n\t\t\t{time: min, pos: 0},\n\t\t\t{time: max, pos: 1}\n\t\t];\n\t}\n\n\tvar table = [];\n\tvar items = [min];\n\tvar i, ilen, prev, curr, next;\n\n\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n\t\tcurr = timestamps[i];\n\t\tif (curr > min && curr < max) {\n\t\t\titems.push(curr);\n\t\t}\n\t}\n\n\titems.push(max);\n\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\n\t\tnext = items[i + 1];\n\t\tprev = items[i - 1];\n\t\tcurr = items[i];\n\n\t\t// only add points that breaks the scale linearity\n\t\tif (prev === undefined || next === undefined || Math.round((next + prev) / 2) !== curr) {\n\t\t\ttable.push({time: curr, pos: i / (ilen - 1)});\n\t\t}\n\t}\n\n\treturn table;\n}\n\n// @see adapted from http://www.anujgakhar.com/2014/03/01/binary-search-in-javascript/\nfunction lookup(table, key, value) {\n\tvar lo = 0;\n\tvar hi = table.length - 1;\n\tvar mid, i0, i1;\n\n\twhile (lo >= 0 && lo <= hi) {\n\t\tmid = (lo + hi) >> 1;\n\t\ti0 = table[mid - 1] || null;\n\t\ti1 = table[mid];\n\n\t\tif (!i0) {\n\t\t\t// given value is outside table (before first item)\n\t\t\treturn {lo: null, hi: i1};\n\t\t} else if (i1[key] < value) {\n\t\t\tlo = mid + 1;\n\t\t} else if (i0[key] > value) {\n\t\t\thi = mid - 1;\n\t\t} else {\n\t\t\treturn {lo: i0, hi: i1};\n\t\t}\n\t}\n\n\t// given value is outside table (after last item)\n\treturn {lo: i1, hi: null};\n}\n\n/**\n * Linearly interpolates the given source `value` using the table items `skey` values and\n * returns the associated `tkey` value. For example, interpolate(table, 'time', 42, 'pos')\n * returns the position for a timestamp equal to 42. If value is out of bounds, values at\n * index [0, 1] or [n - 1, n] are used for the interpolation.\n */\nfunction interpolate(table, skey, sval, tkey) {\n\tvar range = lookup(table, skey, sval);\n\n\t// Note: the lookup table ALWAYS contains at least 2 items (min and max)\n\tvar prev = !range.lo ? table[0] : !range.hi ? table[table.length - 2] : range.lo;\n\tvar next = !range.lo ? table[1] : !range.hi ? table[table.length - 1] : range.hi;\n\n\tvar span = next[skey] - prev[skey];\n\tvar ratio = span ? (sval - prev[skey]) / span : 0;\n\tvar offset = (next[tkey] - prev[tkey]) * ratio;\n\n\treturn prev[tkey] + offset;\n}\n\n/**\n * Convert the given value to a moment object using the given time options.\n * @see http://momentjs.com/docs/#/parsing/\n */\nfunction momentify(value, options) {\n\tvar parser = options.parser;\n\tvar format = options.parser || options.format;\n\n\tif (typeof parser === 'function') {\n\t\treturn parser(value);\n\t}\n\n\tif (typeof value === 'string' && typeof format === 'string') {\n\t\treturn moment(value, format);\n\t}\n\n\tif (!(value instanceof moment)) {\n\t\tvalue = moment(value);\n\t}\n\n\tif (value.isValid()) {\n\t\treturn value;\n\t}\n\n\t// Labels are in an incompatible moment format and no `parser` has been provided.\n\t// The user might still use the deprecated `format` option to convert his inputs.\n\tif (typeof format === 'function') {\n\t\treturn format(value);\n\t}\n\n\treturn value;\n}\n\nfunction parse(input, scale) {\n\tif (helpers.isNullOrUndef(input)) {\n\t\treturn null;\n\t}\n\n\tvar options = scale.options.time;\n\tvar value = momentify(scale.getRightValue(input), options);\n\tif (!value.isValid()) {\n\t\treturn null;\n\t}\n\n\tif (options.round) {\n\t\tvalue.startOf(options.round);\n\t}\n\n\treturn value.valueOf();\n}\n\n/**\n * Returns the number of unit to skip to be able to display up to `capacity` number of ticks\n * in `unit` for the given `min` / `max` range and respecting the interval steps constraints.\n */\nfunction determineStepSize(min, max, unit, capacity) {\n\tvar range = max - min;\n\tvar interval = INTERVALS[unit];\n\tvar milliseconds = interval.size;\n\tvar steps = interval.steps;\n\tvar i, ilen, factor;\n\n\tif (!steps) {\n\t\treturn Math.ceil(range / (capacity * milliseconds));\n\t}\n\n\tfor (i = 0, ilen = steps.length; i < ilen; ++i) {\n\t\tfactor = steps[i];\n\t\tif (Math.ceil(range / (milliseconds * factor)) <= capacity) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn factor;\n}\n\n/**\n * Figures out what unit results in an appropriate number of auto-generated ticks\n */\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n\tvar ilen = UNITS.length;\n\tvar i, interval, factor;\n\n\tfor (i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n\t\tinterval = INTERVALS[UNITS[i]];\n\t\tfactor = interval.steps ? interval.steps[interval.steps.length - 1] : MAX_INTEGER;\n\n\t\tif (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n\t\t\treturn UNITS[i];\n\t\t}\n\t}\n\n\treturn UNITS[ilen - 1];\n}\n\n/**\n * Figures out what unit to format a set of ticks with\n */\nfunction determineUnitForFormatting(ticks, minUnit, min, max) {\n\tvar duration = moment.duration(moment(max).diff(moment(min)));\n\tvar ilen = UNITS.length;\n\tvar i, unit;\n\n\tfor (i = ilen - 1; i >= UNITS.indexOf(minUnit); i--) {\n\t\tunit = UNITS[i];\n\t\tif (INTERVALS[unit].common && duration.as(unit) >= ticks.length) {\n\t\t\treturn unit;\n\t\t}\n\t}\n\n\treturn UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\n\nfunction determineMajorUnit(unit) {\n\tfor (var i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n\t\tif (INTERVALS[UNITS[i]].common) {\n\t\t\treturn UNITS[i];\n\t\t}\n\t}\n}\n\n/**\n * Generates a maximum of `capacity` timestamps between min and max, rounded to the\n * `minor` unit, aligned on the `major` unit and using the given scale time `options`.\n * Important: this method can return ticks outside the min and max range, it's the\n * responsibility of the calling code to clamp values if needed.\n */\nfunction generate(min, max, capacity, options) {\n\tvar timeOpts = options.time;\n\tvar minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, capacity);\n\tvar major = determineMajorUnit(minor);\n\tvar stepSize = helpers.valueOrDefault(timeOpts.stepSize, timeOpts.unitStepSize);\n\tvar weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n\tvar majorTicksEnabled = options.ticks.major.enabled;\n\tvar interval = INTERVALS[minor];\n\tvar first = moment(min);\n\tvar last = moment(max);\n\tvar ticks = [];\n\tvar time;\n\n\tif (!stepSize) {\n\t\tstepSize = determineStepSize(min, max, minor, capacity);\n\t}\n\n\t// For 'week' unit, handle the first day of week option\n\tif (weekday) {\n\t\tfirst = first.isoWeekday(weekday);\n\t\tlast = last.isoWeekday(weekday);\n\t}\n\n\t// Align first/last ticks on unit\n\tfirst = first.startOf(weekday ? 'day' : minor);\n\tlast = last.startOf(weekday ? 'day' : minor);\n\n\t// Make sure that the last tick include max\n\tif (last < max) {\n\t\tlast.add(1, minor);\n\t}\n\n\ttime = moment(first);\n\n\tif (majorTicksEnabled && major && !weekday && !timeOpts.round) {\n\t\t// Align the first tick on the previous `minor` unit aligned on the `major` unit:\n\t\t// we first aligned time on the previous `major` unit then add the number of full\n\t\t// stepSize there is between first and the previous major time.\n\t\ttime.startOf(major);\n\t\ttime.add(~~((first - time) / (interval.size * stepSize)) * stepSize, minor);\n\t}\n\n\tfor (; time < last; time.add(stepSize, minor)) {\n\t\tticks.push(+time);\n\t}\n\n\tticks.push(+time);\n\n\treturn ticks;\n}\n\n/**\n * Returns the right and left offsets from edges in the form of {left, right}.\n * Offsets are added when the `offset` option is true.\n */\nfunction computeOffsets(table, ticks, min, max, options) {\n\tvar left = 0;\n\tvar right = 0;\n\tvar upper, lower;\n\n\tif (options.offset && ticks.length) {\n\t\tif (!options.time.min) {\n\t\t\tupper = ticks.length > 1 ? ticks[1] : max;\n\t\t\tlower = ticks[0];\n\t\t\tleft = (\n\t\t\t\tinterpolate(table, 'time', upper, 'pos') -\n\t\t\t\tinterpolate(table, 'time', lower, 'pos')\n\t\t\t) / 2;\n\t\t}\n\t\tif (!options.time.max) {\n\t\t\tupper = ticks[ticks.length - 1];\n\t\t\tlower = ticks.length > 1 ? ticks[ticks.length - 2] : min;\n\t\t\tright = (\n\t\t\t\tinterpolate(table, 'time', upper, 'pos') -\n\t\t\t\tinterpolate(table, 'time', lower, 'pos')\n\t\t\t) / 2;\n\t\t}\n\t}\n\n\treturn {left: left, right: right};\n}\n\nfunction ticksFromTimestamps(values, majorUnit) {\n\tvar ticks = [];\n\tvar i, ilen, value, major;\n\n\tfor (i = 0, ilen = values.length; i < ilen; ++i) {\n\t\tvalue = values[i];\n\t\tmajor = majorUnit ? value === +moment(value).startOf(majorUnit) : false;\n\n\t\tticks.push({\n\t\t\tvalue: value,\n\t\t\tmajor: major\n\t\t});\n\t}\n\n\treturn ticks;\n}\n\nfunction determineLabelFormat(data, timeOpts) {\n\tvar i, momentDate, hasTime;\n\tvar ilen = data.length;\n\n\t// find the label with the most parts (milliseconds, minutes, etc.)\n\t// format all labels with the same level of detail as the most specific label\n\tfor (i = 0; i < ilen; i++) {\n\t\tmomentDate = momentify(data[i], timeOpts);\n\t\tif (momentDate.millisecond() !== 0) {\n\t\t\treturn 'MMM D, YYYY h:mm:ss.SSS a';\n\t\t}\n\t\tif (momentDate.second() !== 0 || momentDate.minute() !== 0 || momentDate.hour() !== 0) {\n\t\t\thasTime = true;\n\t\t}\n\t}\n\tif (hasTime) {\n\t\treturn 'MMM D, YYYY h:mm:ss a';\n\t}\n\treturn 'MMM D, YYYY';\n}\n\nmodule.exports = function() {\n\n\tvar defaultConfig = {\n\t\tposition: 'bottom',\n\n\t\t/**\n\t\t * Data distribution along the scale:\n\t\t * - 'linear': data are spread according to their time (distances can vary),\n\t\t * - 'series': data are spread at the same distance from each other.\n\t\t * @see https://github.com/chartjs/Chart.js/pull/4507\n\t\t * @since 2.7.0\n\t\t */\n\t\tdistribution: 'linear',\n\n\t\t/**\n\t\t * Scale boundary strategy (bypassed by min/max time options)\n\t\t * - `data`: make sure data are fully visible, ticks outside are removed\n\t\t * - `ticks`: make sure ticks are fully visible, data outside are truncated\n\t\t * @see https://github.com/chartjs/Chart.js/pull/4556\n\t\t * @since 2.7.0\n\t\t */\n\t\tbounds: 'data',\n\n\t\ttime: {\n\t\t\tparser: false, // false == a pattern string from http://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment\n\t\t\tformat: false, // DEPRECATED false == date objects, moment object, callback or a pattern string from http://momentjs.com/docs/#/parsing/string-format/\n\t\t\tunit: false, // false == automatic or override with week, month, year, etc.\n\t\t\tround: false, // none, or override with week, month, year, etc.\n\t\t\tdisplayFormat: false, // DEPRECATED\n\t\t\tisoWeekday: false, // override week start day - see http://momentjs.com/docs/#/get-set/iso-weekday/\n\t\t\tminUnit: 'millisecond',\n\n\t\t\t// defaults to unit's corresponding unitFormat below or override using pattern string from http://momentjs.com/docs/#/displaying/format/\n\t\t\tdisplayFormats: {\n\t\t\t\tmillisecond: 'h:mm:ss.SSS a', // 11:20:01.123 AM,\n\t\t\t\tsecond: 'h:mm:ss a', // 11:20:01 AM\n\t\t\t\tminute: 'h:mm a', // 11:20 AM\n\t\t\t\thour: 'hA', // 5PM\n\t\t\t\tday: 'MMM D', // Sep 4\n\t\t\t\tweek: 'll', // Week 46, or maybe \"[W]WW - YYYY\" ?\n\t\t\t\tmonth: 'MMM YYYY', // Sept 2015\n\t\t\t\tquarter: '[Q]Q - YYYY', // Q3\n\t\t\t\tyear: 'YYYY' // 2015\n\t\t\t},\n\t\t},\n\t\tticks: {\n\t\t\tautoSkip: false,\n\n\t\t\t/**\n\t\t\t * Ticks generation input values:\n\t\t\t * - 'auto': generates \"optimal\" ticks based on scale size and time options.\n\t\t\t * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\n\t\t\t * - 'labels': generates ticks from user given `data.labels` values ONLY.\n\t\t\t * @see https://github.com/chartjs/Chart.js/pull/4507\n\t\t\t * @since 2.7.0\n\t\t\t */\n\t\t\tsource: 'auto',\n\n\t\t\tmajor: {\n\t\t\t\tenabled: false\n\t\t\t}\n\t\t}\n\t};\n\n\tvar TimeScale = Scale.extend({\n\t\tinitialize: function() {\n\t\t\tif (!moment) {\n\t\t\t\tthrow new Error('Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com');\n\t\t\t}\n\n\t\t\tthis.mergeTicksOptions();\n\n\t\t\tScale.prototype.initialize.call(this);\n\t\t},\n\n\t\tupdate: function() {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\n\t\t\t// DEPRECATIONS: output a message only one time per update\n\t\t\tif (options.time && options.time.format) {\n\t\t\t\tconsole.warn('options.time.format is deprecated and replaced by options.time.parser.');\n\t\t\t}\n\n\t\t\treturn Scale.prototype.update.apply(me, arguments);\n\t\t},\n\n\t\t/**\n\t\t * Allows data to be referenced via 't' attribute\n\t\t */\n\t\tgetRightValue: function(rawValue) {\n\t\t\tif (rawValue && rawValue.t !== undefined) {\n\t\t\t\trawValue = rawValue.t;\n\t\t\t}\n\t\t\treturn Scale.prototype.getRightValue.call(this, rawValue);\n\t\t},\n\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar timeOpts = me.options.time;\n\t\t\tvar unit = timeOpts.unit || 'day';\n\t\t\tvar min = MAX_INTEGER;\n\t\t\tvar max = MIN_INTEGER;\n\t\t\tvar timestamps = [];\n\t\t\tvar datasets = [];\n\t\t\tvar labels = [];\n\t\t\tvar i, j, ilen, jlen, data, timestamp;\n\n\t\t\t// Convert labels to timestamps\n\t\t\tfor (i = 0, ilen = chart.data.labels.length; i < ilen; ++i) {\n\t\t\t\tlabels.push(parse(chart.data.labels[i], me));\n\t\t\t}\n\n\t\t\t// Convert data to timestamps\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tif (chart.isDatasetVisible(i)) {\n\t\t\t\t\tdata = chart.data.datasets[i].data;\n\n\t\t\t\t\t// Let's consider that all data have the same format.\n\t\t\t\t\tif (helpers.isObject(data[0])) {\n\t\t\t\t\t\tdatasets[i] = [];\n\n\t\t\t\t\t\tfor (j = 0, jlen = data.length; j < jlen; ++j) {\n\t\t\t\t\t\t\ttimestamp = parse(data[j], me);\n\t\t\t\t\t\t\ttimestamps.push(timestamp);\n\t\t\t\t\t\t\tdatasets[i][j] = timestamp;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttimestamps.push.apply(timestamps, labels);\n\t\t\t\t\t\tdatasets[i] = labels.slice(0);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tdatasets[i] = [];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (labels.length) {\n\t\t\t\t// Sort labels **after** data have been converted\n\t\t\t\tlabels = arrayUnique(labels).sort(sorter);\n\t\t\t\tmin = Math.min(min, labels[0]);\n\t\t\t\tmax = Math.max(max, labels[labels.length - 1]);\n\t\t\t}\n\n\t\t\tif (timestamps.length) {\n\t\t\t\ttimestamps = arrayUnique(timestamps).sort(sorter);\n\t\t\t\tmin = Math.min(min, timestamps[0]);\n\t\t\t\tmax = Math.max(max, timestamps[timestamps.length - 1]);\n\t\t\t}\n\n\t\t\tmin = parse(timeOpts.min, me) || min;\n\t\t\tmax = parse(timeOpts.max, me) || max;\n\n\t\t\t// In case there is no valid min/max, set limits based on unit time option\n\t\t\tmin = min === MAX_INTEGER ? +moment().startOf(unit) : min;\n\t\t\tmax = max === MIN_INTEGER ? +moment().endOf(unit) + 1 : max;\n\n\t\t\t// Make sure that max is strictly higher than min (required by the lookup table)\n\t\t\tme.min = Math.min(min, max);\n\t\t\tme.max = Math.max(min + 1, max);\n\n\t\t\t// PRIVATE\n\t\t\tme._horizontal = me.isHorizontal();\n\t\t\tme._table = [];\n\t\t\tme._timestamps = {\n\t\t\t\tdata: timestamps,\n\t\t\t\tdatasets: datasets,\n\t\t\t\tlabels: labels\n\t\t\t};\n\t\t},\n\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar min = me.min;\n\t\t\tvar max = me.max;\n\t\t\tvar options = me.options;\n\t\t\tvar timeOpts = options.time;\n\t\t\tvar timestamps = [];\n\t\t\tvar ticks = [];\n\t\t\tvar i, ilen, timestamp;\n\n\t\t\tswitch (options.ticks.source) {\n\t\t\tcase 'data':\n\t\t\t\ttimestamps = me._timestamps.data;\n\t\t\t\tbreak;\n\t\t\tcase 'labels':\n\t\t\t\ttimestamps = me._timestamps.labels;\n\t\t\t\tbreak;\n\t\t\tcase 'auto':\n\t\t\tdefault:\n\t\t\t\ttimestamps = generate(min, max, me.getLabelCapacity(min), options);\n\t\t\t}\n\n\t\t\tif (options.bounds === 'ticks' && timestamps.length) {\n\t\t\t\tmin = timestamps[0];\n\t\t\t\tmax = timestamps[timestamps.length - 1];\n\t\t\t}\n\n\t\t\t// Enforce limits with user min/max options\n\t\t\tmin = parse(timeOpts.min, me) || min;\n\t\t\tmax = parse(timeOpts.max, me) || max;\n\n\t\t\t// Remove ticks outside the min/max range\n\t\t\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n\t\t\t\ttimestamp = timestamps[i];\n\t\t\t\tif (timestamp >= min && timestamp <= max) {\n\t\t\t\t\tticks.push(timestamp);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tme.min = min;\n\t\t\tme.max = max;\n\n\t\t\t// PRIVATE\n\t\t\tme._unit = timeOpts.unit || determineUnitForFormatting(ticks, timeOpts.minUnit, me.min, me.max);\n\t\t\tme._majorUnit = determineMajorUnit(me._unit);\n\t\t\tme._table = buildLookupTable(me._timestamps.data, min, max, options.distribution);\n\t\t\tme._offsets = computeOffsets(me._table, ticks, min, max, options);\n\t\t\tme._labelFormat = determineLabelFormat(me._timestamps.data, timeOpts);\n\n\t\t\treturn ticksFromTimestamps(ticks, me._majorUnit);\n\t\t},\n\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar data = me.chart.data;\n\t\t\tvar timeOpts = me.options.time;\n\t\t\tvar label = data.labels && index < data.labels.length ? data.labels[index] : '';\n\t\t\tvar value = data.datasets[datasetIndex].data[index];\n\n\t\t\tif (helpers.isObject(value)) {\n\t\t\t\tlabel = me.getRightValue(value);\n\t\t\t}\n\t\t\tif (timeOpts.tooltipFormat) {\n\t\t\t\treturn momentify(label, timeOpts).format(timeOpts.tooltipFormat);\n\t\t\t}\n\t\t\tif (typeof label === 'string') {\n\t\t\t\treturn label;\n\t\t\t}\n\n\t\t\treturn momentify(label, timeOpts).format(me._labelFormat);\n\t\t},\n\n\t\t/**\n\t\t * Function to format an individual tick mark\n\t\t * @private\n\t\t */\n\t\ttickFormatFunction: function(tick, index, ticks, formatOverride) {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\t\t\tvar time = tick.valueOf();\n\t\t\tvar formats = options.time.displayFormats;\n\t\t\tvar minorFormat = formats[me._unit];\n\t\t\tvar majorUnit = me._majorUnit;\n\t\t\tvar majorFormat = formats[majorUnit];\n\t\t\tvar majorTime = tick.clone().startOf(majorUnit).valueOf();\n\t\t\tvar majorTickOpts = options.ticks.major;\n\t\t\tvar major = majorTickOpts.enabled && majorUnit && majorFormat && time === majorTime;\n\t\t\tvar label = tick.format(formatOverride ? formatOverride : major ? majorFormat : minorFormat);\n\t\t\tvar tickOpts = major ? majorTickOpts : options.ticks.minor;\n\t\t\tvar formatter = helpers.valueOrDefault(tickOpts.callback, tickOpts.userCallback);\n\n\t\t\treturn formatter ? formatter(label, index, ticks) : label;\n\t\t},\n\n\t\tconvertTicksToLabels: function(ticks) {\n\t\t\tvar labels = [];\n\t\t\tvar i, ilen;\n\n\t\t\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\n\t\t\t\tlabels.push(this.tickFormatFunction(moment(ticks[i].value), i, ticks));\n\t\t\t}\n\n\t\t\treturn labels;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetPixelForOffset: function(time) {\n\t\t\tvar me = this;\n\t\t\tvar size = me._horizontal ? me.width : me.height;\n\t\t\tvar start = me._horizontal ? me.left : me.top;\n\t\t\tvar pos = interpolate(me._table, 'time', time, 'pos');\n\n\t\t\treturn start + size * (me._offsets.left + pos) / (me._offsets.left + 1 + me._offsets.right);\n\t\t},\n\n\t\tgetPixelForValue: function(value, index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar time = null;\n\n\t\t\tif (index !== undefined && datasetIndex !== undefined) {\n\t\t\t\ttime = me._timestamps.datasets[datasetIndex][index];\n\t\t\t}\n\n\t\t\tif (time === null) {\n\t\t\t\ttime = parse(value, me);\n\t\t\t}\n\n\t\t\tif (time !== null) {\n\t\t\t\treturn me.getPixelForOffset(time);\n\t\t\t}\n\t\t},\n\n\t\tgetPixelForTick: function(index) {\n\t\t\tvar ticks = this.getTicks();\n\t\t\treturn index >= 0 && index < ticks.length ?\n\t\t\t\tthis.getPixelForOffset(ticks[index].value) :\n\t\t\t\tnull;\n\t\t},\n\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar size = me._horizontal ? me.width : me.height;\n\t\t\tvar start = me._horizontal ? me.left : me.top;\n\t\t\tvar pos = (size ? (pixel - start) / size : 0) * (me._offsets.left + 1 + me._offsets.left) - me._offsets.right;\n\t\t\tvar time = interpolate(me._table, 'pos', pos, 'time');\n\n\t\t\treturn moment(time);\n\t\t},\n\n\t\t/**\n\t\t * Crude approximation of what the label width might be\n\t\t * @private\n\t\t */\n\t\tgetLabelWidth: function(label) {\n\t\t\tvar me = this;\n\t\t\tvar ticksOpts = me.options.ticks;\n\t\t\tvar tickLabelWidth = me.ctx.measureText(label).width;\n\t\t\tvar angle = helpers.toRadians(ticksOpts.maxRotation);\n\t\t\tvar cosRotation = Math.cos(angle);\n\t\t\tvar sinRotation = Math.sin(angle);\n\t\t\tvar tickFontSize = helpers.valueOrDefault(ticksOpts.fontSize, defaults.global.defaultFontSize);\n\n\t\t\treturn (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetLabelCapacity: function(exampleTime) {\n\t\t\tvar me = this;\n\n\t\t\tvar formatOverride = me.options.time.displayFormats.millisecond;\t// Pick the longest format for guestimation\n\n\t\t\tvar exampleLabel = me.tickFormatFunction(moment(exampleTime), 0, [], formatOverride);\n\t\t\tvar tickLabelWidth = me.getLabelWidth(exampleLabel);\n\t\t\tvar innerWidth = me.isHorizontal() ? me.width : me.height;\n\n\t\t\tvar capacity = Math.floor(innerWidth / tickLabelWidth);\n\t\t\treturn capacity > 0 ? capacity : 1;\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('time', TimeScale, defaultConfig);\n};\n\n},{\"1\":1,\"26\":26,\"33\":33,\"34\":34,\"46\":46}]},{},[7])(7)\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","var $ = require('../internals/export');\n\nvar log = Math.log;\nvar LOG10E = Math.LOG10E;\n\n// `Math.log10` method\n// https://tc39.github.io/ecma262/#sec-math.log10\n$({ target: 'Math', stat: true }, {\n log10: function log10(x) {\n return log(x) * LOG10E;\n }\n});\n","var $ = require('../internals/export');\nvar sign = require('../internals/math-sign');\n\n// `Math.sign` method\n// https://tc39.github.io/ecma262/#sec-math.sign\n$({ target: 'Math', stat: true }, {\n sign: sign\n});\n","// `Math.sign` method implementation\n// https://tc39.github.io/ecma262/#sec-math.sign\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","var $ = require('../internals/export');\n\n// `Number.EPSILON` constant\n// https://tc39.github.io/ecma262/#sec-number.epsilon\n$({ target: 'Number', stat: true }, {\n EPSILON: Math.pow(2, -52)\n});\n","/*!\n * chartjs-plugin-datalabels v0.7.0\n * https://chartjs-plugin-datalabels.netlify.com\n * (c) 2019 Chart.js Contributors\n * Released under the MIT license\n */\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('chart.js')) :\ntypeof define === 'function' && define.amd ? define(['chart.js'], factory) :\n(global = global || self, global.ChartDataLabels = factory(global.Chart));\n}(this, function (Chart) { 'use strict';\n\nChart = Chart && Chart.hasOwnProperty('default') ? Chart['default'] : Chart;\n\nvar helpers = Chart.helpers;\n\nvar devicePixelRatio = (function() {\n\tif (typeof window !== 'undefined') {\n\t\tif (window.devicePixelRatio) {\n\t\t\treturn window.devicePixelRatio;\n\t\t}\n\n\t\t// devicePixelRatio is undefined on IE10\n\t\t// https://stackoverflow.com/a/20204180/8837887\n\t\t// https://github.com/chartjs/chartjs-plugin-datalabels/issues/85\n\t\tvar screen = window.screen;\n\t\tif (screen) {\n\t\t\treturn (screen.deviceXDPI || 1) / (screen.logicalXDPI || 1);\n\t\t}\n\t}\n\n\treturn 1;\n}());\n\nvar utils = {\n\t// @todo move this in Chart.helpers.toTextLines\n\ttoTextLines: function(inputs) {\n\t\tvar lines = [];\n\t\tvar input;\n\n\t\tinputs = [].concat(inputs);\n\t\twhile (inputs.length) {\n\t\t\tinput = inputs.pop();\n\t\t\tif (typeof input === 'string') {\n\t\t\t\tlines.unshift.apply(lines, input.split('\\n'));\n\t\t\t} else if (Array.isArray(input)) {\n\t\t\t\tinputs.push.apply(inputs, input);\n\t\t\t} else if (!helpers.isNullOrUndef(inputs)) {\n\t\t\t\tlines.unshift('' + input);\n\t\t\t}\n\t\t}\n\n\t\treturn lines;\n\t},\n\n\t// @todo move this method in Chart.helpers.canvas.toFont (deprecates helpers.fontString)\n\t// @see https://developer.mozilla.org/en-US/docs/Web/CSS/font\n\ttoFontString: function(font) {\n\t\tif (!font || helpers.isNullOrUndef(font.size) || helpers.isNullOrUndef(font.family)) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn (font.style ? font.style + ' ' : '')\n\t\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t\t+ font.size + 'px '\n\t\t\t+ font.family;\n\t},\n\n\t// @todo move this in Chart.helpers.canvas.textSize\n\t// @todo cache calls of measureText if font doesn't change?!\n\ttextSize: function(ctx, lines, font) {\n\t\tvar items = [].concat(lines);\n\t\tvar ilen = items.length;\n\t\tvar prev = ctx.font;\n\t\tvar width = 0;\n\t\tvar i;\n\n\t\tctx.font = font.string;\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\twidth = Math.max(ctx.measureText(items[i]).width, width);\n\t\t}\n\n\t\tctx.font = prev;\n\n\t\treturn {\n\t\t\theight: ilen * font.lineHeight,\n\t\t\twidth: width\n\t\t};\n\t},\n\n\t// @todo move this method in Chart.helpers.options.toFont\n\tparseFont: function(value) {\n\t\tvar global = Chart.defaults.global;\n\t\tvar size = helpers.valueOrDefault(value.size, global.defaultFontSize);\n\t\tvar font = {\n\t\t\tfamily: helpers.valueOrDefault(value.family, global.defaultFontFamily),\n\t\t\tlineHeight: helpers.options.toLineHeight(value.lineHeight, size),\n\t\t\tsize: size,\n\t\t\tstyle: helpers.valueOrDefault(value.style, global.defaultFontStyle),\n\t\t\tweight: helpers.valueOrDefault(value.weight, null),\n\t\t\tstring: ''\n\t\t};\n\n\t\tfont.string = utils.toFontString(font);\n\t\treturn font;\n\t},\n\n\t/**\n\t * Returns value bounded by min and max. This is equivalent to max(min, min(value, max)).\n\t * @todo move this method in Chart.helpers.bound\n\t * https://doc.qt.io/qt-5/qtglobal.html#qBound\n\t */\n\tbound: function(min, value, max) {\n\t\treturn Math.max(min, Math.min(value, max));\n\t},\n\n\t/**\n\t * Returns an array of pair [value, state] where state is:\n\t * * -1: value is only in a0 (removed)\n\t * * 1: value is only in a1 (added)\n\t */\n\tarrayDiff: function(a0, a1) {\n\t\tvar prev = a0.slice();\n\t\tvar updates = [];\n\t\tvar i, j, ilen, v;\n\n\t\tfor (i = 0, ilen = a1.length; i < ilen; ++i) {\n\t\t\tv = a1[i];\n\t\t\tj = prev.indexOf(v);\n\n\t\t\tif (j === -1) {\n\t\t\t\tupdates.push([v, 1]);\n\t\t\t} else {\n\t\t\t\tprev.splice(j, 1);\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, ilen = prev.length; i < ilen; ++i) {\n\t\t\tupdates.push([prev[i], -1]);\n\t\t}\n\n\t\treturn updates;\n\t},\n\n\t/**\n\t * https://github.com/chartjs/chartjs-plugin-datalabels/issues/70\n\t */\n\trasterize: function(v) {\n\t\treturn Math.round(v * devicePixelRatio) / devicePixelRatio;\n\t}\n};\n\nfunction orient(point, origin) {\n\tvar x0 = origin.x;\n\tvar y0 = origin.y;\n\n\tif (x0 === null) {\n\t\treturn {x: 0, y: -1};\n\t}\n\tif (y0 === null) {\n\t\treturn {x: 1, y: 0};\n\t}\n\n\tvar dx = point.x - x0;\n\tvar dy = point.y - y0;\n\tvar ln = Math.sqrt(dx * dx + dy * dy);\n\n\treturn {\n\t\tx: ln ? dx / ln : 0,\n\t\ty: ln ? dy / ln : -1\n\t};\n}\n\nfunction aligned(x, y, vx, vy, align) {\n\tswitch (align) {\n\tcase 'center':\n\t\tvx = vy = 0;\n\t\tbreak;\n\tcase 'bottom':\n\t\tvx = 0;\n\t\tvy = 1;\n\t\tbreak;\n\tcase 'right':\n\t\tvx = 1;\n\t\tvy = 0;\n\t\tbreak;\n\tcase 'left':\n\t\tvx = -1;\n\t\tvy = 0;\n\t\tbreak;\n\tcase 'top':\n\t\tvx = 0;\n\t\tvy = -1;\n\t\tbreak;\n\tcase 'start':\n\t\tvx = -vx;\n\t\tvy = -vy;\n\t\tbreak;\n\tcase 'end':\n\t\t// keep natural orientation\n\t\tbreak;\n\tdefault:\n\t\t// clockwise rotation (in degree)\n\t\talign *= (Math.PI / 180);\n\t\tvx = Math.cos(align);\n\t\tvy = Math.sin(align);\n\t\tbreak;\n\t}\n\n\treturn {\n\t\tx: x,\n\t\ty: y,\n\t\tvx: vx,\n\t\tvy: vy\n\t};\n}\n\n// Line clipping (Cohen–Sutherland algorithm)\n// https://en.wikipedia.org/wiki/Cohen–Sutherland_algorithm\n\nvar R_INSIDE = 0;\nvar R_LEFT = 1;\nvar R_RIGHT = 2;\nvar R_BOTTOM = 4;\nvar R_TOP = 8;\n\nfunction region(x, y, rect) {\n\tvar res = R_INSIDE;\n\n\tif (x < rect.left) {\n\t\tres |= R_LEFT;\n\t} else if (x > rect.right) {\n\t\tres |= R_RIGHT;\n\t}\n\tif (y < rect.top) {\n\t\tres |= R_TOP;\n\t} else if (y > rect.bottom) {\n\t\tres |= R_BOTTOM;\n\t}\n\n\treturn res;\n}\n\nfunction clipped(segment, area) {\n\tvar x0 = segment.x0;\n\tvar y0 = segment.y0;\n\tvar x1 = segment.x1;\n\tvar y1 = segment.y1;\n\tvar r0 = region(x0, y0, area);\n\tvar r1 = region(x1, y1, area);\n\tvar r, x, y;\n\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\tif (!(r0 | r1) || (r0 & r1)) {\n\t\t\t// both points inside or on the same side: no clipping\n\t\t\tbreak;\n\t\t}\n\n\t\t// at least one point is outside\n\t\tr = r0 || r1;\n\n\t\tif (r & R_TOP) {\n\t\t\tx = x0 + (x1 - x0) * (area.top - y0) / (y1 - y0);\n\t\t\ty = area.top;\n\t\t} else if (r & R_BOTTOM) {\n\t\t\tx = x0 + (x1 - x0) * (area.bottom - y0) / (y1 - y0);\n\t\t\ty = area.bottom;\n\t\t} else if (r & R_RIGHT) {\n\t\t\ty = y0 + (y1 - y0) * (area.right - x0) / (x1 - x0);\n\t\t\tx = area.right;\n\t\t} else if (r & R_LEFT) {\n\t\t\ty = y0 + (y1 - y0) * (area.left - x0) / (x1 - x0);\n\t\t\tx = area.left;\n\t\t}\n\n\t\tif (r === r0) {\n\t\t\tx0 = x;\n\t\t\ty0 = y;\n\t\t\tr0 = region(x0, y0, area);\n\t\t} else {\n\t\t\tx1 = x;\n\t\t\ty1 = y;\n\t\t\tr1 = region(x1, y1, area);\n\t\t}\n\t}\n\n\treturn {\n\t\tx0: x0,\n\t\tx1: x1,\n\t\ty0: y0,\n\t\ty1: y1\n\t};\n}\n\nfunction compute(range, config) {\n\tvar anchor = config.anchor;\n\tvar segment = range;\n\tvar x, y;\n\n\tif (config.clamp) {\n\t\tsegment = clipped(segment, config.area);\n\t}\n\n\tif (anchor === 'start') {\n\t\tx = segment.x0;\n\t\ty = segment.y0;\n\t} else if (anchor === 'end') {\n\t\tx = segment.x1;\n\t\ty = segment.y1;\n\t} else {\n\t\tx = (segment.x0 + segment.x1) / 2;\n\t\ty = (segment.y0 + segment.y1) / 2;\n\t}\n\n\treturn aligned(x, y, range.vx, range.vy, config.align);\n}\n\nvar positioners = {\n\tarc: function(vm, config) {\n\t\tvar angle = (vm.startAngle + vm.endAngle) / 2;\n\t\tvar vx = Math.cos(angle);\n\t\tvar vy = Math.sin(angle);\n\t\tvar r0 = vm.innerRadius;\n\t\tvar r1 = vm.outerRadius;\n\n\t\treturn compute({\n\t\t\tx0: vm.x + vx * r0,\n\t\t\ty0: vm.y + vy * r0,\n\t\t\tx1: vm.x + vx * r1,\n\t\t\ty1: vm.y + vy * r1,\n\t\t\tvx: vx,\n\t\t\tvy: vy\n\t\t}, config);\n\t},\n\n\tpoint: function(vm, config) {\n\t\tvar v = orient(vm, config.origin);\n\t\tvar rx = v.x * vm.radius;\n\t\tvar ry = v.y * vm.radius;\n\n\t\treturn compute({\n\t\t\tx0: vm.x - rx,\n\t\t\ty0: vm.y - ry,\n\t\t\tx1: vm.x + rx,\n\t\t\ty1: vm.y + ry,\n\t\t\tvx: v.x,\n\t\t\tvy: v.y\n\t\t}, config);\n\t},\n\n\trect: function(vm, config) {\n\t\tvar v = orient(vm, config.origin);\n\t\tvar x = vm.x;\n\t\tvar y = vm.y;\n\t\tvar sx = 0;\n\t\tvar sy = 0;\n\n\t\tif (vm.horizontal) {\n\t\t\tx = Math.min(vm.x, vm.base);\n\t\t\tsx = Math.abs(vm.base - vm.x);\n\t\t} else {\n\t\t\ty = Math.min(vm.y, vm.base);\n\t\t\tsy = Math.abs(vm.base - vm.y);\n\t\t}\n\n\t\treturn compute({\n\t\t\tx0: x,\n\t\t\ty0: y + sy,\n\t\t\tx1: x + sx,\n\t\t\ty1: y,\n\t\t\tvx: v.x,\n\t\t\tvy: v.y\n\t\t}, config);\n\t},\n\n\tfallback: function(vm, config) {\n\t\tvar v = orient(vm, config.origin);\n\n\t\treturn compute({\n\t\t\tx0: vm.x,\n\t\t\ty0: vm.y,\n\t\t\tx1: vm.x,\n\t\t\ty1: vm.y,\n\t\t\tvx: v.x,\n\t\t\tvy: v.y\n\t\t}, config);\n\t}\n};\n\nvar helpers$1 = Chart.helpers;\nvar rasterize = utils.rasterize;\n\nfunction boundingRects(model) {\n\tvar borderWidth = model.borderWidth || 0;\n\tvar padding = model.padding;\n\tvar th = model.size.height;\n\tvar tw = model.size.width;\n\tvar tx = -tw / 2;\n\tvar ty = -th / 2;\n\n\treturn {\n\t\tframe: {\n\t\t\tx: tx - padding.left - borderWidth,\n\t\t\ty: ty - padding.top - borderWidth,\n\t\t\tw: tw + padding.width + borderWidth * 2,\n\t\t\th: th + padding.height + borderWidth * 2\n\t\t},\n\t\ttext: {\n\t\t\tx: tx,\n\t\t\ty: ty,\n\t\t\tw: tw,\n\t\t\th: th\n\t\t}\n\t};\n}\n\nfunction getScaleOrigin(el) {\n\tvar horizontal = el._model.horizontal;\n\tvar scale = el._scale || (horizontal && el._xScale) || el._yScale;\n\n\tif (!scale) {\n\t\treturn null;\n\t}\n\n\tif (scale.xCenter !== undefined && scale.yCenter !== undefined) {\n\t\treturn {x: scale.xCenter, y: scale.yCenter};\n\t}\n\n\tvar pixel = scale.getBasePixel();\n\treturn horizontal ?\n\t\t{x: pixel, y: null} :\n\t\t{x: null, y: pixel};\n}\n\nfunction getPositioner(el) {\n\tif (el instanceof Chart.elements.Arc) {\n\t\treturn positioners.arc;\n\t}\n\tif (el instanceof Chart.elements.Point) {\n\t\treturn positioners.point;\n\t}\n\tif (el instanceof Chart.elements.Rectangle) {\n\t\treturn positioners.rect;\n\t}\n\treturn positioners.fallback;\n}\n\nfunction drawFrame(ctx, rect, model) {\n\tvar bgColor = model.backgroundColor;\n\tvar borderColor = model.borderColor;\n\tvar borderWidth = model.borderWidth;\n\n\tif (!bgColor && (!borderColor || !borderWidth)) {\n\t\treturn;\n\t}\n\n\tctx.beginPath();\n\n\thelpers$1.canvas.roundedRect(\n\t\tctx,\n\t\trasterize(rect.x) + borderWidth / 2,\n\t\trasterize(rect.y) + borderWidth / 2,\n\t\trasterize(rect.w) - borderWidth,\n\t\trasterize(rect.h) - borderWidth,\n\t\tmodel.borderRadius);\n\n\tctx.closePath();\n\n\tif (bgColor) {\n\t\tctx.fillStyle = bgColor;\n\t\tctx.fill();\n\t}\n\n\tif (borderColor && borderWidth) {\n\t\tctx.strokeStyle = borderColor;\n\t\tctx.lineWidth = borderWidth;\n\t\tctx.lineJoin = 'miter';\n\t\tctx.stroke();\n\t}\n}\n\nfunction textGeometry(rect, align, font) {\n\tvar h = font.lineHeight;\n\tvar w = rect.w;\n\tvar x = rect.x;\n\tvar y = rect.y + h / 2;\n\n\tif (align === 'center') {\n\t\tx += w / 2;\n\t} else if (align === 'end' || align === 'right') {\n\t\tx += w;\n\t}\n\n\treturn {\n\t\th: h,\n\t\tw: w,\n\t\tx: x,\n\t\ty: y\n\t};\n}\n\nfunction drawTextLine(ctx, text, cfg) {\n\tvar shadow = ctx.shadowBlur;\n\tvar stroked = cfg.stroked;\n\tvar x = rasterize(cfg.x);\n\tvar y = rasterize(cfg.y);\n\tvar w = rasterize(cfg.w);\n\n\tif (stroked) {\n\t\tctx.strokeText(text, x, y, w);\n\t}\n\n\tif (cfg.filled) {\n\t\tif (shadow && stroked) {\n\t\t\t// Prevent drawing shadow on both the text stroke and fill, so\n\t\t\t// if the text is stroked, remove the shadow for the text fill.\n\t\t\tctx.shadowBlur = 0;\n\t\t}\n\n\t\tctx.fillText(text, x, y, w);\n\n\t\tif (shadow && stroked) {\n\t\t\tctx.shadowBlur = shadow;\n\t\t}\n\t}\n}\n\nfunction drawText(ctx, lines, rect, model) {\n\tvar align = model.textAlign;\n\tvar color = model.color;\n\tvar filled = !!color;\n\tvar font = model.font;\n\tvar ilen = lines.length;\n\tvar strokeColor = model.textStrokeColor;\n\tvar strokeWidth = model.textStrokeWidth;\n\tvar stroked = strokeColor && strokeWidth;\n\tvar i;\n\n\tif (!ilen || (!filled && !stroked)) {\n\t\treturn;\n\t}\n\n\t// Adjust coordinates based on text alignment and line height\n\trect = textGeometry(rect, align, font);\n\n\tctx.font = font.string;\n\tctx.textAlign = align;\n\tctx.textBaseline = 'middle';\n\tctx.shadowBlur = model.textShadowBlur;\n\tctx.shadowColor = model.textShadowColor;\n\n\tif (filled) {\n\t\tctx.fillStyle = color;\n\t}\n\tif (stroked) {\n\t\tctx.lineJoin = 'round';\n\t\tctx.lineWidth = strokeWidth;\n\t\tctx.strokeStyle = strokeColor;\n\t}\n\n\tfor (i = 0, ilen = lines.length; i < ilen; ++i) {\n\t\tdrawTextLine(ctx, lines[i], {\n\t\t\tstroked: stroked,\n\t\t\tfilled: filled,\n\t\t\tw: rect.w,\n\t\t\tx: rect.x,\n\t\t\ty: rect.y + rect.h * i\n\t\t});\n\t}\n}\n\nvar Label = function(config, ctx, el, index) {\n\tvar me = this;\n\n\tme._config = config;\n\tme._index = index;\n\tme._model = null;\n\tme._rects = null;\n\tme._ctx = ctx;\n\tme._el = el;\n};\n\nhelpers$1.extend(Label.prototype, {\n\t/**\n\t * @private\n\t */\n\t_modelize: function(display, lines, config, context) {\n\t\tvar me = this;\n\t\tvar index = me._index;\n\t\tvar resolve = helpers$1.options.resolve;\n\t\tvar font = utils.parseFont(resolve([config.font, {}], context, index));\n\t\tvar color = resolve([config.color, Chart.defaults.global.defaultFontColor], context, index);\n\n\t\treturn {\n\t\t\talign: resolve([config.align, 'center'], context, index),\n\t\t\tanchor: resolve([config.anchor, 'center'], context, index),\n\t\t\tarea: context.chart.chartArea,\n\t\t\tbackgroundColor: resolve([config.backgroundColor, null], context, index),\n\t\t\tborderColor: resolve([config.borderColor, null], context, index),\n\t\t\tborderRadius: resolve([config.borderRadius, 0], context, index),\n\t\t\tborderWidth: resolve([config.borderWidth, 0], context, index),\n\t\t\tclamp: resolve([config.clamp, false], context, index),\n\t\t\tclip: resolve([config.clip, false], context, index),\n\t\t\tcolor: color,\n\t\t\tdisplay: display,\n\t\t\tfont: font,\n\t\t\tlines: lines,\n\t\t\toffset: resolve([config.offset, 0], context, index),\n\t\t\topacity: resolve([config.opacity, 1], context, index),\n\t\t\torigin: getScaleOrigin(me._el),\n\t\t\tpadding: helpers$1.options.toPadding(resolve([config.padding, 0], context, index)),\n\t\t\tpositioner: getPositioner(me._el),\n\t\t\trotation: resolve([config.rotation, 0], context, index) * (Math.PI / 180),\n\t\t\tsize: utils.textSize(me._ctx, lines, font),\n\t\t\ttextAlign: resolve([config.textAlign, 'start'], context, index),\n\t\t\ttextShadowBlur: resolve([config.textShadowBlur, 0], context, index),\n\t\t\ttextShadowColor: resolve([config.textShadowColor, color], context, index),\n\t\t\ttextStrokeColor: resolve([config.textStrokeColor, color], context, index),\n\t\t\ttextStrokeWidth: resolve([config.textStrokeWidth, 0], context, index)\n\t\t};\n\t},\n\n\tupdate: function(context) {\n\t\tvar me = this;\n\t\tvar model = null;\n\t\tvar rects = null;\n\t\tvar index = me._index;\n\t\tvar config = me._config;\n\t\tvar value, label, lines;\n\n\t\t// We first resolve the display option (separately) to avoid computing\n\t\t// other options in case the label is hidden (i.e. display: false).\n\t\tvar display = helpers$1.options.resolve([config.display, true], context, index);\n\n\t\tif (display) {\n\t\t\tvalue = context.dataset.data[index];\n\t\t\tlabel = helpers$1.valueOrDefault(helpers$1.callback(config.formatter, [value, context]), value);\n\t\t\tlines = helpers$1.isNullOrUndef(label) ? [] : utils.toTextLines(label);\n\n\t\t\tif (lines.length) {\n\t\t\t\tmodel = me._modelize(display, lines, config, context);\n\t\t\t\trects = boundingRects(model);\n\t\t\t}\n\t\t}\n\n\t\tme._model = model;\n\t\tme._rects = rects;\n\t},\n\n\tgeometry: function() {\n\t\treturn this._rects ? this._rects.frame : {};\n\t},\n\n\trotation: function() {\n\t\treturn this._model ? this._model.rotation : 0;\n\t},\n\n\tvisible: function() {\n\t\treturn this._model && this._model.opacity;\n\t},\n\n\tmodel: function() {\n\t\treturn this._model;\n\t},\n\n\tdraw: function(chart, center) {\n\t\tvar me = this;\n\t\tvar ctx = chart.ctx;\n\t\tvar model = me._model;\n\t\tvar rects = me._rects;\n\t\tvar area;\n\n\t\tif (!this.visible()) {\n\t\t\treturn;\n\t\t}\n\n\t\tctx.save();\n\n\t\tif (model.clip) {\n\t\t\tarea = model.area;\n\t\t\tctx.beginPath();\n\t\t\tctx.rect(\n\t\t\t\tarea.left,\n\t\t\t\tarea.top,\n\t\t\t\tarea.right - area.left,\n\t\t\t\tarea.bottom - area.top);\n\t\t\tctx.clip();\n\t\t}\n\n\t\tctx.globalAlpha = utils.bound(0, model.opacity, 1);\n\t\tctx.translate(rasterize(center.x), rasterize(center.y));\n\t\tctx.rotate(model.rotation);\n\n\t\tdrawFrame(ctx, rects.frame, model);\n\t\tdrawText(ctx, model.lines, rects.text, model);\n\n\t\tctx.restore();\n\t}\n});\n\nvar helpers$2 = Chart.helpers;\n\nvar MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991; // eslint-disable-line es/no-number-minsafeinteger\nvar MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; // eslint-disable-line es/no-number-maxsafeinteger\n\nfunction rotated(point, center, angle) {\n\tvar cos = Math.cos(angle);\n\tvar sin = Math.sin(angle);\n\tvar cx = center.x;\n\tvar cy = center.y;\n\n\treturn {\n\t\tx: cx + cos * (point.x - cx) - sin * (point.y - cy),\n\t\ty: cy + sin * (point.x - cx) + cos * (point.y - cy)\n\t};\n}\n\nfunction projected(points, axis) {\n\tvar min = MAX_INTEGER;\n\tvar max = MIN_INTEGER;\n\tvar origin = axis.origin;\n\tvar i, pt, vx, vy, dp;\n\n\tfor (i = 0; i < points.length; ++i) {\n\t\tpt = points[i];\n\t\tvx = pt.x - origin.x;\n\t\tvy = pt.y - origin.y;\n\t\tdp = axis.vx * vx + axis.vy * vy;\n\t\tmin = Math.min(min, dp);\n\t\tmax = Math.max(max, dp);\n\t}\n\n\treturn {\n\t\tmin: min,\n\t\tmax: max\n\t};\n}\n\nfunction toAxis(p0, p1) {\n\tvar vx = p1.x - p0.x;\n\tvar vy = p1.y - p0.y;\n\tvar ln = Math.sqrt(vx * vx + vy * vy);\n\n\treturn {\n\t\tvx: (p1.x - p0.x) / ln,\n\t\tvy: (p1.y - p0.y) / ln,\n\t\torigin: p0,\n\t\tln: ln\n\t};\n}\n\nvar HitBox = function() {\n\tthis._rotation = 0;\n\tthis._rect = {\n\t\tx: 0,\n\t\ty: 0,\n\t\tw: 0,\n\t\th: 0\n\t};\n};\n\nhelpers$2.extend(HitBox.prototype, {\n\tcenter: function() {\n\t\tvar r = this._rect;\n\t\treturn {\n\t\t\tx: r.x + r.w / 2,\n\t\t\ty: r.y + r.h / 2\n\t\t};\n\t},\n\n\tupdate: function(center, rect, rotation) {\n\t\tthis._rotation = rotation;\n\t\tthis._rect = {\n\t\t\tx: rect.x + center.x,\n\t\t\ty: rect.y + center.y,\n\t\t\tw: rect.w,\n\t\t\th: rect.h\n\t\t};\n\t},\n\n\tcontains: function(point) {\n\t\tvar me = this;\n\t\tvar margin = 1;\n\t\tvar rect = me._rect;\n\n\t\tpoint = rotated(point, me.center(), -me._rotation);\n\n\t\treturn !(point.x < rect.x - margin\n\t\t\t|| point.y < rect.y - margin\n\t\t\t|| point.x > rect.x + rect.w + margin * 2\n\t\t\t|| point.y > rect.y + rect.h + margin * 2);\n\t},\n\n\t// Separating Axis Theorem\n\t// https://gamedevelopment.tutsplus.com/tutorials/collision-detection-using-the-separating-axis-theorem--gamedev-169\n\tintersects: function(other) {\n\t\tvar r0 = this._points();\n\t\tvar r1 = other._points();\n\t\tvar axes = [\n\t\t\ttoAxis(r0[0], r0[1]),\n\t\t\ttoAxis(r0[0], r0[3])\n\t\t];\n\t\tvar i, pr0, pr1;\n\n\t\tif (this._rotation !== other._rotation) {\n\t\t\t// Only separate with r1 axis if the rotation is different,\n\t\t\t// else it's enough to separate r0 and r1 with r0 axis only!\n\t\t\taxes.push(\n\t\t\t\ttoAxis(r1[0], r1[1]),\n\t\t\t\ttoAxis(r1[0], r1[3])\n\t\t\t);\n\t\t}\n\n\t\tfor (i = 0; i < axes.length; ++i) {\n\t\t\tpr0 = projected(r0, axes[i]);\n\t\t\tpr1 = projected(r1, axes[i]);\n\n\t\t\tif (pr0.max < pr1.min || pr1.max < pr0.min) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_points: function() {\n\t\tvar me = this;\n\t\tvar rect = me._rect;\n\t\tvar angle = me._rotation;\n\t\tvar center = me.center();\n\n\t\treturn [\n\t\t\trotated({x: rect.x, y: rect.y}, center, angle),\n\t\t\trotated({x: rect.x + rect.w, y: rect.y}, center, angle),\n\t\t\trotated({x: rect.x + rect.w, y: rect.y + rect.h}, center, angle),\n\t\t\trotated({x: rect.x, y: rect.y + rect.h}, center, angle)\n\t\t];\n\t}\n});\n\nfunction coordinates(view, model, geometry) {\n\tvar point = model.positioner(view, model);\n\tvar vx = point.vx;\n\tvar vy = point.vy;\n\n\tif (!vx && !vy) {\n\t\t// if aligned center, we don't want to offset the center point\n\t\treturn {x: point.x, y: point.y};\n\t}\n\n\tvar w = geometry.w;\n\tvar h = geometry.h;\n\n\t// take in account the label rotation\n\tvar rotation = model.rotation;\n\tvar dx = Math.abs(w / 2 * Math.cos(rotation)) + Math.abs(h / 2 * Math.sin(rotation));\n\tvar dy = Math.abs(w / 2 * Math.sin(rotation)) + Math.abs(h / 2 * Math.cos(rotation));\n\n\t// scale the unit vector (vx, vy) to get at least dx or dy equal to\n\t// w or h respectively (else we would calculate the distance to the\n\t// ellipse inscribed in the bounding rect)\n\tvar vs = 1 / Math.max(Math.abs(vx), Math.abs(vy));\n\tdx *= vx * vs;\n\tdy *= vy * vs;\n\n\t// finally, include the explicit offset\n\tdx += model.offset * vx;\n\tdy += model.offset * vy;\n\n\treturn {\n\t\tx: point.x + dx,\n\t\ty: point.y + dy\n\t};\n}\n\nfunction collide(labels, collider) {\n\tvar i, j, s0, s1;\n\n\t// IMPORTANT Iterate in the reverse order since items at the end of the\n\t// list have an higher weight/priority and thus should be less impacted\n\t// by the overlapping strategy.\n\n\tfor (i = labels.length - 1; i >= 0; --i) {\n\t\ts0 = labels[i].$layout;\n\n\t\tfor (j = i - 1; j >= 0 && s0._visible; --j) {\n\t\t\ts1 = labels[j].$layout;\n\n\t\t\tif (s1._visible && s0._box.intersects(s1._box)) {\n\t\t\t\tcollider(s0, s1);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn labels;\n}\n\nfunction compute$1(labels) {\n\tvar i, ilen, label, state, geometry, center;\n\n\t// Initialize labels for overlap detection\n\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\n\t\tlabel = labels[i];\n\t\tstate = label.$layout;\n\n\t\tif (state._visible) {\n\t\t\tgeometry = label.geometry();\n\t\t\tcenter = coordinates(label._el._model, label.model(), geometry);\n\t\t\tstate._box.update(center, geometry, label.rotation());\n\t\t}\n\t}\n\n\t// Auto hide overlapping labels\n\treturn collide(labels, function(s0, s1) {\n\t\tvar h0 = s0._hidable;\n\t\tvar h1 = s1._hidable;\n\n\t\tif ((h0 && h1) || h1) {\n\t\t\ts1._visible = false;\n\t\t} else if (h0) {\n\t\t\ts0._visible = false;\n\t\t}\n\t});\n}\n\nvar layout = {\n\tprepare: function(datasets) {\n\t\tvar labels = [];\n\t\tvar i, j, ilen, jlen, label;\n\n\t\tfor (i = 0, ilen = datasets.length; i < ilen; ++i) {\n\t\t\tfor (j = 0, jlen = datasets[i].length; j < jlen; ++j) {\n\t\t\t\tlabel = datasets[i][j];\n\t\t\t\tlabels.push(label);\n\t\t\t\tlabel.$layout = {\n\t\t\t\t\t_box: new HitBox(),\n\t\t\t\t\t_hidable: false,\n\t\t\t\t\t_visible: true,\n\t\t\t\t\t_set: i,\n\t\t\t\t\t_idx: j\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// TODO New `z` option: labels with a higher z-index are drawn\n\t\t// of top of the ones with a lower index. Lowest z-index labels\n\t\t// are also discarded first when hiding overlapping labels.\n\t\tlabels.sort(function(a, b) {\n\t\t\tvar sa = a.$layout;\n\t\t\tvar sb = b.$layout;\n\n\t\t\treturn sa._idx === sb._idx\n\t\t\t\t? sb._set - sa._set\n\t\t\t\t: sb._idx - sa._idx;\n\t\t});\n\n\t\tthis.update(labels);\n\n\t\treturn labels;\n\t},\n\n\tupdate: function(labels) {\n\t\tvar dirty = false;\n\t\tvar i, ilen, label, model, state;\n\n\t\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\n\t\t\tlabel = labels[i];\n\t\t\tmodel = label.model();\n\t\t\tstate = label.$layout;\n\t\t\tstate._hidable = model && model.display === 'auto';\n\t\t\tstate._visible = label.visible();\n\t\t\tdirty |= state._hidable;\n\t\t}\n\n\t\tif (dirty) {\n\t\t\tcompute$1(labels);\n\t\t}\n\t},\n\n\tlookup: function(labels, point) {\n\t\tvar i, state;\n\n\t\t// IMPORTANT Iterate in the reverse order since items at the end of\n\t\t// the list have an higher z-index, thus should be picked first.\n\n\t\tfor (i = labels.length - 1; i >= 0; --i) {\n\t\t\tstate = labels[i].$layout;\n\n\t\t\tif (state && state._visible && state._box.contains(point)) {\n\t\t\t\treturn labels[i];\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t},\n\n\tdraw: function(chart, labels) {\n\t\tvar i, ilen, label, state, geometry, center;\n\n\t\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\n\t\t\tlabel = labels[i];\n\t\t\tstate = label.$layout;\n\n\t\t\tif (state._visible) {\n\t\t\t\tgeometry = label.geometry();\n\t\t\t\tcenter = coordinates(label._el._view, label.model(), geometry);\n\t\t\t\tstate._box.update(center, geometry, label.rotation());\n\t\t\t\tlabel.draw(chart, center);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar helpers$3 = Chart.helpers;\n\nvar formatter = function(value) {\n\tif (helpers$3.isNullOrUndef(value)) {\n\t\treturn null;\n\t}\n\n\tvar label = value;\n\tvar keys, klen, k;\n\tif (helpers$3.isObject(value)) {\n\t\tif (!helpers$3.isNullOrUndef(value.label)) {\n\t\t\tlabel = value.label;\n\t\t} else if (!helpers$3.isNullOrUndef(value.r)) {\n\t\t\tlabel = value.r;\n\t\t} else {\n\t\t\tlabel = '';\n\t\t\tkeys = Object.keys(value);\n\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\n\t\t\t\tlabel += (k !== 0 ? ', ' : '') + keys[k] + ': ' + value[keys[k]];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn '' + label;\n};\n\n/**\n * IMPORTANT: make sure to also update tests and TypeScript definition\n * files (`/test/specs/defaults.spec.js` and `/types/options.d.ts`)\n */\n\nvar defaults = {\n\talign: 'center',\n\tanchor: 'center',\n\tbackgroundColor: null,\n\tborderColor: null,\n\tborderRadius: 0,\n\tborderWidth: 0,\n\tclamp: false,\n\tclip: false,\n\tcolor: undefined,\n\tdisplay: true,\n\tfont: {\n\t\tfamily: undefined,\n\t\tlineHeight: 1.2,\n\t\tsize: undefined,\n\t\tstyle: undefined,\n\t\tweight: null\n\t},\n\tformatter: formatter,\n\tlabels: undefined,\n\tlisteners: {},\n\toffset: 4,\n\topacity: 1,\n\tpadding: {\n\t\ttop: 4,\n\t\tright: 4,\n\t\tbottom: 4,\n\t\tleft: 4\n\t},\n\trotation: 0,\n\ttextAlign: 'start',\n\ttextStrokeColor: undefined,\n\ttextStrokeWidth: 0,\n\ttextShadowBlur: 0,\n\ttextShadowColor: undefined\n};\n\n/**\n * @see https://github.com/chartjs/Chart.js/issues/4176\n */\n\nvar helpers$4 = Chart.helpers;\nvar EXPANDO_KEY = '$datalabels';\nvar DEFAULT_KEY = '$default';\n\nfunction configure(dataset, options) {\n\tvar override = dataset.datalabels;\n\tvar listeners = {};\n\tvar configs = [];\n\tvar labels, keys;\n\n\tif (override === false) {\n\t\treturn null;\n\t}\n\tif (override === true) {\n\t\toverride = {};\n\t}\n\n\toptions = helpers$4.merge({}, [options, override]);\n\tlabels = options.labels || {};\n\tkeys = Object.keys(labels);\n\tdelete options.labels;\n\n\tif (keys.length) {\n\t\tkeys.forEach(function(key) {\n\t\t\tif (labels[key]) {\n\t\t\t\tconfigs.push(helpers$4.merge({}, [\n\t\t\t\t\toptions,\n\t\t\t\t\tlabels[key],\n\t\t\t\t\t{_key: key}\n\t\t\t\t]));\n\t\t\t}\n\t\t});\n\t} else {\n\t\t// Default label if no \"named\" label defined.\n\t\tconfigs.push(options);\n\t}\n\n\t// listeners: {: {: }}\n\tlisteners = configs.reduce(function(target, config) {\n\t\thelpers$4.each(config.listeners || {}, function(fn, event) {\n\t\t\ttarget[event] = target[event] || {};\n\t\t\ttarget[event][config._key || DEFAULT_KEY] = fn;\n\t\t});\n\n\t\tdelete config.listeners;\n\t\treturn target;\n\t}, {});\n\n\treturn {\n\t\tlabels: configs,\n\t\tlisteners: listeners\n\t};\n}\n\nfunction dispatchEvent(chart, listeners, label) {\n\tif (!listeners) {\n\t\treturn;\n\t}\n\n\tvar context = label.$context;\n\tvar groups = label.$groups;\n\tvar callback;\n\n\tif (!listeners[groups._set]) {\n\t\treturn;\n\t}\n\n\tcallback = listeners[groups._set][groups._key];\n\tif (!callback) {\n\t\treturn;\n\t}\n\n\tif (helpers$4.callback(callback, [context]) === true) {\n\t\t// Users are allowed to tweak the given context by injecting values that can be\n\t\t// used in scriptable options to display labels differently based on the current\n\t\t// event (e.g. highlight an hovered label). That's why we update the label with\n\t\t// the output context and schedule a new chart render by setting it dirty.\n\t\tchart[EXPANDO_KEY]._dirty = true;\n\t\tlabel.update(context);\n\t}\n}\n\nfunction dispatchMoveEvents(chart, listeners, previous, label) {\n\tvar enter, leave;\n\n\tif (!previous && !label) {\n\t\treturn;\n\t}\n\n\tif (!previous) {\n\t\tenter = true;\n\t} else if (!label) {\n\t\tleave = true;\n\t} else if (previous !== label) {\n\t\tleave = enter = true;\n\t}\n\n\tif (leave) {\n\t\tdispatchEvent(chart, listeners.leave, previous);\n\t}\n\tif (enter) {\n\t\tdispatchEvent(chart, listeners.enter, label);\n\t}\n}\n\nfunction handleMoveEvents(chart, event) {\n\tvar expando = chart[EXPANDO_KEY];\n\tvar listeners = expando._listeners;\n\tvar previous, label;\n\n\tif (!listeners.enter && !listeners.leave) {\n\t\treturn;\n\t}\n\n\tif (event.type === 'mousemove') {\n\t\tlabel = layout.lookup(expando._labels, event);\n\t} else if (event.type !== 'mouseout') {\n\t\treturn;\n\t}\n\n\tprevious = expando._hovered;\n\texpando._hovered = label;\n\tdispatchMoveEvents(chart, listeners, previous, label);\n}\n\nfunction handleClickEvents(chart, event) {\n\tvar expando = chart[EXPANDO_KEY];\n\tvar handlers = expando._listeners.click;\n\tvar label = handlers && layout.lookup(expando._labels, event);\n\tif (label) {\n\t\tdispatchEvent(chart, handlers, label);\n\t}\n}\n\n// https://github.com/chartjs/chartjs-plugin-datalabels/issues/108\nfunction invalidate(chart) {\n\tif (chart.animating) {\n\t\treturn;\n\t}\n\n\t// `chart.animating` can be `false` even if there is animation in progress,\n\t// so let's iterate all animations to find if there is one for the `chart`.\n\tvar animations = Chart.animationService.animations;\n\tfor (var i = 0, ilen = animations.length; i < ilen; ++i) {\n\t\tif (animations[i].chart === chart) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// No render scheduled: trigger a \"lazy\" render that can be canceled in case\n\t// of hover interactions. The 1ms duration is a workaround to make sure an\n\t// animation is created so the controller can stop it before any transition.\n\tchart.render({duration: 1, lazy: true});\n}\n\nChart.defaults.global.plugins.datalabels = defaults;\n\nvar plugin = {\n\tid: 'datalabels',\n\n\tbeforeInit: function(chart) {\n\t\tchart[EXPANDO_KEY] = {\n\t\t\t_actives: []\n\t\t};\n\t},\n\n\tbeforeUpdate: function(chart) {\n\t\tvar expando = chart[EXPANDO_KEY];\n\t\texpando._listened = false;\n\t\texpando._listeners = {}; // {: {: {: }}}\n\t\texpando._datasets = []; // per dataset labels: [Label[]]\n\t\texpando._labels = []; // layouted labels: Label[]\n\t},\n\n\tafterDatasetUpdate: function(chart, args, options) {\n\t\tvar datasetIndex = args.index;\n\t\tvar expando = chart[EXPANDO_KEY];\n\t\tvar labels = expando._datasets[datasetIndex] = [];\n\t\tvar visible = chart.isDatasetVisible(datasetIndex);\n\t\tvar dataset = chart.data.datasets[datasetIndex];\n\t\tvar config = configure(dataset, options);\n\t\tvar elements = args.meta.data || [];\n\t\tvar ctx = chart.ctx;\n\t\tvar i, j, ilen, jlen, cfg, key, el, label;\n\n\t\tctx.save();\n\n\t\tfor (i = 0, ilen = elements.length; i < ilen; ++i) {\n\t\t\tel = elements[i];\n\t\t\tel[EXPANDO_KEY] = [];\n\n\t\t\tif (visible && el && !el.hidden && !el._model.skip) {\n\t\t\t\tfor (j = 0, jlen = config.labels.length; j < jlen; ++j) {\n\t\t\t\t\tcfg = config.labels[j];\n\t\t\t\t\tkey = cfg._key;\n\n\t\t\t\t\tlabel = new Label(cfg, ctx, el, i);\n\t\t\t\t\tlabel.$groups = {\n\t\t\t\t\t\t_set: datasetIndex,\n\t\t\t\t\t\t_key: key || DEFAULT_KEY\n\t\t\t\t\t};\n\t\t\t\t\tlabel.$context = {\n\t\t\t\t\t\tactive: false,\n\t\t\t\t\t\tchart: chart,\n\t\t\t\t\t\tdataIndex: i,\n\t\t\t\t\t\tdataset: dataset,\n\t\t\t\t\t\tdatasetIndex: datasetIndex\n\t\t\t\t\t};\n\n\t\t\t\t\tlabel.update(label.$context);\n\t\t\t\t\tel[EXPANDO_KEY].push(label);\n\t\t\t\t\tlabels.push(label);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tctx.restore();\n\n\t\t// Store listeners at the chart level and per event type to optimize\n\t\t// cases where no listeners are registered for a specific event.\n\t\thelpers$4.merge(expando._listeners, config.listeners, {\n\t\t\tmerger: function(event, target, source) {\n\t\t\t\ttarget[event] = target[event] || {};\n\t\t\t\ttarget[event][args.index] = source[event];\n\t\t\t\texpando._listened = true;\n\t\t\t}\n\t\t});\n\t},\n\n\tafterUpdate: function(chart, options) {\n\t\tchart[EXPANDO_KEY]._labels = layout.prepare(\n\t\t\tchart[EXPANDO_KEY]._datasets,\n\t\t\toptions);\n\t},\n\n\t// Draw labels on top of all dataset elements\n\t// https://github.com/chartjs/chartjs-plugin-datalabels/issues/29\n\t// https://github.com/chartjs/chartjs-plugin-datalabels/issues/32\n\tafterDatasetsDraw: function(chart) {\n\t\tlayout.draw(chart, chart[EXPANDO_KEY]._labels);\n\t},\n\n\tbeforeEvent: function(chart, event) {\n\t\t// If there is no listener registered for this chart, `listened` will be false,\n\t\t// meaning we can immediately ignore the incoming event and avoid useless extra\n\t\t// computation for users who don't implement label interactions.\n\t\tif (chart[EXPANDO_KEY]._listened) {\n\t\t\tswitch (event.type) {\n\t\t\tcase 'mousemove':\n\t\t\tcase 'mouseout':\n\t\t\t\thandleMoveEvents(chart, event);\n\t\t\t\tbreak;\n\t\t\tcase 'click':\n\t\t\t\thandleClickEvents(chart, event);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t}\n\t\t}\n\t},\n\n\tafterEvent: function(chart) {\n\t\tvar expando = chart[EXPANDO_KEY];\n\t\tvar previous = expando._actives;\n\t\tvar actives = expando._actives = chart.lastActive || []; // public API?!\n\t\tvar updates = utils.arrayDiff(previous, actives);\n\t\tvar i, ilen, j, jlen, update, label, labels;\n\n\t\tfor (i = 0, ilen = updates.length; i < ilen; ++i) {\n\t\t\tupdate = updates[i];\n\t\t\tif (update[1]) {\n\t\t\t\tlabels = update[0][EXPANDO_KEY] || [];\n\t\t\t\tfor (j = 0, jlen = labels.length; j < jlen; ++j) {\n\t\t\t\t\tlabel = labels[j];\n\t\t\t\t\tlabel.$context.active = (update[1] === 1);\n\t\t\t\t\tlabel.update(label.$context);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (expando._dirty || updates.length) {\n\t\t\tlayout.update(expando._labels);\n\t\t\tinvalidate(chart);\n\t\t}\n\n\t\tdelete expando._dirty;\n\t}\n};\n\n// TODO Remove at version 1, we shouldn't automatically register plugins.\n// https://github.com/chartjs/chartjs-plugin-datalabels/issues/42\nChart.plugins.unregister(plugin);\nreturn plugin;\n\n}));\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/forced-string-html-method');\n\n// `String.prototype.anchor` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.anchor\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('anchor') }, {\n anchor: function anchor(name) {\n return createHTML(this, 'a', 'name', name);\n }\n});\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar quot = /\"/g;\n\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\n// https://tc39.github.io/ecma262/#sec-createhtml\nmodule.exports = function (string, tag, attribute, value) {\n var S = String(requireObjectCoercible(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\n","var fails = require('../internals/fails');\n\n// check the existence of a method, lowercase\n// of a tag and escaping quotes in arguments\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n var test = ''[METHOD_NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n });\n};\n","module.exports = chart;","/*! PhotoSwipe - v4.1.1 - 2015-12-24\n * http://photoswipe.com\n * Copyright (c) 2015 Dmitry Semenov; */\n! function (a, b) {\n \"function\" == typeof define && define.amd ? define(b) : \"object\" == typeof exports ? module.exports = b() : window.PhotoSwipe = b()\n}(this, function () {\n \"use strict\";\n var a = function (a, b, c, d) {\n var e = {\n features: null,\n bind: function (a, b, c, d) {\n var e = (d ? \"remove\" : \"add\") + \"EventListener\";\n b = b.split(\" \");\n for (var f = 0; f < b.length; f++) b[f] && a[e](b[f], c, !1)\n },\n isArray: function (a) {\n return a instanceof Array\n },\n createEl: function (a, b) {\n var c = document.createElement(b || \"div\");\n return a && (c.className = a), c\n },\n getScrollY: function () {\n var a = window.pageYOffset;\n return void 0 !== a ? a : document.documentElement.scrollTop\n },\n unbind: function (a, b, c) {\n e.bind(a, b, c, !0)\n },\n removeClass: function (a, b) {\n var c = new RegExp(\"(\\\\s|^)\" + b + \"(\\\\s|$)\");\n a.className = a.className.replace(c, \" \").replace(/^\\s\\s*/, \"\").replace(/\\s\\s*$/, \"\")\n },\n addClass: function (a, b) {\n e.hasClass(a, b) || (a.className += (a.className ? \" \" : \"\") + b)\n },\n hasClass: function (a, b) {\n return a.className && new RegExp(\"(^|\\\\s)\" + b + \"(\\\\s|$)\").test(a.className)\n },\n getChildByClass: function (a, b) {\n for (var c = a.firstChild; c;) {\n if (e.hasClass(c, b)) return c;\n c = c.nextSibling\n }\n },\n arraySearch: function (a, b, c) {\n for (var d = a.length; d--;)\n if (a[d][c] === b) return d;\n return -1\n },\n extend: function (a, b, c) {\n for (var d in b)\n if (b.hasOwnProperty(d)) {\n if (c && a.hasOwnProperty(d)) continue;\n a[d] = b[d]\n }\n },\n easing: {\n sine: {\n out: function (a) {\n return Math.sin(a * (Math.PI / 2))\n },\n inOut: function (a) {\n return -(Math.cos(Math.PI * a) - 1) / 2\n }\n },\n cubic: {\n out: function (a) {\n return --a * a * a + 1\n }\n }\n },\n detectFeatures: function () {\n if (e.features) return e.features;\n var a = e.createEl(),\n b = a.style,\n c = \"\",\n d = {};\n if (d.oldIE = document.all && !document.addEventListener, d.touch = \"ontouchstart\" in window, window.requestAnimationFrame && (d.raf = window.requestAnimationFrame, d.caf = window.cancelAnimationFrame), d.pointerEvent = navigator.pointerEnabled || navigator.msPointerEnabled, !d.pointerEvent) {\n var f = navigator.userAgent;\n if (/iP(hone|od)/.test(navigator.platform)) {\n var g = navigator.appVersion.match(/OS (\\d+)_(\\d+)_?(\\d+)?/);\n g && g.length > 0 && (g = parseInt(g[1], 10), g >= 1 && 8 > g && (d.isOldIOSPhone = !0))\n }\n var h = f.match(/Android\\s([0-9\\.]*)/),\n i = h ? h[1] : 0;\n i = parseFloat(i), i >= 1 && (4.4 > i && (d.isOldAndroid = !0), d.androidVersion = i), d.isMobileOpera = /opera mini|opera mobi/i.test(f)\n }\n for (var j, k, l = [\"transform\", \"perspective\", \"animationName\"], m = [\"\", \"webkit\", \"Moz\", \"ms\", \"O\"], n = 0; 4 > n; n++) {\n c = m[n];\n for (var o = 0; 3 > o; o++) j = l[o], k = c + (c ? j.charAt(0).toUpperCase() + j.slice(1) : j), !d[j] && k in b && (d[j] = k);\n c && !d.raf && (c = c.toLowerCase(), d.raf = window[c + \"RequestAnimationFrame\"], d.raf && (d.caf = window[c + \"CancelAnimationFrame\"] || window[c + \"CancelRequestAnimationFrame\"]))\n }\n if (!d.raf) {\n var p = 0;\n d.raf = function (a) {\n var b = (new Date).getTime(),\n c = Math.max(0, 16 - (b - p)),\n d = window.setTimeout(function () {\n a(b + c)\n }, c);\n return p = b + c, d\n }, d.caf = function (a) {\n clearTimeout(a)\n }\n }\n return d.svg = !!document.createElementNS && !!document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\").createSVGRect, e.features = d, d\n }\n };\n e.detectFeatures(), e.features.oldIE && (e.bind = function (a, b, c, d) {\n b = b.split(\" \");\n for (var e, f = (d ? \"detach\" : \"attach\") + \"Event\", g = function () {\n c.handleEvent.call(c)\n }, h = 0; h < b.length; h++)\n if (e = b[h])\n if (\"object\" == typeof c && c.handleEvent) {\n if (d) {\n if (!c[\"oldIE\" + e]) return !1\n } else c[\"oldIE\" + e] = g;\n a[f](\"on\" + e, c[\"oldIE\" + e])\n } else a[f](\"on\" + e, c)\n });\n var f = this,\n g = 25,\n h = 3,\n i = {\n allowPanToNext: !0,\n spacing: .12,\n bgOpacity: 1,\n mouseUsed: !1,\n loop: !0,\n pinchToClose: !0,\n closeOnScroll: !0,\n closeOnVerticalDrag: !0,\n verticalDragRange: .75,\n hideAnimationDuration: 333,\n showAnimationDuration: 333,\n showHideOpacity: !1,\n focus: !0,\n escKey: !0,\n arrowKeys: !0,\n mainScrollEndFriction: .35,\n panEndFriction: .35,\n isClickableElement: function (a) {\n return \"A\" === a.tagName\n },\n getDoubleTapZoom: function (a, b) {\n return a ? 1 : b.initialZoomLevel < .7 ? 1 : 1.33\n },\n maxSpreadZoom: 1.33,\n modal: !0,\n scaleMode: \"fit\"\n };\n e.extend(i, d);\n var j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, $, _, aa, ba, ca, da, ea, fa, ga, ha, ia, ja, ka, la = function () {\n return {\n x: 0,\n y: 0\n }\n },\n ma = la(),\n na = la(),\n oa = la(),\n pa = {},\n qa = 0,\n ra = {},\n sa = la(),\n ta = 0,\n ua = !0,\n va = [],\n wa = {},\n xa = !1,\n ya = function (a, b) {\n e.extend(f, b.publicMethods), va.push(a)\n },\n za = function (a) {\n var b = _b();\n return a > b - 1 ? a - b : 0 > a ? b + a : a\n },\n Aa = {},\n Ba = function (a, b) {\n return Aa[a] || (Aa[a] = []), Aa[a].push(b)\n },\n Ca = function (a) {\n var b = Aa[a];\n if (b) {\n var c = Array.prototype.slice.call(arguments);\n c.shift();\n for (var d = 0; d < b.length; d++) b[d].apply(f, c)\n }\n },\n Da = function () {\n return (new Date).getTime()\n },\n Ea = function (a) {\n ia = a, f.bg.style.opacity = a * i.bgOpacity\n },\n Fa = function (a, b, c, d, e) {\n (!xa || e && e !== f.currItem) && (d /= e ? e.fitRatio : f.currItem.fitRatio), a[E] = u + b + \"px, \" + c + \"px\" + v + \" scale(\" + d + \")\"\n },\n Ga = function (a) {\n da && (a && (s > f.currItem.fitRatio ? xa || (lc(f.currItem, !1, !0), xa = !0) : xa && (lc(f.currItem), xa = !1)), Fa(da, oa.x, oa.y, s))\n },\n Ha = function (a) {\n a.container && Fa(a.container.style, a.initialPosition.x, a.initialPosition.y, a.initialZoomLevel, a)\n },\n Ia = function (a, b) {\n b[E] = u + a + \"px, 0px\" + v\n },\n Ja = function (a, b) {\n if (!i.loop && b) {\n var c = m + (sa.x * qa - a) / sa.x,\n d = Math.round(a - sb.x);\n (0 > c && d > 0 || c >= _b() - 1 && 0 > d) && (a = sb.x + d * i.mainScrollEndFriction)\n }\n sb.x = a, Ia(a, n)\n },\n Ka = function (a, b) {\n var c = tb[a] - ra[a];\n return na[a] + ma[a] + c - c * (b / t)\n },\n La = function (a, b) {\n a.x = b.x, a.y = b.y, b.id && (a.id = b.id)\n },\n Ma = function (a) {\n a.x = Math.round(a.x), a.y = Math.round(a.y)\n },\n Na = null,\n Oa = function () {\n Na && (e.unbind(document, \"mousemove\", Oa), e.addClass(a, \"pswp--has_mouse\"), i.mouseUsed = !0, Ca(\"mouseUsed\")), Na = setTimeout(function () {\n Na = null\n }, 100)\n },\n Pa = function () {\n e.bind(document, \"keydown\", f), N.transform && e.bind(f.scrollWrap, \"click\", f), i.mouseUsed || e.bind(document, \"mousemove\", Oa), e.bind(window, \"resize scroll\", f), Ca(\"bindEvents\")\n },\n Qa = function () {\n e.unbind(window, \"resize\", f), e.unbind(window, \"scroll\", r.scroll), e.unbind(document, \"keydown\", f), e.unbind(document, \"mousemove\", Oa), N.transform && e.unbind(f.scrollWrap, \"click\", f), U && e.unbind(window, p, f), Ca(\"unbindEvents\")\n },\n Ra = function (a, b) {\n var c = hc(f.currItem, pa, a);\n return b && (ca = c), c\n },\n Sa = function (a) {\n return a || (a = f.currItem), a.initialZoomLevel\n },\n Ta = function (a) {\n return a || (a = f.currItem), a.w > 0 ? i.maxSpreadZoom : 1\n },\n Ua = function (a, b, c, d) {\n return d === f.currItem.initialZoomLevel ? (c[a] = f.currItem.initialPosition[a], !0) : (c[a] = Ka(a, d), c[a] > b.min[a] ? (c[a] = b.min[a], !0) : c[a] < b.max[a] ? (c[a] = b.max[a], !0) : !1)\n },\n Va = function () {\n if (E) {\n var b = N.perspective && !G;\n return u = \"translate\" + (b ? \"3d(\" : \"(\"), void(v = N.perspective ? \", 0px)\" : \")\")\n }\n E = \"left\", e.addClass(a, \"pswp--ie\"), Ia = function (a, b) {\n b.left = a + \"px\"\n }, Ha = function (a) {\n var b = a.fitRatio > 1 ? 1 : a.fitRatio,\n c = a.container.style,\n d = b * a.w,\n e = b * a.h;\n c.width = d + \"px\", c.height = e + \"px\", c.left = a.initialPosition.x + \"px\", c.top = a.initialPosition.y + \"px\"\n }, Ga = function () {\n if (da) {\n var a = da,\n b = f.currItem,\n c = b.fitRatio > 1 ? 1 : b.fitRatio,\n d = c * b.w,\n e = c * b.h;\n a.width = d + \"px\", a.height = e + \"px\", a.left = oa.x + \"px\", a.top = oa.y + \"px\"\n }\n }\n },\n Wa = function (a) {\n var b = \"\";\n i.escKey && 27 === a.keyCode ? b = \"close\" : i.arrowKeys && (37 === a.keyCode ? b = \"prev\" : 39 === a.keyCode && (b = \"next\")), b && (a.ctrlKey || a.altKey || a.shiftKey || a.metaKey || (a.preventDefault ? a.preventDefault() : a.returnValue = !1, f[b]()))\n },\n Xa = function (a) {\n a && (X || W || ea || S) && (a.preventDefault(), a.stopPropagation())\n },\n Ya = function () {\n f.setScrollOffset(0, e.getScrollY())\n },\n Za = {},\n $a = 0,\n _a = function (a) {\n Za[a] && (Za[a].raf && I(Za[a].raf), $a--, delete Za[a])\n },\n ab = function (a) {\n Za[a] && _a(a), Za[a] || ($a++, Za[a] = {})\n },\n bb = function () {\n for (var a in Za) Za.hasOwnProperty(a) && _a(a)\n },\n cb = function (a, b, c, d, e, f, g) {\n var h, i = Da();\n ab(a);\n var j = function () {\n if (Za[a]) {\n if (h = Da() - i, h >= d) return _a(a), f(c), void(g && g());\n f((c - b) * e(h / d) + b), Za[a].raf = H(j)\n }\n };\n j()\n },\n db = {\n shout: Ca,\n listen: Ba,\n viewportSize: pa,\n options: i,\n isMainScrollAnimating: function () {\n return ea\n },\n getZoomLevel: function () {\n return s\n },\n getCurrentIndex: function () {\n return m\n },\n isDragging: function () {\n return U\n },\n isZooming: function () {\n return _\n },\n setScrollOffset: function (a, b) {\n ra.x = a, M = ra.y = b, Ca(\"updateScrollOffset\", ra)\n },\n applyZoomPan: function (a, b, c, d) {\n oa.x = b, oa.y = c, s = a, Ga(d)\n },\n init: function () {\n if (!j && !k) {\n var c;\n f.framework = e, f.template = a, f.bg = e.getChildByClass(a, \"pswp__bg\"), J = a.className, j = !0, N = e.detectFeatures(), H = N.raf, I = N.caf, E = N.transform, L = N.oldIE, f.scrollWrap = e.getChildByClass(a, \"pswp__scroll-wrap\"), f.container = e.getChildByClass(f.scrollWrap, \"pswp__container\"), n = f.container.style, f.itemHolders = y = [{\n el: f.container.children[0],\n wrap: 0,\n index: -1\n }, {\n el: f.container.children[1],\n wrap: 0,\n index: -1\n }, {\n el: f.container.children[2],\n wrap: 0,\n index: -1\n }], y[0].el.style.display = y[2].el.style.display = \"none\", Va(), r = {\n resize: f.updateSize,\n scroll: Ya,\n keydown: Wa,\n click: Xa\n };\n var d = N.isOldIOSPhone || N.isOldAndroid || N.isMobileOpera;\n for (N.animationName && N.transform && !d || (i.showAnimationDuration = i.hideAnimationDuration = 0), c = 0; c < va.length; c++) f[\"init\" + va[c]]();\n if (b) {\n var g = f.ui = new b(f, e);\n g.init()\n }\n Ca(\"firstUpdate\"), m = m || i.index || 0, (isNaN(m) || 0 > m || m >= _b()) && (m = 0), f.currItem = $b(m), (N.isOldIOSPhone || N.isOldAndroid) && (ua = !1), a.setAttribute(\"aria-hidden\", \"false\"), i.modal && (ua ? a.style.position = \"fixed\" : (a.style.position = \"absolute\", a.style.top = e.getScrollY() + \"px\")), void 0 === M && (Ca(\"initialLayout\"), M = K = e.getScrollY());\n var l = \"pswp--open \";\n for (i.mainClass && (l += i.mainClass + \" \"), i.showHideOpacity && (l += \"pswp--animate_opacity \"), l += G ? \"pswp--touch\" : \"pswp--notouch\", l += N.animationName ? \" pswp--css_animation\" : \"\", l += N.svg ? \" pswp--svg\" : \"\", e.addClass(a, l), f.updateSize(), o = -1, ta = null, c = 0; h > c; c++) Ia((c + o) * sa.x, y[c].el.style);\n L || e.bind(f.scrollWrap, q, f), Ba(\"initialZoomInEnd\", function () {\n f.setContent(y[0], m - 1), f.setContent(y[2], m + 1), y[0].el.style.display = y[2].el.style.display = \"block\", i.focus && a.focus(), Pa()\n }), f.setContent(y[1], m), f.updateCurrItem(), Ca(\"afterInit\"), ua || (w = setInterval(function () {\n $a || U || _ || s !== f.currItem.initialZoomLevel || f.updateSize()\n }, 1e3)), e.addClass(a, \"pswp--visible\")\n }\n },\n close: function () {\n j && (j = !1, k = !0, Ca(\"close\"), Qa(), bc(f.currItem, null, !0, f.destroy))\n },\n destroy: function () {\n Ca(\"destroy\"), Wb && clearTimeout(Wb), a.setAttribute(\"aria-hidden\", \"true\"), a.className = J, w && clearInterval(w), e.unbind(f.scrollWrap, q, f), e.unbind(window, \"scroll\", f), yb(), bb(), Aa = null\n },\n panTo: function (a, b, c) {\n c || (a > ca.min.x ? a = ca.min.x : a < ca.max.x && (a = ca.max.x), b > ca.min.y ? b = ca.min.y : b < ca.max.y && (b = ca.max.y)), oa.x = a, oa.y = b, Ga()\n },\n handleEvent: function (a) {\n a = a || window.event, r[a.type] && r[a.type](a)\n },\n goTo: function (a) {\n a = za(a);\n var b = a - m;\n ta = b, m = a, f.currItem = $b(m), qa -= b, Ja(sa.x * qa), bb(), ea = !1, f.updateCurrItem()\n },\n next: function () {\n f.goTo(m + 1)\n },\n prev: function () {\n f.goTo(m - 1)\n },\n updateCurrZoomItem: function (a) {\n if (a && Ca(\"beforeChange\", 0), y[1].el.children.length) {\n var b = y[1].el.children[0];\n da = e.hasClass(b, \"pswp__zoom-wrap\") ? b.style : null\n } else da = null;\n ca = f.currItem.bounds, t = s = f.currItem.initialZoomLevel, oa.x = ca.center.x, oa.y = ca.center.y, a && Ca(\"afterChange\")\n },\n invalidateCurrItems: function () {\n x = !0;\n for (var a = 0; h > a; a++) y[a].item && (y[a].item.needsUpdate = !0)\n },\n updateCurrItem: function (a) {\n if (0 !== ta) {\n var b, c = Math.abs(ta);\n if (!(a && 2 > c)) {\n f.currItem = $b(m), xa = !1, Ca(\"beforeChange\", ta), c >= h && (o += ta + (ta > 0 ? -h : h), c = h);\n for (var d = 0; c > d; d++) ta > 0 ? (b = y.shift(), y[h - 1] = b, o++, Ia((o + 2) * sa.x, b.el.style), f.setContent(b, m - c + d + 1 + 1)) : (b = y.pop(), y.unshift(b), o--, Ia(o * sa.x, b.el.style), f.setContent(b, m + c - d - 1 - 1));\n if (da && 1 === Math.abs(ta)) {\n var e = $b(z);\n e.initialZoomLevel !== s && (hc(e, pa), lc(e), Ha(e))\n }\n ta = 0, f.updateCurrZoomItem(), z = m, Ca(\"afterChange\")\n }\n }\n },\n updateSize: function (b) {\n if (!ua && i.modal) {\n var c = e.getScrollY();\n if (M !== c && (a.style.top = c + \"px\", M = c), !b && wa.x === window.innerWidth && wa.y === window.innerHeight) return;\n wa.x = window.innerWidth, wa.y = window.innerHeight, a.style.height = wa.y + \"px\"\n }\n if (pa.x = f.scrollWrap.clientWidth, pa.y = f.scrollWrap.clientHeight, Ya(), sa.x = pa.x + Math.round(pa.x * i.spacing), sa.y = pa.y, Ja(sa.x * qa), Ca(\"beforeResize\"), void 0 !== o) {\n for (var d, g, j, k = 0; h > k; k++) d = y[k], Ia((k + o) * sa.x, d.el.style), j = m + k - 1, i.loop && _b() > 2 && (j = za(j)), g = $b(j), g && (x || g.needsUpdate || !g.bounds) ? (f.cleanSlide(g), f.setContent(d, j), 1 === k && (f.currItem = g, f.updateCurrZoomItem(!0)), g.needsUpdate = !1) : -1 === d.index && j >= 0 && f.setContent(d, j), g && g.container && (hc(g, pa), lc(g), Ha(g));\n x = !1\n }\n t = s = f.currItem.initialZoomLevel, ca = f.currItem.bounds, ca && (oa.x = ca.center.x, oa.y = ca.center.y, Ga(!0)), Ca(\"resize\")\n },\n zoomTo: function (a, b, c, d, f) {\n b && (t = s, tb.x = Math.abs(b.x) - oa.x, tb.y = Math.abs(b.y) - oa.y, La(na, oa));\n var g = Ra(a, !1),\n h = {};\n Ua(\"x\", g, h, a), Ua(\"y\", g, h, a);\n var i = s,\n j = {\n x: oa.x,\n y: oa.y\n };\n Ma(h);\n var k = function (b) {\n 1 === b ? (s = a, oa.x = h.x, oa.y = h.y) : (s = (a - i) * b + i, oa.x = (h.x - j.x) * b + j.x, oa.y = (h.y - j.y) * b + j.y), f && f(b), Ga(1 === b)\n };\n c ? cb(\"customZoomTo\", 0, 1, c, d || e.easing.sine.inOut, k) : k(1)\n }\n },\n eb = 30,\n fb = 10,\n gb = {},\n hb = {},\n ib = {},\n jb = {},\n kb = {},\n lb = [],\n mb = {},\n nb = [],\n ob = {},\n pb = 0,\n qb = la(),\n rb = 0,\n sb = la(),\n tb = la(),\n ub = la(),\n vb = function (a, b) {\n return a.x === b.x && a.y === b.y\n },\n wb = function (a, b) {\n return Math.abs(a.x - b.x) < g && Math.abs(a.y - b.y) < g\n },\n xb = function (a, b) {\n return ob.x = Math.abs(a.x - b.x), ob.y = Math.abs(a.y - b.y), Math.sqrt(ob.x * ob.x + ob.y * ob.y)\n },\n yb = function () {\n Y && (I(Y), Y = null)\n },\n zb = function () {\n U && (Y = H(zb), Pb())\n },\n Ab = function () {\n return !(\"fit\" === i.scaleMode && s === f.currItem.initialZoomLevel)\n },\n Bb = function (a, b) {\n return a && a !== document ? a.getAttribute(\"class\") && a.getAttribute(\"class\").indexOf(\"pswp__scroll-wrap\") > -1 ? !1 : b(a) ? a : Bb(a.parentNode, b) : !1\n },\n Cb = {},\n Db = function (a, b) {\n return Cb.prevent = !Bb(a.target, i.isClickableElement), Ca(\"preventDragEvent\", a, b, Cb), Cb.prevent\n },\n Eb = function (a, b) {\n return b.x = a.pageX, b.y = a.pageY, b.id = a.identifier, b\n },\n Fb = function (a, b, c) {\n c.x = .5 * (a.x + b.x), c.y = .5 * (a.y + b.y)\n },\n Gb = function (a, b, c) {\n if (a - P > 50) {\n var d = nb.length > 2 ? nb.shift() : {};\n d.x = b, d.y = c, nb.push(d), P = a\n }\n },\n Hb = function () {\n var a = oa.y - f.currItem.initialPosition.y;\n return 1 - Math.abs(a / (pa.y / 2))\n },\n Ib = {},\n Jb = {},\n Kb = [],\n Lb = function (a) {\n for (; Kb.length > 0;) Kb.pop();\n return F ? (ka = 0, lb.forEach(function (a) {\n 0 === ka ? Kb[0] = a : 1 === ka && (Kb[1] = a), ka++\n })) : a.type.indexOf(\"touch\") > -1 ? a.touches && a.touches.length > 0 && (Kb[0] = Eb(a.touches[0], Ib), a.touches.length > 1 && (Kb[1] = Eb(a.touches[1], Jb))) : (Ib.x = a.pageX, Ib.y = a.pageY, Ib.id = \"\", Kb[0] = Ib), Kb\n },\n Mb = function (a, b) {\n var c, d, e, g, h = 0,\n j = oa[a] + b[a],\n k = b[a] > 0,\n l = sb.x + b.x,\n m = sb.x - mb.x;\n return c = j > ca.min[a] || j < ca.max[a] ? i.panEndFriction : 1, j = oa[a] + b[a] * c, !i.allowPanToNext && s !== f.currItem.initialZoomLevel || (da ? \"h\" !== fa || \"x\" !== a || W || (k ? (j > ca.min[a] && (c = i.panEndFriction, h = ca.min[a] - j, d = ca.min[a] - na[a]), (0 >= d || 0 > m) && _b() > 1 ? (g = l, 0 > m && l > mb.x && (g = mb.x)) : ca.min.x !== ca.max.x && (e = j)) : (j < ca.max[a] && (c = i.panEndFriction, h = j - ca.max[a], d = na[a] - ca.max[a]), (0 >= d || m > 0) && _b() > 1 ? (g = l, m > 0 && l < mb.x && (g = mb.x)) : ca.min.x !== ca.max.x && (e = j))) : g = l, \"x\" !== a) ? void(ea || Z || s > f.currItem.fitRatio && (oa[a] += b[a] * c)) : (void 0 !== g && (Ja(g, !0), Z = g === mb.x ? !1 : !0), ca.min.x !== ca.max.x && (void 0 !== e ? oa.x = e : Z || (oa.x += b.x * c)), void 0 !== g)\n },\n Nb = function (a) {\n if (!(\"mousedown\" === a.type && a.button > 0)) {\n if (Zb) return void a.preventDefault();\n if (!T || \"mousedown\" !== a.type) {\n if (Db(a, !0) && a.preventDefault(), Ca(\"pointerDown\"), F) {\n var b = e.arraySearch(lb, a.pointerId, \"id\");\n 0 > b && (b = lb.length), lb[b] = {\n x: a.pageX,\n y: a.pageY,\n id: a.pointerId\n }\n }\n var c = Lb(a),\n d = c.length;\n $ = null, bb(), U && 1 !== d || (U = ga = !0, e.bind(window, p, f), R = ja = ha = S = Z = X = V = W = !1, fa = null, Ca(\"firstTouchStart\", c), La(na, oa), ma.x = ma.y = 0, La(jb, c[0]), La(kb, jb), mb.x = sa.x * qa, nb = [{\n x: jb.x,\n y: jb.y\n }], P = O = Da(), Ra(s, !0), yb(), zb()), !_ && d > 1 && !ea && !Z && (t = s, W = !1, _ = V = !0, ma.y = ma.x = 0, La(na, oa), La(gb, c[0]), La(hb, c[1]), Fb(gb, hb, ub), tb.x = Math.abs(ub.x) - oa.x, tb.y = Math.abs(ub.y) - oa.y, aa = ba = xb(gb, hb))\n }\n }\n },\n Ob = function (a) {\n if (a.preventDefault(), F) {\n var b = e.arraySearch(lb, a.pointerId, \"id\");\n if (b > -1) {\n var c = lb[b];\n c.x = a.pageX, c.y = a.pageY\n }\n }\n if (U) {\n var d = Lb(a);\n if (fa || X || _) $ = d;\n else if (sb.x !== sa.x * qa) fa = \"h\";\n else {\n var f = Math.abs(d[0].x - jb.x) - Math.abs(d[0].y - jb.y);\n Math.abs(f) >= fb && (fa = f > 0 ? \"h\" : \"v\", $ = d)\n }\n }\n },\n Pb = function () {\n if ($) {\n var a = $.length;\n if (0 !== a)\n if (La(gb, $[0]), ib.x = gb.x - jb.x, ib.y = gb.y - jb.y, _ && a > 1) {\n if (jb.x = gb.x, jb.y = gb.y, !ib.x && !ib.y && vb($[1], hb)) return;\n La(hb, $[1]), W || (W = !0, Ca(\"zoomGestureStarted\"));\n var b = xb(gb, hb),\n c = Ub(b);\n c > f.currItem.initialZoomLevel + f.currItem.initialZoomLevel / 15 && (ja = !0);\n var d = 1,\n e = Sa(),\n g = Ta();\n if (e > c)\n if (i.pinchToClose && !ja && t <= f.currItem.initialZoomLevel) {\n var h = e - c,\n j = 1 - h / (e / 1.2);\n Ea(j), Ca(\"onPinchClose\", j), ha = !0\n } else d = (e - c) / e, d > 1 && (d = 1), c = e - d * (e / 3);\n else c > g && (d = (c - g) / (6 * e), d > 1 && (d = 1), c = g + d * e);\n 0 > d && (d = 0), aa = b, Fb(gb, hb, qb), ma.x += qb.x - ub.x, ma.y += qb.y - ub.y, La(ub, qb), oa.x = Ka(\"x\", c), oa.y = Ka(\"y\", c), R = c > s, s = c, Ga()\n } else {\n if (!fa) return;\n if (ga && (ga = !1, Math.abs(ib.x) >= fb && (ib.x -= $[0].x - kb.x), Math.abs(ib.y) >= fb && (ib.y -= $[0].y - kb.y)), jb.x = gb.x, jb.y = gb.y, 0 === ib.x && 0 === ib.y) return;\n if (\"v\" === fa && i.closeOnVerticalDrag && !Ab()) {\n ma.y += ib.y, oa.y += ib.y;\n var k = Hb();\n return S = !0, Ca(\"onVerticalDrag\", k), Ea(k), void Ga()\n }\n Gb(Da(), gb.x, gb.y), X = !0, ca = f.currItem.bounds;\n var l = Mb(\"x\", ib);\n l || (Mb(\"y\", ib), Ma(oa), Ga())\n }\n }\n },\n Qb = function (a) {\n if (N.isOldAndroid) {\n if (T && \"mouseup\" === a.type) return;\n a.type.indexOf(\"touch\") > -1 && (clearTimeout(T), T = setTimeout(function () {\n T = 0\n }, 600))\n }\n Ca(\"pointerUp\"), Db(a, !1) && a.preventDefault();\n var b;\n if (F) {\n var c = e.arraySearch(lb, a.pointerId, \"id\");\n if (c > -1)\n if (b = lb.splice(c, 1)[0], navigator.pointerEnabled) b.type = a.pointerType || \"mouse\";\n else {\n var d = {\n 4: \"mouse\",\n 2: \"touch\",\n 3: \"pen\"\n };\n b.type = d[a.pointerType], b.type || (b.type = a.pointerType || \"mouse\")\n }\n }\n var g, h = Lb(a),\n j = h.length;\n if (\"mouseup\" === a.type && (j = 0), 2 === j) return $ = null, !0;\n 1 === j && La(kb, h[0]), 0 !== j || fa || ea || (b || (\"mouseup\" === a.type ? b = {\n x: a.pageX,\n y: a.pageY,\n type: \"mouse\"\n } : a.changedTouches && a.changedTouches[0] && (b = {\n x: a.changedTouches[0].pageX,\n y: a.changedTouches[0].pageY,\n type: \"touch\"\n })), Ca(\"touchRelease\", a, b));\n var k = -1;\n if (0 === j && (U = !1, e.unbind(window, p, f), yb(), _ ? k = 0 : -1 !== rb && (k = Da() - rb)), rb = 1 === j ? Da() : -1, g = -1 !== k && 150 > k ? \"zoom\" : \"swipe\", _ && 2 > j && (_ = !1, 1 === j && (g = \"zoomPointerUp\"), Ca(\"zoomGestureEnded\")), $ = null, X || W || ea || S)\n if (bb(), Q || (Q = Rb()), Q.calculateSwipeSpeed(\"x\"), S) {\n var l = Hb();\n if (l < i.verticalDragRange) f.close();\n else {\n var m = oa.y,\n n = ia;\n cb(\"verticalDrag\", 0, 1, 300, e.easing.cubic.out, function (a) {\n oa.y = (f.currItem.initialPosition.y - m) * a + m, Ea((1 - n) * a + n), Ga()\n }), Ca(\"onVerticalDrag\", 1)\n }\n } else {\n if ((Z || ea) && 0 === j) {\n var o = Tb(g, Q);\n if (o) return;\n g = \"zoomPointerUp\"\n }\n if (!ea) return \"swipe\" !== g ? void Vb() : void(!Z && s > f.currItem.fitRatio && Sb(Q))\n }\n },\n Rb = function () {\n var a, b, c = {\n lastFlickOffset: {},\n lastFlickDist: {},\n lastFlickSpeed: {},\n slowDownRatio: {},\n slowDownRatioReverse: {},\n speedDecelerationRatio: {},\n speedDecelerationRatioAbs: {},\n distanceOffset: {},\n backAnimDestination: {},\n backAnimStarted: {},\n calculateSwipeSpeed: function (d) {\n nb.length > 1 ? (a = Da() - P + 50, b = nb[nb.length - 2][d]) : (a = Da() - O, b = kb[d]), c.lastFlickOffset[d] = jb[d] - b, c.lastFlickDist[d] = Math.abs(c.lastFlickOffset[d]), c.lastFlickDist[d] > 20 ? c.lastFlickSpeed[d] = c.lastFlickOffset[d] / a : c.lastFlickSpeed[d] = 0, Math.abs(c.lastFlickSpeed[d]) < .1 && (c.lastFlickSpeed[d] = 0), c.slowDownRatio[d] = .95, c.slowDownRatioReverse[d] = 1 - c.slowDownRatio[d], c.speedDecelerationRatio[d] = 1\n },\n calculateOverBoundsAnimOffset: function (a, b) {\n c.backAnimStarted[a] || (oa[a] > ca.min[a] ? c.backAnimDestination[a] = ca.min[a] : oa[a] < ca.max[a] && (c.backAnimDestination[a] = ca.max[a]), void 0 !== c.backAnimDestination[a] && (c.slowDownRatio[a] = .7, c.slowDownRatioReverse[a] = 1 - c.slowDownRatio[a], c.speedDecelerationRatioAbs[a] < .05 && (c.lastFlickSpeed[a] = 0, c.backAnimStarted[a] = !0, cb(\"bounceZoomPan\" + a, oa[a], c.backAnimDestination[a], b || 300, e.easing.sine.out, function (b) {\n oa[a] = b, Ga()\n }))))\n },\n calculateAnimOffset: function (a) {\n c.backAnimStarted[a] || (c.speedDecelerationRatio[a] = c.speedDecelerationRatio[a] * (c.slowDownRatio[a] + c.slowDownRatioReverse[a] - c.slowDownRatioReverse[a] * c.timeDiff / 10), c.speedDecelerationRatioAbs[a] = Math.abs(c.lastFlickSpeed[a] * c.speedDecelerationRatio[a]), c.distanceOffset[a] = c.lastFlickSpeed[a] * c.speedDecelerationRatio[a] * c.timeDiff, oa[a] += c.distanceOffset[a])\n },\n panAnimLoop: function () {\n return Za.zoomPan && (Za.zoomPan.raf = H(c.panAnimLoop), c.now = Da(), c.timeDiff = c.now - c.lastNow, c.lastNow = c.now, c.calculateAnimOffset(\"x\"), c.calculateAnimOffset(\"y\"), Ga(), c.calculateOverBoundsAnimOffset(\"x\"), c.calculateOverBoundsAnimOffset(\"y\"), c.speedDecelerationRatioAbs.x < .05 && c.speedDecelerationRatioAbs.y < .05) ? (oa.x = Math.round(oa.x), oa.y = Math.round(oa.y), Ga(), void _a(\"zoomPan\")) : void 0\n }\n };\n return c\n },\n Sb = function (a) {\n return a.calculateSwipeSpeed(\"y\"), ca = f.currItem.bounds, a.backAnimDestination = {}, a.backAnimStarted = {}, Math.abs(a.lastFlickSpeed.x) <= .05 && Math.abs(a.lastFlickSpeed.y) <= .05 ? (a.speedDecelerationRatioAbs.x = a.speedDecelerationRatioAbs.y = 0, a.calculateOverBoundsAnimOffset(\"x\"), a.calculateOverBoundsAnimOffset(\"y\"), !0) : (ab(\"zoomPan\"), a.lastNow = Da(), void a.panAnimLoop())\n },\n Tb = function (a, b) {\n var c;\n ea || (pb = m);\n var d;\n if (\"swipe\" === a) {\n var g = jb.x - kb.x,\n h = b.lastFlickDist.x < 10;\n g > eb && (h || b.lastFlickOffset.x > 20) ? d = -1 : -eb > g && (h || b.lastFlickOffset.x < -20) && (d = 1)\n }\n var j;\n d && (m += d, 0 > m ? (m = i.loop ? _b() - 1 : 0, j = !0) : m >= _b() && (m = i.loop ? 0 : _b() - 1, j = !0), (!j || i.loop) && (ta += d, qa -= d, c = !0));\n var k, l = sa.x * qa,\n n = Math.abs(l - sb.x);\n return c || l > sb.x == b.lastFlickSpeed.x > 0 ? (k = Math.abs(b.lastFlickSpeed.x) > 0 ? n / Math.abs(b.lastFlickSpeed.x) : 333, k = Math.min(k, 400), k = Math.max(k, 250)) : k = 333, pb === m && (c = !1), ea = !0, Ca(\"mainScrollAnimStart\"), cb(\"mainScroll\", sb.x, l, k, e.easing.cubic.out, Ja, function () {\n bb(), ea = !1, pb = -1, (c || pb !== m) && f.updateCurrItem(), Ca(\"mainScrollAnimComplete\")\n }), c && f.updateCurrItem(!0), c\n },\n Ub = function (a) {\n return 1 / ba * a * t\n },\n Vb = function () {\n var a = s,\n b = Sa(),\n c = Ta();\n b > s ? a = b : s > c && (a = c);\n var d, g = 1,\n h = ia;\n return ha && !R && !ja && b > s ? (f.close(), !0) : (ha && (d = function (a) {\n Ea((g - h) * a + h)\n }), f.zoomTo(a, 0, 200, e.easing.cubic.out, d), !0)\n };\n ya(\"Gestures\", {\n publicMethods: {\n initGestures: function () {\n var a = function (a, b, c, d, e) {\n A = a + b, B = a + c, C = a + d, D = e ? a + e : \"\"\n };\n F = N.pointerEvent, F && N.touch && (N.touch = !1), F ? navigator.pointerEnabled ? a(\"pointer\", \"down\", \"move\", \"up\", \"cancel\") : a(\"MSPointer\", \"Down\", \"Move\", \"Up\", \"Cancel\") : N.touch ? (a(\"touch\", \"start\", \"move\", \"end\", \"cancel\"), G = !0) : a(\"mouse\", \"down\", \"move\", \"up\"), p = B + \" \" + C + \" \" + D, q = A, F && !G && (G = navigator.maxTouchPoints > 1 || navigator.msMaxTouchPoints > 1), f.likelyTouchDevice = G, r[A] = Nb, r[B] = Ob, r[C] = Qb, D && (r[D] = r[C]), N.touch && (q += \" mousedown\", p += \" mousemove mouseup\", r.mousedown = r[A], r.mousemove = r[B], r.mouseup = r[C]), G || (i.allowPanToNext = !1)\n }\n }\n });\n var Wb, Xb, Yb, Zb, $b, _b, ac, bc = function (b, c, d, g) {\n Wb && clearTimeout(Wb), Zb = !0, Yb = !0;\n var h;\n b.initialLayout ? (h = b.initialLayout, b.initialLayout = null) : h = i.getThumbBoundsFn && i.getThumbBoundsFn(m);\n var j = d ? i.hideAnimationDuration : i.showAnimationDuration,\n k = function () {\n _a(\"initialZoom\"), d ? (f.template.removeAttribute(\"style\"), f.bg.removeAttribute(\"style\")) : (Ea(1), c && (c.style.display = \"block\"), e.addClass(a, \"pswp--animated-in\"), Ca(\"initialZoom\" + (d ? \"OutEnd\" : \"InEnd\"))), g && g(), Zb = !1\n };\n if (!j || !h || void 0 === h.x) return Ca(\"initialZoom\" + (d ? \"Out\" : \"In\")), s = b.initialZoomLevel, La(oa, b.initialPosition), Ga(), a.style.opacity = d ? 0 : 1, Ea(1), void(j ? setTimeout(function () {\n k()\n }, j) : k());\n var n = function () {\n var c = l,\n g = !f.currItem.src || f.currItem.loadError || i.showHideOpacity;\n b.miniImg && (b.miniImg.style.webkitBackfaceVisibility = \"hidden\"), d || (s = h.w / b.w, oa.x = h.x, oa.y = h.y - K, f[g ? \"template\" : \"bg\"].style.opacity = .001, Ga()), ab(\"initialZoom\"), d && !c && e.removeClass(a, \"pswp--animated-in\"), g && (d ? e[(c ? \"remove\" : \"add\") + \"Class\"](a, \"pswp--animate_opacity\") : setTimeout(function () {\n e.addClass(a, \"pswp--animate_opacity\")\n }, 30)), Wb = setTimeout(function () {\n if (Ca(\"initialZoom\" + (d ? \"Out\" : \"In\")), d) {\n var f = h.w / b.w,\n i = {\n x: oa.x,\n y: oa.y\n },\n l = s,\n m = ia,\n n = function (b) {\n 1 === b ? (s = f, oa.x = h.x, oa.y = h.y - M) : (s = (f - l) * b + l, oa.x = (h.x - i.x) * b + i.x, oa.y = (h.y - M - i.y) * b + i.y), Ga(), g ? a.style.opacity = 1 - b : Ea(m - b * m)\n };\n c ? cb(\"initialZoom\", 0, 1, j, e.easing.cubic.out, n, k) : (n(1), Wb = setTimeout(k, j + 20))\n } else s = b.initialZoomLevel, La(oa, b.initialPosition), Ga(), Ea(1), g ? a.style.opacity = 1 : Ea(1), Wb = setTimeout(k, j + 20)\n }, d ? 25 : 90)\n };\n n()\n },\n cc = {},\n dc = [],\n ec = {\n index: 0,\n errorMsg: '
      ',\n forceProgressiveLoading: !1,\n preload: [1, 1],\n getNumItemsFn: function () {\n return Xb.length\n }\n },\n fc = function () {\n return {\n center: {\n x: 0,\n y: 0\n },\n max: {\n x: 0,\n y: 0\n },\n min: {\n x: 0,\n y: 0\n }\n }\n },\n gc = function (a, b, c) {\n var d = a.bounds;\n d.center.x = Math.round((cc.x - b) / 2), d.center.y = Math.round((cc.y - c) / 2) + a.vGap.top, d.max.x = b > cc.x ? Math.round(cc.x - b) : d.center.x, d.max.y = c > cc.y ? Math.round(cc.y - c) + a.vGap.top : d.center.y, d.min.x = b > cc.x ? 0 : d.center.x, d.min.y = c > cc.y ? a.vGap.top : d.center.y\n },\n hc = function (a, b, c) {\n if (a.src && !a.loadError) {\n var d = !c;\n if (d && (a.vGap || (a.vGap = {\n top: 0,\n bottom: 0\n }), Ca(\"parseVerticalMargin\", a)), cc.x = b.x, cc.y = b.y - a.vGap.top - a.vGap.bottom, d) {\n var e = cc.x / a.w,\n f = cc.y / a.h;\n a.fitRatio = f > e ? e : f;\n var g = i.scaleMode;\n \"orig\" === g ? c = 1 : \"fit\" === g && (c = a.fitRatio), c > 1 && (c = 1), a.initialZoomLevel = c, a.bounds || (a.bounds = fc())\n }\n if (!c) return;\n return gc(a, a.w * c, a.h * c), d && c === a.initialZoomLevel && (a.initialPosition = a.bounds.center), a.bounds\n }\n return a.w = a.h = 0, a.initialZoomLevel = a.fitRatio = 1, a.bounds = fc(), a.initialPosition = a.bounds.center, a.bounds\n },\n ic = function (a, b, c, d, e, g) {\n b.loadError || d && (b.imageAppended = !0, lc(b, d, b === f.currItem && xa), c.appendChild(d), g && setTimeout(function () {\n b && b.loaded && b.placeholder && (b.placeholder.style.display = \"none\", b.placeholder = null)\n }, 500))\n },\n jc = function (a) {\n a.loading = !0, a.loaded = !1;\n var b = a.img = e.createEl(\"pswp__img\", \"img\"),\n c = function () {\n a.loading = !1, a.loaded = !0, a.loadComplete ? a.loadComplete(a) : a.img = null, b.onload = b.onerror = null, b = null\n };\n return b.onload = c, b.onerror = function () {\n a.loadError = !0, c()\n }, b.src = a.src, b\n },\n kc = function (a, b) {\n return a.src && a.loadError && a.container ? (b && (a.container.innerHTML = \"\"), a.container.innerHTML = i.errorMsg.replace(\"%url%\", a.src), !0) : void 0\n },\n lc = function (a, b, c) {\n if (a.src) {\n b || (b = a.container.lastChild);\n var d = c ? a.w : Math.round(a.w * a.fitRatio),\n e = c ? a.h : Math.round(a.h * a.fitRatio);\n a.placeholder && !a.loaded && (a.placeholder.style.width = d + \"px\", a.placeholder.style.height = e + \"px\"), b.style.width = d + \"px\", b.style.height = e + \"px\"\n }\n },\n mc = function () {\n if (dc.length) {\n for (var a, b = 0; b < dc.length; b++) a = dc[b], a.holder.index === a.index && ic(a.index, a.item, a.baseDiv, a.img, !1, a.clearPlaceholder);\n dc = []\n }\n };\n ya(\"Controller\", {\n publicMethods: {\n lazyLoadItem: function (a) {\n a = za(a);\n var b = $b(a);\n b && (!b.loaded && !b.loading || x) && (Ca(\"gettingData\", a, b), b.src && jc(b))\n },\n initController: function () {\n e.extend(i, ec, !0), f.items = Xb = c, $b = f.getItemAt, _b = i.getNumItemsFn, ac = i.loop, _b() < 3 && (i.loop = !1), Ba(\"beforeChange\", function (a) {\n var b, c = i.preload,\n d = null === a ? !0 : a >= 0,\n e = Math.min(c[0], _b()),\n g = Math.min(c[1], _b());\n for (b = 1;\n (d ? g : e) >= b; b++) f.lazyLoadItem(m + b);\n for (b = 1;\n (d ? e : g) >= b; b++) f.lazyLoadItem(m - b)\n }), Ba(\"initialLayout\", function () {\n f.currItem.initialLayout = i.getThumbBoundsFn && i.getThumbBoundsFn(m)\n }), Ba(\"mainScrollAnimComplete\", mc), Ba(\"initialZoomInEnd\", mc), Ba(\"destroy\", function () {\n for (var a, b = 0; b < Xb.length; b++) a = Xb[b], a.container && (a.container = null), a.placeholder && (a.placeholder = null), a.img && (a.img = null), a.preloader && (a.preloader = null), a.loadError && (a.loaded = a.loadError = !1);\n dc = null\n })\n },\n getItemAt: function (a) {\n return a >= 0 && void 0 !== Xb[a] ? Xb[a] : !1\n },\n allowProgressiveImg: function () {\n return i.forceProgressiveLoading || !G || i.mouseUsed || screen.width > 1200\n },\n setContent: function (a, b) {\n i.loop && (b = za(b));\n var c = f.getItemAt(a.index);\n c && (c.container = null);\n var d, g = f.getItemAt(b);\n if (!g) return void(a.el.innerHTML = \"\");\n Ca(\"gettingData\", b, g), a.index = b, a.item = g;\n var h = g.container = e.createEl(\"pswp__zoom-wrap\");\n if (!g.src && g.html && (g.html.tagName ? h.appendChild(g.html) : h.innerHTML = g.html), kc(g), hc(g, pa), !g.src || g.loadError || g.loaded) g.src && !g.loadError && (d = e.createEl(\"pswp__img\", \"img\"), d.style.opacity = 1, d.src = g.src, lc(g, d), ic(b, g, h, d, !0));\n else {\n if (g.loadComplete = function (c) {\n if (j) {\n if (a && a.index === b) {\n if (kc(c, !0)) return c.loadComplete = c.img = null, hc(c, pa), Ha(c), void(a.index === m && f.updateCurrZoomItem());\n c.imageAppended ? !Zb && c.placeholder && (c.placeholder.style.display = \"none\", c.placeholder = null) : N.transform && (ea || Zb) ? dc.push({\n item: c,\n baseDiv: h,\n img: c.img,\n index: b,\n holder: a,\n clearPlaceholder: !0\n }) : ic(b, c, h, c.img, ea || Zb, !0)\n }\n c.loadComplete = null, c.img = null, Ca(\"imageLoadComplete\", b, c)\n }\n }, e.features.transform) {\n var k = \"pswp__img pswp__img--placeholder\";\n k += g.msrc ? \"\" : \" pswp__img--placeholder--blank\";\n var l = e.createEl(k, g.msrc ? \"img\" : \"\");\n g.msrc && (l.src = g.msrc), lc(g, l), h.appendChild(l), g.placeholder = l\n }\n g.loading || jc(g), f.allowProgressiveImg() && (!Yb && N.transform ? dc.push({\n item: g,\n baseDiv: h,\n img: g.img,\n index: b,\n holder: a\n }) : ic(b, g, h, g.img, !0, !0))\n }\n Yb || b !== m ? Ha(g) : (da = h.style, bc(g, d || g.img)), a.el.innerHTML = \"\", a.el.appendChild(h)\n },\n cleanSlide: function (a) {\n a.img && (a.img.onload = a.img.onerror = null), a.loaded = a.loading = a.img = a.imageAppended = !1\n }\n }\n });\n var nc, oc = {},\n pc = function (a, b, c) {\n var d = document.createEvent(\"CustomEvent\"),\n e = {\n origEvent: a,\n target: a.target,\n releasePoint: b,\n pointerType: c || \"touch\"\n };\n d.initCustomEvent(\"pswpTap\", !0, !0, e), a.target.dispatchEvent(d)\n };\n ya(\"Tap\", {\n publicMethods: {\n initTap: function () {\n Ba(\"firstTouchStart\", f.onTapStart), Ba(\"touchRelease\", f.onTapRelease), Ba(\"destroy\", function () {\n oc = {}, nc = null\n })\n },\n onTapStart: function (a) {\n a.length > 1 && (clearTimeout(nc), nc = null)\n },\n onTapRelease: function (a, b) {\n if (b && !X && !V && !$a) {\n var c = b;\n if (nc && (clearTimeout(nc), nc = null, wb(c, oc))) return void Ca(\"doubleTap\", c);\n if (\"mouse\" === b.type) return void pc(a, b, \"mouse\");\n var d = a.target.tagName.toUpperCase();\n if (\"BUTTON\" === d || e.hasClass(a.target, \"pswp__single-tap\")) return void pc(a, b);\n La(oc, c), nc = setTimeout(function () {\n pc(a, b), nc = null\n }, 300)\n }\n }\n }\n });\n var qc;\n ya(\"DesktopZoom\", {\n publicMethods: {\n initDesktopZoom: function () {\n L || (G ? Ba(\"mouseUsed\", function () {\n f.setupDesktopZoom()\n }) : f.setupDesktopZoom(!0))\n },\n setupDesktopZoom: function (b) {\n qc = {};\n var c = \"wheel mousewheel DOMMouseScroll\";\n Ba(\"bindEvents\", function () {\n e.bind(a, c, f.handleMouseWheel)\n }), Ba(\"unbindEvents\", function () {\n qc && e.unbind(a, c, f.handleMouseWheel)\n }), f.mouseZoomedIn = !1;\n var d, g = function () {\n f.mouseZoomedIn && (e.removeClass(a, \"pswp--zoomed-in\"), f.mouseZoomedIn = !1), 1 > s ? e.addClass(a, \"pswp--zoom-allowed\") : e.removeClass(a, \"pswp--zoom-allowed\"), h()\n },\n h = function () {\n d && (e.removeClass(a, \"pswp--dragging\"), d = !1)\n };\n Ba(\"resize\", g), Ba(\"afterChange\", g), Ba(\"pointerDown\", function () {\n f.mouseZoomedIn && (d = !0, e.addClass(a, \"pswp--dragging\"))\n }), Ba(\"pointerUp\", h), b || g()\n },\n handleMouseWheel: function (a) {\n if (s <= f.currItem.fitRatio) return i.modal && (!i.closeOnScroll || $a || U ? a.preventDefault() : E && Math.abs(a.deltaY) > 2 && (l = !0, f.close())), !0;\n if (a.stopPropagation(), qc.x = 0, \"deltaX\" in a) 1 === a.deltaMode ? (qc.x = 18 * a.deltaX, qc.y = 18 * a.deltaY) : (qc.x = a.deltaX, qc.y = a.deltaY);\n else if (\"wheelDelta\" in a) a.wheelDeltaX && (qc.x = -.16 * a.wheelDeltaX), a.wheelDeltaY ? qc.y = -.16 * a.wheelDeltaY : qc.y = -.16 * a.wheelDelta;\n else {\n if (!(\"detail\" in a)) return;\n qc.y = a.detail\n }\n Ra(s, !0);\n var b = oa.x - qc.x,\n c = oa.y - qc.y;\n (i.modal || b <= ca.min.x && b >= ca.max.x && c <= ca.min.y && c >= ca.max.y) && a.preventDefault(), f.panTo(b, c)\n },\n toggleDesktopZoom: function (b) {\n b = b || {\n x: pa.x / 2 + ra.x,\n y: pa.y / 2 + ra.y\n };\n var c = i.getDoubleTapZoom(!0, f.currItem),\n d = s === c;\n f.mouseZoomedIn = !d, f.zoomTo(d ? f.currItem.initialZoomLevel : c, b, 333), e[(d ? \"remove\" : \"add\") + \"Class\"](a, \"pswp--zoomed-in\")\n }\n }\n });\n var rc, sc, tc, uc, vc, wc, xc, yc, zc, Ac, Bc, Cc, Dc = {\n history: !0,\n galleryUID: 1\n },\n Ec = function () {\n return Bc.hash.substring(1)\n },\n Fc = function () {\n rc && clearTimeout(rc), tc && clearTimeout(tc)\n },\n Gc = function () {\n var a = Ec(),\n b = {};\n if (a.length < 5) return b;\n var c, d = a.split(\"&\");\n for (c = 0; c < d.length; c++)\n if (d[c]) {\n var e = d[c].split(\"=\");\n e.length < 2 || (b[e[0]] = e[1])\n }\n if (i.galleryPIDs) {\n var f = b.pid;\n for (b.pid = 0, c = 0; c < Xb.length; c++)\n if (Xb[c].pid === f) {\n b.pid = c;\n break\n }\n } else b.pid = parseInt(b.pid, 10) - 1;\n return b.pid < 0 && (b.pid = 0), b\n },\n Hc = function () {\n if (tc && clearTimeout(tc), $a || U) return void(tc = setTimeout(Hc, 500));\n uc ? clearTimeout(sc) : uc = !0;\n var a = m + 1,\n b = $b(m);\n b.hasOwnProperty(\"pid\") && (a = b.pid);\n var c = xc + \"&gid=\" + i.galleryUID + \"&pid=\" + a;\n yc || -1 === Bc.hash.indexOf(c) && (Ac = !0);\n var d = Bc.href.split(\"#\")[0] + \"#\" + c;\n Cc ? \"#\" + c !== window.location.hash && history[yc ? \"replaceState\" : \"pushState\"](\"\", document.title, d) : yc ? Bc.replace(d) : Bc.hash = c, yc = !0, sc = setTimeout(function () {\n uc = !1\n }, 60)\n };\n ya(\"History\", {\n publicMethods: {\n initHistory: function () {\n if (e.extend(i, Dc, !0), i.history) {\n Bc = window.location, Ac = !1, zc = !1, yc = !1, xc = Ec(), Cc = \"pushState\" in history, xc.indexOf(\"gid=\") > -1 && (xc = xc.split(\"&gid=\")[0], xc = xc.split(\"?gid=\")[0]), Ba(\"afterChange\", f.updateURL), Ba(\"unbindEvents\", function () {\n e.unbind(window, \"hashchange\", f.onHashChange)\n });\n var a = function () {\n wc = !0, zc || (Ac ? history.back() : xc ? Bc.hash = xc : Cc ? history.pushState(\"\", document.title, Bc.pathname + Bc.search) : Bc.hash = \"\"), Fc()\n };\n Ba(\"unbindEvents\", function () {\n l && a()\n }), Ba(\"destroy\", function () {\n wc || a()\n }), Ba(\"firstUpdate\", function () {\n m = Gc().pid\n });\n var b = xc.indexOf(\"pid=\");\n b > -1 && (xc = xc.substring(0, b), \"&\" === xc.slice(-1) && (xc = xc.slice(0, -1))), setTimeout(function () {\n j && e.bind(window, \"hashchange\", f.onHashChange)\n }, 40)\n }\n },\n onHashChange: function () {\n return Ec() === xc ? (zc = !0, void f.close()) : void(uc || (vc = !0, f.goTo(Gc().pid), vc = !1))\n },\n updateURL: function () {\n Fc(), vc || (yc ? rc = setTimeout(Hc, 800) : Hc())\n }\n }\n }), e.extend(f, db)\n };\n return a\n});\n\n/*! PhotoSwipe Default UI - 4.1.1 - 2015-12-24\n * http://photoswipe.com\n * Copyright (c) 2015 Dmitry Semenov; */\n! function (a, b) {\n \"function\" == typeof define && define.amd ? define(b) : \"object\" == typeof exports ? module.exports = b() : window.PhotoSwipeUI_Default = b()\n}(this, function () {\n \"use strict\";\n var a = function (a, b) {\n var c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v = this,\n w = !1,\n x = !0,\n y = !0,\n z = {\n barsSize: {\n top: 44,\n bottom: \"auto\"\n },\n closeElClasses: [\"item\", \"caption\", \"zoom-wrap\", \"ui\", \"top-bar\"],\n timeToIdle: 4e3,\n timeToIdleOutside: 1e3,\n loadingIndicatorDelay: 1e3,\n addCaptionHTMLFn: function (a, b) {\n return a.title ? (b.children[0].innerHTML = a.title, !0) : (b.children[0].innerHTML = \"\", !1)\n },\n closeEl: !0,\n captionEl: !0,\n fullscreenEl: !0,\n zoomEl: !0,\n shareEl: !0,\n counterEl: !0,\n arrowEl: !0,\n preloaderEl: !0,\n tapToClose: !1,\n tapToToggleControls: !0,\n clickToCloseNonZoomable: !0,\n shareButtons: [{\n id: \"facebook\",\n label: \"Share on Facebook\",\n url: \"https://www.facebook.com/sharer/sharer.php?u={{url}}\"\n }, {\n id: \"twitter\",\n label: \"Tweet\",\n url: \"https://twitter.com/intent/tweet?text={{text}}&url={{url}}\"\n }, {\n id: \"pinterest\",\n label: \"Pin it\",\n url: \"http://www.pinterest.com/pin/create/button/?url={{url}}&media={{image_url}}&description={{text}}\"\n }, {\n id: \"download\",\n label: \"Download image\",\n url: \"{{raw_image_url}}\",\n download: !0\n }],\n getImageURLForShare: function () {\n return a.currItem.src || \"\"\n },\n getPageURLForShare: function () {\n return window.location.href\n },\n getTextForShare: function () {\n return a.currItem.title || \"\"\n },\n indexIndicatorSep: \" / \",\n fitControlsWidth: 1200\n },\n A = function (a) {\n if (r) return !0;\n a = a || window.event, q.timeToIdle && q.mouseUsed && !k && K();\n for (var c, d, e = a.target || a.srcElement, f = e.getAttribute(\"class\") || \"\", g = 0; g < S.length; g++) c = S[g], c.onTap && f.indexOf(\"pswp__\" + c.name) > -1 && (c.onTap(), d = !0);\n if (d) {\n a.stopPropagation && a.stopPropagation(), r = !0;\n var h = b.features.isOldAndroid ? 600 : 30;\n s = setTimeout(function () {\n r = !1\n }, h)\n }\n },\n B = function () {\n return !a.likelyTouchDevice || q.mouseUsed || screen.width > q.fitControlsWidth\n },\n C = function (a, c, d) {\n b[(d ? \"add\" : \"remove\") + \"Class\"](a, \"pswp__\" + c)\n },\n D = function () {\n var a = 1 === q.getNumItemsFn();\n a !== p && (C(d, \"ui--one-slide\", a), p = a)\n },\n E = function () {\n C(i, \"share-modal--hidden\", y)\n },\n F = function () {\n return y = !y, y ? (b.removeClass(i, \"pswp__share-modal--fade-in\"), setTimeout(function () {\n y && E()\n }, 300)) : (E(), setTimeout(function () {\n y || b.addClass(i, \"pswp__share-modal--fade-in\")\n }, 30)), y || H(), !1\n },\n G = function (b) {\n b = b || window.event;\n var c = b.target || b.srcElement;\n return a.shout(\"shareLinkClick\", b, c), c.href ? c.hasAttribute(\"download\") ? !0 : (window.open(c.href, \"pswp_share\", \"scrollbars=yes,resizable=yes,toolbar=no,location=yes,width=550,height=420,top=100,left=\" + (window.screen ? Math.round(screen.width / 2 - 275) : 100)), y || F(), !1) : !1\n },\n H = function () {\n for (var a, b, c, d, e, f = \"\", g = 0; g < q.shareButtons.length; g++) a = q.shareButtons[g], c = q.getImageURLForShare(a), d = q.getPageURLForShare(a), e = q.getTextForShare(a), b = a.url.replace(\"{{url}}\", encodeURIComponent(d)).replace(\"{{image_url}}\", encodeURIComponent(c)).replace(\"{{raw_image_url}}\", c).replace(\"{{text}}\", encodeURIComponent(e)), f += '\", q.parseShareButtonOut && (f = q.parseShareButtonOut(a, f));\n i.children[0].innerHTML = f, i.children[0].onclick = G\n },\n I = function (a) {\n for (var c = 0; c < q.closeElClasses.length; c++)\n if (b.hasClass(a, \"pswp__\" + q.closeElClasses[c])) return !0\n },\n J = 0,\n K = function () {\n clearTimeout(u), J = 0, k && v.setIdle(!1)\n },\n L = function (a) {\n a = a ? a : window.event;\n var b = a.relatedTarget || a.toElement;\n b && \"HTML\" !== b.nodeName || (clearTimeout(u), u = setTimeout(function () {\n v.setIdle(!0)\n }, q.timeToIdleOutside))\n },\n M = function () {\n q.fullscreenEl && !b.features.isOldAndroid && (c || (c = v.getFullscreenAPI()), c ? (b.bind(document, c.eventK, v.updateFullscreen), v.updateFullscreen(), b.addClass(a.template, \"pswp--supports-fs\")) : b.removeClass(a.template, \"pswp--supports-fs\"))\n },\n N = function () {\n q.preloaderEl && (O(!0), l(\"beforeChange\", function () {\n clearTimeout(o), o = setTimeout(function () {\n a.currItem && a.currItem.loading ? (!a.allowProgressiveImg() || a.currItem.img && !a.currItem.img.naturalWidth) && O(!1) : O(!0)\n }, q.loadingIndicatorDelay)\n }), l(\"imageLoadComplete\", function (b, c) {\n a.currItem === c && O(!0)\n }))\n },\n O = function (a) {\n n !== a && (C(m, \"preloader--active\", !a), n = a)\n },\n P = function (a) {\n var c = a.vGap;\n if (B()) {\n var g = q.barsSize;\n if (q.captionEl && \"auto\" === g.bottom)\n if (f || (f = b.createEl(\"pswp__caption pswp__caption--fake\"), f.appendChild(b.createEl(\"pswp__caption__center\")), d.insertBefore(f, e), b.addClass(d, \"pswp__ui--fit\")), q.addCaptionHTMLFn(a, f, !0)) {\n var h = f.clientHeight;\n c.bottom = parseInt(h, 10) || 44\n } else c.bottom = g.top;\n else c.bottom = \"auto\" === g.bottom ? 0 : g.bottom;\n c.top = g.top\n } else c.top = c.bottom = 0\n },\n Q = function () {\n q.timeToIdle && l(\"mouseUsed\", function () {\n b.bind(document, \"mousemove\", K), b.bind(document, \"mouseout\", L), t = setInterval(function () {\n J++, 2 === J && v.setIdle(!0)\n }, q.timeToIdle / 2)\n })\n },\n R = function () {\n l(\"onVerticalDrag\", function (a) {\n x && .95 > a ? v.hideControls() : !x && a >= .95 && v.showControls()\n });\n var a;\n l(\"onPinchClose\", function (b) {\n x && .9 > b ? (v.hideControls(), a = !0) : a && !x && b > .9 && v.showControls()\n }), l(\"zoomGestureEnded\", function () {\n a = !1, a && !x && v.showControls()\n })\n },\n S = [{\n name: \"caption\",\n option: \"captionEl\",\n onInit: function (a) {\n e = a\n }\n }, {\n name: \"share-modal\",\n option: \"shareEl\",\n onInit: function (a) {\n i = a\n },\n onTap: function () {\n F()\n }\n }, {\n name: \"button--share\",\n option: \"shareEl\",\n onInit: function (a) {\n h = a\n },\n onTap: function () {\n F()\n }\n }, {\n name: \"button--zoom\",\n option: \"zoomEl\",\n onTap: a.toggleDesktopZoom\n }, {\n name: \"counter\",\n option: \"counterEl\",\n onInit: function (a) {\n g = a\n }\n }, {\n name: \"button--close\",\n option: \"closeEl\",\n onTap: a.close\n }, {\n name: \"button--arrow--left\",\n option: \"arrowEl\",\n onTap: a.prev\n }, {\n name: \"button--arrow--right\",\n option: \"arrowEl\",\n onTap: a.next\n }, {\n name: \"button--fs\",\n option: \"fullscreenEl\",\n onTap: function () {\n c.isFullscreen() ? c.exit() : c.enter()\n }\n }, {\n name: \"preloader\",\n option: \"preloaderEl\",\n onInit: function (a) {\n m = a\n }\n }],\n T = function () {\n var a, c, e, f = function (d) {\n if (d)\n for (var f = d.length, g = 0; f > g; g++) {\n a = d[g], c = a.className;\n for (var h = 0; h < S.length; h++) e = S[h], c.indexOf(\"pswp__\" + e.name) > -1 && (q[e.option] ? (b.removeClass(a, \"pswp__element--disabled\"), e.onInit && e.onInit(a)) : b.addClass(a, \"pswp__element--disabled\"))\n }\n };\n f(d.children);\n var g = b.getChildByClass(d, \"pswp__top-bar\");\n g && f(g.children)\n };\n v.init = function () {\n b.extend(a.options, z, !0), q = a.options, d = b.getChildByClass(a.scrollWrap, \"pswp__ui\"), l = a.listen, R(), l(\"beforeChange\", v.update), l(\"doubleTap\", function (b) {\n var c = a.currItem.initialZoomLevel;\n a.getZoomLevel() !== c ? a.zoomTo(c, b, 333) : a.zoomTo(q.getDoubleTapZoom(!1, a.currItem), b, 333)\n }), l(\"preventDragEvent\", function (a, b, c) {\n var d = a.target || a.srcElement;\n d && d.getAttribute(\"class\") && a.type.indexOf(\"mouse\") > -1 && (d.getAttribute(\"class\").indexOf(\"__caption\") > 0 || /(SMALL|STRONG|EM)/i.test(d.tagName)) && (c.prevent = !1)\n }), l(\"bindEvents\", function () {\n b.bind(d, \"pswpTap click\", A), b.bind(a.scrollWrap, \"pswpTap\", v.onGlobalTap), a.likelyTouchDevice || b.bind(a.scrollWrap, \"mouseover\", v.onMouseOver)\n }), l(\"unbindEvents\", function () {\n y || F(), t && clearInterval(t), b.unbind(document, \"mouseout\", L), b.unbind(document, \"mousemove\", K), b.unbind(d, \"pswpTap click\", A), b.unbind(a.scrollWrap, \"pswpTap\", v.onGlobalTap), b.unbind(a.scrollWrap, \"mouseover\", v.onMouseOver), c && (b.unbind(document, c.eventK, v.updateFullscreen), c.isFullscreen() && (q.hideAnimationDuration = 0, c.exit()), c = null)\n }), l(\"destroy\", function () {\n q.captionEl && (f && d.removeChild(f), b.removeClass(e, \"pswp__caption--empty\")), i && (i.children[0].onclick = null), b.removeClass(d, \"pswp__ui--over-close\"), b.addClass(d, \"pswp__ui--hidden\"), v.setIdle(!1)\n }), q.showAnimationDuration || b.removeClass(d, \"pswp__ui--hidden\"), l(\"initialZoomIn\", function () {\n q.showAnimationDuration && b.removeClass(d, \"pswp__ui--hidden\")\n }), l(\"initialZoomOut\", function () {\n b.addClass(d, \"pswp__ui--hidden\")\n }), l(\"parseVerticalMargin\", P), T(), q.shareEl && h && i && (y = !0), D(), Q(), M(), N()\n }, v.setIdle = function (a) {\n k = a, C(d, \"ui--idle\", a)\n }, v.update = function () {\n x && a.currItem ? (v.updateIndexIndicator(), q.captionEl && (q.addCaptionHTMLFn(a.currItem, e), C(e, \"caption--empty\", !a.currItem.title)), w = !0) : w = !1, y || F(), D()\n }, v.updateFullscreen = function (d) {\n d && setTimeout(function () {\n a.setScrollOffset(0, b.getScrollY())\n }, 50), b[(c.isFullscreen() ? \"add\" : \"remove\") + \"Class\"](a.template, \"pswp--fs\")\n }, v.updateIndexIndicator = function () {\n q.counterEl && (g.innerHTML = a.getCurrentIndex() + 1 + q.indexIndicatorSep + q.getNumItemsFn())\n }, v.onGlobalTap = function (c) {\n c = c || window.event;\n var d = c.target || c.srcElement;\n if (!r)\n if (c.detail && \"mouse\" === c.detail.pointerType) {\n if (I(d)) return void a.close();\n b.hasClass(d, \"pswp__img\") && (1 === a.getZoomLevel() && a.getZoomLevel() <= a.currItem.fitRatio ? q.clickToCloseNonZoomable && a.close() : a.toggleDesktopZoom(c.detail.releasePoint))\n } else if (q.tapToToggleControls && (x ? v.hideControls() : v.showControls()), q.tapToClose && (b.hasClass(d, \"pswp__img\") || I(d))) return void a.close()\n }, v.onMouseOver = function (a) {\n a = a || window.event;\n var b = a.target || a.srcElement;\n C(d, \"ui--over-close\", I(b))\n }, v.hideControls = function () {\n b.addClass(d, \"pswp__ui--hidden\"), x = !1\n }, v.showControls = function () {\n x = !0, w || v.update(), b.removeClass(d, \"pswp__ui--hidden\")\n }, v.supportsFullscreen = function () {\n var a = document;\n return !!(a.exitFullscreen || a.mozCancelFullScreen || a.webkitExitFullscreen || a.msExitFullscreen)\n }, v.getFullscreenAPI = function () {\n var b, c = document.documentElement,\n d = \"fullscreenchange\";\n return c.requestFullscreen ? b = {\n enterK: \"requestFullscreen\",\n exitK: \"exitFullscreen\",\n elementK: \"fullscreenElement\",\n eventK: d\n } : c.mozRequestFullScreen ? b = {\n enterK: \"mozRequestFullScreen\",\n exitK: \"mozCancelFullScreen\",\n elementK: \"mozFullScreenElement\",\n eventK: \"moz\" + d\n } : c.webkitRequestFullscreen ? b = {\n enterK: \"webkitRequestFullscreen\",\n exitK: \"webkitExitFullscreen\",\n elementK: \"webkitFullscreenElement\",\n eventK: \"webkit\" + d\n } : c.msRequestFullscreen && (b = {\n enterK: \"msRequestFullscreen\",\n exitK: \"msExitFullscreen\",\n elementK: \"msFullscreenElement\",\n eventK: \"MSFullscreenChange\"\n }), b && (b.enter = function () {\n return j = q.closeOnScroll, q.closeOnScroll = !1, \"webkitRequestFullscreen\" !== this.enterK ? a.template[this.enterK]() : void a.template[this.enterK](Element.ALLOW_KEYBOARD_INPUT)\n }, b.exit = function () {\n return q.closeOnScroll = j, document[this.exitK]()\n }, b.isFullscreen = function () {\n return document[this.elementK]\n }), b\n }\n };\n return a\n});\n\nvar initPhotoSwipeFromDOM = function (gallerySelector) {\n\n // parse slide data (url, title, size ...) from DOM elements \n // (children of gallerySelector)\n var parseThumbnailElements = function (el) {\n var thumbElements = el.childNodes,\n numNodes = thumbElements.length,\n items = [],\n figureEl,\n linkEl,\n size,\n item;\n\n for (var i = 0; i < numNodes; i++) {\n\n figureEl = thumbElements[i]; //
      element\n\n // include only element nodes \n if (figureEl.nodeType !== 1) {\n continue;\n }\n\n linkEl = figureEl.children[0]; // element\n\n size = linkEl.getAttribute('data-size').split('x');\n\n // create slide object\n item = {\n src: linkEl.getAttribute('href'),\n w: parseInt(size[0], 10),\n h: parseInt(size[1], 10)\n };\n\n\n\n if (figureEl.children.length > 1) {\n //
      content\n item.title = figureEl.children[1].innerHTML;\n }\n\n if (linkEl.children.length > 0) {\n // thumbnail element, retrieving thumbnail url\n item.msrc = linkEl.children[0].getAttribute('src');\n }\n\n item.el = figureEl; // save link to element for getThumbBoundsFn\n items.push(item);\n }\n\n return items;\n };\n\n // find nearest parent element\n var closest = function closest(el, fn) {\n return el && (fn(el) ? el : closest(el.parentNode, fn));\n };\n\n // triggers when user clicks on thumbnail\n var onThumbnailsClick = function (e) {\n e = e || window.event;\n e.preventDefault ? e.preventDefault() : e.returnValue = false;\n\n var eTarget = e.target || e.srcElement;\n\n // find root element of slide\n var clickedListItem = closest(eTarget, function (el) {\n return (el.tagName && el.tagName.toUpperCase() === 'FIGURE');\n });\n\n if (!clickedListItem) {\n return;\n }\n\n // find index of clicked item by looping through all child nodes\n // alternatively, you may define index via data- attribute\n var clickedGallery = clickedListItem.parentNode,\n childNodes = clickedListItem.parentNode.childNodes,\n numChildNodes = childNodes.length,\n nodeIndex = 0,\n index;\n\n for (var i = 0; i < numChildNodes; i++) {\n if (childNodes[i].nodeType !== 1) {\n continue;\n }\n\n if (childNodes[i] === clickedListItem) {\n index = nodeIndex;\n break;\n }\n nodeIndex++;\n }\n\n\n\n if (index >= 0) {\n // open PhotoSwipe if valid index found\n openPhotoSwipe(index, clickedGallery);\n }\n return false;\n };\n\n // parse picture index and gallery index from URL (#&pid=1&gid=2)\n var photoswipeParseHash = function () {\n var hash = window.location.hash.substring(1),\n params = {};\n\n if (hash.length < 5) {\n return params;\n }\n\n var vars = hash.split('&');\n for (var i = 0; i < vars.length; i++) {\n if (!vars[i]) {\n continue;\n }\n var pair = vars[i].split('=');\n if (pair.length < 2) {\n continue;\n }\n params[pair[0]] = pair[1];\n }\n\n if (params.gid) {\n params.gid = parseInt(params.gid, 10);\n }\n\n return params;\n };\n\n var openPhotoSwipe = function (index, galleryElement, disableAnimation, fromURL) {\n var pswpElement = document.querySelectorAll('.pswp')[0],\n gallery,\n options,\n items;\n\n items = parseThumbnailElements(galleryElement);\n\n // define options (if needed)\n options = {\n\n // define gallery index (for URL)\n galleryUID: galleryElement.getAttribute('data-pswp-uid'),\n\n getThumbBoundsFn: function (index) {\n // See Options -> getThumbBoundsFn section of documentation for more info\n var thumbnail = items[index].el.getElementsByTagName('img')[0], // find thumbnail\n pageYScroll = window.pageYOffset || document.documentElement.scrollTop,\n rect = thumbnail.getBoundingClientRect();\n\n return {\n x: rect.left,\n y: rect.top + pageYScroll,\n w: rect.width\n };\n }\n\n };\n\n // PhotoSwipe opened from URL\n if (fromURL) {\n if (options.galleryPIDs) {\n // parse real index when custom PIDs are used \n // http://photoswipe.com/documentation/faq.html#custom-pid-in-url\n for (var j = 0; j < items.length; j++) {\n if (items[j].pid == index) {\n options.index = j;\n break;\n }\n }\n } else {\n // in URL indexes start from 1\n options.index = parseInt(index, 10) - 1;\n }\n } else {\n options.index = parseInt(index, 10);\n }\n\n // exit if index not found\n if (isNaN(options.index)) {\n return;\n }\n\n if (disableAnimation) {\n options.showAnimationDuration = 0;\n }\n\n // Pass data to PhotoSwipe and initialize it\n gallery = new PhotoSwipe(pswpElement, PhotoSwipeUI_Default, items, options);\n gallery.init();\n };\n\n // loop through all gallery elements and bind events\n var galleryElements = document.querySelectorAll(gallerySelector);\n\n for (var i = 0, l = galleryElements.length; i < l; i++) {\n galleryElements[i].setAttribute('data-pswp-uid', i + 1);\n galleryElements[i].onclick = onThumbnailsClick;\n }\n\n // Parse URL and open gallery if it contains #&pid=3&gid=1\n var hashData = photoswipeParseHash();\n if (hashData.pid && hashData.gid) {\n openPhotoSwipe(hashData.pid, galleryElements[hashData.gid - 1], true, true);\n }\n};\n\n// execute above function\ninitPhotoSwipeFromDOM('.mdb-lightbox');","/*!\n * Date picker for pickadate.js v3.6.3\n * http://amsul.github.io/pickadate.js/date.htm\n */\n\n(function (factory) {\n\n // AMD.\n if (typeof define == 'function' && define.amd)\n define(['picker', 'jquery'], factory)\n\n // Node.js/browserify.\n else if (typeof exports == 'object')\n module.exports = factory(require('./picker.js'), require('jquery'))\n\n // Browser globals.\n else factory(Picker, jQuery)\n\n}(function (Picker, $) {\n\n\n /**\n * Globals and constants\n */\n var DAYS_IN_WEEK = 7,\n WEEKS_IN_CALENDAR = 6,\n _ = Picker._\n\n\n\n /**\n * The date picker constructor\n */\n function DatePicker(picker, settings) {\n\n var calendar = this,\n element = picker.$node[0],\n elementValue = element.value,\n elementDataValue = picker.$node.data('value'),\n valueString = elementDataValue || elementValue,\n formatString = elementDataValue ? settings.formatSubmit : settings.format,\n isRTL = function () {\n\n return element.currentStyle ?\n\n // For IE.\n element.currentStyle.direction == 'rtl' :\n\n // For normal browsers.\n getComputedStyle(picker.$root[0]).direction == 'rtl'\n }\n\n calendar.settings = settings\n calendar.$node = picker.$node\n\n // The queue of methods that will be used to build item objects.\n calendar.queue = {\n min: 'measure create',\n max: 'measure create',\n now: 'now create',\n select: 'parse create validate',\n highlight: 'parse navigate create validate',\n view: 'parse create validate viewset',\n disable: 'deactivate',\n enable: 'activate'\n }\n\n // The component's item object.\n calendar.item = {}\n\n calendar.item.clear = null\n calendar.item.disable = (settings.disable || []).slice(0)\n calendar.item.enable = -(function (collectionDisabled) {\n return collectionDisabled[0] === true ? collectionDisabled.shift() : -1\n })(calendar.item.disable)\n\n calendar.\n set('min', settings.min).\n set('max', settings.max).\n set('now')\n\n // When there’s a value, set the `select`, which in turn\n // also sets the `highlight` and `view`.\n if (valueString) {\n calendar.set('select', valueString, {\n format: formatString,\n defaultValue: true\n })\n }\n\n // If there’s no value, default to highlighting “today”.\n else {\n calendar.\n set('select', null).\n set('highlight', calendar.item.now)\n }\n\n\n // The keycode to movement mapping.\n calendar.key = {\n 40: 7, // Down\n 38: -7, // Up\n 39: function () {\n return isRTL() ? -1 : 1\n }, // Right\n 37: function () {\n return isRTL() ? 1 : -1\n }, // Left\n go: function (timeChange) {\n var highlightedObject = calendar.item.highlight,\n targetDate = new Date(highlightedObject.year, highlightedObject.month, highlightedObject.date + timeChange)\n calendar.set(\n 'highlight',\n targetDate, {\n interval: timeChange\n }\n )\n this.render()\n }\n }\n\n\n // Bind some picker events.\n picker.\n on('render', function () {\n picker.$root.find('.' + settings.klass.selectMonth).on('change', function () {\n var value = this.value\n if (value) {\n picker.set('highlight', [picker.get('view').year, value, picker.get('highlight').date])\n picker.$root.find('.' + settings.klass.selectMonth).trigger('focus')\n }\n })\n picker.$root.find('.' + settings.klass.selectYear).on('change', function () {\n var value = this.value\n if (value) {\n picker.set('highlight', [value, picker.get('view').month, picker.get('highlight').date])\n picker.$root.find('.' + settings.klass.selectYear).trigger('focus')\n }\n })\n }, 1).\n on('open', function () {\n var includeToday = ''\n if (calendar.disabled(calendar.get('now'))) {\n includeToday = ':not(.' + settings.klass.buttonToday + ')'\n }\n picker.$root.find('button' + includeToday + ', select').attr('disabled', false)\n }, 1).\n on('close', function () {\n picker.$root.find('button, select').attr('disabled', true)\n }, 1)\n\n } //DatePicker\n\n\n /**\n * Set a datepicker item object.\n */\n DatePicker.prototype.set = function (type, value, options) {\n\n var calendar = this,\n calendarItem = calendar.item\n\n // If the value is `null` just set it immediately.\n if (value === null) {\n if (type == 'clear') type = 'select'\n calendarItem[type] = value\n return calendar\n }\n\n // Otherwise go through the queue of methods, and invoke the functions.\n // Update this as the time unit, and set the final value as this item.\n // * In the case of `enable`, keep the queue but set `disable` instead.\n // And in the case of `flip`, keep the queue but set `enable` instead.\n calendarItem[(type == 'enable' ? 'disable' : type == 'flip' ? 'enable' : type)] = calendar.queue[type].split(' ').map(function (method) {\n value = calendar[method](type, value, options)\n return value\n }).pop()\n\n // Check if we need to cascade through more updates.\n if (type == 'select') {\n calendar.set('highlight', calendarItem.select, options)\n } else if (type == 'highlight') {\n calendar.set('view', calendarItem.highlight, options)\n } else if (type.match(/^(flip|min|max|disable|enable)$/)) {\n if (calendarItem.select && calendar.disabled(calendarItem.select)) {\n calendar.set('select', calendarItem.select, options)\n }\n if (calendarItem.highlight && calendar.disabled(calendarItem.highlight)) {\n calendar.set('highlight', calendarItem.highlight, options)\n }\n }\n\n return calendar\n } //DatePicker.prototype.set\n\n\n /**\n * Get a datepicker item object.\n */\n DatePicker.prototype.get = function (type) {\n return this.item[type]\n } //DatePicker.prototype.get\n\n\n /**\n * Create a picker date object.\n */\n DatePicker.prototype.create = function (type, value, options) {\n\n var isInfiniteValue,\n calendar = this\n\n // If there’s no value, use the type as the value.\n value = value === undefined ? type : value\n\n\n // If it’s infinity, update the value.\n if (value == -Infinity || value == Infinity) {\n isInfiniteValue = value\n }\n\n // If it’s an object, use the native date object.\n else if ($.isPlainObject(value) && _.isInteger(value.pick)) {\n value = value.obj\n }\n\n // If it’s an array, convert it into a date and make sure\n // that it’s a valid date – otherwise default to today.\n else if ($.isArray(value)) {\n value = new Date(value[0], value[1], value[2])\n value = _.isDate(value) ? value : calendar.create().obj\n }\n\n // If it’s a number or date object, make a normalized date.\n else if (_.isInteger(value) || _.isDate(value)) {\n value = calendar.normalize(new Date(value), options)\n }\n\n // If it’s a literal true or any other case, set it to now.\n else /*if ( value === true )*/ {\n value = calendar.now(type, value, options)\n }\n\n // Return the compiled object.\n return {\n year: isInfiniteValue || value.getFullYear(),\n month: isInfiniteValue || value.getMonth(),\n date: isInfiniteValue || value.getDate(),\n day: isInfiniteValue || value.getDay(),\n obj: isInfiniteValue || value,\n pick: isInfiniteValue || value.getTime()\n }\n } //DatePicker.prototype.create\n\n\n /**\n * Create a range limit object using an array, date object,\n * literal “true”, or integer relative to another time.\n */\n DatePicker.prototype.createRange = function (from, to) {\n\n var calendar = this,\n createDate = function (date) {\n if (date === true || $.isArray(date) || _.isDate(date)) {\n return calendar.create(date)\n }\n return date\n }\n\n // Create objects if possible.\n if (!_.isInteger(from)) {\n from = createDate(from)\n }\n if (!_.isInteger(to)) {\n to = createDate(to)\n }\n\n // Create relative dates.\n if (_.isInteger(from) && $.isPlainObject(to)) {\n from = [to.year, to.month, to.date + from];\n } else if (_.isInteger(to) && $.isPlainObject(from)) {\n to = [from.year, from.month, from.date + to];\n }\n\n return {\n from: createDate(from),\n to: createDate(to)\n }\n } //DatePicker.prototype.createRange\n\n\n /**\n * Check if a date unit falls within a date range object.\n */\n DatePicker.prototype.withinRange = function (range, dateUnit) {\n range = this.createRange(range.from, range.to)\n return dateUnit.pick >= range.from.pick && dateUnit.pick <= range.to.pick\n }\n\n\n /**\n * Check if two date range objects overlap.\n */\n DatePicker.prototype.overlapRanges = function (one, two) {\n\n var calendar = this\n\n // Convert the ranges into comparable dates.\n one = calendar.createRange(one.from, one.to)\n two = calendar.createRange(two.from, two.to)\n\n return calendar.withinRange(one, two.from) || calendar.withinRange(one, two.to) ||\n calendar.withinRange(two, one.from) || calendar.withinRange(two, one.to)\n }\n\n\n /**\n * Get the date today.\n */\n DatePicker.prototype.now = function (type, value, options) {\n value = new Date()\n if (options && options.rel) {\n value.setDate(value.getDate() + options.rel)\n }\n return this.normalize(value, options)\n }\n\n\n /**\n * Navigate to next/prev month.\n */\n DatePicker.prototype.navigate = function (type, value, options) {\n\n var targetDateObject,\n targetYear,\n targetMonth,\n targetDate,\n isTargetArray = $.isArray(value),\n isTargetObject = $.isPlainObject(value),\n viewsetObject = this.item.view\n /*,\n safety = 100*/\n\n\n if (isTargetArray || isTargetObject) {\n\n if (isTargetObject) {\n targetYear = value.year\n targetMonth = value.month\n targetDate = value.date\n } else {\n targetYear = +value[0]\n targetMonth = +value[1]\n targetDate = +value[2]\n }\n\n // If we’re navigating months but the view is in a different\n // month, navigate to the view’s year and month.\n if (options && options.nav && viewsetObject && viewsetObject.month !== targetMonth) {\n targetYear = viewsetObject.year\n targetMonth = viewsetObject.month\n }\n\n // Figure out the expected target year and month.\n targetDateObject = new Date(targetYear, targetMonth + (options && options.nav ? options.nav : 0), 1)\n targetYear = targetDateObject.getFullYear()\n targetMonth = targetDateObject.getMonth()\n\n // If the month we’re going to doesn’t have enough days,\n // keep decreasing the date until we reach the month’s last date.\n while ( /*safety &&*/ new Date(targetYear, targetMonth, targetDate).getMonth() !== targetMonth) {\n targetDate -= 1\n /*safety -= 1\n if ( !safety ) {\n throw 'Fell into an infinite loop while navigating to ' + new Date( targetYear, targetMonth, targetDate ) + '.'\n }*/\n }\n\n value = [targetYear, targetMonth, targetDate]\n }\n\n return value\n } //DatePicker.prototype.navigate\n\n\n /**\n * Normalize a date by setting the hours to midnight.\n */\n DatePicker.prototype.normalize = function (value /*, options*/ ) {\n value.setHours(0, 0, 0, 0)\n return value\n }\n\n\n /**\n * Measure the range of dates.\n */\n DatePicker.prototype.measure = function (type, value /*, options*/ ) {\n\n var calendar = this\n\n // If it's an integer, get a date relative to today.\n if (_.isInteger(value)) {\n value = calendar.now(type, value, {\n rel: value\n })\n }\n\n // If it’s anything false-y, remove the limits.\n else if (!value) {\n value = type == 'min' ? -Infinity : Infinity\n }\n\n // If it’s a string, parse it.\n else if (typeof value == 'string') {\n value = calendar.parse(type, value)\n }\n\n return value\n } ///DatePicker.prototype.measure\n\n\n /**\n * Create a viewset object based on navigation.\n */\n DatePicker.prototype.viewset = function (type, dateObject /*, options*/ ) {\n return this.create([dateObject.year, dateObject.month, 1])\n }\n\n\n /**\n * Validate a date as enabled and shift if needed.\n */\n DatePicker.prototype.validate = function (type, dateObject, options) {\n\n var calendar = this,\n\n // Keep a reference to the original date.\n originalDateObject = dateObject,\n\n // Make sure we have an interval.\n interval = options && options.interval ? options.interval : 1,\n\n // Check if the calendar enabled dates are inverted.\n isFlippedBase = calendar.item.enable === -1,\n\n // Check if we have any enabled dates after/before now.\n hasEnabledBeforeTarget, hasEnabledAfterTarget,\n\n // The min & max limits.\n minLimitObject = calendar.item.min,\n maxLimitObject = calendar.item.max,\n\n // Check if we’ve reached the limit during shifting.\n reachedMin, reachedMax,\n\n // Check if the calendar is inverted and at least one weekday is enabled.\n hasEnabledWeekdays = isFlippedBase && calendar.item.disable.filter(function (value) {\n\n // If there’s a date, check where it is relative to the target.\n if ($.isArray(value)) {\n var dateTime = calendar.create(value).pick\n if (dateTime < dateObject.pick) hasEnabledBeforeTarget = true\n else if (dateTime > dateObject.pick) hasEnabledAfterTarget = true\n }\n\n // Return only integers for enabled weekdays.\n return _.isInteger(value)\n }).length\n /*,\n\n safety = 100*/\n\n\n\n // Cases to validate for:\n // [1] Not inverted and date disabled.\n // [2] Inverted and some dates enabled.\n // [3] Not inverted and out of range.\n //\n // Cases to **not** validate for:\n // • Navigating months.\n // • Not inverted and date enabled.\n // • Inverted and all dates disabled.\n // • ..and anything else.\n if (!options || (!options.nav && !options.defaultValue))\n if (\n /* 1 */\n (!isFlippedBase && calendar.disabled(dateObject)) ||\n /* 2 */\n (isFlippedBase && calendar.disabled(dateObject) && (hasEnabledWeekdays || hasEnabledBeforeTarget || hasEnabledAfterTarget)) ||\n /* 3 */\n (!isFlippedBase && (dateObject.pick <= minLimitObject.pick || dateObject.pick >= maxLimitObject.pick))\n ) {\n\n\n // When inverted, flip the direction if there aren’t any enabled weekdays\n // and there are no enabled dates in the direction of the interval.\n if (isFlippedBase && !hasEnabledWeekdays && ((!hasEnabledAfterTarget && interval > 0) || (!hasEnabledBeforeTarget && interval < 0))) {\n interval *= -1\n }\n\n\n // Keep looping until we reach an enabled date.\n while ( /*safety &&*/ calendar.disabled(dateObject)) {\n\n /*safety -= 1\n if ( !safety ) {\n throw 'Fell into an infinite loop while validating ' + dateObject.obj + '.'\n }*/\n\n\n // If we’ve looped into the next/prev month with a large interval, return to the original date and flatten the interval.\n if (Math.abs(interval) > 1 && (dateObject.month < originalDateObject.month || dateObject.month > originalDateObject.month)) {\n dateObject = originalDateObject\n interval = interval > 0 ? 1 : -1\n }\n\n\n // If we’ve reached the min/max limit, reverse the direction, flatten the interval and set it to the limit.\n if (dateObject.pick <= minLimitObject.pick) {\n reachedMin = true\n interval = 1\n dateObject = calendar.create([\n minLimitObject.year,\n minLimitObject.month,\n minLimitObject.date + (dateObject.pick === minLimitObject.pick ? 0 : -1)\n ])\n } else if (dateObject.pick >= maxLimitObject.pick) {\n reachedMax = true\n interval = -1\n dateObject = calendar.create([\n maxLimitObject.year,\n maxLimitObject.month,\n maxLimitObject.date + (dateObject.pick === maxLimitObject.pick ? 0 : 1)\n ])\n }\n\n\n // If we’ve reached both limits, just break out of the loop.\n if (reachedMin && reachedMax) {\n break\n }\n\n\n // Finally, create the shifted date using the interval and keep looping.\n dateObject = calendar.create([dateObject.year, dateObject.month, dateObject.date + interval])\n }\n\n } //endif\n\n\n // Return the date object settled on.\n return dateObject\n } //DatePicker.prototype.validate\n\n\n /**\n * Check if a date is disabled.\n */\n DatePicker.prototype.disabled = function (dateToVerify) {\n\n var\n calendar = this,\n\n // Filter through the disabled dates to check if this is one.\n isDisabledMatch = calendar.item.disable.filter(function (dateToDisable) {\n\n // If the date is a number, match the weekday with 0index and `firstDay` check.\n if (_.isInteger(dateToDisable)) {\n return dateToVerify.day === (calendar.settings.firstDay ? dateToDisable : dateToDisable - 1) % 7\n }\n\n // If it’s an array or a native JS date, create and match the exact date.\n if ($.isArray(dateToDisable) || _.isDate(dateToDisable)) {\n return dateToVerify.pick === calendar.create(dateToDisable).pick\n }\n\n // If it’s an object, match a date within the “from” and “to” range.\n if ($.isPlainObject(dateToDisable)) {\n return calendar.withinRange(dateToDisable, dateToVerify)\n }\n })\n\n // If this date matches a disabled date, confirm it’s not inverted.\n isDisabledMatch = isDisabledMatch.length && !isDisabledMatch.filter(function (dateToDisable) {\n return $.isArray(dateToDisable) && dateToDisable[3] == 'inverted' ||\n $.isPlainObject(dateToDisable) && dateToDisable.inverted\n }).length\n\n // Check the calendar “enabled” flag and respectively flip the\n // disabled state. Then also check if it’s beyond the min/max limits.\n return calendar.item.enable === -1 ? !isDisabledMatch : isDisabledMatch ||\n dateToVerify.pick < calendar.item.min.pick ||\n dateToVerify.pick > calendar.item.max.pick\n\n } //DatePicker.prototype.disabled\n\n\n /**\n * Parse a string into a usable type.\n */\n DatePicker.prototype.parse = function (type, value, options) {\n\n var calendar = this,\n parsingObject = {}\n\n // If it’s already parsed, we’re good.\n if (!value || typeof value != 'string') {\n return value\n }\n\n // We need a `.format` to parse the value with.\n if (!(options && options.format)) {\n options = options || {}\n options.format = calendar.settings.format\n }\n\n // Convert the format into an array and then map through it.\n calendar.formats.toArray(options.format).map(function (label) {\n\n var\n // Grab the formatting label.\n formattingLabel = calendar.formats[label],\n\n // The format length is from the formatting label function or the\n // label length without the escaping exclamation (!) mark.\n formatLength = formattingLabel ? _.trigger(formattingLabel, calendar, [value, parsingObject]) : label.replace(/^!/, '').length\n\n // If there's a format label, split the value up to the format length.\n // Then add it to the parsing object with appropriate label.\n if (formattingLabel) {\n parsingObject[label] = value.substr(0, formatLength)\n }\n\n // Update the value as the substring from format length to end.\n value = value.substr(formatLength)\n })\n\n // Compensate for month 0index.\n return [\n parsingObject.yyyy || parsingObject.yy,\n +(parsingObject.mm || parsingObject.m) - 1,\n parsingObject.dd || parsingObject.d\n ]\n } //DatePicker.prototype.parse\n\n\n /**\n * Various formats to display the object in.\n */\n DatePicker.prototype.formats = (function () {\n\n // Return the length of the first word in a collection.\n function getWordLengthFromCollection(string, collection, dateObject) {\n\n // Grab the first word from the string.\n // Regex pattern from http://stackoverflow.com/q/150033\n var word = string.match(/[^\\x00-\\x7F]+|\\w+/)[0]\n\n // If there's no month index, add it to the date object\n if (!dateObject.mm && !dateObject.m) {\n dateObject.m = collection.indexOf(word) + 1\n }\n\n // Return the length of the word.\n return word.length\n }\n\n // Get the length of the first word in a string.\n function getFirstWordLength(string) {\n return string.match(/\\w+/)[0].length\n }\n\n return {\n\n d: function (string, dateObject) {\n\n // If there's string, then get the digits length.\n // Otherwise return the selected date.\n return string ? _.digits(string) : dateObject.date\n },\n dd: function (string, dateObject) {\n\n // If there's a string, then the length is always 2.\n // Otherwise return the selected date with a leading zero.\n return string ? 2 : _.lead(dateObject.date)\n },\n ddd: function (string, dateObject) {\n\n // If there's a string, then get the length of the first word.\n // Otherwise return the short selected weekday.\n return string ? getFirstWordLength(string) : this.settings.weekdaysShort[dateObject.day]\n },\n dddd: function (string, dateObject) {\n\n // If there's a string, then get the length of the first word.\n // Otherwise return the full selected weekday.\n return string ? getFirstWordLength(string) : this.settings.weekdaysFull[dateObject.day]\n },\n m: function (string, dateObject) {\n\n // If there's a string, then get the length of the digits\n // Otherwise return the selected month with 0index compensation.\n return string ? _.digits(string) : dateObject.month + 1\n },\n mm: function (string, dateObject) {\n\n // If there's a string, then the length is always 2.\n // Otherwise return the selected month with 0index and leading zero.\n return string ? 2 : _.lead(dateObject.month + 1)\n },\n mmm: function (string, dateObject) {\n\n var collection = this.settings.monthsShort\n\n // If there's a string, get length of the relevant month from the short\n // months collection. Otherwise return the selected month from that collection.\n return string ? getWordLengthFromCollection(string, collection, dateObject) : collection[dateObject.month]\n },\n mmmm: function (string, dateObject) {\n\n var collection = this.settings.monthsFull\n\n // If there's a string, get length of the relevant month from the full\n // months collection. Otherwise return the selected month from that collection.\n return string ? getWordLengthFromCollection(string, collection, dateObject) : collection[dateObject.month]\n },\n yy: function (string, dateObject) {\n\n // If there's a string, then the length is always 2.\n // Otherwise return the selected year by slicing out the first 2 digits.\n return string ? 2 : ('' + dateObject.year).slice(2)\n },\n yyyy: function (string, dateObject) {\n\n // If there's a string, then the length is always 4.\n // Otherwise return the selected year.\n return string ? 4 : dateObject.year\n },\n\n // Create an array by splitting the formatting string passed.\n toArray: function (formatString) {\n return formatString.split(/(d{1,4}|m{1,4}|y{4}|yy|!.)/g)\n },\n\n // Format an object into a string using the formatting options.\n toString: function (formatString, itemObject) {\n var calendar = this\n return calendar.formats.toArray(formatString).map(function (label) {\n return _.trigger(calendar.formats[label], calendar, [0, itemObject]) || label.replace(/^!/, '')\n }).join('')\n }\n }\n })() //DatePicker.prototype.formats\n\n\n\n\n /**\n * Check if two date units are the exact.\n */\n DatePicker.prototype.isDateExact = function (one, two) {\n\n var calendar = this\n\n // When we’re working with weekdays, do a direct comparison.\n if (\n (_.isInteger(one) && _.isInteger(two)) ||\n (typeof one == 'boolean' && typeof two == 'boolean')\n ) {\n return one === two\n }\n\n // When we’re working with date representations, compare the “pick” value.\n if (\n (_.isDate(one) || $.isArray(one)) &&\n (_.isDate(two) || $.isArray(two))\n ) {\n return calendar.create(one).pick === calendar.create(two).pick\n }\n\n // When we’re working with range objects, compare the “from” and “to”.\n if ($.isPlainObject(one) && $.isPlainObject(two)) {\n return calendar.isDateExact(one.from, two.from) && calendar.isDateExact(one.to, two.to)\n }\n\n return false\n }\n\n\n /**\n * Check if two date units overlap.\n */\n DatePicker.prototype.isDateOverlap = function (one, two) {\n\n var calendar = this,\n firstDay = calendar.settings.firstDay ? 1 : 0\n\n // When we’re working with a weekday index, compare the days.\n if (_.isInteger(one) && (_.isDate(two) || $.isArray(two))) {\n one = one % 7 + firstDay\n return one === calendar.create(two).day + 1\n }\n if (_.isInteger(two) && (_.isDate(one) || $.isArray(one))) {\n two = two % 7 + firstDay\n return two === calendar.create(one).day + 1\n }\n\n // When we’re working with range objects, check if the ranges overlap.\n if ($.isPlainObject(one) && $.isPlainObject(two)) {\n return calendar.overlapRanges(one, two)\n }\n\n return false\n }\n\n\n /**\n * Flip the “enabled” state.\n */\n DatePicker.prototype.flipEnable = function (val) {\n var itemObject = this.item\n itemObject.enable = val || (itemObject.enable == -1 ? 1 : -1)\n }\n\n\n /**\n * Mark a collection of dates as “disabled”.\n */\n DatePicker.prototype.deactivate = function (type, datesToDisable) {\n\n var calendar = this,\n disabledItems = calendar.item.disable.slice(0)\n\n\n // If we’re flipping, that’s all we need to do.\n if (datesToDisable == 'flip') {\n calendar.flipEnable()\n } else if (datesToDisable === false) {\n calendar.flipEnable(1)\n disabledItems = []\n } else if (datesToDisable === true) {\n calendar.flipEnable(-1)\n disabledItems = []\n }\n\n // Otherwise go through the dates to disable.\n else {\n\n datesToDisable.map(function (unitToDisable) {\n\n var matchFound\n\n // When we have disabled items, check for matches.\n // If something is matched, immediately break out.\n for (var index = 0; index < disabledItems.length; index += 1) {\n if (calendar.isDateExact(unitToDisable, disabledItems[index])) {\n matchFound = true\n break\n }\n }\n\n // If nothing was found, add the validated unit to the collection.\n if (!matchFound) {\n if (\n _.isInteger(unitToDisable) ||\n _.isDate(unitToDisable) ||\n $.isArray(unitToDisable) ||\n ($.isPlainObject(unitToDisable) && unitToDisable.from && unitToDisable.to)\n ) {\n disabledItems.push(unitToDisable)\n }\n }\n })\n }\n\n // Return the updated collection.\n return disabledItems\n } //DatePicker.prototype.deactivate\n\n\n /**\n * Mark a collection of dates as “enabled”.\n */\n DatePicker.prototype.activate = function (type, datesToEnable) {\n\n var calendar = this,\n disabledItems = calendar.item.disable,\n disabledItemsCount = disabledItems.length\n\n // If we’re flipping, that’s all we need to do.\n if (datesToEnable == 'flip') {\n calendar.flipEnable()\n } else if (datesToEnable === true) {\n calendar.flipEnable(1)\n disabledItems = []\n } else if (datesToEnable === false) {\n calendar.flipEnable(-1)\n disabledItems = []\n }\n\n // Otherwise go through the disabled dates.\n else {\n\n datesToEnable.map(function (unitToEnable) {\n\n var matchFound,\n disabledUnit,\n index,\n isExactRange\n\n // Go through the disabled items and try to find a match.\n for (index = 0; index < disabledItemsCount; index += 1) {\n\n disabledUnit = disabledItems[index]\n\n // When an exact match is found, remove it from the collection.\n if (calendar.isDateExact(disabledUnit, unitToEnable)) {\n matchFound = disabledItems[index] = null\n isExactRange = true\n break\n }\n\n // When an overlapped match is found, add the “inverted” state to it.\n else if (calendar.isDateOverlap(disabledUnit, unitToEnable)) {\n if ($.isPlainObject(unitToEnable)) {\n unitToEnable.inverted = true\n matchFound = unitToEnable\n } else if ($.isArray(unitToEnable)) {\n matchFound = unitToEnable\n if (!matchFound[3]) matchFound.push('inverted')\n } else if (_.isDate(unitToEnable)) {\n matchFound = [unitToEnable.getFullYear(), unitToEnable.getMonth(), unitToEnable.getDate(), 'inverted']\n }\n break\n }\n }\n\n // If a match was found, remove a previous duplicate entry.\n if (matchFound)\n for (index = 0; index < disabledItemsCount; index += 1) {\n if (calendar.isDateExact(disabledItems[index], unitToEnable)) {\n disabledItems[index] = null\n break\n }\n }\n\n // In the event that we’re dealing with an exact range of dates,\n // make sure there are no “inverted” dates because of it.\n if (isExactRange)\n for (index = 0; index < disabledItemsCount; index += 1) {\n if (calendar.isDateOverlap(disabledItems[index], unitToEnable)) {\n disabledItems[index] = null\n break\n }\n }\n\n // If something is still matched, add it into the collection.\n if (matchFound) {\n disabledItems.push(matchFound)\n }\n })\n }\n\n // Return the updated collection.\n return disabledItems.filter(function (val) {\n return val != null\n })\n } //DatePicker.prototype.activate\n\n\n /**\n * Create a string for the nodes in the picker.\n */\n DatePicker.prototype.nodes = function (isOpen) {\n\n var\n calendar = this,\n settings = calendar.settings,\n calendarItem = calendar.item,\n nowObject = calendarItem.now,\n selectedObject = calendarItem.select,\n highlightedObject = calendarItem.highlight,\n viewsetObject = calendarItem.view,\n disabledCollection = calendarItem.disable,\n minLimitObject = calendarItem.min,\n maxLimitObject = calendarItem.max,\n\n\n // Create the calendar table head using a copy of weekday labels collection.\n // * We do a copy so we don't mutate the original array.\n tableHead = (function (collection, fullCollection) {\n\n // If the first day should be Monday, move Sunday to the end.\n if (settings.firstDay) {\n collection.push(collection.shift())\n fullCollection.push(fullCollection.shift())\n }\n\n // Create and return the table head group.\n return _.node(\n 'thead',\n _.node(\n 'tr',\n _.group({\n min: 0,\n max: DAYS_IN_WEEK - 1,\n i: 1,\n node: 'th',\n item: function (counter) {\n return [\n collection[counter],\n settings.klass.weekdays,\n 'scope=col title=\"' + fullCollection[counter] + '\"'\n ]\n }\n })\n )\n ) //endreturn\n })((settings.showWeekdaysFull ? settings.weekdaysFull : settings.weekdaysShort).slice(0), settings.weekdaysFull.slice(0)), //tableHead\n\n\n // Create the nav for next/prev month.\n createMonthNav = function (next) {\n\n // Otherwise, return the created month tag.\n return _.node(\n 'button',\n ' ',\n settings.klass['nav' + (next ? 'Next' : 'Prev')] + (\n\n // If the focused month is outside the range, disabled the button.\n (next && viewsetObject.year >= maxLimitObject.year && viewsetObject.month >= maxLimitObject.month) ||\n (!next && viewsetObject.year <= minLimitObject.year && viewsetObject.month <= minLimitObject.month) ?\n ' ' + settings.klass.navDisabled : ''\n ),\n 'data-nav=' + (next || -1) + ' ' +\n _.ariaAttr({\n role: 'button',\n\n controls: calendar.$node[0].id + '_table'\n }) + ' ' +\n 'title=\"' + (next ? settings.labelMonthNext : settings.labelMonthPrev) + '\"'\n ) //endreturn\n }, //createMonthNav\n\n\n // Create the month label.\n createMonthLabel = function () {\n\n var monthsCollection = settings.showMonthsShort ? settings.monthsShort : settings.monthsFull\n\n // If there are months to select, add a dropdown menu.\n if (settings.selectMonths) {\n\n return _.node('select',\n _.group({\n min: 0,\n max: 11,\n i: 1,\n node: 'option',\n item: function (loopedMonth) {\n\n return [\n\n // The looped month and no classes.\n monthsCollection[loopedMonth], 0,\n\n // Set the value and selected index.\n 'value=' + loopedMonth +\n (viewsetObject.month == loopedMonth ? ' selected' : '') +\n (\n (\n (viewsetObject.year == minLimitObject.year && loopedMonth < minLimitObject.month) ||\n (viewsetObject.year == maxLimitObject.year && loopedMonth > maxLimitObject.month)\n ) ?\n ' disabled' : ''\n )\n ]\n }\n }),\n settings.klass.selectMonth,\n (isOpen ? '' : 'disabled') + ' ' +\n _.ariaAttr({\n controls: calendar.$node[0].id + '_table'\n }) + ' ' +\n 'title=\"' + settings.labelMonthSelect + '\"'\n )\n }\n\n // If there's a need for a month selector\n return _.node('div', monthsCollection[viewsetObject.month], settings.klass.month)\n }, //createMonthLabel\n\n\n // Create the year label.\n createYearLabel = function () {\n\n var focusedYear = viewsetObject.year,\n\n // If years selector is set to a literal \"true\", set it to 5. Otherwise\n // divide in half to get half before and half after focused year.\n numberYears = settings.selectYears === true ? 5 : ~~(settings.selectYears / 2)\n\n // If there are years to select, add a dropdown menu.\n if (numberYears) {\n\n var\n minYear = minLimitObject.year,\n maxYear = maxLimitObject.year,\n lowestYear = focusedYear - numberYears,\n highestYear = focusedYear + numberYears\n\n // If the min year is greater than the lowest year, increase the highest year\n // by the difference and set the lowest year to the min year.\n if (minYear > lowestYear) {\n highestYear += minYear - lowestYear\n lowestYear = minYear\n }\n\n // If the max year is less than the highest year, decrease the lowest year\n // by the lower of the two: available and needed years. Then set the\n // highest year to the max year.\n if (maxYear < highestYear) {\n\n var availableYears = lowestYear - minYear,\n neededYears = highestYear - maxYear\n\n lowestYear -= availableYears > neededYears ? neededYears : availableYears\n highestYear = maxYear\n }\n\n return _.node('select',\n _.group({\n min: lowestYear,\n max: highestYear,\n i: 1,\n node: 'option',\n item: function (loopedYear) {\n return [\n\n // The looped year and no classes.\n loopedYear, 0,\n\n // Set the value and selected index.\n 'value=' + loopedYear + (focusedYear == loopedYear ? ' selected' : '')\n ]\n }\n }),\n settings.klass.selectYear,\n (isOpen ? '' : 'disabled') + ' ' + _.ariaAttr({\n controls: calendar.$node[0].id + '_table'\n }) + ' ' +\n 'title=\"' + settings.labelYearSelect + '\"'\n )\n }\n\n // Otherwise just return the year focused\n return _.node('div', focusedYear, settings.klass.year)\n } //createYearLabel\n\n\n // Create and return the entire calendar.\n return _.node(\n 'div',\n (settings.selectYears ? createYearLabel() + createMonthLabel() : createMonthLabel() + createYearLabel()) +\n createMonthNav() + createMonthNav(1),\n settings.klass.header\n ) + _.node(\n 'table',\n tableHead +\n _.node(\n 'tbody',\n _.group({\n min: 0,\n max: WEEKS_IN_CALENDAR - 1,\n i: 1,\n node: 'tr',\n item: function (rowCounter) {\n\n // If Monday is the first day and the month starts on Sunday, shift the date back a week.\n var shiftDateBy = settings.firstDay && calendar.create([viewsetObject.year, viewsetObject.month, 1]).day === 0 ? -7 : 0\n\n return [\n _.group({\n min: DAYS_IN_WEEK * rowCounter - viewsetObject.day + shiftDateBy + 1, // Add 1 for weekday 0index\n max: function () {\n return this.min + DAYS_IN_WEEK - 1\n },\n i: 1,\n node: 'td',\n item: function (targetDate) {\n\n // Convert the time date from a relative date to a target date.\n targetDate = calendar.create([viewsetObject.year, viewsetObject.month, targetDate + (settings.firstDay ? 1 : 0)])\n\n var isSelected = selectedObject && selectedObject.pick == targetDate.pick,\n isHighlighted = highlightedObject && highlightedObject.pick == targetDate.pick,\n isDisabled = disabledCollection && calendar.disabled(targetDate) || targetDate.pick < minLimitObject.pick || targetDate.pick > maxLimitObject.pick,\n formattedDate = _.trigger(calendar.formats.toString, calendar, [settings.format, targetDate])\n\n return [\n _.node(\n 'div',\n targetDate.date,\n (function (klasses) {\n\n // Add the `infocus` or `outfocus` classes based on month in view.\n klasses.push(viewsetObject.month == targetDate.month ? settings.klass.infocus : settings.klass.outfocus)\n\n // Add the `today` class if needed.\n if (nowObject.pick == targetDate.pick) {\n klasses.push(settings.klass.now)\n }\n\n // Add the `selected` class if something's selected and the time matches.\n if (isSelected) {\n klasses.push(settings.klass.selected)\n }\n\n // Add the `highlighted` class if something's highlighted and the time matches.\n if (isHighlighted) {\n klasses.push(settings.klass.highlighted)\n }\n\n // Add the `disabled` class if something's disabled and the object matches.\n if (isDisabled) {\n klasses.push(settings.klass.disabled)\n }\n\n return klasses.join(' ')\n })([settings.klass.day]),\n 'data-pick=' + targetDate.pick + ' ' + _.ariaAttr({\n role: 'gridcell',\n label: formattedDate,\n selected: isSelected && calendar.$node.val() === formattedDate ? true : null,\n activedescendant: isHighlighted ? true : null,\n disabled: isDisabled ? true : null\n })\n ),\n '',\n _.ariaAttr({\n role: 'presentation'\n })\n ] //endreturn\n }\n })\n ] //endreturn\n }\n })\n ),\n settings.klass.table,\n 'id=\"' + calendar.$node[0].id + '_table' + '\" ' + _.ariaAttr({\n role: 'grid',\n controls: calendar.$node[0].id,\n readonly: true\n })\n ) +\n\n // * For Firefox forms to submit, make sure to set the buttons’ `type` attributes as “button”.\n _.node(\n 'div',\n _.node('button', settings.today, settings.klass.buttonToday,\n 'type=button data-pick=' + nowObject.pick +\n (isOpen && !calendar.disabled(nowObject) ? '' : ' disabled') + ' ' +\n _.ariaAttr({\n controls: calendar.$node[0].id\n })) +\n _.node('button', settings.clear, settings.klass.buttonClear,\n 'type=button data-clear=1' +\n (isOpen ? '' : ' disabled') + ' ' +\n _.ariaAttr({\n controls: calendar.$node[0].id\n })) +\n _.node('button', settings.close, settings.klass.buttonClose,\n 'type=button data-close=true ' +\n (isOpen ? '' : ' disabled') + ' ' +\n _.ariaAttr({\n controls: calendar.$node[0].id\n })),\n settings.klass.footer\n ) //endreturn\n } //DatePicker.prototype.nodes\n\n\n\n\n /**\n * The date picker defaults.\n */\n DatePicker.defaults = (function (prefix) {\n\n return {\n\n // The title label to use for the month nav buttons\n labelMonthNext: 'Next month',\n labelMonthPrev: 'Previous month',\n\n // The title label to use for the dropdown selectors\n labelMonthSelect: 'Select a month',\n labelYearSelect: 'Select a year',\n\n // Months and weekdays\n monthsFull: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n weekdaysFull: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n weekdaysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n\n // Today and clear\n today: 'Today',\n clear: 'Clear',\n close: 'Close',\n\n // Picker close behavior\n closeOnSelect: true,\n closeOnClear: true,\n\n // Update input value on select/clear\n updateInput: true,\n\n // The format to show on the `input` element\n format: 'd mmmm, yyyy',\n\n // Classes\n klass: {\n\n table: prefix + 'table',\n\n header: prefix + 'header',\n\n navPrev: prefix + 'nav--prev btn btn-flat',\n navNext: prefix + 'nav--next btn btn-flat',\n navDisabled: prefix + 'nav--disabled',\n\n month: prefix + 'month',\n year: prefix + 'year',\n\n selectMonth: prefix + 'select--month',\n selectYear: prefix + 'select--year',\n\n weekdays: prefix + 'weekday',\n\n day: prefix + 'day',\n disabled: prefix + 'day--disabled',\n selected: prefix + 'day--selected',\n highlighted: prefix + 'day--highlighted',\n now: prefix + 'day--today',\n infocus: prefix + 'day--infocus',\n outfocus: prefix + 'day--outfocus',\n\n footer: prefix + 'footer',\n\n buttonClear: prefix + 'button--clear',\n buttonToday: prefix + 'button--today',\n buttonClose: prefix + 'button--close'\n }\n }\n })(Picker.klasses().picker + '__')\n\n\n\n\n\n /**\n * Extend the picker to add the date picker.\n */\n Picker.extend('pickadate', DatePicker)\n\n\n}));\n\n$.extend($.fn.pickadate.defaults, {\n selectMonths: true, // Creates a dropdown to control month\n selectYears: 15, // Creates a dropdown of 15 years to control year,\n\n onRender: function () {\n var $pickerInstance = this.$root;\n\n var year = this.get('highlight', 'yyyy');\n var day = this.get('highlight', 'dd');\n var month = this.get('highlight', 'mmm');\n var labeldayFirstThreeLetters = this.get('highlight', 'dddd').slice(0, 3);\n var monthFirstUC = month.charAt(0).toUpperCase() + month.slice(1)\n\n $pickerInstance.find('.picker__header').prepend('
      ' + labeldayFirstThreeLetters + ',
      ' + monthFirstUC + '
      ' + day + '
      ' + year + '
      ');\n }\n});\n\n$('.picker-opener').on('click', function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n const elementOpenData = event.target.dataset.open;\n const $input = $(`#${elementOpenData}`).pickadate();\n const picker = $input.pickadate('picker');\n\n picker.open();\n});","!function($){var apiParams={set:{colors:1,values:1,backgroundColor:1,scaleColors:1,normalizeFunction:1,focus:1},get:{selectedRegions:1,selectedMarkers:1,mapObject:1,regionName:1}};$.fn.vectorMap=function(options){var map,methodName,map=this.children(\".jvectormap-container\").data(\"mapObject\");if(\"addMap\"===options)jvm.Map.maps[arguments[1]]=arguments[2];else{if((\"set\"===options||\"get\"===options)&&apiParams[options][arguments[1]])return methodName=arguments[1].charAt(0).toUpperCase()+arguments[1].substr(1),map[options+methodName].apply(map,Array.prototype.slice.call(arguments,2));options=options||{},options.container=this,map=new jvm.Map(options)}return this}}(jQuery),function(factory){\"function\"==typeof define&&define.amd?define([\"jquery\"],factory):\"object\"==typeof exports?module.exports=factory:factory(jQuery)}(function($){function handler(event){var orgEvent=event||window.event,args=slice.call(arguments,1),delta=0,deltaX=0,deltaY=0,absDelta=0;if(event=$.event.fix(orgEvent),event.type=\"mousewheel\",\"detail\"in orgEvent&&(deltaY=-1*orgEvent.detail),\"wheelDelta\"in orgEvent&&(deltaY=orgEvent.wheelDelta),\"wheelDeltaY\"in orgEvent&&(deltaY=orgEvent.wheelDeltaY),\"wheelDeltaX\"in orgEvent&&(deltaX=-1*orgEvent.wheelDeltaX),\"axis\"in orgEvent&&orgEvent.axis===orgEvent.HORIZONTAL_AXIS&&(deltaX=-1*deltaY,deltaY=0),delta=0===deltaY?deltaX:deltaY,\"deltaY\"in orgEvent&&(deltaY=-1*orgEvent.deltaY,delta=deltaY),\"deltaX\"in orgEvent&&(deltaX=orgEvent.deltaX,0===deltaY&&(delta=-1*deltaX)),0!==deltaY||0!==deltaX){if(1===orgEvent.deltaMode){var lineHeight=$.data(this,\"mousewheel-line-height\");delta*=lineHeight,deltaY*=lineHeight,deltaX*=lineHeight}else if(2===orgEvent.deltaMode){var pageHeight=$.data(this,\"mousewheel-page-height\");delta*=pageHeight,deltaY*=pageHeight,deltaX*=pageHeight}return absDelta=Math.max(Math.abs(deltaY),Math.abs(deltaX)),(!lowestDelta||lowestDelta>absDelta)&&(lowestDelta=absDelta,shouldAdjustOldDeltas(orgEvent,absDelta)&&(lowestDelta/=40)),shouldAdjustOldDeltas(orgEvent,absDelta)&&(delta/=40,deltaX/=40,deltaY/=40),delta=Math[delta>=1?\"floor\":\"ceil\"](delta/lowestDelta),deltaX=Math[deltaX>=1?\"floor\":\"ceil\"](deltaX/lowestDelta),deltaY=Math[deltaY>=1?\"floor\":\"ceil\"](deltaY/lowestDelta),event.deltaX=deltaX,event.deltaY=deltaY,event.deltaFactor=lowestDelta,event.deltaMode=0,args.unshift(event,delta,deltaX,deltaY),nullLowestDeltaTimeout&&clearTimeout(nullLowestDeltaTimeout),nullLowestDeltaTimeout=setTimeout(nullLowestDelta,200),($.event.dispatch||$.event.handle).apply(this,args)}}function nullLowestDelta(){lowestDelta=null}function shouldAdjustOldDeltas(orgEvent,absDelta){return special.settings.adjustOldDeltas&&\"mousewheel\"===orgEvent.type&&absDelta%120===0}var nullLowestDeltaTimeout,lowestDelta,toFix=[\"wheel\",\"mousewheel\",\"DOMMouseScroll\",\"MozMousePixelScroll\"],toBind=\"onwheel\"in document||document.documentMode>=9?[\"wheel\"]:[\"mousewheel\",\"DomMouseScroll\",\"MozMousePixelScroll\"],slice=Array.prototype.slice;if($.event.fixHooks)for(var i=toFix.length;i;)$.event.fixHooks[toFix[--i]]=$.event.mouseHooks;var special=$.event.special.mousewheel={version:\"3.1.9\",setup:function(){if(this.addEventListener)for(var i=toBind.length;i;)this.addEventListener(toBind[--i],handler,!1);else this.onmousewheel=handler;$.data(this,\"mousewheel-line-height\",special.getLineHeight(this)),$.data(this,\"mousewheel-page-height\",special.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var i=toBind.length;i;)this.removeEventListener(toBind[--i],handler,!1);else this.onmousewheel=null},getLineHeight:function(elem){return parseInt($(elem)[\"offsetParent\"in $.fn?\"offsetParent\":\"parent\"]().css(\"fontSize\"),10)},getPageHeight:function(elem){return $(elem).height()},settings:{adjustOldDeltas:!0}};$.fn.extend({mousewheel:function(fn){return fn?this.bind(\"mousewheel\",fn):this.trigger(\"mousewheel\")},unmousewheel:function(fn){return this.unbind(\"mousewheel\",fn)}})});var jvm={inherits:function(child,parent){function temp(){}temp.prototype=parent.prototype,child.prototype=new temp,child.prototype.constructor=child,child.parentClass=parent},mixin:function(target,source){var prop;for(prop in source.prototype)source.prototype.hasOwnProperty(prop)&&(target.prototype[prop]=source.prototype[prop])},min:function(values){var i,min=Number.MAX_VALUE;if(values instanceof Array)for(i=0;imax&&(max=values[i]);else for(i in values)values[i]>max&&(max=values[i]);return max},keys:function(object){var key,keys=[];for(key in object)keys.push(key);return keys},values:function(object){var key,i,values=[];for(i=0;i\");return img.error(function(){deferred.reject()}).load(function(){deferred.resolve(img)}),img.attr(\"src\",url),deferred},isImageUrl:function(s){return/\\.\\w{3,4}$/.test(s)}};jvm.$=jQuery,Array.prototype.indexOf||(Array.prototype.indexOf=function(searchElement,fromIndex){var k;if(null==this)throw new TypeError('\"this\" is null or not defined');var O=Object(this),len=O.length>>>0;if(0===len)return-1;var n=+fromIndex||0;if(1/0===Math.abs(n)&&(n=0),n>=len)return-1;for(k=Math.max(n>=0?n:len-Math.abs(n),0);len>k;){if(k in O&&O[k]===searchElement)return k;k++}return-1}),jvm.AbstractElement=function(name,config){this.node=this.createElement(name),this.name=name,this.properties={},config&&this.set(config)},jvm.AbstractElement.prototype.set=function(property,value){var key;if(\"object\"==typeof property)for(key in property)this.properties[key]=property[key],this.applyAttr(key,property[key]);else this.properties[property]=value,this.applyAttr(property,value)},jvm.AbstractElement.prototype.get=function(property){return this.properties[property]},jvm.AbstractElement.prototype.applyAttr=function(property,value){this.node.setAttribute(property,value)},jvm.AbstractElement.prototype.remove=function(){jvm.$(this.node).remove()},jvm.AbstractCanvasElement=function(container,width,height){this.container=container,this.setSize(width,height),this.rootElement=new jvm[this.classPrefix+\"GroupElement\"],this.node.appendChild(this.rootElement.node),this.container.appendChild(this.node)},jvm.AbstractCanvasElement.prototype.add=function(element,group){group=group||this.rootElement,group.add(element),element.canvas=this},jvm.AbstractCanvasElement.prototype.addPath=function(config,style,group){var el=new jvm[this.classPrefix+\"PathElement\"](config,style);return this.add(el,group),el},jvm.AbstractCanvasElement.prototype.addCircle=function(config,style,group){var el=new jvm[this.classPrefix+\"CircleElement\"](config,style);return this.add(el,group),el},jvm.AbstractCanvasElement.prototype.addImage=function(config,style,group){var el=new jvm[this.classPrefix+\"ImageElement\"](config,style);return this.add(el,group),el},jvm.AbstractCanvasElement.prototype.addText=function(config,style,group){var el=new jvm[this.classPrefix+\"TextElement\"](config,style);return this.add(el,group),el},jvm.AbstractCanvasElement.prototype.addGroup=function(parentGroup){var el=new jvm[this.classPrefix+\"GroupElement\"];return parentGroup?parentGroup.node.appendChild(el.node):this.node.appendChild(el.node),el.canvas=this,el},jvm.AbstractShapeElement=function(name,config,style){this.style=style||{},this.style.current=this.style.current||{},this.isHovered=!1,this.isSelected=!1,this.updateStyle()},jvm.AbstractShapeElement.prototype.setStyle=function(property,value){var styles={};\"object\"==typeof property?styles=property:styles[property]=value,jvm.$.extend(this.style.current,styles),this.updateStyle()},jvm.AbstractShapeElement.prototype.updateStyle=function(){var attrs={};jvm.AbstractShapeElement.mergeStyles(attrs,this.style.initial),jvm.AbstractShapeElement.mergeStyles(attrs,this.style.current),this.isHovered&&jvm.AbstractShapeElement.mergeStyles(attrs,this.style.hover),this.isSelected&&(jvm.AbstractShapeElement.mergeStyles(attrs,this.style.selected),this.isHovered&&jvm.AbstractShapeElement.mergeStyles(attrs,this.style.selectedHover)),this.set(attrs)},jvm.AbstractShapeElement.mergeStyles=function(styles,newStyles){var key;newStyles=newStyles||{};for(key in newStyles)null===newStyles[key]?delete styles[key]:styles[key]=newStyles[key]},jvm.SVGElement=function(){jvm.SVGElement.parentClass.apply(this,arguments)},jvm.inherits(jvm.SVGElement,jvm.AbstractElement),jvm.SVGElement.svgns=\"http://www.w3.org/2000/svg\",jvm.SVGElement.prototype.createElement=function(tagName){return document.createElementNS(jvm.SVGElement.svgns,tagName)},jvm.SVGElement.prototype.addClass=function(className){this.node.setAttribute(\"class\",className)},jvm.SVGElement.prototype.getElementCtr=function(ctr){return jvm[\"SVG\"+ctr]},jvm.SVGElement.prototype.getBBox=function(){return this.node.getBBox()},jvm.SVGGroupElement=function(){jvm.SVGGroupElement.parentClass.call(this,\"g\")},jvm.inherits(jvm.SVGGroupElement,jvm.SVGElement),jvm.SVGGroupElement.prototype.add=function(element){this.node.appendChild(element.node)},jvm.SVGCanvasElement=function(){this.classPrefix=\"SVG\",jvm.SVGCanvasElement.parentClass.call(this,\"svg\"),this.defsElement=new jvm.SVGElement(\"defs\"),this.node.appendChild(this.defsElement.node),jvm.AbstractCanvasElement.apply(this,arguments)},jvm.inherits(jvm.SVGCanvasElement,jvm.SVGElement),jvm.mixin(jvm.SVGCanvasElement,jvm.AbstractCanvasElement),jvm.SVGCanvasElement.prototype.setSize=function(width,height){this.width=width,this.height=height,this.node.setAttribute(\"width\",width),this.node.setAttribute(\"height\",height)},jvm.SVGCanvasElement.prototype.applyTransformParams=function(scale,transX,transY){this.scale=scale,this.transX=transX,this.transY=transY,this.rootElement.node.setAttribute(\"transform\",\"scale(\"+scale+\") translate(\"+transX+\", \"+transY+\")\")},jvm.SVGShapeElement=function(name,config){jvm.SVGShapeElement.parentClass.call(this,name,config),jvm.AbstractShapeElement.apply(this,arguments)},jvm.inherits(jvm.SVGShapeElement,jvm.SVGElement),jvm.mixin(jvm.SVGShapeElement,jvm.AbstractShapeElement),jvm.SVGShapeElement.prototype.applyAttr=function(attr,value){var patternEl,imageEl,that=this;\"fill\"===attr&&jvm.isImageUrl(value)?jvm.SVGShapeElement.images[value]?this.applyAttr(\"fill\",\"url(#image\"+jvm.SVGShapeElement.images[value]+\")\"):jvm.whenImageLoaded(value).then(function(img){imageEl=new jvm.SVGElement(\"image\"),imageEl.node.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"href\",value),imageEl.applyAttr(\"x\",\"0\"),imageEl.applyAttr(\"y\",\"0\"),imageEl.applyAttr(\"width\",img[0].width),imageEl.applyAttr(\"height\",img[0].height),patternEl=new jvm.SVGElement(\"pattern\"),patternEl.applyAttr(\"id\",\"image\"+jvm.SVGShapeElement.imageCounter),patternEl.applyAttr(\"x\",0),patternEl.applyAttr(\"y\",0),patternEl.applyAttr(\"width\",img[0].width/2),patternEl.applyAttr(\"height\",img[0].height/2),patternEl.applyAttr(\"viewBox\",\"0 0 \"+img[0].width+\" \"+img[0].height),patternEl.applyAttr(\"patternUnits\",\"userSpaceOnUse\"),patternEl.node.appendChild(imageEl.node),that.canvas.defsElement.node.appendChild(patternEl.node),jvm.SVGShapeElement.images[value]=jvm.SVGShapeElement.imageCounter++,that.applyAttr(\"fill\",\"url(#image\"+jvm.SVGShapeElement.images[value]+\")\")}):jvm.SVGShapeElement.parentClass.prototype.applyAttr.apply(this,arguments)},jvm.SVGShapeElement.imageCounter=1,jvm.SVGShapeElement.images={},jvm.SVGPathElement=function(config,style){jvm.SVGPathElement.parentClass.call(this,\"path\",config,style),this.node.setAttribute(\"fill-rule\",\"evenodd\")},jvm.inherits(jvm.SVGPathElement,jvm.SVGShapeElement),jvm.SVGCircleElement=function(config,style){jvm.SVGCircleElement.parentClass.call(this,\"circle\",config,style)},jvm.inherits(jvm.SVGCircleElement,jvm.SVGShapeElement),jvm.SVGImageElement=function(config,style){jvm.SVGImageElement.parentClass.call(this,\"image\",config,style)},jvm.inherits(jvm.SVGImageElement,jvm.SVGShapeElement),jvm.SVGImageElement.prototype.applyAttr=function(attr,value){var that=this;\"image\"==attr?jvm.whenImageLoaded(value).then(function(img){that.node.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"href\",value),that.width=img[0].width,that.height=img[0].height,that.applyAttr(\"width\",that.width),that.applyAttr(\"height\",that.height),that.applyAttr(\"x\",that.cx-that.width/2),that.applyAttr(\"y\",that.cy-that.height/2),jvm.$(that.node).trigger(\"imageloaded\",[img])}):\"cx\"==attr?(this.cx=value,this.width&&this.applyAttr(\"x\",value-this.width/2)):\"cy\"==attr?(this.cy=value,this.height&&this.applyAttr(\"y\",value-this.height/2)):jvm.SVGImageElement.parentClass.prototype.applyAttr.apply(this,arguments)},jvm.SVGTextElement=function(config,style){jvm.SVGTextElement.parentClass.call(this,\"text\",config,style)},jvm.inherits(jvm.SVGTextElement,jvm.SVGShapeElement),jvm.SVGTextElement.prototype.applyAttr=function(attr,value){\"text\"===attr?this.node.textContent=value:jvm.SVGTextElement.parentClass.prototype.applyAttr.apply(this,arguments)},jvm.VMLElement=function(){jvm.VMLElement.VMLInitialized||jvm.VMLElement.initializeVML(),jvm.VMLElement.parentClass.apply(this,arguments)},jvm.inherits(jvm.VMLElement,jvm.AbstractElement),jvm.VMLElement.VMLInitialized=!1,jvm.VMLElement.initializeVML=function(){try{document.namespaces.rvml||document.namespaces.add(\"rvml\",\"urn:schemas-microsoft-com:vml\"),jvm.VMLElement.prototype.createElement=function(tagName){return document.createElement(\"')}}catch(e){jvm.VMLElement.prototype.createElement=function(tagName){return document.createElement(\"<\"+tagName+' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"rvml\">')}}document.createStyleSheet().addRule(\".rvml\",\"behavior:url(#default#VML)\"),jvm.VMLElement.VMLInitialized=!0},jvm.VMLElement.prototype.getElementCtr=function(ctr){return jvm[\"VML\"+ctr]},jvm.VMLElement.prototype.addClass=function(className){jvm.$(this.node).addClass(className)},jvm.VMLElement.prototype.applyAttr=function(attr,value){this.node[attr]=value},jvm.VMLElement.prototype.getBBox=function(){var node=jvm.$(this.node);return{x:node.position().left/this.canvas.scale,y:node.position().top/this.canvas.scale,width:node.width()/this.canvas.scale,height:node.height()/this.canvas.scale}},jvm.VMLGroupElement=function(){jvm.VMLGroupElement.parentClass.call(this,\"group\"),this.node.style.left=\"0px\",this.node.style.top=\"0px\",this.node.coordorigin=\"0 0\"},jvm.inherits(jvm.VMLGroupElement,jvm.VMLElement),jvm.VMLGroupElement.prototype.add=function(element){this.node.appendChild(element.node)},jvm.VMLCanvasElement=function(){this.classPrefix=\"VML\",jvm.VMLCanvasElement.parentClass.call(this,\"group\"),jvm.AbstractCanvasElement.apply(this,arguments),this.node.style.position=\"absolute\"},jvm.inherits(jvm.VMLCanvasElement,jvm.VMLElement),jvm.mixin(jvm.VMLCanvasElement,jvm.AbstractCanvasElement),jvm.VMLCanvasElement.prototype.setSize=function(width,height){var paths,groups,i,l;if(this.width=width,this.height=height,this.node.style.width=width+\"px\",this.node.style.height=height+\"px\",this.node.coordsize=width+\" \"+height,this.node.coordorigin=\"0 0\",this.rootElement){for(paths=this.rootElement.node.getElementsByTagName(\"shape\"),i=0,l=paths.length;l>i;i++)paths[i].coordsize=width+\" \"+height,paths[i].style.width=width+\"px\",paths[i].style.height=height+\"px\";for(groups=this.node.getElementsByTagName(\"group\"),i=0,l=groups.length;l>i;i++)groups[i].coordsize=width+\" \"+height,groups[i].style.width=width+\"px\",groups[i].style.height=height+\"px\"}},jvm.VMLCanvasElement.prototype.applyTransformParams=function(scale,transX,transY){this.scale=scale,this.transX=transX,this.transY=transY,this.rootElement.node.coordorigin=this.width-transX-this.width/100+\",\"+(this.height-transY-this.height/100),this.rootElement.node.coordsize=this.width/scale+\",\"+this.height/scale},jvm.VMLShapeElement=function(name,config){jvm.VMLShapeElement.parentClass.call(this,name,config),this.fillElement=new jvm.VMLElement(\"fill\"),this.strokeElement=new jvm.VMLElement(\"stroke\"),this.node.appendChild(this.fillElement.node),this.node.appendChild(this.strokeElement.node),this.node.stroked=!1,jvm.AbstractShapeElement.apply(this,arguments)},jvm.inherits(jvm.VMLShapeElement,jvm.VMLElement),jvm.mixin(jvm.VMLShapeElement,jvm.AbstractShapeElement),jvm.VMLShapeElement.prototype.applyAttr=function(attr,value){switch(attr){case\"fill\":this.node.fillcolor=value;break;case\"fill-opacity\":this.fillElement.node.opacity=Math.round(100*value)+\"%\";break;case\"stroke\":this.node.stroked=\"none\"===value?!1:!0,this.node.strokecolor=value;break;case\"stroke-opacity\":this.strokeElement.node.opacity=Math.round(100*value)+\"%\";break;case\"stroke-width\":this.node.stroked=0===parseInt(value,10)?!1:!0,this.node.strokeweight=value;break;case\"d\":this.node.path=jvm.VMLPathElement.pathSvgToVml(value);break;default:jvm.VMLShapeElement.parentClass.prototype.applyAttr.apply(this,arguments)}},jvm.VMLPathElement=function(config,style){var scale=new jvm.VMLElement(\"skew\");jvm.VMLPathElement.parentClass.call(this,\"shape\",config,style),this.node.coordorigin=\"0 0\",scale.node.on=!0,scale.node.matrix=\"0.01,0,0,0.01,0,0\",scale.node.offset=\"0,0\",this.node.appendChild(scale.node)},jvm.inherits(jvm.VMLPathElement,jvm.VMLShapeElement),jvm.VMLPathElement.prototype.applyAttr=function(attr,value){\"d\"===attr?this.node.path=jvm.VMLPathElement.pathSvgToVml(value):jvm.VMLShapeElement.prototype.applyAttr.call(this,attr,value)},jvm.VMLPathElement.pathSvgToVml=function(path){var ctrlx,ctrly,cx=0,cy=0;return path=path.replace(/(-?\\d+)e(-?\\d+)/g,\"0\"),path.replace(/([MmLlHhVvCcSs])\\s*((?:-?\\d*(?:\\.\\d+)?\\s*,?\\s*)+)/g,function(segment,letter,coords){coords=coords.replace(/(\\d)-/g,\"$1,-\").replace(/^\\s+/g,\"\").replace(/\\s+$/g,\"\").replace(/\\s+/g,\",\").split(\",\"),coords[0]||coords.shift();for(var i=0,l=coords.length;l>i;i++)coords[i]=Math.round(100*coords[i]);switch(letter){case\"m\":return cx+=coords[0],cy+=coords[1],\"t\"+coords.join(\",\");case\"M\":return cx=coords[0],cy=coords[1],\"m\"+coords.join(\",\");case\"l\":return cx+=coords[0],cy+=coords[1],\"r\"+coords.join(\",\");case\"L\":return cx=coords[0],cy=coords[1],\"l\"+coords.join(\",\");case\"h\":return cx+=coords[0],\"r\"+coords[0]+\",0\";case\"H\":return cx=coords[0],\"l\"+cx+\",\"+cy;case\"v\":return cy+=coords[0],\"r0,\"+coords[0];case\"V\":return cy=coords[0],\"l\"+cx+\",\"+cy;case\"c\":return ctrlx=cx+coords[coords.length-4],ctrly=cy+coords[coords.length-3],cx+=coords[coords.length-2],cy+=coords[coords.length-1],\"v\"+coords.join(\",\");case\"C\":return ctrlx=coords[coords.length-4],ctrly=coords[coords.length-3],cx=coords[coords.length-2],cy=coords[coords.length-1],\"c\"+coords.join(\",\");case\"s\":return coords.unshift(cy-ctrly),coords.unshift(cx-ctrlx),ctrlx=cx+coords[coords.length-4],ctrly=cy+coords[coords.length-3],cx+=coords[coords.length-2],cy+=coords[coords.length-1],\"v\"+coords.join(\",\");case\"S\":return coords.unshift(cy+cy-ctrly),coords.unshift(cx+cx-ctrlx),ctrlx=coords[coords.length-4],ctrly=coords[coords.length-3],cx=coords[coords.length-2],cy=coords[coords.length-1],\"c\"+coords.join(\",\")}return\"\"}).replace(/z/g,\"e\")},jvm.VMLCircleElement=function(config,style){jvm.VMLCircleElement.parentClass.call(this,\"oval\",config,style)},jvm.inherits(jvm.VMLCircleElement,jvm.VMLShapeElement),jvm.VMLCircleElement.prototype.applyAttr=function(attr,value){switch(attr){case\"r\":this.node.style.width=2*value+\"px\",this.node.style.height=2*value+\"px\",this.applyAttr(\"cx\",this.get(\"cx\")||0),this.applyAttr(\"cy\",this.get(\"cy\")||0);break;case\"cx\":if(!value)return;this.node.style.left=value-(this.get(\"r\")||0)+\"px\";break;case\"cy\":if(!value)return;this.node.style.top=value-(this.get(\"r\")||0)+\"px\";break;default:jvm.VMLCircleElement.parentClass.prototype.applyAttr.call(this,attr,value)}},jvm.VectorCanvas=function(container,width,height){return this.mode=window.SVGAngle?\"svg\":\"vml\",this.impl=\"svg\"==this.mode?new jvm.SVGCanvasElement(container,width,height):new jvm.VMLCanvasElement(container,width,height),this.impl.mode=this.mode,this.impl},jvm.SimpleScale=function(scale){this.scale=scale},jvm.SimpleScale.prototype.getValue=function(value){return value},jvm.OrdinalScale=function(scale){this.scale=scale},jvm.OrdinalScale.prototype.getValue=function(value){return this.scale[value]},jvm.OrdinalScale.prototype.getTicks=function(){var key,ticks=[];for(key in this.scale)ticks.push({label:key,value:this.scale[key]});return ticks},jvm.NumericScale=function(scale,normalizeFunction,minValue,maxValue){this.scale=[],normalizeFunction=normalizeFunction||\"linear\",scale&&this.setScale(scale),normalizeFunction&&this.setNormalizeFunction(normalizeFunction),\"undefined\"!=typeof minValue&&this.setMin(minValue),\"undefined\"!=typeof maxValue&&this.setMax(maxValue)},jvm.NumericScale.prototype={setMin:function(min){this.clearMinValue=min,this.minValue=\"function\"==typeof this.normalize?this.normalize(min):min},setMax:function(max){this.clearMaxValue=max,this.maxValue=\"function\"==typeof this.normalize?this.normalize(max):max},setScale:function(scale){var i;for(this.scale=[],i=0;i=0;)value-=lengthes[i],i++;return value=this.vectorToNum(i==this.scale.length-1?this.scale[i]:this.vectorAdd(this.scale[i],this.vectorMult(this.vectorSubtract(this.scale[i+1],this.scale[i]),value/lengthes[i])))},vectorToNum:function(vector){var i,num=0;for(i=0;i=err?step*=10:.35>=err?step*=5:.75>=err&&(step*=2),extent[0]=Math.floor(extent[0]/step)*step,extent[1]=Math.ceil(extent[1]/step)*step,tick=extent[0];tick<=extent[1];)v=tick==extent[0]?this.clearMinValue:tick==extent[1]?this.clearMaxValue:tick,ticks.push({label:tick,value:this.getValue(v)}),tick+=step;return ticks}},jvm.ColorScale=function(){jvm.ColorScale.parentClass.apply(this,arguments)},jvm.inherits(jvm.ColorScale,jvm.NumericScale),jvm.ColorScale.prototype.setScale=function(scale){var i;for(i=0;i\"),this.body.addClass(\"jvectormap-legend\"),this.params.cssClass&&this.body.addClass(this.params.cssClass),params.vertical?this.map.legendCntVertical.append(this.body):this.map.legendCntHorizontal.append(this.body),this.render()},jvm.Legend.prototype.render=function(){var i,tick,sample,label,ticks=this.series.scale.getTicks(),inner=jvm.$(\"
      \").addClass(\"jvectormap-legend-inner\");for(this.body.html(\"\"),this.params.title&&this.body.append(jvm.$(\"
      \").addClass(\"jvectormap-legend-title\").html(this.params.title)),this.body.append(inner),i=0;i\").addClass(\"jvectormap-legend-tick\"),sample=jvm.$(\"
      \").addClass(\"jvectormap-legend-tick-sample\"),this.series.params.attribute){case\"fill\":jvm.isImageUrl(ticks[i].value)?sample.css(\"background\",\"url(\"+ticks[i].value+\")\"):sample.css(\"background\",ticks[i].value);break;case\"stroke\":sample.css(\"background\",ticks[i].value);break;case\"image\":sample.css(\"background\",\"url(\"+ticks[i].value+\") no-repeat center center\");break;case\"r\":jvm.$(\"
      \").css({\"border-radius\":ticks[i].value,border:this.map.params.markerStyle.initial[\"stroke-width\"]+\"px \"+this.map.params.markerStyle.initial.stroke+\" solid\",width:2*ticks[i].value+\"px\",height:2*ticks[i].value+\"px\",background:this.map.params.markerStyle.initial.fill}).appendTo(sample)}tick.append(sample),label=ticks[i].label,this.params.labelRender&&(label=this.params.labelRender(label)),tick.append(jvm.$(\"
      \"+label+\"
      \").addClass(\"jvectormap-legend-tick-text\")),inner.append(tick)}inner.append(jvm.$(\"
      \").css(\"clear\",\"both\"))},jvm.DataSeries=function(params,elements,map){var scaleConstructor;params=params||{},params.attribute=params.attribute||\"fill\",this.elements=elements,this.params=params,this.map=map,params.attributes&&this.setAttributes(params.attributes),jvm.$.isArray(params.scale)?(scaleConstructor=\"fill\"===params.attribute||\"stroke\"===params.attribute?jvm.ColorScale:jvm.NumericScale,this.scale=new scaleConstructor(params.scale,params.normalizeFunction,params.min,params.max)):this.scale=params.scale?new jvm.OrdinalScale(params.scale):new jvm.SimpleScale(params.scale),this.values=params.values||{},this.setValues(this.values),this.params.legend&&(this.legend=new jvm.Legend($.extend({map:this.map,series:this},this.params.legend)))},jvm.DataSeries.prototype={setAttributes:function(key,attr){var code,attrs=key;if(\"string\"==typeof key)this.elements[key]&&this.elements[key].setStyle(this.params.attribute,attr);else for(code in attrs)this.elements[code]&&this.elements[code].element.setStyle(this.params.attribute,attrs[code])},setValues:function(values){var val,cc,max=-Number.MAX_VALUE,min=Number.MAX_VALUE,attrs={};if(this.scale instanceof jvm.OrdinalScale||this.scale instanceof jvm.SimpleScale)for(cc in values)attrs[cc]=values[cc]?this.scale.getValue(values[cc]):this.elements[cc].element.style.initial[this.params.attribute];else{if(\"undefined\"==typeof this.params.min||\"undefined\"==typeof this.params.max)for(cc in values)val=parseFloat(values[cc]),val>max&&(max=val),min>val&&(min=val);\"undefined\"==typeof this.params.min?(this.scale.setMin(min),this.params.min=min):this.scale.setMin(this.params.min),\"undefined\"==typeof this.params.max?(this.scale.setMax(max),this.params.max=max):this.scale.setMax(this.params.max);for(cc in values)\"indexOf\"!=cc&&(val=parseFloat(values[cc]),attrs[cc]=isNaN(val)?this.elements[cc].element.style.initial[this.params.attribute]:this.scale.getValue(val))}this.setAttributes(attrs),jvm.$.extend(this.values,values)},clear:function(){var key,attrs={};for(key in this.values)this.elements[key]&&(attrs[key]=this.elements[key].element.shape.style.initial[this.params.attribute]);this.setAttributes(attrs),this.values={}},setScale:function(scale){this.scale.setScale(scale),this.values&&this.setValues(this.values)},setNormalizeFunction:function(f){this.scale.setNormalizeFunction(f),this.values&&this.setValues(this.values)}},jvm.Proj={degRad:180/Math.PI,radDeg:Math.PI/180,radius:6381372,sgn:function(n){return n>0?1:0>n?-1:n},mill:function(lat,lng,c){return{x:this.radius*(lng-c)*this.radDeg,y:-this.radius*Math.log(Math.tan((45+.4*lat)*this.radDeg))/.8}},mill_inv:function(x,y,c){return{lat:(2.5*Math.atan(Math.exp(.8*y/this.radius))-5*Math.PI/8)*this.degRad,lng:(c*this.radDeg+x/this.radius)*this.degRad}},merc:function(lat,lng,c){return{x:this.radius*(lng-c)*this.radDeg,y:-this.radius*Math.log(Math.tan(Math.PI/4+lat*Math.PI/360))}},merc_inv:function(x,y,c){return{lat:(2*Math.atan(Math.exp(y/this.radius))-Math.PI/2)*this.degRad,lng:(c*this.radDeg+x/this.radius)*this.degRad}},aea:function(lat,lng,c){var fi0=0,lambda0=c*this.radDeg,fi1=29.5*this.radDeg,fi2=45.5*this.radDeg,fi=lat*this.radDeg,lambda=lng*this.radDeg,n=(Math.sin(fi1)+Math.sin(fi2))/2,C=Math.cos(fi1)*Math.cos(fi1)+2*n*Math.sin(fi1),theta=n*(lambda-lambda0),ro=Math.sqrt(C-2*n*Math.sin(fi))/n,ro0=Math.sqrt(C-2*n*Math.sin(fi0))/n;return{x:ro*Math.sin(theta)*this.radius,y:-(ro0-ro*Math.cos(theta))*this.radius}},aea_inv:function(xCoord,yCoord,c){var x=xCoord/this.radius,y=yCoord/this.radius,fi0=0,lambda0=c*this.radDeg,fi1=29.5*this.radDeg,fi2=45.5*this.radDeg,n=(Math.sin(fi1)+Math.sin(fi2))/2,C=Math.cos(fi1)*Math.cos(fi1)+2*n*Math.sin(fi1),ro0=Math.sqrt(C-2*n*Math.sin(fi0))/n,ro=Math.sqrt(x*x+(ro0-y)*(ro0-y)),theta=Math.atan(x/(ro0-y));return{lat:Math.asin((C-ro*ro*n*n)/(2*n))*this.degRad,lng:(lambda0+theta/n)*this.degRad}},lcc:function(lat,lng,c){var fi0=0,lambda0=c*this.radDeg,lambda=lng*this.radDeg,fi1=33*this.radDeg,fi2=45*this.radDeg,fi=lat*this.radDeg,n=Math.log(Math.cos(fi1)*(1/Math.cos(fi2)))/Math.log(Math.tan(Math.PI/4+fi2/2)*(1/Math.tan(Math.PI/4+fi1/2))),F=Math.cos(fi1)*Math.pow(Math.tan(Math.PI/4+fi1/2),n)/n,ro=F*Math.pow(1/Math.tan(Math.PI/4+fi/2),n),ro0=F*Math.pow(1/Math.tan(Math.PI/4+fi0/2),n);return{x:ro*Math.sin(n*(lambda-lambda0))*this.radius,y:-(ro0-ro*Math.cos(n*(lambda-lambda0)))*this.radius}},lcc_inv:function(xCoord,yCoord,c){var x=xCoord/this.radius,y=yCoord/this.radius,fi0=0,lambda0=c*this.radDeg,fi1=33*this.radDeg,fi2=45*this.radDeg,n=Math.log(Math.cos(fi1)*(1/Math.cos(fi2)))/Math.log(Math.tan(Math.PI/4+fi2/2)*(1/Math.tan(Math.PI/4+fi1/2))),F=Math.cos(fi1)*Math.pow(Math.tan(Math.PI/4+fi1/2),n)/n,ro0=F*Math.pow(1/Math.tan(Math.PI/4+fi0/2),n),ro=this.sgn(n)*Math.sqrt(x*x+(ro0-y)*(ro0-y)),theta=Math.atan(x/(ro0-y));return{lat:(2*Math.atan(Math.pow(F/ro,1/n))-Math.PI/2)*this.degRad,lng:(lambda0+theta/n)*this.degRad}}},jvm.MapObject=function(){},jvm.MapObject.prototype.getLabelText=function(key){var text;return text=this.config.label?\"function\"==typeof this.config.label.render?this.config.label.render(key):key:null},jvm.MapObject.prototype.getLabelOffsets=function(key){var offsets;return this.config.label&&(\"function\"==typeof this.config.label.offsets?offsets=this.config.label.offsets(key):\"object\"==typeof this.config.label.offsets&&(offsets=this.config.label.offsets[key])),offsets||[0,0]},jvm.MapObject.prototype.setHovered=function(isHovered){this.isHovered!==isHovered&&(this.isHovered=isHovered,this.shape.isHovered=isHovered,this.shape.updateStyle(),this.label&&(this.label.isHovered=isHovered,this.label.updateStyle()))},jvm.MapObject.prototype.setSelected=function(isSelected){this.isSelected!==isSelected&&(this.isSelected=isSelected,this.shape.isSelected=isSelected,this.shape.updateStyle(),this.label&&(this.label.isSelected=isSelected,this.label.updateStyle()),jvm.$(this.shape).trigger(\"selected\",[isSelected]))},jvm.MapObject.prototype.setStyle=function(){this.shape.setStyle.apply(this.shape,arguments)},jvm.MapObject.prototype.remove=function(){this.shape.remove(),this.label&&this.label.remove()},jvm.Region=function(config){var bbox,text,offsets;this.config=config,this.map=this.config.map,this.shape=config.canvas.addPath({d:config.path,\"data-code\":config.code},config.style,config.canvas.rootElement),this.shape.addClass(\"jvectormap-region jvectormap-element\"),bbox=this.shape.getBBox(),text=this.getLabelText(config.code),this.config.label&&text&&(offsets=this.getLabelOffsets(config.code),this.labelX=bbox.x+bbox.width/2+offsets[0],this.labelY=bbox.y+bbox.height/2+offsets[1],this.label=config.canvas.addText({text:text,\"text-anchor\":\"middle\",\"alignment-baseline\":\"central\",x:this.labelX,y:this.labelY,\"data-code\":config.code},config.labelStyle,config.labelsGroup),this.label.addClass(\"jvectormap-region jvectormap-element\"))\n},jvm.inherits(jvm.Region,jvm.MapObject),jvm.Region.prototype.updateLabelPosition=function(){this.label&&this.label.set({x:this.labelX*this.map.scale+this.map.transX*this.map.scale,y:this.labelY*this.map.scale+this.map.transY*this.map.scale})},jvm.Marker=function(config){var text;this.config=config,this.map=this.config.map,this.isImage=!!this.config.style.initial.image,this.createShape(),text=this.getLabelText(config.index),this.config.label&&text&&(this.offsets=this.getLabelOffsets(config.index),this.labelX=config.cx/this.map.scale-this.map.transX,this.labelY=config.cy/this.map.scale-this.map.transY,this.label=config.canvas.addText({text:text,\"data-index\":config.index,dy:\"0.6ex\",x:this.labelX,y:this.labelY},config.labelStyle,config.labelsGroup),this.label.addClass(\"jvectormap-marker jvectormap-element\"))},jvm.inherits(jvm.Marker,jvm.MapObject),jvm.Marker.prototype.createShape=function(){var that=this;this.shape&&this.shape.remove(),this.shape=this.config.canvas[this.isImage?\"addImage\":\"addCircle\"]({\"data-index\":this.config.index,cx:this.config.cx,cy:this.config.cy},this.config.style,this.config.group),this.shape.addClass(\"jvectormap-marker jvectormap-element\"),this.isImage&&jvm.$(this.shape.node).on(\"imageloaded\",function(){that.updateLabelPosition()})},jvm.Marker.prototype.updateLabelPosition=function(){this.label&&this.label.set({x:this.labelX*this.map.scale+this.offsets[0]+this.map.transX*this.map.scale+5+(this.isImage?(this.shape.width||0)/2:this.shape.properties.r),y:this.labelY*this.map.scale+this.map.transY*this.map.scale+this.offsets[1]})},jvm.Marker.prototype.setStyle=function(property){var isImage;jvm.Marker.parentClass.prototype.setStyle.apply(this,arguments),\"r\"===property&&this.updateLabelPosition(),isImage=!!this.shape.get(\"image\"),isImage!=this.isImage&&(this.isImage=isImage,this.config.style=jvm.$.extend(!0,{},this.shape.style),this.createShape())},jvm.Map=function(params){var e,map=this;if(this.params=jvm.$.extend(!0,{},jvm.Map.defaultParams,params),!jvm.Map.maps[this.params.map])throw new Error(\"Attempt to use map which was not loaded: \"+this.params.map);this.mapData=jvm.Map.maps[this.params.map],this.markers={},this.regions={},this.regionsColors={},this.regionsData={},this.container=jvm.$(\"
      \").addClass(\"jvectormap-container\"),this.params.container&&this.params.container.append(this.container),this.container.data(\"mapObject\",this),this.defaultWidth=this.mapData.width,this.defaultHeight=this.mapData.height,this.setBackgroundColor(this.params.backgroundColor),this.onResize=function(){map.updateSize()},jvm.$(window).resize(this.onResize);for(e in jvm.Map.apiEvents)this.params[e]&&this.container.bind(jvm.Map.apiEvents[e]+\".jvectormap\",this.params[e]);this.canvas=new jvm.VectorCanvas(this.container[0],this.width,this.height),this.params.bindTouchEvents&&(\"ontouchstart\"in window||window.DocumentTouch&&document instanceof DocumentTouch?this.bindContainerTouchEvents():window.MSGesture&&this.bindContainerPointerEvents()),this.bindContainerEvents(),this.bindElementEvents(),this.createTip(),this.params.zoomButtons&&this.bindZoomButtons(),this.createRegions(),this.createMarkers(this.params.markers||{}),this.updateSize(),this.params.focusOn&&(\"string\"==typeof this.params.focusOn?this.params.focusOn={region:this.params.focusOn}:jvm.$.isArray(this.params.focusOn)&&(this.params.focusOn={regions:this.params.focusOn}),this.setFocus(this.params.focusOn)),this.params.selectedRegions&&this.setSelectedRegions(this.params.selectedRegions),this.params.selectedMarkers&&this.setSelectedMarkers(this.params.selectedMarkers),this.legendCntHorizontal=jvm.$(\"
      \").addClass(\"jvectormap-legend-cnt jvectormap-legend-cnt-h\"),this.legendCntVertical=jvm.$(\"
      \").addClass(\"jvectormap-legend-cnt jvectormap-legend-cnt-v\"),this.container.append(this.legendCntHorizontal),this.container.append(this.legendCntVertical),this.params.series&&this.createSeries()},jvm.Map.prototype={transX:0,transY:0,scale:1,baseTransX:0,baseTransY:0,baseScale:1,width:0,height:0,setBackgroundColor:function(backgroundColor){this.container.css(\"background-color\",backgroundColor)},resize:function(){var curBaseScale=this.baseScale;this.width/this.height>this.defaultWidth/this.defaultHeight?(this.baseScale=this.height/this.defaultHeight,this.baseTransX=Math.abs(this.width-this.defaultWidth*this.baseScale)/(2*this.baseScale)):(this.baseScale=this.width/this.defaultWidth,this.baseTransY=Math.abs(this.height-this.defaultHeight*this.baseScale)/(2*this.baseScale)),this.scale*=this.baseScale/curBaseScale,this.transX*=this.baseScale/curBaseScale,this.transY*=this.baseScale/curBaseScale},updateSize:function(){this.width=this.container.width(),this.height=this.container.height(),this.resize(),this.canvas.setSize(this.width,this.height),this.applyTransform()},reset:function(){var key,i;for(key in this.series)for(i=0;imaxTransY?this.transY=maxTransY:this.transYmaxTransX?this.transX=maxTransX:this.transXtouches[1].pageX?touches[1].pageX+(touches[0].pageX-touches[1].pageX)/2:touches[0].pageX+(touches[1].pageX-touches[0].pageX)/2,centerTouchY=touches[0].pageY>touches[1].pageY?touches[1].pageY+(touches[0].pageY-touches[1].pageY)/2:touches[0].pageY+(touches[1].pageY-touches[0].pageY)/2,centerTouchX-=offset.left,centerTouchY-=offset.top,touchStartScale=map.scale,touchStartDistance=Math.sqrt(Math.pow(touches[0].pageX-touches[1].pageX,2)+Math.pow(touches[0].pageY-touches[1].pageY,2)))),lastTouchesLength=touches.length};jvm.$(this.container).bind(\"touchstart\",handleTouchEvent),jvm.$(this.container).bind(\"touchmove\",handleTouchEvent)},bindContainerPointerEvents:function(){var map=this,gesture=new MSGesture,element=this.container[0],handlePointerDownEvent=function(e){gesture.addPointer(e.pointerId)},handleGestureEvent=function(e){var transXOld,transYOld;(0!=e.translationX||0!=e.translationY)&&(transXOld=map.transX,transYOld=map.transY,map.transX+=e.translationX/map.scale,map.transY+=e.translationY/map.scale,map.applyTransform(),map.tip.hide(),(transXOld!=map.transX||transYOld!=map.transY)&&e.preventDefault()),1!=e.scale&&(map.setScale(map.scale*e.scale,e.offsetX,e.offsetY),map.tip.hide(),e.preventDefault())};gesture.target=element,element.addEventListener(\"MSGestureChange\",handleGestureEvent,!1),element.addEventListener(\"pointerdown\",handlePointerDownEvent,!1)},bindElementEvents:function(){var pageX,pageY,mouseMoved,map=this;this.container.mousemove(function(e){Math.abs(pageX-e.pageX)+Math.abs(pageY-e.pageY)>2&&(mouseMoved=!0)}),this.container.delegate(\"[class~='jvectormap-element']\",\"mouseover mouseout\",function(e){var baseVal=jvm.$(this).attr(\"class\").baseVal||jvm.$(this).attr(\"class\"),type=-1===baseVal.indexOf(\"jvectormap-region\")?\"marker\":\"region\",code=jvm.$(this).attr(\"region\"==type?\"data-code\":\"data-index\"),element=\"region\"==type?map.regions[code].element:map.markers[code].element,tipText=\"region\"==type?map.mapData.paths[code].name:map.markers[code].config.name||\"\",tipShowEvent=jvm.$.Event(type+\"TipShow.jvectormap\"),overEvent=jvm.$.Event(type+\"Over.jvectormap\");\"mouseover\"==e.type?(map.container.trigger(overEvent,[code]),overEvent.isDefaultPrevented()||element.setHovered(!0),map.tip.text(tipText),map.container.trigger(tipShowEvent,[map.tip,code]),tipShowEvent.isDefaultPrevented()||(map.tip.show(),map.tipWidth=map.tip.width(),map.tipHeight=map.tip.height())):(element.setHovered(!1),map.tip.hide(),map.container.trigger(type+\"Out.jvectormap\",[code]))}),this.container.delegate(\"[class~='jvectormap-element']\",\"mousedown\",function(e){pageX=e.pageX,pageY=e.pageY,mouseMoved=!1}),this.container.delegate(\"[class~='jvectormap-element']\",\"mouseup\",function(){var baseVal=jvm.$(this).attr(\"class\").baseVal?jvm.$(this).attr(\"class\").baseVal:jvm.$(this).attr(\"class\"),type=-1===baseVal.indexOf(\"jvectormap-region\")?\"marker\":\"region\",code=jvm.$(this).attr(\"region\"==type?\"data-code\":\"data-index\"),clickEvent=jvm.$.Event(type+\"Click.jvectormap\"),element=\"region\"==type?map.regions[code].element:map.markers[code].element;mouseMoved||(map.container.trigger(clickEvent,[code]),(\"region\"===type&&map.params.regionsSelectable||\"marker\"===type&&map.params.markersSelectable)&&(clickEvent.isDefaultPrevented()||(map.params[type+\"sSelectableOne\"]&&map.clearSelected(type+\"s\"),element.setSelected(!element.isSelected))))})},bindZoomButtons:function(){var map=this;jvm.$(\"
      \").addClass(\"jvectormap-zoomin\").text(\"+\").appendTo(this.container),jvm.$(\"
      \").addClass(\"jvectormap-zoomout\").html(\"−\").appendTo(this.container),this.container.find(\".jvectormap-zoomin\").click(function(){map.setScale(map.scale*map.params.zoomStep,map.width/2,map.height/2,!1,map.params.zoomAnimate)}),this.container.find(\".jvectormap-zoomout\").click(function(){map.setScale(map.scale/map.params.zoomStep,map.width/2,map.height/2,!1,map.params.zoomAnimate)})},createTip:function(){var map=this;this.tip=jvm.$(\"
      \").addClass(\"jvectormap-tip\").appendTo(jvm.$(\"body\")),this.container.mousemove(function(e){var left=e.pageX-15-map.tipWidth,top=e.pageY-15-map.tipHeight;5>left&&(left=e.pageX+15),5>top&&(top=e.pageY+15),map.tip.css({left:left,top:top})})},setScale:function(scale,anchorX,anchorY,isCentered,animate){var interval,scaleStart,scaleDiff,transXStart,transXDiff,transYStart,transYDiff,transX,transY,viewportChangeEvent=jvm.$.Event(\"zoom.jvectormap\"),that=this,i=0,count=Math.abs(Math.round(60*(scale-this.scale)/Math.max(scale,this.scale))),deferred=new jvm.$.Deferred;return scale>this.params.zoomMax*this.baseScale?scale=this.params.zoomMax*this.baseScale:scale0?(scaleStart=this.scale,scaleDiff=(scale-scaleStart)/count,transXStart=this.transX*this.scale,transYStart=this.transY*this.scale,transXDiff=(transX*scale-transXStart)/count,transYDiff=(transY*scale-transYStart)/count,interval=setInterval(function(){i+=1,that.scale=scaleStart+scaleDiff*i,that.transX=(transXStart+transXDiff*i)/that.scale,that.transY=(transYStart+transYDiff*i)/that.scale,that.applyTransform(),i==count&&(clearInterval(interval),that.container.trigger(viewportChangeEvent,[scale/that.baseScale]),deferred.resolve())},10)):(this.transX=transX,this.transY=transY,this.scale=scale,this.applyTransform(),this.container.trigger(viewportChangeEvent,[scale/this.baseScale]),deferred.resolve()),deferred},setFocus:function(config){var bbox,itemBbox,newBbox,codes,i,point;if(config=config||{},config.region?codes=[config.region]:config.regions&&(codes=config.regions),codes){for(i=0;ilng&&(lng+=360),point=jvm.Proj[proj.type](lat,lng,centralMeridian),inset=this.getInsetForPoint(point.x,point.y),inset?(bbox=inset.bbox,point.x=(point.x-bbox[0].x)/(bbox[1].x-bbox[0].x)*inset.width*this.scale,point.y=(point.y-bbox[0].y)/(bbox[1].y-bbox[0].y)*inset.height*this.scale,{x:point.x+this.transX*this.scale+inset.left*this.scale,y:point.y+this.transY*this.scale+inset.top*this.scale}):!1},pointToLatLng:function(x,y){var i,inset,bbox,nx,ny,proj=jvm.Map.maps[this.params.map].projection,centralMeridian=proj.centralMeridian,insets=jvm.Map.maps[this.params.map].insets;for(i=0;ibbox[0].x&&nxbbox[0].y&&nybbox[0].x&&xbbox[0].y&&y\").addClass(\"jvectormap-goback\").text(\"Back\").appendTo(this.params.container),this.backButton.hide(),this.backButton.click(function(){that.goBack()}),this.spinner=jvm.$(\"
      \").addClass(\"jvectormap-spinner\").appendTo(this.params.container),this.spinner.hide()},jvm.MultiMap.prototype={addMap:function(name,config){var cnt=jvm.$(\"
      \").css({width:\"100%\",height:\"100%\"});return this.params.container.append(cnt),this.maps[name]=new jvm.Map(jvm.$.extend(config,{container:cnt})),this.params.maxLevel>config.multiMapLevel&&this.maps[name].container.on(\"regionClick.jvectormap\",{scope:this},function(e,code){var multimap=e.data.scope,mapName=multimap.params.mapNameByCode(code,multimap);multimap.drillDownPromise&&\"pending\"===multimap.drillDownPromise.state()||multimap.drillDown(mapName,code)}),this.maps[name]},downloadMap:function(code){var that=this,deferred=jvm.$.Deferred();return this.mapsLoaded[code]?deferred.resolve():jvm.$.get(this.params.mapUrlByCode(code,this)).then(function(){that.mapsLoaded[code]=!0,deferred.resolve()},function(){deferred.reject()}),deferred},drillDown:function(name,code){var currentMap=this.history[this.history.length-1],that=this,focusPromise=currentMap.setFocus({region:code,animate:!0}),downloadPromise=this.downloadMap(code);focusPromise.then(function(){\"pending\"===downloadPromise.state()&&that.spinner.show()}),downloadPromise.always(function(){that.spinner.hide()}),this.drillDownPromise=jvm.$.when(downloadPromise,focusPromise),this.drillDownPromise.then(function(){currentMap.params.container.hide(),that.maps[name]?that.maps[name].params.container.show():that.addMap(name,{map:name,multiMapLevel:currentMap.params.multiMapLevel+1}),that.history.push(that.maps[name]),that.backButton.show()})},goBack:function(){var currentMap=this.history.pop(),prevMap=this.history[this.history.length-1],that=this;currentMap.setFocus({scale:1,x:.5,y:.5,animate:!0}).then(function(){currentMap.params.container.hide(),prevMap.params.container.show(),prevMap.updateSize(),1===that.history.length&&that.backButton.hide(),prevMap.setFocus({scale:1,x:.5,y:.5,animate:!0})})}},jvm.MultiMap.defaultParams={mapNameByCode:function(code,multiMap){return code.toLowerCase()+\"_\"+multiMap.defaultProjection+\"_en\"},mapUrlByCode:function(code,multiMap){return\"jquery-jvectormap-data-\"+code.toLowerCase()+\"-\"+multiMap.defaultProjection+\"-en.js\"}};","jQuery.fn.vectorMap('addMap', 'world_mill_en',{\"insets\": [{\"width\": 900, \"top\": 0, \"height\": 440.70631074413296, \"bbox\": [{\"y\": -12671671.123330014, \"x\": -20004297.151525836}, {\"y\": 6930392.025135122, \"x\": 20026572.39474939}], \"left\": 0}], \"paths\": {\"BD\": {\"path\": \"M651.84,230.21l-0.6,-2.0l-1.36,-1.71l-2.31,-0.11l-0.41,0.48l0.2,0.94l-0.53,0.99l-0.72,-0.36l-0.68,0.35l-1.2,-0.36l-0.37,-2.0l-0.81,-1.86l0.39,-1.46l-0.22,-0.47l-1.14,-0.53l0.29,-0.5l1.48,-0.94l0.03,-0.65l-1.55,-1.22l0.55,-1.14l1.61,0.94l1.04,0.15l0.18,1.54l0.34,0.35l5.64,0.63l-0.84,1.64l-1.22,0.34l-0.77,1.51l0.07,0.47l1.37,1.37l0.67,-0.19l0.42,-1.39l1.21,3.84l-0.03,1.21l-0.33,-0.15l-0.4,0.28Z\", \"name\": \"Bangladesh\"}, \"BE\": {\"path\": \"M429.29,144.05l1.91,0.24l2.1,-0.63l2.63,1.99l-0.21,1.66l-0.69,0.4l-0.18,1.2l-1.66,-1.13l-1.39,0.15l-2.73,-2.7l-1.17,-0.18l-0.16,-0.52l1.54,-0.5Z\", \"name\": \"Belgium\"}, \"BF\": {\"path\": \"M421.42,247.64l-0.11,0.95l0.34,1.16l1.4,1.71l0.07,1.1l0.32,0.37l2.55,0.51l-0.04,1.28l-0.38,0.53l-1.07,0.21l-0.72,1.18l-0.63,0.21l-3.22,-0.25l-0.94,0.39l-5.4,-0.05l-0.39,0.38l0.16,2.73l-1.23,-0.43l-1.17,0.1l-0.89,0.57l-2.27,-1.72l-0.13,-1.11l0.61,-0.96l0.02,-0.93l1.87,-1.98l0.44,-1.81l0.43,-0.39l1.28,0.26l1.05,-0.52l0.47,-0.73l1.84,-1.09l0.55,-0.83l2.2,-1.0l1.15,-0.3l0.72,0.45l1.13,-0.01Z\", \"name\": \"Burkina Faso\"}, \"BG\": {\"path\": \"M491.65,168.18l-0.86,0.88l-0.91,2.17l0.48,1.34l-1.6,-0.24l-2.55,0.95l-0.28,1.51l-1.8,0.22l-2.0,-1.0l-1.92,0.79l-1.42,-0.07l-0.15,-1.63l-1.05,-0.97l0.0,-0.8l1.2,-1.57l0.01,-0.56l-1.14,-1.23l-0.05,-0.94l0.88,0.97l0.88,-0.2l1.91,0.47l3.68,0.16l1.42,-0.81l2.72,-0.66l2.55,1.24Z\", \"name\": \"Bulgaria\"}, \"BA\": {\"path\": \"M463.49,163.65l2.1,0.5l1.72,-0.03l1.52,0.68l-0.36,0.78l0.08,0.45l1.04,1.02l-0.25,0.98l-1.81,1.15l-0.38,1.38l-1.67,-0.87l-0.89,-1.2l-2.11,-1.83l-1.63,-2.22l0.23,-0.57l0.48,0.38l0.55,-0.06l0.43,-0.51l0.94,-0.06Z\", \"name\": \"Bosnia and Herz.\"}, \"BN\": {\"path\": \"M707.48,273.58l0.68,-0.65l1.41,-0.91l-0.15,1.63l-0.81,-0.05l-0.61,0.58l-0.53,-0.6Z\", \"name\": \"Brunei\"}, \"BO\": {\"path\": \"M263.83,340.69l-3.09,-0.23l-0.38,0.23l-0.7,1.52l-1.31,-1.53l-3.28,-0.64l-2.37,2.4l-1.31,0.26l-0.88,-3.26l-1.3,-2.86l0.74,-2.37l-0.13,-0.43l-1.2,-1.01l-0.37,-1.89l-1.08,-1.55l1.45,-2.56l-0.96,-2.33l0.47,-1.06l-0.34,-0.73l0.91,-1.32l0.16,-3.84l0.5,-1.18l-1.81,-3.41l2.46,0.07l0.8,-0.85l3.4,-1.91l2.66,-0.35l-0.19,1.38l0.3,1.07l-0.05,1.97l2.72,2.27l2.88,0.49l0.89,0.86l1.79,0.58l0.98,0.7l1.71,0.05l1.17,0.61l0.6,2.7l-0.7,0.54l0.96,2.99l0.37,0.28l4.3,0.1l-0.25,1.2l0.27,1.02l1.43,0.9l0.5,1.35l-0.41,1.86l-0.65,1.08l0.12,1.35l-2.69,-1.65l-2.4,-0.03l-4.36,0.76l-1.49,2.5l-0.11,1.52l-0.75,2.37Z\", \"name\": \"Bolivia\"}, \"JP\": {\"path\": \"M781.12,166.87l1.81,0.68l1.62,-0.97l0.39,2.42l-3.35,0.75l-2.23,2.88l-3.63,-1.9l-0.56,0.2l-1.26,3.05l-2.16,0.03l-0.29,-2.51l1.08,-2.03l2.45,-0.16l0.37,-0.33l1.25,-5.94l2.47,2.71l2.03,1.12ZM773.56,187.34l-0.91,2.22l0.37,1.52l-1.14,1.75l-3.02,1.26l-4.58,0.27l-3.34,3.01l-1.25,-0.8l-0.09,-1.9l-0.46,-0.38l-4.35,0.62l-3.0,1.32l-2.85,0.05l-0.37,0.27l0.13,0.44l2.32,1.89l-1.54,4.34l-1.26,0.9l-0.79,-0.7l0.56,-2.27l-0.21,-0.45l-1.47,-0.75l-0.74,-1.4l2.12,-0.84l1.26,-1.7l2.45,-1.42l1.83,-1.91l4.78,-0.81l2.6,0.57l0.44,-0.21l2.39,-4.66l1.29,1.06l0.5,0.01l5.1,-4.02l1.69,-3.73l-0.38,-3.4l0.9,-1.61l2.14,-0.44l1.23,3.72l-0.07,2.18l-2.23,2.84l-0.04,3.16ZM757.78,196.26l0.19,0.56l-1.01,1.21l-1.16,-0.68l-1.28,0.65l-0.69,1.45l-1.02,-0.5l0.01,-0.93l1.14,-1.38l1.57,0.14l0.85,-0.98l1.4,0.46Z\", \"name\": \"Japan\"}, \"BI\": {\"path\": \"M495.45,295.49l-1.08,-2.99l1.14,-0.11l0.64,-1.19l0.76,0.09l0.65,1.83l-2.1,2.36Z\", \"name\": \"Burundi\"}, \"BJ\": {\"path\": \"M429.57,255.75l-0.05,0.8l0.5,1.34l-0.42,0.86l0.17,0.79l-1.81,2.12l-0.57,1.76l-0.08,5.42l-1.41,0.2l-0.48,-1.36l0.11,-5.71l-0.52,-0.7l-0.2,-1.35l-1.48,-1.48l0.21,-0.9l0.89,-0.43l0.42,-0.92l1.27,-0.36l1.22,-1.34l0.61,-0.0l1.62,1.24Z\", \"name\": \"Benin\"}, \"BT\": {\"path\": \"M650.32,213.86l0.84,0.71l-0.12,1.1l-3.76,-0.11l-1.57,0.4l-1.93,-0.87l1.48,-1.96l1.13,-0.57l1.63,0.57l1.33,0.08l0.99,0.65Z\", \"name\": \"Bhutan\"}, \"JM\": {\"path\": \"M228.38,239.28l-0.8,0.4l-2.26,-1.06l0.84,-0.23l2.14,0.3l1.17,0.56l-1.08,0.03Z\", \"name\": \"Jamaica\"}, \"BW\": {\"path\": \"M483.92,330.07l2.27,4.01l2.83,2.86l0.96,0.31l0.78,2.43l2.13,0.61l1.02,0.76l-3.0,1.64l-2.32,2.02l-1.54,2.69l-1.52,0.45l-0.64,1.94l-1.34,0.52l-1.85,-0.12l-1.21,-0.74l-1.35,-0.3l-1.22,0.62l-0.75,1.37l-2.31,1.9l-1.4,0.21l-0.35,-0.59l0.16,-1.75l-1.48,-2.54l-0.62,-0.43l-0.0,-7.1l2.08,-0.08l0.39,-0.4l0.07,-8.9l5.19,-0.93l0.8,0.89l0.51,0.07l1.5,-0.95l2.21,-0.49Z\", \"name\": \"Botswana\"}, \"BR\": {\"path\": \"M259.98,275.05l3.24,0.7l0.65,-0.53l4.55,-1.32l1.08,-1.06l-0.02,-0.63l0.55,-0.05l0.28,0.28l-0.26,0.87l0.22,0.48l0.73,0.32l0.4,0.81l-0.62,0.86l-0.4,2.13l0.82,2.56l1.69,1.43l1.43,0.2l3.17,-1.68l3.18,0.3l0.65,-0.75l-0.27,-0.92l1.9,-0.09l2.39,0.99l1.06,-0.61l0.84,0.78l1.2,-0.18l1.18,-1.06l0.84,-1.94l1.36,-2.11l0.37,-0.05l1.89,5.45l1.33,0.59l0.05,1.28l-1.77,1.94l0.02,0.56l1.02,0.87l4.07,0.36l0.08,2.16l0.66,0.29l1.74,-1.5l6.97,2.32l1.02,1.22l-0.35,1.18l0.49,0.5l2.81,-0.74l4.77,1.3l3.75,-0.08l3.57,2.0l3.29,2.86l1.93,0.72l2.12,0.12l0.71,0.62l1.21,4.51l-0.95,3.98l-4.72,5.06l-1.64,2.92l-1.72,2.05l-0.8,0.3l-0.72,2.03l0.18,4.75l-0.94,5.53l-0.81,1.13l-0.43,3.36l-2.55,3.5l-0.4,2.51l-1.86,1.04l-0.67,1.53l-2.54,0.01l-3.94,1.01l-1.83,1.2l-2.87,0.82l-3.03,2.19l-2.2,2.83l-0.36,2.0l0.4,1.58l-0.44,2.6l-0.51,1.2l-1.77,1.54l-2.75,4.78l-3.83,3.42l-1.24,2.74l-1.18,1.15l-0.36,-0.83l0.95,-1.14l0.01,-0.5l-1.52,-1.97l-4.56,-3.32l-1.03,-0.0l-2.38,-2.02l-0.81,-0.0l5.34,-5.45l3.77,-2.58l0.22,-2.46l-1.35,-1.81l-0.91,0.07l0.58,-2.33l0.01,-1.54l-1.11,-0.83l-1.75,0.3l-0.44,-3.11l-0.52,-0.95l-1.88,-0.88l-1.24,0.47l-2.17,-0.41l0.15,-3.21l-0.62,-1.34l0.66,-0.73l-0.22,-1.34l0.66,-1.13l0.44,-2.04l-0.61,-1.83l-1.4,-0.86l-0.2,-0.75l0.34,-1.39l-0.38,-0.5l-4.52,-0.1l-0.72,-2.22l0.59,-0.42l-0.03,-1.1l-0.5,-0.87l-0.32,-1.7l-1.45,-0.76l-1.63,-0.02l-1.05,-0.72l-1.6,-0.48l-1.13,-0.99l-2.69,-0.4l-2.47,-2.06l0.13,-4.35l-0.45,-0.45l-3.46,0.5l-3.44,1.94l-0.6,0.74l-2.9,-0.17l-1.47,0.42l-0.72,-0.18l0.15,-3.52l-0.63,-0.34l-1.94,1.41l-1.87,-0.06l-0.83,-1.18l-1.37,-0.26l0.21,-1.01l-1.35,-1.49l-0.88,-1.91l0.56,-0.6l-0.0,-0.81l1.29,-0.62l0.22,-0.43l-0.22,-1.19l0.61,-0.91l0.15,-0.99l2.65,-1.58l1.99,-0.47l0.42,-0.36l2.06,0.11l0.42,-0.33l1.19,-8.0l-0.41,-1.56l-1.1,-1.0l0.01,-1.33l1.91,-0.42l0.08,-0.96l-0.33,-0.43l-1.14,-0.2l-0.02,-0.83l4.47,0.05l0.82,-0.67l0.82,1.81l0.8,0.07l1.15,1.1l2.26,-0.05l0.71,-0.83l2.78,-0.96l0.48,-1.13l1.6,-0.64l0.24,-0.47l-0.48,-0.82l-1.83,-0.19l-0.36,-3.22Z\", \"name\": \"Brazil\"}, \"BS\": {\"path\": \"M226.4,223.87l-0.48,-1.15l-0.84,-0.75l0.36,-1.11l0.95,1.95l0.01,1.06ZM225.56,216.43l-1.87,0.29l-0.04,-0.22l0.74,-0.14l1.17,0.06Z\", \"name\": \"Bahamas\"}, \"BY\": {\"path\": \"M493.84,128.32l0.29,0.7l0.49,0.23l1.19,-0.38l2.09,0.72l0.19,1.26l-0.45,1.24l1.57,2.26l0.89,0.59l0.17,0.81l1.58,0.56l0.4,0.5l-0.53,0.41l-1.87,-0.11l-0.73,0.38l-0.13,0.52l1.04,2.74l-1.91,0.26l-0.89,0.99l-0.11,1.18l-2.73,-0.04l-0.53,-0.62l-0.52,-0.08l-0.75,0.46l-0.91,-0.42l-1.92,-0.07l-2.75,-0.79l-2.6,-0.28l-2.0,0.07l-1.5,0.92l-0.67,0.07l-0.08,-1.22l-0.59,-1.19l1.36,-0.88l0.01,-1.35l-0.7,-1.41l-0.07,-1.0l2.16,-0.02l2.72,-1.3l0.75,-2.04l1.91,-1.04l0.2,-0.41l-0.19,-1.25l3.8,-1.78l2.3,0.77Z\", \"name\": \"Belarus\"}, \"BZ\": {\"path\": \"M198.03,244.38l0.1,-4.49l0.69,-0.06l0.74,-1.3l0.34,0.28l-0.4,1.3l0.17,0.58l-0.34,2.25l-1.3,1.42Z\", \"name\": \"Belize\"}, \"RU\": {\"path\": \"M491.55,115.25l2.55,-1.85l-0.01,-0.65l-2.2,-1.5l7.32,-6.76l1.03,-2.11l-0.13,-0.49l-3.46,-2.52l0.86,-2.7l-2.11,-2.81l1.56,-3.67l-2.77,-4.52l2.15,-2.99l-0.08,-0.55l-3.65,-2.73l0.3,-2.54l1.81,-0.37l4.26,-1.77l2.42,-1.45l4.06,2.61l6.79,1.04l9.34,4.85l1.78,1.88l0.14,2.46l-2.55,2.02l-3.9,1.06l-11.07,-3.14l-2.06,0.53l-0.13,0.7l3.94,2.94l0.31,5.86l0.26,0.36l5.14,2.24l0.58,-0.29l0.32,-1.94l-1.35,-1.78l1.13,-1.09l6.13,2.42l2.11,-0.98l0.18,-0.56l-1.51,-2.67l5.41,-3.76l2.07,0.22l2.26,1.41l0.57,-0.16l1.46,-2.87l-0.05,-0.44l-1.92,-2.32l1.12,-2.32l-1.32,-2.27l5.87,1.16l1.04,1.75l-2.59,0.43l-0.33,0.4l0.02,2.36l2.46,1.83l3.87,-0.91l0.86,-2.8l13.69,-5.65l0.99,0.11l-1.92,2.06l0.23,0.67l3.11,0.45l2.0,-1.48l4.56,-0.12l3.64,-1.73l2.65,2.44l0.56,-0.01l2.85,-2.88l-0.01,-0.57l-2.35,-2.29l0.9,-1.01l7.14,1.3l3.41,1.36l9.05,4.97l0.51,-0.11l1.67,-2.27l-0.05,-0.53l-2.43,-2.21l-0.06,-0.78l-0.34,-0.36l-2.52,-0.36l0.64,-1.93l-1.32,-3.46l-0.06,-1.21l4.48,-4.06l1.69,-4.29l1.6,-0.81l6.23,1.18l0.44,2.21l-2.29,3.64l0.06,0.5l1.47,1.39l0.76,3.0l-0.56,6.03l2.69,2.82l-0.96,2.57l-4.86,5.95l0.23,0.64l2.86,0.61l0.42,-0.17l0.93,-1.4l2.64,-1.03l0.87,-2.24l2.09,-1.96l0.07,-0.5l-1.36,-2.28l1.09,-2.69l-0.32,-0.55l-2.47,-0.33l-0.5,-2.06l1.94,-4.38l-0.06,-0.42l-2.96,-3.4l4.12,-2.88l0.16,-0.4l-0.51,-2.93l0.54,-0.05l1.13,2.25l-0.96,4.35l0.27,0.47l2.68,0.84l0.5,-0.51l-1.02,-2.99l3.79,-1.66l5.01,-0.24l4.53,2.61l0.48,-0.06l0.07,-0.48l-2.18,-3.82l-0.23,-4.67l3.98,-0.9l5.97,0.21l5.49,-0.64l0.27,-0.65l-1.83,-2.31l2.56,-2.9l2.87,-0.17l4.8,-2.47l6.54,-0.67l1.03,-1.42l6.25,-0.45l2.32,1.11l5.53,-2.7l4.5,0.08l0.39,-0.28l0.66,-2.15l2.26,-2.12l5.69,-2.11l3.21,1.29l-2.46,0.94l-0.25,0.42l0.34,0.35l5.41,0.77l0.61,2.33l0.58,0.25l2.2,-1.22l7.13,0.07l5.51,2.47l1.79,1.72l-0.53,2.24l-9.16,4.15l-1.97,1.52l0.16,0.71l6.77,1.91l2.16,-0.78l1.13,2.74l0.67,0.11l1.01,-1.15l3.81,-0.73l7.7,0.77l0.54,1.99l0.36,0.29l10.47,0.71l0.43,-0.38l0.13,-3.23l4.87,0.78l3.95,-0.02l3.83,2.4l1.03,2.71l-1.35,1.79l0.02,0.5l3.15,3.64l4.07,1.96l0.53,-0.18l2.23,-4.47l3.95,1.93l4.16,-1.21l4.73,1.39l2.05,-1.26l3.94,0.62l0.43,-0.55l-1.68,-4.02l2.89,-1.8l22.31,3.03l2.16,2.75l6.55,3.51l10.29,-0.81l4.82,0.73l1.85,1.66l-0.29,3.08l0.25,0.41l3.08,1.26l3.56,-0.88l4.35,-0.11l4.8,0.87l4.57,-0.47l4.23,3.79l0.43,0.07l3.1,-1.4l0.16,-0.6l-1.88,-2.62l0.85,-1.52l7.71,1.21l5.22,-0.26l7.09,2.09l9.59,5.22l6.35,4.11l-0.2,2.38l1.88,1.41l0.6,-0.42l-0.48,-2.53l6.15,0.57l4.4,3.51l-1.97,1.43l-4.0,0.41l-0.36,0.39l-0.06,3.79l-0.74,0.62l-2.07,-0.11l-1.91,-1.39l-3.14,-1.11l-0.78,-1.85l-2.72,-0.68l-2.63,0.49l-1.04,-1.1l0.46,-1.31l-0.5,-0.51l-3.0,0.98l-0.22,0.58l0.99,1.7l-1.21,1.48l-3.04,1.68l-3.12,-0.28l-0.4,0.23l0.09,0.46l2.2,2.09l1.46,3.2l1.15,1.1l0.24,1.33l-0.42,0.67l-4.63,-0.77l-6.96,2.9l-2.19,0.44l-7.6,5.06l-0.84,1.45l-3.61,-2.37l-6.24,2.82l-0.94,-1.15l-0.53,-0.08l-2.28,1.52l-3.2,-0.49l-0.44,0.27l-0.78,2.37l-3.05,3.78l0.09,1.47l0.29,0.36l2.54,0.72l-0.29,4.53l-1.97,0.11l-0.35,0.26l-1.07,2.94l0.8,1.45l-3.91,1.58l-1.05,3.95l-3.48,0.77l-0.3,0.3l-0.72,3.29l-3.09,2.65l-0.7,-1.74l-2.44,-12.44l1.16,-4.71l2.04,-2.06l0.22,-1.64l3.8,-0.86l4.46,-4.61l4.28,-3.81l4.48,-3.01l2.17,-5.63l-0.42,-0.54l-3.04,0.33l-1.77,3.31l-5.86,3.86l-1.86,-4.25l-0.45,-0.23l-6.46,1.3l-6.47,6.44l-0.01,0.55l1.58,1.74l-8.24,1.17l0.15,-2.2l-0.34,-0.42l-3.89,-0.56l-3.25,1.81l-7.62,-0.62l-8.45,1.19l-17.71,15.41l0.22,0.7l3.74,0.41l1.36,2.17l2.43,0.76l1.88,-1.68l2.4,0.2l3.4,3.54l0.08,2.6l-1.95,3.42l-0.21,3.9l-1.1,5.06l-3.71,4.54l-0.87,2.21l-8.29,8.89l-3.19,1.7l-1.32,0.03l-1.45,-1.36l-0.49,-0.04l-2.27,1.5l0.41,-3.65l-0.59,-2.47l1.75,-0.89l2.91,0.53l0.42,-0.2l1.68,-3.03l0.87,-3.46l0.97,-1.18l1.32,-2.88l-0.45,-0.56l-4.14,0.95l-2.19,1.25l-3.41,-0.0l-1.06,-2.93l-2.97,-2.3l-4.28,-1.06l-1.75,-5.07l-2.66,-5.01l-2.29,-1.29l-3.75,-1.01l-3.44,0.08l-3.18,0.62l-2.24,1.77l0.05,0.66l1.18,0.69l0.02,1.43l-1.33,1.05l-2.26,3.51l-0.04,1.43l-3.16,1.84l-2.82,-1.16l-3.01,0.23l-1.35,-1.07l-1.5,-0.35l-3.9,2.31l-3.22,0.52l-2.27,0.79l-3.05,-0.51l-2.21,0.03l-1.48,-1.6l-2.6,-1.63l-2.63,-0.43l-5.46,1.01l-3.23,-1.25l-0.72,-2.57l-5.2,-1.24l-2.75,-1.36l-0.5,0.12l-2.59,3.45l0.84,2.1l-2.06,1.93l-3.41,-0.77l-2.42,-0.12l-1.83,-1.54l-2.53,-0.05l-2.42,-0.98l-3.86,1.57l-4.72,2.78l-3.3,0.75l-1.55,-1.92l-3.0,0.41l-1.11,-1.33l-1.62,-0.59l-1.31,-1.94l-1.38,-0.6l-3.7,0.79l-3.31,-1.83l-0.51,0.11l-0.99,1.29l-5.29,-8.05l-2.96,-2.48l0.65,-0.77l0.01,-0.51l-0.5,-0.11l-6.2,3.21l-1.84,0.15l0.15,-1.39l-0.26,-0.42l-3.22,-1.17l-2.46,0.7l-0.69,-3.16l-0.32,-0.31l-4.5,-0.75l-2.47,1.47l-6.19,1.27l-1.29,0.86l-9.51,1.3l-1.15,1.17l-0.03,0.53l1.47,1.9l-1.89,0.69l-0.22,0.56l0.31,0.6l-2.11,1.44l0.03,0.68l3.75,2.12l-0.39,0.98l-3.23,-0.13l-0.86,0.86l-3.09,-1.59l-3.97,0.07l-2.66,1.35l-8.32,-3.56l-4.07,0.06l-5.39,3.68l-0.39,2.0l-2.03,-1.5l-0.59,0.13l-2.0,3.59l0.57,0.93l-1.28,2.16l0.06,0.48l2.13,2.17l1.95,0.04l1.37,1.82l-0.23,1.46l0.25,0.43l0.83,0.33l-0.8,1.31l-2.49,0.62l-2.49,3.2l0.0,0.49l2.17,2.78l-0.15,2.18l2.5,3.24l-1.58,1.59l-0.7,-0.13l-1.63,-1.72l-2.29,-0.84l-0.94,-1.31l-2.34,-0.63l-1.48,0.4l-0.43,-0.47l-3.51,-1.48l-5.76,-1.01l-0.45,0.19l-2.89,-2.34l-2.9,-1.2l-1.53,-1.29l1.29,-0.43l2.08,-2.61l-0.05,-0.55l-0.89,-0.79l3.05,-1.06l0.27,-0.42l-0.07,-0.69l-0.49,-0.35l-1.73,0.39l0.04,-0.68l1.04,-0.72l2.66,-0.48l0.4,-1.32l-0.5,-1.6l0.92,-1.54l0.03,-1.17l-0.29,-0.37l-3.69,-1.06l-1.41,0.02l-1.42,-1.41l-2.19,0.38l-2.77,-1.01l-0.03,-0.59l-0.89,-1.43l-2.0,-0.32l-0.11,-0.54l0.49,-0.53l0.01,-0.53l-1.6,-1.9l-3.58,0.02l-0.88,0.73l-0.46,-0.07l-1.0,-2.79l2.22,-0.02l0.97,-0.74l0.07,-0.57l-0.9,-1.04l-1.35,-0.48l-0.11,-0.7l-0.95,-0.58l-1.38,-1.99l0.46,-0.98l-0.51,-1.96l-2.45,-0.84l-1.21,0.3l-0.46,-0.76l-2.46,-0.83l-0.72,-1.87l-0.21,-1.69l-0.99,-0.85l0.85,-1.17l-0.7,-3.21l1.66,-1.97l-0.16,-0.79ZM749.2,170.72l-0.6,0.4l-0.13,0.16l-0.01,-0.51l0.74,-0.05ZM874.85,67.94l-5.63,0.48l-0.26,-0.84l3.15,-1.89l1.94,0.01l3.19,1.16l-2.39,1.09ZM797.39,48.49l-2.0,1.36l-3.8,-0.42l-4.25,-1.8l0.35,-0.97l9.69,1.83ZM783.67,46.12l-1.63,3.09l-8.98,-0.13l-4.09,1.14l-4.54,-2.97l1.16,-3.01l3.05,-0.89l6.5,0.22l8.54,2.56ZM778.2,134.98l-0.56,-0.9l0.27,-0.12l0.29,1.01ZM778.34,135.48l0.94,3.53l-0.05,3.38l1.05,3.39l2.18,5.0l-2.89,-0.83l-0.49,0.26l-1.54,4.65l2.42,3.5l-0.04,1.13l-1.24,-1.24l-0.61,0.06l-1.09,1.61l-0.28,-1.61l0.27,-3.1l-0.28,-3.4l0.58,-2.47l0.11,-4.39l-1.46,-3.36l0.21,-4.32l2.15,-1.46l0.07,-0.34ZM771.95,56.61l1.76,-1.42l2.89,-0.42l3.28,1.71l0.14,0.6l-3.27,0.03l-4.81,-0.5ZM683.76,31.09l-13.01,1.93l4.03,-6.35l1.82,-0.56l1.73,0.34l5.99,2.98l-0.56,1.66ZM670.85,27.93l-5.08,0.64l-6.86,-1.57l-3.99,-2.05l-2.1,-4.16l-2.6,-0.87l5.72,-3.5l5.2,-1.28l4.69,2.85l5.59,5.4l-0.56,4.53ZM564.15,68.94l-0.64,0.17l-7.85,-0.57l-0.86,-2.04l-4.28,-1.17l-0.28,-1.94l2.27,-0.89l0.25,-0.39l-0.08,-2.38l4.81,-3.97l-0.15,-0.7l-1.47,-0.38l5.3,-3.81l0.15,-0.44l-0.58,-1.94l5.28,-2.51l8.21,-3.27l8.28,-0.96l4.35,-1.94l4.6,-0.64l1.36,1.61l-1.34,1.28l-16.43,4.94l-7.97,4.88l-7.74,9.63l0.66,4.14l4.16,3.27ZM548.81,18.48l-5.5,1.18l-0.58,1.02l-2.59,0.84l-2.13,-1.07l1.12,-1.42l-0.3,-0.65l-2.33,-0.07l1.68,-0.36l3.47,-0.06l0.42,1.29l0.66,0.16l1.38,-1.34l2.15,-0.88l2.94,1.01l-0.39,0.36ZM477.37,133.15l-4.08,0.05l-2.56,-0.32l0.33,-0.87l3.17,-1.03l3.24,0.96l-0.09,1.23Z\", \"name\": \"Russia\"}, \"RW\": {\"path\": \"M497.0,288.25l0.71,1.01l-0.11,1.09l-1.63,0.03l-1.04,1.39l-0.83,-0.11l0.51,-1.2l0.08,-1.34l0.42,-0.41l0.7,0.14l1.19,-0.61Z\", \"name\": \"Rwanda\"}, \"RS\": {\"path\": \"M469.4,163.99l0.42,-0.5l-0.01,-0.52l-1.15,-1.63l1.43,-0.62l1.33,0.12l1.17,1.06l0.46,1.13l1.34,0.64l0.35,1.35l1.46,0.9l0.76,-0.29l0.2,0.69l-0.48,0.78l0.22,1.12l1.05,1.22l-0.77,0.8l-0.37,1.52l-1.21,0.08l0.24,-0.64l-0.39,-0.54l-2.08,-1.64l-0.9,0.05l-0.48,0.94l-2.12,-1.37l0.53,-1.6l-1.11,-1.37l0.51,-1.1l-0.41,-0.57Z\", \"name\": \"Serbia\"}, \"LT\": {\"path\": \"M486.93,129.3l0.17,1.12l-1.81,0.98l-0.72,2.02l-2.47,1.18l-2.1,-0.02l-0.73,-1.05l-1.06,-0.3l-0.09,-1.87l-3.56,-1.13l-0.43,-2.36l2.48,-0.94l4.12,0.22l2.25,-0.31l0.52,0.69l1.24,0.21l2.19,1.56Z\", \"name\": \"Lithuania\"}, \"LU\": {\"path\": \"M436.08,149.45l-0.48,-0.07l0.3,-1.28l0.27,0.4l-0.09,0.96Z\", \"name\": \"Luxembourg\"}, \"LR\": {\"path\": \"M399.36,265.97l0.18,1.54l-0.48,0.99l0.08,0.47l2.47,1.8l-0.33,2.8l-2.65,-1.13l-5.78,-4.61l0.58,-1.32l2.1,-2.33l0.86,-0.22l0.77,1.14l-0.14,0.85l0.59,0.87l1.0,0.14l0.76,-0.99Z\", \"name\": \"Liberia\"}, \"RO\": {\"path\": \"M487.53,154.23l0.6,0.24l2.87,3.98l-0.17,2.69l0.45,1.42l1.32,0.81l1.35,-0.42l0.76,0.36l0.02,0.31l-0.83,0.45l-0.59,-0.22l-0.54,0.3l-0.62,3.3l-1.0,-0.22l-2.07,-1.13l-2.95,0.71l-1.25,0.76l-3.51,-0.15l-1.89,-0.47l-0.87,0.16l-0.82,-1.3l0.29,-0.26l-0.06,-0.64l-1.09,-0.34l-0.56,0.5l-1.05,-0.64l-0.39,-1.39l-1.36,-0.65l-0.35,-1.0l-0.83,-0.75l1.54,-0.54l2.66,-4.21l2.4,-1.24l2.96,0.34l1.48,0.73l0.79,-0.45l1.78,-0.3l0.75,-0.74l0.79,0.0Z\", \"name\": \"Romania\"}, \"GW\": {\"path\": \"M386.23,253.6l-0.29,0.84l0.15,0.6l-2.21,0.59l-0.86,0.96l-1.04,-0.83l-1.09,-0.23l-0.54,-1.06l-0.66,-0.49l2.41,-0.48l4.13,0.1Z\", \"name\": \"Guinea-Bissau\"}, \"GT\": {\"path\": \"M195.08,249.77l-2.48,-0.37l-1.03,-0.45l-1.14,-0.89l0.3,-0.99l-0.24,-0.68l0.96,-1.66l2.98,-0.01l0.4,-0.37l-0.19,-1.28l-1.67,-1.4l0.51,-0.4l0.0,-1.05l3.85,0.02l-0.21,4.53l0.4,0.43l1.46,0.38l-1.48,0.98l-0.35,0.7l0.12,0.57l-2.2,1.96Z\", \"name\": \"Guatemala\"}, \"GR\": {\"path\": \"M487.07,174.59l-0.59,1.43l-0.37,0.21l-2.84,-0.35l-3.03,0.77l-0.18,0.68l1.28,1.23l-0.61,0.23l-1.14,0.0l-1.2,-1.39l-0.63,0.03l-0.53,1.01l0.56,1.76l1.03,1.19l-0.56,0.38l-0.05,0.62l2.52,2.12l0.02,0.87l-1.78,-0.59l-0.48,0.56l0.5,1.0l-1.07,0.2l-0.3,0.53l0.75,2.01l-0.98,0.02l-1.84,-1.12l-1.37,-4.2l-2.21,-2.95l-0.11,-0.56l1.04,-1.28l0.2,-0.95l0.85,-0.66l0.03,-0.46l1.32,-0.21l1.01,-0.64l1.22,0.05l0.65,-0.56l2.26,-0.0l1.82,-0.75l1.85,1.0l2.28,-0.28l0.35,-0.39l0.01,-0.77l0.34,0.22ZM480.49,192.16l0.58,0.4l-0.68,-0.12l0.11,-0.28ZM482.52,192.82l2.51,0.06l0.24,0.32l-1.99,0.13l-0.77,-0.51Z\", \"name\": \"Greece\"}, \"GQ\": {\"path\": \"M448.79,279.62l0.02,2.22l-4.09,0.0l0.69,-2.27l3.38,0.05Z\", \"name\": \"Eq. Guinea\"}, \"GY\": {\"path\": \"M277.42,270.07l-0.32,1.83l-1.32,0.57l-0.23,0.46l-0.28,2.0l1.11,1.82l0.83,0.19l0.32,1.25l1.13,1.62l-1.21,-0.19l-1.08,0.71l-1.77,0.5l-0.44,0.46l-0.86,-0.09l-1.32,-1.01l-0.77,-2.27l0.36,-1.9l0.68,-1.23l-0.57,-1.17l-0.74,-0.43l0.12,-1.16l-0.9,-0.69l-1.1,0.09l-1.31,-1.48l0.53,-0.72l-0.04,-0.84l1.99,-0.86l0.05,-0.59l-0.71,-0.78l0.14,-0.57l1.66,-1.24l1.36,0.77l1.41,1.49l0.06,1.15l0.37,0.38l0.8,0.05l2.06,1.86Z\", \"name\": \"Guyana\"}, \"GE\": {\"path\": \"M521.71,168.93l5.29,0.89l4.07,2.01l1.41,-0.44l2.07,0.56l0.68,1.1l1.07,0.55l-0.12,0.59l0.98,1.29l-1.01,-0.13l-1.81,-0.83l-0.94,0.47l-3.23,0.43l-2.29,-1.39l-2.33,0.05l0.21,-0.97l-0.76,-2.26l-1.45,-1.12l-1.43,-0.39l-0.41,-0.42Z\", \"name\": \"Georgia\"}, \"GB\": {\"path\": \"M412.61,118.72l-2.19,3.22l-0.0,0.45l5.13,-0.3l-0.53,2.37l-2.2,3.12l0.29,0.63l2.37,0.21l2.33,4.3l1.76,0.69l2.2,5.12l2.94,0.77l-0.23,1.62l-1.15,0.88l-0.1,0.52l0.82,1.42l-1.86,1.43l-3.3,-0.02l-4.12,0.87l-1.04,-0.58l-0.47,0.06l-1.51,1.41l-2.12,-0.34l-1.86,1.18l-0.6,-0.29l3.19,-3.0l2.16,-0.69l0.28,-0.41l-0.34,-0.36l-3.73,-0.53l-0.4,-0.76l2.2,-0.87l0.17,-0.61l-1.26,-1.67l0.36,-1.7l3.38,0.28l0.43,-0.33l0.37,-1.99l-1.79,-2.49l-3.11,-0.72l-0.38,-0.59l0.79,-1.35l-0.04,-0.46l-0.82,-0.97l-0.61,0.01l-0.68,0.84l-0.1,-2.34l-1.23,-1.88l0.85,-3.47l1.77,-2.68l1.85,0.26l2.17,-0.22ZM406.26,132.86l-1.01,1.77l-1.57,-0.59l-1.16,0.01l0.37,-1.54l-0.39,-1.39l1.45,-0.1l2.3,1.84Z\", \"name\": \"United Kingdom\"}, \"GA\": {\"path\": \"M453.24,279.52l-0.08,0.98l0.7,1.29l2.36,0.24l-0.98,2.63l1.18,1.79l0.25,1.78l-0.29,1.52l-0.6,0.93l-1.84,-0.09l-1.23,-1.11l-0.66,0.23l-0.15,0.84l-1.42,0.26l-1.02,0.7l-0.11,0.52l0.77,1.35l-1.34,0.97l-3.94,-4.3l-1.44,-2.45l0.06,-0.6l0.54,-0.81l1.05,-3.46l4.17,-0.07l0.4,-0.4l-0.02,-2.66l2.39,0.21l1.25,-0.27Z\", \"name\": \"Gabon\"}, \"GN\": {\"path\": \"M391.8,254.11l0.47,0.8l1.11,-0.32l0.98,0.7l1.07,0.2l2.26,-1.22l0.64,0.44l1.13,1.56l-0.48,1.4l0.8,0.3l-0.08,0.48l0.46,0.68l-0.35,1.36l1.05,2.61l-1.0,0.69l0.03,1.41l-0.72,-0.06l-1.08,1.0l-0.24,-0.27l0.07,-1.11l-1.05,-1.54l-1.79,0.21l-0.35,-2.01l-1.6,-2.18l-2.0,-0.0l-1.31,0.54l-1.95,2.18l-1.86,-2.19l-1.2,-0.78l-0.3,-1.11l-0.8,-0.85l0.65,-0.72l0.81,-0.03l1.64,-0.8l0.23,-1.87l2.67,0.64l0.89,-0.3l1.21,0.15Z\", \"name\": \"Guinea\"}, \"GM\": {\"path\": \"M379.31,251.39l0.1,-0.35l2.43,-0.07l0.74,-0.61l0.51,-0.03l0.77,0.49l-1.03,-0.3l-1.87,0.9l-1.65,-0.04ZM384.03,250.91l0.91,0.05l0.75,-0.24l-0.59,0.31l-1.08,-0.13Z\", \"name\": \"Gambia\"}, \"GL\": {\"path\": \"M353.02,1.2l14.69,4.67l-3.68,1.89l-22.97,0.86l-0.36,0.27l0.12,0.43l1.55,1.18l8.79,-0.66l7.48,2.07l4.86,-1.77l1.66,1.73l-2.53,3.19l-0.01,0.48l0.46,0.15l6.35,-2.2l12.06,-2.31l7.24,1.13l1.09,1.99l-9.79,4.01l-1.44,1.32l-7.87,0.98l-0.35,0.41l0.38,0.38l5.07,0.24l-2.53,3.58l-2.07,3.81l0.08,6.05l2.57,3.11l-3.22,0.2l-4.12,1.66l-0.05,0.72l4.45,2.65l0.51,3.75l-2.3,0.4l-0.25,0.64l2.79,3.69l-4.82,0.31l-0.36,0.29l0.16,0.44l2.62,1.8l-0.59,1.22l-3.3,0.7l-3.45,0.01l-0.29,0.68l3.03,3.12l0.02,1.34l-4.4,-1.73l-1.72,1.35l0.15,0.66l3.31,1.15l3.13,2.71l0.81,3.16l-3.85,0.75l-4.89,-4.26l-0.47,-0.03l-0.17,0.44l0.79,2.86l-2.71,2.21l-0.13,0.44l0.37,0.27l8.73,0.34l-12.32,6.64l-7.24,1.48l-2.94,0.08l-2.69,1.75l-3.43,4.41l-5.24,2.84l-1.73,0.18l-7.12,2.1l-2.15,2.52l-0.13,2.99l-1.19,2.45l-4.01,3.09l-0.14,0.44l0.97,2.9l-2.28,6.48l-3.1,0.2l-3.83,-3.07l-4.86,-0.02l-2.25,-1.93l-1.7,-3.79l-4.3,-4.84l-1.21,-2.49l-0.44,-3.8l-3.32,-3.63l0.84,-2.86l-1.56,-1.7l2.28,-4.6l3.83,-1.74l1.03,-1.96l0.52,-3.47l-0.59,-0.41l-4.17,2.21l-2.07,0.58l-2.72,-1.28l-0.15,-2.71l0.85,-2.09l2.01,-0.06l5.06,1.2l0.46,-0.23l-0.14,-0.49l-6.54,-4.47l-2.67,0.55l-1.58,-0.86l2.56,-4.01l-0.03,-0.48l-1.5,-1.74l-4.98,-8.5l-3.13,-1.96l0.03,-1.88l-0.24,-0.37l-6.85,-3.02l-5.36,-0.38l-12.7,0.58l-2.78,-1.57l-3.66,-2.77l5.73,-1.45l5.0,-0.28l0.38,-0.38l-0.35,-0.41l-10.67,-1.38l-5.3,-2.06l0.25,-1.54l18.41,-5.26l1.22,-2.27l-0.25,-0.55l-6.14,-1.86l1.68,-1.77l8.55,-4.03l3.59,-0.63l0.3,-0.54l-0.88,-2.27l5.47,-1.47l7.65,-0.95l7.55,-0.05l3.04,1.85l6.48,-3.27l5.81,2.22l3.56,0.5l5.16,1.94l0.5,-0.21l-0.17,-0.52l-5.71,-3.13l0.28,-2.13l8.12,-3.6l8.7,0.28l3.35,-2.34l8.71,-0.6l19.93,0.8Z\", \"name\": \"Greenland\"}, \"KW\": {\"path\": \"M540.81,207.91l0.37,0.86l-0.17,0.76l0.6,1.53l-0.95,0.04l-0.82,-1.28l-1.57,-0.18l1.31,-1.88l1.22,0.17Z\", \"name\": \"Kuwait\"}, \"GH\": {\"path\": \"M420.53,257.51l-0.01,0.72l0.96,1.2l0.24,3.73l0.59,0.95l-0.51,2.1l0.19,1.41l1.02,2.21l-6.97,2.84l-1.8,-0.57l0.04,-0.89l-1.02,-2.04l0.61,-2.65l1.07,-2.32l-0.96,-6.47l5.01,0.07l0.94,-0.39l0.61,0.11Z\", \"name\": \"Ghana\"}, \"OM\": {\"path\": \"M568.09,230.93l-0.91,1.67l-1.22,0.04l-0.6,0.76l-0.41,1.51l0.27,1.58l-1.16,0.05l-1.56,0.97l-0.76,1.74l-1.62,0.05l-0.98,0.65l-0.17,1.15l-0.89,0.52l-1.49,-0.18l-2.4,0.94l-2.47,-5.4l7.35,-2.71l1.67,-5.23l-1.12,-2.09l0.05,-0.83l0.67,-1.0l0.07,-1.05l0.9,-0.42l-0.05,-2.07l0.7,-0.01l1.0,1.62l1.51,1.08l3.3,0.84l1.73,2.29l0.81,0.37l-1.23,2.35l-0.99,0.79Z\", \"name\": \"Oman\"}, \"_2\": {\"path\": \"M531.15,258.94l1.51,0.12l5.13,-0.95l5.3,-1.48l-0.01,4.4l-2.67,3.39l-1.85,0.01l-8.04,-2.94l-2.55,-3.17l1.12,-1.71l2.04,2.34Z\", \"name\": \"Somaliland\"}, \"_1\": {\"path\": \"M472.77,172.64l-1.08,-1.29l0.96,-0.77l0.29,-0.83l1.98,1.64l-0.36,0.67l-1.79,0.58Z\", \"name\": \"Kosovo\"}, \"_0\": {\"path\": \"M504.91,192.87l0.34,0.01l0.27,-0.07l-0.29,0.26l-0.31,-0.2Z\", \"name\": \"N. Cyprus\"}, \"JO\": {\"path\": \"M518.64,201.38l-5.14,1.56l-0.19,0.65l2.16,2.39l-0.89,1.14l-1.71,0.34l-1.71,1.8l-2.34,-0.37l1.21,-4.32l0.56,-4.07l2.8,0.94l4.46,-2.71l0.79,2.66Z\", \"name\": \"Jordan\"}, \"HR\": {\"path\": \"M455.59,162.84l1.09,0.07l-0.82,0.94l-0.27,-1.01ZM456.96,162.92l0.62,-0.41l1.73,0.45l0.42,-0.4l-0.01,-0.59l0.86,-0.52l0.2,-1.05l1.63,-0.68l2.57,1.68l2.07,0.6l0.87,-0.31l1.05,1.57l-0.52,0.63l-1.05,-0.56l-1.68,0.04l-2.1,-0.5l-1.29,0.06l-0.57,0.49l-0.59,-0.47l-0.62,0.16l-0.46,1.7l1.79,2.42l2.79,2.75l-1.18,-0.87l-2.21,-0.87l-1.67,-1.78l0.13,-0.63l-1.05,-1.19l-0.32,-1.27l-1.42,-0.43Z\", \"name\": \"Croatia\"}, \"HT\": {\"path\": \"M237.05,238.38l-1.16,0.43l-0.91,-0.55l0.05,-0.2l2.02,0.31ZM237.53,238.43l1.06,0.12l-0.05,0.01l-1.01,-0.12ZM239.25,238.45l0.79,-0.51l0.06,-0.62l-1.02,-1.0l0.02,-0.82l-0.3,-0.4l-0.93,-0.32l3.16,0.45l0.02,1.84l-0.48,0.34l-0.08,0.58l0.54,0.72l-1.78,-0.26Z\", \"name\": \"Haiti\"}, \"HU\": {\"path\": \"M462.08,157.89l0.65,-1.59l-0.09,-0.44l0.64,-0.0l0.39,-0.34l0.1,-0.69l1.75,0.87l2.32,-0.37l0.43,-0.66l3.49,-0.78l0.69,-0.78l0.57,-0.14l2.57,0.93l0.67,-0.23l1.03,0.65l0.08,0.37l-1.42,0.71l-2.59,4.14l-1.8,0.53l-1.68,-0.1l-2.74,1.23l-1.85,-0.54l-2.54,-1.66l-0.66,-1.1Z\", \"name\": \"Hungary\"}, \"HN\": {\"path\": \"M199.6,249.52l-1.7,-1.21l0.06,-0.94l3.04,-2.14l2.37,0.28l1.27,-0.09l1.1,-0.52l1.3,0.28l1.14,-0.25l1.38,0.37l2.23,1.37l-2.36,0.93l-1.23,-0.39l-0.88,1.3l-1.28,0.99l-0.98,-0.22l-0.42,0.52l-0.96,0.05l-0.36,0.41l0.04,0.88l-0.52,0.6l-0.3,0.04l-0.3,-0.55l-0.66,-0.31l0.11,-0.67l-0.48,-0.65l-0.87,-0.26l-0.73,0.2Z\", \"name\": \"Honduras\"}, \"PR\": {\"path\": \"M256.17,238.73l-0.26,0.27l-2.83,0.05l-0.07,-0.55l1.95,-0.1l1.22,0.33Z\", \"name\": \"Puerto Rico\"}, \"PS\": {\"path\": \"M509.21,203.07l0.1,-0.06l-0.02,0.03l-0.09,0.03ZM509.36,202.91l-0.02,-0.63l-0.33,-0.16l0.31,-1.09l0.24,0.1l-0.2,1.78Z\", \"name\": \"Palestine\"}, \"PT\": {\"path\": \"M401.84,187.38l-0.64,0.47l-1.13,-0.35l-0.91,0.17l0.28,-1.78l-0.24,-1.78l-1.25,-0.56l-0.45,-0.84l0.17,-1.66l1.01,-1.18l0.69,-2.92l-0.04,-1.39l-0.59,-1.9l1.3,-0.85l0.84,1.35l3.1,-0.3l0.46,0.99l-1.05,0.94l-0.03,2.16l-0.41,0.57l-0.08,1.1l-0.79,0.18l-0.26,0.59l0.91,1.6l-0.63,1.75l0.76,1.09l-1.1,1.52l0.07,1.05Z\", \"name\": \"Portugal\"}, \"PY\": {\"path\": \"M274.9,336.12l0.74,1.52l-0.16,3.45l0.32,0.41l2.64,0.5l1.11,-0.47l1.4,0.59l0.36,0.6l0.53,3.42l1.27,0.4l0.98,-0.38l0.51,0.27l-0.0,1.18l-1.21,5.32l-2.09,1.9l-1.8,0.4l-4.71,-0.98l2.2,-3.63l-0.32,-1.5l-2.78,-1.28l-3.03,-1.94l-2.07,-0.44l-4.34,-4.06l0.91,-2.9l0.08,-1.42l1.07,-2.04l4.13,-0.72l2.18,0.03l2.05,1.17l0.03,0.59Z\", \"name\": \"Paraguay\"}, \"PA\": {\"path\": \"M213.8,263.68l0.26,-1.52l-0.36,-0.26l-0.01,-0.49l0.44,-0.1l0.93,1.4l1.26,0.03l0.77,0.49l1.38,-0.23l2.51,-1.11l0.86,-0.72l3.45,0.85l1.4,1.18l0.41,1.74l-0.21,0.34l-0.53,-0.12l-0.47,0.29l-0.16,0.6l-0.68,-1.28l0.45,-0.49l-0.19,-0.66l-0.47,-0.13l-0.54,-0.84l-1.5,-0.75l-1.1,0.16l-0.75,0.99l-1.62,0.84l-0.18,0.96l0.85,0.97l-0.58,0.45l-0.69,0.08l-0.34,-1.18l-1.27,0.03l-0.71,-1.05l-2.59,-0.46Z\", \"name\": \"Panama\"}, \"PG\": {\"path\": \"M808.58,298.86l2.54,2.56l-0.13,0.26l-0.33,0.12l-0.87,-0.78l-1.22,-2.16ZM801.41,293.04l0.5,0.29l0.26,0.27l-0.49,-0.35l-0.27,-0.21ZM803.17,294.58l0.59,0.5l0.08,1.06l-0.29,-0.91l-0.38,-0.65ZM796.68,298.41l0.52,0.75l1.43,-0.19l2.27,-1.81l-0.01,-1.43l1.12,0.16l-0.04,1.1l-0.7,1.28l-1.12,0.18l-0.62,0.79l-2.46,1.11l-1.17,-0.0l-3.08,-1.25l3.41,0.0l0.45,-0.68ZM789.15,303.55l2.31,1.8l1.59,2.61l1.34,0.13l-0.06,0.66l0.31,0.43l1.06,0.24l0.06,0.65l2.25,1.05l-1.22,0.13l-0.72,-0.63l-4.56,-0.65l-3.22,-2.87l-1.49,-2.34l-3.27,-1.1l-2.38,0.72l-1.59,0.86l-0.2,0.42l0.27,1.55l-1.55,0.68l-1.36,-0.4l-2.21,-0.09l-0.08,-15.41l8.39,2.93l2.95,2.4l0.6,1.64l4.02,1.49l0.31,0.68l-1.76,0.21l-0.33,0.52l0.55,1.68Z\", \"name\": \"Papua New Guinea\"}, \"PE\": {\"path\": \"M244.96,295.21l-1.26,-0.07l-0.57,0.42l-1.93,0.45l-2.98,1.75l-0.36,1.36l-0.58,0.8l0.12,1.37l-1.24,0.59l-0.22,1.22l-0.62,0.84l1.04,2.27l1.28,1.44l-0.41,0.84l0.32,0.57l1.48,0.13l1.16,1.37l2.21,0.07l1.63,-1.08l-0.13,3.02l0.3,0.4l1.14,0.29l1.31,-0.34l1.9,3.59l-0.48,0.85l-0.17,3.85l-0.94,1.59l0.35,0.75l-0.47,1.07l0.98,1.97l-2.1,3.82l-0.98,0.5l-2.17,-1.28l-0.39,-1.16l-4.95,-2.58l-4.46,-2.79l-1.84,-1.51l-0.91,-1.84l0.3,-0.96l-2.11,-3.33l-4.82,-9.68l-1.04,-1.2l-0.87,-1.94l-3.4,-2.48l0.58,-1.18l-1.13,-2.23l0.66,-1.49l1.45,-1.15l-0.6,0.98l0.07,0.92l0.47,0.36l1.74,0.03l0.97,1.17l0.54,0.07l1.42,-1.03l0.6,-1.84l1.42,-2.02l3.04,-1.04l2.73,-2.62l0.86,-1.74l-0.1,-1.87l1.44,1.02l0.9,1.25l1.06,0.59l1.7,2.73l1.86,0.31l1.45,-0.61l0.96,0.39l1.36,-0.19l1.45,0.89l-1.4,2.21l0.31,0.61l0.59,0.05l0.47,0.5Z\", \"name\": \"Peru\"}, \"PK\": {\"path\": \"M615.09,192.34l-1.83,1.81l-2.6,0.39l-3.73,-0.68l-1.58,1.33l-0.09,0.42l1.77,4.39l1.7,1.23l-1.69,1.27l-0.12,2.14l-2.33,2.64l-1.6,2.8l-2.46,2.67l-3.03,-0.07l-2.76,2.83l0.05,0.6l1.5,1.11l0.26,1.9l1.44,1.5l0.37,1.68l-5.01,-0.01l-1.78,1.7l-1.42,-0.52l-0.76,-1.87l-2.27,-2.15l-11.61,0.86l0.71,-2.34l3.43,-1.32l0.25,-0.44l-0.21,-1.24l-1.2,-0.65l-0.28,-2.46l-2.29,-1.14l-1.28,-1.94l2.82,0.94l2.62,-0.38l1.42,0.33l0.76,-0.56l1.71,0.19l3.25,-1.14l0.27,-0.36l0.08,-2.19l1.18,-1.32l1.68,0.0l0.58,-0.82l1.6,-0.3l1.19,0.16l0.98,-0.78l0.02,-1.88l0.93,-1.47l1.48,-0.66l0.19,-0.55l-0.66,-1.25l2.04,-0.11l0.69,-1.01l-0.02,-1.16l1.11,-1.06l-0.17,-1.78l-0.49,-1.03l1.15,-0.98l5.42,-0.91l2.6,-0.82l1.6,1.16l0.97,2.34l3.45,0.97Z\", \"name\": \"Pakistan\"}, \"PH\": {\"path\": \"M737.01,263.84l0.39,2.97l-0.44,1.18l-0.55,-1.53l-0.67,-0.14l-1.17,1.28l0.65,2.09l-0.42,0.69l-2.48,-1.23l-0.57,-1.49l0.65,-1.03l-0.1,-0.54l-1.59,-1.19l-0.56,0.08l-0.65,0.87l-1.23,0.0l-1.58,0.97l0.83,-1.8l2.56,-1.42l0.65,0.84l0.45,0.13l1.9,-0.69l0.56,-1.11l1.5,-0.06l0.38,-0.43l-0.09,-1.19l1.21,0.71l0.36,2.02ZM733.59,256.58l0.05,0.75l0.08,0.26l-0.8,-0.42l-0.18,-0.71l0.85,0.12ZM734.08,256.1l-0.12,-1.12l-1.0,-1.27l1.36,0.03l0.53,0.73l0.51,2.04l-1.27,-0.4ZM733.76,257.68l0.38,0.98l-0.32,0.15l-0.07,-1.13ZM724.65,238.43l1.46,0.7l0.72,-0.31l-0.32,1.17l0.79,1.71l-0.57,1.84l-1.53,1.04l-0.39,2.25l0.56,2.04l1.63,0.57l1.16,-0.27l2.71,1.23l-0.19,1.08l0.76,0.84l-0.08,0.36l-1.4,-0.9l-0.88,-1.27l-0.66,0.0l-0.38,0.55l-1.6,-1.31l-2.15,0.36l-0.87,-0.39l0.07,-0.61l0.66,-0.55l-0.01,-0.62l-0.75,-0.59l-0.72,0.44l-0.74,-0.87l-0.39,-2.49l0.32,0.27l0.66,-0.28l0.26,-3.97l0.7,-2.02l1.14,0.0ZM731.03,258.87l-0.88,0.85l-1.19,1.94l-1.05,-1.19l0.93,-1.1l0.32,-1.47l0.52,-0.06l-0.27,1.15l0.22,0.45l0.49,-0.12l1.0,-1.32l-0.08,0.85ZM726.83,255.78l0.83,0.38l1.17,-0.0l-0.02,0.48l-2.0,1.4l0.03,-2.26ZM724.81,252.09l-0.38,1.27l-1.42,-1.95l1.2,0.05l0.6,0.63ZM716.55,261.82l1.1,-0.95l0.03,-0.03l-0.28,0.36l-0.85,0.61ZM719.22,259.06l0.04,-0.06l0.8,-1.53l0.16,0.75l-1.0,0.84Z\", \"name\": \"Philippines\"}, \"PL\": {\"path\": \"M468.44,149.42l-1.11,-1.54l-1.86,-0.33l-0.48,-1.05l-1.72,-0.37l-0.65,0.69l-0.72,-0.36l0.11,-0.61l-0.33,-0.46l-1.75,-0.27l-1.04,-0.93l-0.94,-1.94l0.16,-1.22l-0.62,-1.8l-0.78,-1.07l0.57,-1.04l-0.48,-1.43l1.41,-0.83l6.91,-2.71l2.14,0.5l0.52,0.91l5.51,0.44l4.55,-0.05l1.07,0.31l0.48,0.84l0.15,1.58l0.65,1.2l-0.01,0.99l-1.27,0.58l-0.19,0.54l0.73,1.48l0.08,1.55l1.2,2.76l-0.17,0.58l-1.23,0.44l-2.27,2.72l0.18,0.95l-1.97,-1.03l-1.98,0.4l-1.36,-0.28l-1.24,0.58l-1.07,-0.97l-1.16,0.24Z\", \"name\": \"Poland\"}, \"ZM\": {\"path\": \"M481.47,313.3l0.39,0.31l2.52,0.14l0.99,1.17l2.01,0.35l1.4,-0.64l0.69,1.17l1.78,0.33l1.84,2.35l2.23,0.18l0.4,-0.43l-0.21,-2.74l-0.62,-0.3l-0.48,0.32l-1.98,-1.17l0.72,-5.29l-0.51,-1.18l0.57,-1.3l3.68,-0.62l0.26,0.63l1.21,0.63l0.9,-0.22l2.16,0.67l1.33,0.71l1.07,1.02l0.56,1.87l-0.88,2.7l0.43,2.09l-0.73,0.87l-0.76,2.37l0.59,0.68l-6.6,1.83l-0.29,0.44l0.19,1.45l-1.68,0.35l-1.43,1.02l-0.38,0.87l-0.87,0.26l-3.48,3.69l-4.16,-0.53l-1.52,-1.0l-1.77,-0.13l-1.83,0.52l-3.04,-3.4l0.11,-7.59l4.82,0.03l0.39,-0.49l-0.18,-0.76l0.33,-0.83l-0.4,-1.36l0.24,-1.05Z\", \"name\": \"Zambia\"}, \"EH\": {\"path\": \"M384.42,230.28l0.25,-0.79l1.06,-1.29l0.8,-3.51l3.38,-2.78l0.7,-1.81l0.06,4.84l-1.98,0.2l-0.94,1.59l0.39,3.56l-3.7,-0.01ZM392.01,218.1l0.7,-1.8l1.77,-0.24l2.09,0.34l0.95,-0.62l1.28,-0.07l-0.0,2.51l-6.79,-0.12Z\", \"name\": \"W. Sahara\"}, \"EE\": {\"path\": \"M485.71,115.04l2.64,0.6l2.56,0.11l-1.6,1.91l0.61,3.54l-0.81,0.87l-1.78,-0.01l-3.22,-1.76l-1.8,0.45l0.21,-1.53l-0.58,-0.41l-0.69,0.34l-1.26,-1.03l-0.17,-1.63l2.83,-0.92l3.05,-0.52Z\", \"name\": \"Estonia\"}, \"EG\": {\"path\": \"M492.06,205.03l1.46,0.42l2.95,-1.64l2.04,-0.21l1.53,0.3l0.59,1.19l0.69,0.04l0.41,-0.64l1.81,0.58l1.95,0.16l1.04,-0.51l1.42,4.08l-2.03,4.54l-1.66,-1.77l-1.76,-3.85l-0.64,-0.12l-0.36,0.67l1.04,2.88l3.44,6.95l1.78,3.04l2.03,2.65l-0.36,0.53l0.23,2.01l2.7,2.19l-28.41,0.0l0.0,-18.96l-0.73,-2.2l0.59,-1.56l-0.32,-1.26l0.68,-0.99l3.06,-0.04l4.82,1.52Z\", \"name\": \"Egypt\"}, \"ZA\": {\"path\": \"M467.14,373.21l-0.13,-1.96l-0.68,-1.56l0.7,-0.68l-0.13,-2.33l-4.56,-8.19l0.77,-0.86l0.6,0.45l0.69,1.31l2.83,0.72l1.5,-0.26l2.24,-1.39l0.19,-9.55l1.35,2.3l-0.21,1.5l0.61,1.2l0.4,0.19l1.79,-0.27l2.6,-2.07l0.69,-1.32l0.96,-0.48l2.19,1.04l2.04,0.13l1.77,-0.65l0.85,-2.12l1.38,-0.33l1.59,-2.76l2.15,-1.89l3.41,-1.87l2.0,0.45l1.02,-0.28l0.99,0.2l1.75,5.29l-0.38,3.25l-0.81,-0.23l-1.0,0.46l-0.87,1.68l-0.05,1.16l1.97,1.84l1.47,-0.29l0.69,-1.18l1.09,0.01l-0.76,3.69l-0.58,1.09l-2.2,1.79l-3.17,4.76l-2.8,2.83l-3.57,2.88l-2.53,1.05l-1.22,0.14l-0.51,0.7l-1.18,-0.32l-1.39,0.5l-2.59,-0.52l-1.61,0.33l-1.18,-0.11l-2.55,1.1l-2.1,0.44l-1.6,1.07l-0.85,0.05l-0.93,-0.89l-0.93,-0.15l-0.97,-1.13l-0.25,0.05ZM491.45,364.19l0.62,-0.93l1.48,-0.59l1.18,-2.19l-0.07,-0.49l-1.99,-1.69l-1.66,0.56l-1.43,1.14l-1.34,1.73l0.02,0.51l1.88,2.11l1.31,-0.16Z\", \"name\": \"South Africa\"}, \"EC\": {\"path\": \"M231.86,285.53l0.29,1.59l-0.69,1.45l-2.61,2.51l-3.13,1.11l-1.53,2.18l-0.49,1.68l-1.0,0.73l-1.02,-1.11l-1.78,-0.16l0.67,-1.15l-0.24,-0.86l1.25,-2.13l-0.54,-1.09l-0.67,-0.08l-0.72,0.87l-0.87,-0.64l0.35,-0.69l-0.36,-1.96l0.81,-0.51l0.45,-1.51l0.92,-1.57l-0.07,-0.97l2.65,-1.33l2.75,1.35l0.77,1.05l2.12,0.35l0.76,-0.32l1.96,1.21Z\", \"name\": \"Ecuador\"}, \"AL\": {\"path\": \"M470.32,171.8l0.74,0.03l0.92,0.89l-0.17,1.95l0.36,1.28l1.01,0.82l-1.82,2.83l-0.19,-0.61l-1.25,-0.89l-0.18,-1.2l0.53,-2.82l-0.54,-1.47l0.6,-0.83Z\", \"name\": \"Albania\"}, \"AO\": {\"path\": \"M461.55,300.03l1.26,3.15l1.94,2.36l2.47,-0.53l1.25,0.32l0.44,-0.18l0.93,-1.92l1.31,-0.08l0.41,-0.44l0.47,-0.0l-0.1,0.41l0.39,0.49l2.65,-0.02l0.03,1.19l0.48,1.01l-0.34,1.52l0.18,1.55l0.83,1.04l-0.13,2.85l0.54,0.39l3.96,-0.41l-0.1,1.79l0.39,1.05l-0.24,1.43l-4.7,-0.03l-0.4,0.39l-0.12,8.13l2.92,3.49l-3.83,0.88l-5.89,-0.36l-1.88,-1.24l-10.47,0.22l-1.3,-1.01l-1.85,-0.16l-2.4,0.77l-0.15,-1.06l0.33,-2.16l1.0,-3.45l1.35,-3.2l2.24,-2.8l0.33,-2.06l-0.13,-1.53l-0.8,-1.08l-1.21,-2.87l0.87,-1.62l-1.27,-4.12l-1.17,-1.53l2.47,-0.63l7.03,0.03ZM451.71,298.87l-0.47,-1.25l1.25,-1.11l0.32,0.3l-0.99,1.03l-0.12,1.03Z\", \"name\": \"Angola\"}, \"KZ\": {\"path\": \"M552.8,172.89l0.46,-1.27l-0.48,-1.05l-2.96,-1.19l-1.06,-2.58l-1.37,-0.87l-0.03,-0.3l1.95,0.23l0.45,-0.38l0.08,-1.96l1.75,-0.41l2.1,0.45l0.48,-0.33l0.45,-3.04l-0.45,-2.09l-0.41,-0.31l-2.42,0.15l-2.36,-0.73l-2.87,1.37l-2.17,0.61l-0.85,-0.34l0.13,-1.61l-1.6,-2.12l-2.02,-0.08l-1.78,-1.82l1.29,-2.18l-0.57,-0.95l1.62,-2.91l2.21,1.63l0.63,-0.27l0.29,-2.22l4.92,-3.43l3.71,-0.08l8.4,3.6l2.92,-1.36l3.77,-0.06l3.11,1.66l0.51,-0.11l0.6,-0.81l3.31,0.13l0.39,-0.25l0.63,-1.57l-0.17,-0.5l-3.5,-1.98l1.87,-1.27l-0.13,-1.03l1.98,-0.72l0.18,-0.62l-1.59,-2.06l0.81,-0.82l9.23,-1.18l1.33,-0.88l6.18,-1.26l2.26,-1.42l4.08,0.68l0.73,3.33l0.51,0.3l2.48,-0.8l2.79,1.02l-0.17,1.56l0.43,0.44l2.55,-0.24l4.89,-2.53l0.03,0.32l3.15,2.61l5.56,8.47l0.65,0.02l1.12,-1.46l3.15,1.74l3.76,-0.78l1.15,0.49l1.14,1.8l1.84,0.76l0.99,1.29l3.35,-0.25l1.02,1.52l-1.6,1.81l-1.93,0.28l-0.34,0.38l-0.11,3.05l-1.13,1.16l-4.75,-1.0l-0.46,0.27l-1.76,5.47l-1.1,0.59l-4.91,1.23l-0.27,0.54l2.1,4.97l-1.37,0.63l-0.23,0.41l0.13,1.13l-0.88,-0.25l-1.42,-1.13l-7.89,-0.4l-0.92,0.31l-3.73,-1.22l-1.42,0.63l-0.53,1.66l-3.72,-0.94l-1.85,0.43l-0.76,1.4l-4.65,2.62l-1.13,2.08l-0.44,0.01l-0.92,-1.4l-2.87,-0.09l-0.45,-2.14l-0.38,-0.32l-0.8,-0.01l0.0,-2.96l-3.0,-2.22l-7.31,0.58l-2.35,-2.68l-6.71,-3.69l-6.45,1.83l-0.29,0.39l0.1,10.85l-0.7,0.08l-1.62,-2.17l-1.83,-0.96l-3.11,0.59l-0.64,0.51Z\", \"name\": \"Kazakhstan\"}, \"ET\": {\"path\": \"M516.04,247.79l1.1,0.84l1.63,-0.45l0.68,0.47l1.63,0.03l2.01,0.94l1.73,1.66l1.64,2.07l-1.52,2.04l0.16,1.72l0.39,0.38l2.05,0.0l-0.36,1.03l2.86,3.58l8.32,3.08l1.31,0.02l-6.32,6.75l-3.1,0.11l-2.36,1.77l-1.47,0.04l-0.86,0.79l-1.38,-0.0l-1.32,-0.81l-2.29,1.05l-0.76,0.98l-3.29,-0.41l-3.07,-2.07l-1.8,-0.07l-0.62,-0.6l0.0,-1.24l-0.28,-0.38l-1.15,-0.37l-1.4,-2.59l-1.19,-0.68l-0.47,-1.0l-1.27,-1.23l-1.16,-0.22l0.43,-0.72l1.45,-0.28l0.41,-0.95l-0.03,-2.21l0.68,-2.44l1.05,-0.63l1.43,-3.06l1.57,-1.37l1.02,-2.51l0.35,-1.88l2.52,0.46l0.44,-0.24l0.58,-1.43Z\", \"name\": \"Ethiopia\"}, \"ZW\": {\"path\": \"M498.91,341.09l-1.11,-0.22l-0.92,0.28l-2.09,-0.44l-1.5,-1.11l-1.89,-0.43l-0.62,-1.4l-0.01,-0.84l-0.3,-0.38l-0.97,-0.25l-2.71,-2.74l-1.92,-3.32l3.83,0.45l3.73,-3.82l1.08,-0.44l0.26,-0.77l1.25,-0.9l1.41,-0.26l0.5,0.89l1.99,-0.05l1.72,1.17l1.11,0.17l1.05,0.66l0.01,2.99l-0.59,3.76l0.38,0.86l-0.23,1.23l-0.39,0.35l-0.63,1.81l-2.43,2.75Z\", \"name\": \"Zimbabwe\"}, \"ES\": {\"path\": \"M416.0,169.21l1.07,1.17l4.61,1.38l1.06,-0.57l2.6,1.26l2.71,-0.3l0.09,1.12l-2.14,1.8l-3.11,0.61l-0.31,0.31l-0.2,0.89l-1.54,1.69l-0.97,2.4l0.84,1.74l-1.32,1.27l-0.48,1.68l-1.88,0.65l-1.66,2.07l-5.36,-0.01l-1.79,1.08l-0.89,0.98l-0.88,-0.17l-0.79,-0.82l-0.68,-1.59l-2.37,-0.63l-0.11,-0.5l1.21,-1.82l-0.77,-1.13l0.61,-1.68l-0.76,-1.62l0.87,-0.49l0.09,-1.25l0.42,-0.6l0.03,-2.11l0.99,-0.69l0.13,-0.5l-1.03,-1.73l-1.46,-0.11l-0.61,0.38l-1.06,0.0l-0.52,-1.23l-0.53,-0.21l-1.32,0.67l-0.01,-1.49l-0.75,-0.96l3.03,-1.88l2.99,0.53l3.32,-0.02l2.63,0.51l6.01,-0.06Z\", \"name\": \"Spain\"}, \"ER\": {\"path\": \"M520.38,246.23l3.42,2.43l3.5,3.77l0.84,0.54l-0.95,-0.01l-3.51,-3.89l-2.33,-1.15l-1.73,-0.07l-0.91,-0.51l-1.26,0.51l-1.34,-1.02l-0.61,0.17l-0.66,1.61l-2.35,-0.43l-0.17,-0.67l1.29,-5.29l0.61,-0.61l1.95,-0.53l0.87,-1.01l1.17,2.41l0.68,2.33l1.49,1.43Z\", \"name\": \"Eritrea\"}, \"ME\": {\"path\": \"M468.91,172.53l-1.22,-1.02l0.47,-1.81l0.89,-0.72l2.26,1.51l-0.5,0.57l-0.75,-0.27l-1.14,1.73Z\", \"name\": \"Montenegro\"}, \"MD\": {\"path\": \"M488.41,153.73l1.4,-0.27l1.72,0.93l1.07,0.15l0.85,0.65l-0.14,0.84l0.96,0.85l1.12,2.47l-1.15,-0.07l-0.66,-0.41l-0.52,0.25l-0.09,0.86l-1.08,1.89l-0.27,-0.86l0.25,-1.34l-0.16,-1.6l-3.29,-4.34Z\", \"name\": \"Moldova\"}, \"MG\": {\"path\": \"M545.91,319.14l0.4,3.03l0.62,1.21l-0.21,1.02l-0.57,-0.8l-0.69,-0.01l-0.47,0.76l0.41,2.12l-0.18,0.87l-0.73,0.78l-0.15,2.14l-4.71,15.2l-1.06,2.88l-3.92,1.64l-3.12,-1.49l-0.6,-1.21l-0.19,-2.4l-0.86,-2.05l-0.21,-1.77l0.38,-1.62l1.21,-0.75l0.01,-0.76l1.19,-2.04l0.23,-1.66l-1.06,-2.99l-0.19,-2.21l0.81,-1.33l0.32,-1.46l4.63,-1.22l3.44,-3.0l0.85,-1.4l-0.08,-0.7l0.78,-0.04l1.38,-1.77l0.13,-1.64l0.45,-0.61l1.16,1.69l0.59,1.6Z\", \"name\": \"Madagascar\"}, \"MA\": {\"path\": \"M378.78,230.02l0.06,-0.59l0.92,-0.73l0.82,-1.37l-0.09,-1.04l0.79,-1.7l1.31,-1.58l0.96,-0.59l0.66,-1.55l0.09,-1.47l0.81,-1.48l1.72,-1.07l1.55,-2.69l1.16,-0.96l2.44,-0.39l1.94,-1.82l1.31,-0.78l2.09,-2.28l-0.51,-3.65l1.24,-3.7l1.5,-1.75l4.46,-2.57l2.37,-4.47l1.44,0.01l1.68,1.21l2.32,-0.19l3.47,0.65l0.8,1.54l0.16,1.71l0.86,2.96l0.56,0.59l-0.26,0.61l-3.05,0.44l-1.26,1.05l-1.33,0.22l-0.33,0.37l-0.09,1.78l-2.68,1.0l-1.07,1.42l-4.47,1.13l-4.04,2.01l-0.54,4.64l-1.15,0.06l-0.92,0.61l-1.96,-0.35l-2.42,0.54l-0.74,1.9l-0.86,0.4l-1.14,3.26l-3.53,3.01l-0.8,3.55l-0.96,1.1l-0.29,0.82l-4.95,0.18Z\", \"name\": \"Morocco\"}, \"UZ\": {\"path\": \"M598.64,172.75l-1.63,1.52l0.06,0.64l1.85,1.12l1.97,-0.64l2.21,1.17l-2.52,1.68l-2.59,-0.22l-0.18,-0.41l0.46,-1.23l-0.45,-0.53l-3.35,0.69l-2.1,3.51l-1.87,-0.12l-1.03,1.51l0.22,0.55l1.64,0.62l0.46,1.83l-1.19,2.49l-2.66,-0.53l0.05,-1.36l-0.26,-0.39l-3.3,-1.23l-2.56,-1.4l-4.4,-3.34l-1.34,-3.14l-1.08,-0.6l-2.58,0.13l-0.69,-0.44l-0.47,-2.52l-3.37,-1.6l-0.43,0.05l-2.07,1.72l-2.1,1.01l-0.21,0.47l0.28,1.01l-1.91,0.03l-0.09,-10.5l5.99,-1.7l6.19,3.54l2.71,2.84l7.05,-0.67l2.71,2.01l-0.17,2.81l0.39,0.42l0.9,0.02l0.44,2.14l0.38,0.32l2.94,0.09l0.95,1.42l1.28,-0.24l1.05,-2.04l4.43,-2.5Z\", \"name\": \"Uzbekistan\"}, \"MM\": {\"path\": \"M673.9,230.21l-1.97,1.57l-0.57,0.96l-1.4,0.6l-1.36,1.05l-1.99,0.36l-1.08,2.66l-0.91,0.4l-0.19,0.55l1.21,2.27l2.52,3.43l-0.79,1.91l-0.74,0.41l-0.17,0.52l0.65,1.37l1.61,1.95l0.25,2.58l0.9,2.13l-1.92,3.57l0.68,-2.25l-0.81,-1.74l0.19,-2.65l-1.05,-1.53l-1.24,-6.17l-1.12,-2.26l-0.6,-0.13l-4.34,3.02l-2.39,-0.65l0.77,-2.84l-0.52,-2.61l-1.91,-2.96l0.25,-0.75l-0.29,-0.51l-1.33,-0.3l-1.61,-1.93l-0.1,-1.3l0.82,-0.24l0.04,-1.64l1.02,-0.52l0.21,-0.45l-0.23,-0.95l0.54,-0.96l0.08,-2.22l1.46,0.45l0.47,-0.2l1.12,-2.19l0.16,-1.35l1.33,-2.16l-0.0,-1.52l2.89,-1.66l1.63,0.44l0.5,-0.44l-0.17,-1.4l0.64,-0.36l0.08,-1.04l0.77,-0.11l0.71,1.35l1.06,0.69l-0.03,3.86l-2.38,2.37l-0.3,3.15l0.46,0.43l2.28,-0.38l0.51,2.08l1.47,0.67l-0.6,1.8l0.19,0.48l2.97,1.48l1.64,-0.55l0.02,0.32Z\", \"name\": \"Myanmar\"}, \"ML\": {\"path\": \"M392.61,254.08l-0.19,-2.37l-0.99,-0.87l-0.44,-1.3l-0.09,-1.28l0.81,-0.58l0.35,-1.24l2.37,0.65l1.31,-0.47l0.86,0.15l0.66,-0.56l9.83,-0.04l0.38,-0.28l0.56,-1.8l-0.44,-0.65l-2.35,-21.95l3.27,-0.04l16.7,11.38l0.74,1.31l2.5,1.09l0.02,1.38l0.44,0.39l2.34,-0.21l0.01,5.38l-1.28,1.61l-0.26,1.49l-5.31,0.57l-1.07,0.92l-2.9,0.1l-0.86,-0.48l-1.38,0.36l-2.4,1.08l-0.6,0.87l-1.85,1.09l-0.43,0.7l-0.79,0.39l-1.44,-0.21l-0.81,0.84l-0.34,1.64l-1.91,2.02l-0.06,1.03l-0.67,1.22l0.13,1.16l-0.97,0.39l-0.23,-0.64l-0.52,-0.24l-1.35,0.4l-0.34,0.55l-2.69,-0.28l-0.37,-0.35l-0.02,-0.9l-0.65,-0.35l0.45,-0.64l-0.03,-0.53l-2.12,-2.44l-0.76,-0.01l-2.0,1.16l-0.78,-0.15l-0.8,-0.67l-1.21,0.23Z\", \"name\": \"Mali\"}, \"MN\": {\"path\": \"M676.61,146.48l3.81,1.68l5.67,-1.0l2.37,0.41l2.34,1.5l1.79,1.75l2.29,-0.03l3.12,0.52l2.47,-0.81l3.41,-0.59l3.53,-2.21l1.25,0.29l1.53,1.13l2.27,-0.21l-2.66,5.01l0.64,1.68l0.47,0.21l1.32,-0.38l2.38,0.48l2.02,-1.11l1.76,0.89l2.06,2.02l-0.13,0.53l-1.72,-0.29l-3.77,0.46l-1.88,0.99l-1.76,1.99l-3.71,1.17l-2.45,1.6l-3.83,-0.87l-0.41,0.17l-1.31,1.99l1.04,2.24l-1.52,0.9l-1.74,1.57l-2.79,1.02l-3.78,0.13l-4.05,1.05l-2.77,1.52l-1.16,-0.85l-2.94,0.0l-3.62,-1.79l-2.58,-0.49l-3.4,0.41l-5.12,-0.67l-2.63,0.06l-1.31,-1.6l-1.4,-3.0l-1.48,-0.33l-3.13,-1.94l-6.16,-0.93l-0.71,-1.06l0.86,-3.82l-1.93,-2.71l-3.5,-1.18l-1.95,-1.58l-0.5,-1.72l2.34,-0.52l4.75,-2.8l3.62,-1.47l2.18,0.97l2.46,0.05l1.81,1.53l2.46,0.12l3.95,0.71l2.43,-2.28l0.08,-0.48l-0.9,-1.72l2.24,-2.98l2.62,1.27l4.94,1.17l0.43,2.24Z\", \"name\": \"Mongolia\"}, \"MK\": {\"path\": \"M472.8,173.98l0.49,-0.71l3.57,-0.71l1.0,0.77l0.13,1.45l-0.65,0.53l-1.15,-0.05l-1.12,0.67l-1.39,0.22l-0.79,-0.55l-0.29,-1.03l0.19,-0.6Z\", \"name\": \"Macedonia\"}, \"MW\": {\"path\": \"M505.5,309.31l0.85,1.95l0.15,2.86l-0.69,1.65l0.71,1.8l0.06,1.28l0.49,0.64l0.07,1.06l0.4,0.55l0.8,-0.23l0.55,0.61l0.69,-0.21l0.34,0.6l0.19,2.94l-1.04,0.62l-0.54,1.25l-1.11,-1.08l-0.16,-1.56l0.51,-1.31l-0.32,-1.3l-0.99,-0.65l-0.82,0.12l-2.36,-1.64l0.63,-1.96l0.82,-1.18l-0.46,-2.01l0.9,-2.86l-0.94,-2.51l0.96,0.18l0.29,0.4Z\", \"name\": \"Malawi\"}, \"MR\": {\"path\": \"M407.36,220.66l-2.58,0.03l-0.39,0.44l2.42,22.56l0.36,0.43l-0.39,1.24l-9.75,0.04l-0.56,0.53l-0.91,-0.11l-1.27,0.45l-1.61,-0.66l-0.97,0.03l-0.36,0.29l-0.38,1.35l-0.42,0.23l-2.93,-3.4l-2.96,-1.52l-1.62,-0.03l-1.27,0.54l-1.12,-0.2l-0.65,0.4l-0.08,-0.49l0.68,-1.29l0.31,-2.43l-0.57,-3.91l0.23,-1.21l-0.69,-1.5l-1.15,-1.02l0.25,-0.39l9.58,0.02l0.4,-0.45l-0.46,-3.68l0.47,-1.04l2.12,-0.21l0.36,-0.4l-0.08,-6.4l7.81,0.13l0.41,-0.4l0.01,-3.31l7.76,5.35Z\", \"name\": \"Mauritania\"}, \"UG\": {\"path\": \"M498.55,276.32l0.7,-0.46l1.65,0.5l1.96,-0.57l1.7,0.01l1.45,-0.98l0.91,1.33l1.33,3.95l-2.57,4.03l-1.46,-0.4l-2.54,0.91l-1.37,1.61l-0.01,0.81l-2.42,-0.01l-2.26,1.01l-0.17,-1.59l0.58,-1.04l0.14,-1.94l1.37,-2.28l1.78,-1.58l-0.17,-0.65l-0.72,-0.24l0.13,-2.43Z\", \"name\": \"Uganda\"}, \"MY\": {\"path\": \"M717.47,273.46l-1.39,0.65l-2.12,-0.41l-2.88,-0.0l-0.38,0.28l-0.84,2.75l-0.99,0.96l-1.21,3.29l-1.73,0.45l-2.45,-0.68l-1.39,0.31l-1.33,1.15l-1.59,-0.14l-1.41,0.44l-1.44,-1.19l-0.18,-0.73l1.34,0.53l1.93,-0.47l0.75,-2.22l4.02,-1.03l2.75,-3.21l0.82,0.94l0.64,-0.05l0.4,-0.65l0.96,0.06l0.42,-0.36l0.24,-2.68l1.81,-1.64l1.21,-1.86l0.63,-0.01l1.07,1.05l0.34,1.28l3.44,1.35l-0.06,0.35l-1.37,0.1l-0.35,0.54l0.32,0.88ZM673.68,269.59l0.17,1.09l0.47,0.33l1.65,-0.3l0.87,-0.94l1.61,1.52l0.98,1.56l-0.12,2.81l0.41,2.29l0.95,0.9l0.88,2.44l-1.27,0.12l-5.1,-3.67l-0.34,-1.29l-1.37,-1.59l-0.33,-1.97l-0.88,-1.4l0.25,-1.68l-0.46,-1.05l1.63,0.84Z\", \"name\": \"Malaysia\"}, \"MX\": {\"path\": \"M133.12,200.41l0.2,0.47l9.63,3.33l6.96,-0.02l0.4,-0.4l0.0,-0.74l3.77,0.0l3.55,2.93l1.39,2.83l1.52,1.04l2.08,0.82l0.47,-0.14l1.46,-2.0l1.73,-0.04l1.59,0.98l2.05,3.35l1.47,1.56l1.26,3.14l2.18,1.02l2.26,0.58l-1.18,3.72l-0.42,5.04l1.79,4.89l1.62,1.89l0.61,1.52l1.2,1.42l2.55,0.66l1.37,1.1l7.54,-1.89l1.86,-1.3l1.14,-4.3l4.1,-1.21l3.57,-0.11l0.32,0.3l-0.06,0.94l-1.26,1.45l-0.67,1.71l0.38,0.7l-0.72,2.27l-0.49,-0.3l-1.0,0.08l-1.0,1.39l-0.47,-0.11l-0.53,0.47l-4.26,-0.02l-0.4,0.4l-0.0,1.06l-1.1,0.26l0.1,0.44l1.82,1.44l0.56,0.91l-3.19,0.21l-1.21,2.09l0.24,0.72l-0.2,0.44l-2.24,-2.18l-1.45,-0.93l-2.22,-0.69l-1.52,0.22l-3.07,1.16l-10.55,-3.85l-2.86,-1.96l-3.78,-0.92l-1.08,-1.19l-2.62,-1.43l-1.18,-1.54l-0.38,-0.81l0.66,-0.63l-0.18,-0.53l0.52,-0.76l0.01,-0.91l-2.0,-3.82l-2.21,-2.63l-2.53,-2.09l-1.19,-1.62l-2.2,-1.17l-0.3,-0.43l0.34,-1.48l-0.21,-0.45l-1.23,-0.6l-1.36,-1.2l-0.59,-1.78l-1.54,-0.47l-2.44,-2.55l-0.16,-0.9l-1.33,-2.03l-0.84,-1.99l-0.16,-1.33l-1.81,-1.1l-0.97,0.05l-1.31,-0.7l-0.57,0.22l-0.4,1.12l0.72,3.77l3.51,3.89l0.28,0.78l0.53,0.26l0.41,1.43l1.33,1.73l1.58,1.41l0.8,2.39l1.43,2.41l0.13,1.32l0.37,0.36l1.04,0.08l1.67,2.28l-0.85,0.76l-0.66,-1.51l-1.68,-1.54l-2.91,-1.87l0.06,-1.82l-0.54,-1.68l-2.91,-2.03l-0.55,0.09l-1.95,-1.1l-0.88,-0.94l0.68,-0.08l0.93,-1.01l0.08,-1.78l-1.93,-1.94l-1.46,-0.77l-3.75,-7.56l4.88,-0.42Z\", \"name\": \"Mexico\"}, \"VU\": {\"path\": \"M839.04,322.8l0.22,1.14l-0.44,0.03l-0.2,-1.45l0.42,0.27Z\", \"name\": \"Vanuatu\"}, \"FR\": {\"path\": \"M444.48,172.62l-0.64,1.78l-0.58,-0.31l-0.49,-1.72l0.4,-0.89l1.0,-0.72l0.3,1.85ZM429.64,147.1l1.78,1.58l1.46,-0.13l2.1,1.42l1.35,0.27l1.23,0.83l3.04,0.5l-1.03,1.85l-0.3,2.12l-0.41,0.32l-0.95,-0.24l-0.5,0.43l0.06,0.61l-1.81,1.92l-0.04,1.42l0.55,0.38l0.88,-0.36l0.61,0.97l-0.03,1.0l0.57,0.91l-0.75,1.09l0.65,2.39l1.27,0.57l-0.18,0.82l-2.01,1.53l-4.77,-0.8l-3.82,1.0l-0.53,1.85l-2.49,0.34l-2.71,-1.31l-1.16,0.57l-4.31,-1.29l-0.72,-0.86l1.19,-1.78l0.39,-6.45l-2.58,-3.3l-1.9,-1.66l-3.72,-1.23l-0.19,-1.72l2.81,-0.61l4.12,0.81l0.47,-0.48l-0.6,-2.77l1.94,0.95l5.83,-2.54l0.92,-2.74l1.6,-0.49l0.24,0.78l1.36,0.33l1.05,1.19ZM289.01,278.39l-0.81,0.8l-0.78,0.12l-0.5,-0.66l-0.56,-0.1l-0.91,0.6l-0.46,-0.22l1.09,-2.96l-0.96,-1.77l-0.17,-1.49l1.07,-1.77l2.32,0.75l2.51,2.01l0.3,0.74l-2.14,3.96Z\", \"name\": \"France\"}, \"FI\": {\"path\": \"M492.17,76.39l-0.23,3.5l3.52,2.63l-2.08,2.88l-0.02,0.44l2.8,4.56l-1.59,3.31l2.16,3.24l-0.94,2.39l0.14,0.47l3.44,2.51l-0.77,1.62l-7.52,6.95l-4.5,0.31l-4.38,1.37l-3.8,0.74l-1.44,-1.96l-2.17,-1.11l0.5,-3.66l-1.16,-3.33l1.09,-2.08l2.21,-2.42l5.67,-4.32l1.64,-0.83l0.21,-0.42l-0.46,-2.02l-3.38,-1.89l-0.75,-1.43l-0.22,-6.74l-6.79,-4.8l0.8,-0.62l2.54,2.12l3.46,-0.12l3.0,0.96l2.51,-2.11l1.17,-3.08l3.55,-1.38l2.76,1.53l-0.95,2.79Z\", \"name\": \"Finland\"}, \"FJ\": {\"path\": \"M871.53,326.34l-2.8,1.05l-0.08,-0.23l2.97,-1.21l-0.1,0.39ZM867.58,329.25l0.43,0.37l-0.27,0.88l-1.24,0.28l-1.04,-0.24l-0.14,-0.66l0.63,-0.58l0.92,0.26l0.7,-0.31Z\", \"name\": \"Fiji\"}, \"FK\": {\"path\": \"M274.36,425.85l1.44,1.08l-0.47,0.73l-3.0,0.89l-0.96,-1.0l-0.52,-0.05l-1.83,1.29l-0.73,-0.88l2.46,-1.64l1.93,0.76l1.67,-1.19Z\", \"name\": \"Falkland Is.\"}, \"NI\": {\"path\": \"M202.33,252.67l0.81,-0.18l1.03,-1.02l-0.04,-0.88l0.68,-0.0l0.63,-0.54l0.97,0.22l1.53,-1.26l0.58,-0.99l1.17,0.34l2.41,-0.94l0.13,1.32l-0.81,1.94l0.1,2.74l-0.36,0.37l-0.11,1.75l-0.47,0.81l0.18,1.14l-1.73,-0.85l-0.71,0.27l-1.47,-0.6l-0.52,0.16l-4.01,-3.81Z\", \"name\": \"Nicaragua\"}, \"NL\": {\"path\": \"M430.31,143.39l0.6,-0.5l2.13,-4.8l3.2,-1.33l1.74,0.08l0.33,0.8l-0.59,2.92l-0.5,0.99l-1.26,0.0l-0.4,0.45l0.33,2.7l-2.2,-1.78l-2.62,0.58l-0.75,-0.11Z\", \"name\": \"Netherlands\"}, \"NO\": {\"path\": \"M491.44,67.41l6.8,2.89l-2.29,0.86l-0.15,0.65l2.33,2.38l-4.98,1.79l0.84,-2.45l-0.18,-0.48l-3.55,-1.8l-3.89,1.52l-1.42,3.38l-2.12,1.72l-2.64,-1.0l-3.11,0.21l-2.66,-2.22l-0.5,-0.01l-1.41,1.1l-1.44,0.17l-0.35,0.35l-0.32,2.47l-4.32,-0.64l-0.44,0.29l-0.58,2.11l-2.45,0.2l-4.15,7.68l-3.88,5.76l0.78,1.62l-0.64,1.16l-2.24,-0.06l-0.38,0.24l-1.66,3.89l0.15,5.17l1.57,2.04l-0.78,4.16l-2.02,2.48l-0.85,1.63l-1.3,-1.75l-0.58,-0.07l-4.87,4.19l-3.1,0.79l-3.16,-1.7l-0.85,-3.77l-0.77,-8.55l2.14,-2.31l6.55,-3.27l5.02,-4.17l10.63,-13.84l10.98,-8.7l5.35,-1.91l4.34,0.12l3.69,-3.64l4.49,0.19l4.37,-0.89ZM484.55,20.04l4.26,1.75l-3.1,2.55l-7.1,0.65l-7.08,-0.9l-0.37,-1.31l-0.37,-0.29l-3.44,-0.1l-2.08,-2.0l6.87,-1.44l3.9,1.31l2.39,-1.64l6.13,1.4ZM481.69,33.93l-4.45,1.74l-3.54,-0.99l1.12,-0.9l0.05,-0.58l-1.06,-1.22l4.22,-0.89l1.09,1.97l2.57,0.87ZM466.44,24.04l7.43,3.77l-5.41,1.86l-1.58,4.08l-2.26,1.2l-1.12,4.11l-2.61,0.18l-4.79,-2.86l1.84,-1.54l-0.1,-0.68l-3.69,-1.53l-4.77,-4.51l-1.73,-3.89l6.11,-1.82l1.54,1.92l3.57,-0.08l1.2,-1.96l3.32,-0.18l3.05,1.92Z\", \"name\": \"Norway\"}, \"NA\": {\"path\": \"M474.26,330.66l-0.97,0.04l-0.38,0.4l-0.07,8.9l-2.09,0.08l-0.39,0.4l-0.0,17.42l-1.98,1.23l-1.17,0.17l-2.44,-0.66l-0.48,-1.13l-0.99,-0.74l-0.54,0.05l-0.9,1.01l-1.53,-1.68l-0.93,-1.88l-1.99,-8.56l-0.06,-3.12l-0.33,-1.52l-2.3,-3.34l-1.91,-4.83l-1.96,-2.43l-0.12,-1.57l2.33,-0.79l1.43,0.07l1.81,1.13l10.23,-0.25l1.84,1.23l5.87,0.35ZM474.66,330.64l6.51,-1.6l1.9,0.39l-1.69,0.4l-1.31,0.83l-1.12,-0.94l-4.29,0.92Z\", \"name\": \"Namibia\"}, \"NC\": {\"path\": \"M838.78,341.24l-0.33,0.22l-2.9,-1.75l-3.26,-3.37l1.65,0.83l4.85,4.07Z\", \"name\": \"New Caledonia\"}, \"NE\": {\"path\": \"M454.75,226.53l1.33,1.37l0.48,0.07l1.27,-0.7l0.53,3.52l0.94,0.83l0.17,0.92l0.81,0.69l-0.44,0.95l-0.96,5.26l-0.13,3.22l-3.04,2.31l-1.22,3.57l1.02,1.24l-0.0,1.46l0.39,0.4l1.13,0.04l-0.9,1.25l-1.47,-2.42l-0.86,-0.29l-2.09,1.37l-1.74,-0.67l-1.45,-0.17l-0.85,0.35l-1.36,-0.07l-1.64,1.09l-1.06,0.05l-2.94,-1.28l-1.44,0.59l-1.01,-0.03l-0.97,-0.94l-2.7,-0.98l-2.69,0.3l-0.87,0.64l-0.47,1.6l-0.75,1.16l-0.12,1.53l-1.57,-1.1l-1.31,0.24l0.03,-0.81l-0.32,-0.41l-2.59,-0.52l-0.15,-1.16l-1.35,-1.6l-0.29,-1.0l0.13,-0.84l1.29,-0.08l1.08,-0.92l3.31,-0.22l2.22,-0.41l0.32,-0.34l0.2,-1.47l1.39,-1.88l-0.01,-5.66l3.36,-1.12l7.24,-5.12l8.42,-4.92l3.69,1.06Z\", \"name\": \"Niger\"}, \"NG\": {\"path\": \"M456.32,253.89l0.64,0.65l-0.28,1.04l-2.11,2.01l-2.03,5.18l-1.37,1.16l-1.15,3.18l-1.33,0.66l-1.46,-0.97l-1.21,0.16l-1.38,1.36l-0.91,0.24l-1.79,4.06l-2.33,0.81l-1.11,-0.07l-0.86,0.5l-1.71,-0.05l-1.19,-1.39l-0.89,-1.89l-1.77,-1.66l-3.95,-0.08l0.07,-5.21l0.42,-1.43l1.95,-2.3l-0.14,-0.91l0.43,-1.18l-0.53,-1.41l0.25,-2.92l0.72,-1.07l0.32,-1.34l0.46,-0.39l2.47,-0.28l2.34,0.89l1.15,1.02l1.28,0.04l1.22,-0.58l3.03,1.27l1.49,-0.14l1.36,-1.0l1.33,0.07l0.82,-0.35l3.45,0.8l1.82,-1.32l1.84,2.67l0.66,0.16Z\", \"name\": \"Nigeria\"}, \"NZ\": {\"path\": \"M857.8,379.65l1.86,3.12l0.44,0.18l0.3,-0.38l0.03,-1.23l0.38,0.27l0.57,2.31l2.02,0.94l1.81,0.27l1.57,-1.06l0.7,0.18l-1.15,3.59l-1.98,0.11l-0.74,1.2l0.2,1.11l-2.42,3.98l-1.49,0.92l-1.04,-0.85l1.21,-2.05l-0.81,-2.01l-2.63,-1.25l0.04,-0.57l1.82,-1.19l0.43,-2.34l-0.16,-2.03l-0.95,-1.82l-0.06,-0.72l-3.11,-3.64l-0.79,-1.52l1.56,1.45l1.76,0.66l0.65,2.34ZM853.83,393.59l0.57,1.24l0.59,0.16l1.42,-0.97l0.46,0.79l0.0,1.03l-2.47,3.48l-1.26,1.2l-0.06,0.5l0.55,0.87l-1.41,0.07l-2.33,1.38l-2.03,5.02l-3.02,2.16l-2.06,-0.06l-1.71,-1.04l-2.47,-0.2l-0.27,-0.73l1.22,-2.1l3.05,-2.94l1.62,-0.59l4.02,-2.82l1.57,-1.67l1.07,-2.16l0.88,-0.7l0.48,-1.75l1.24,-0.97l0.35,0.79Z\", \"name\": \"New Zealand\"}, \"NP\": {\"path\": \"M641.14,213.62l0.01,3.19l-1.74,0.04l-4.8,-0.86l-1.58,-1.39l-3.37,-0.34l-7.65,-3.7l0.8,-2.09l2.33,-1.7l1.77,0.75l2.49,1.76l1.38,0.41l0.99,1.35l1.9,0.52l1.99,1.17l5.49,0.9Z\", \"name\": \"Nepal\"}, \"CI\": {\"path\": \"M407.4,259.27l0.86,0.42l0.56,0.9l1.13,0.53l1.19,-0.61l0.97,-0.08l1.42,0.54l0.6,3.24l-1.03,2.08l-0.65,2.84l1.06,2.33l-0.06,0.53l-2.54,-0.47l-1.66,0.03l-3.06,0.46l-4.11,1.6l0.32,-3.06l-1.18,-1.31l-1.32,-0.66l0.42,-0.85l-0.2,-1.4l0.5,-0.67l0.01,-1.59l0.84,-0.32l0.26,-0.5l-1.15,-3.01l0.12,-0.5l0.51,-0.25l0.66,0.31l1.93,0.02l0.67,-0.71l0.71,-0.14l0.25,0.69l0.57,0.22l1.4,-0.61Z\", \"name\": \"C\\u00c3\\u00b4te d'Ivoire\"}, \"CH\": {\"path\": \"M444.62,156.35l-0.29,0.87l0.18,0.53l1.13,0.58l1.0,0.1l-0.1,0.65l-0.79,0.38l-1.72,-0.37l-0.45,0.23l-0.45,1.04l-0.75,0.06l-0.84,-0.4l-1.32,1.0l-0.96,0.12l-0.88,-0.55l-0.81,-1.3l-0.49,-0.16l-0.63,0.26l0.02,-0.65l1.71,-1.66l0.1,-0.56l0.93,0.08l0.58,-0.46l1.99,0.02l0.66,-0.61l2.19,0.79Z\", \"name\": \"Switzerland\"}, \"CO\": {\"path\": \"M242.07,254.93l-1.7,0.59l-0.59,1.18l-1.7,1.69l-0.38,1.93l-0.67,1.43l0.31,0.57l1.03,0.13l0.25,0.9l0.57,0.64l-0.04,2.34l1.64,1.42l3.16,-0.24l1.26,0.28l1.67,2.06l0.41,0.13l4.09,-0.39l0.45,0.22l-0.92,1.95l-0.2,1.8l0.52,1.83l0.75,1.05l-1.12,1.1l0.07,0.63l0.84,0.51l0.74,1.29l-0.39,-0.45l-0.59,-0.01l-0.71,0.74l-4.71,-0.05l-0.4,0.41l0.03,1.57l0.33,0.39l1.11,0.2l-1.68,0.4l-0.29,0.38l-0.01,1.82l1.16,1.14l0.34,1.25l-1.05,7.05l-1.04,-0.87l1.26,-1.99l-0.13,-0.56l-2.18,-1.23l-1.38,0.2l-1.14,-0.38l-1.27,0.61l-1.55,-0.26l-1.38,-2.46l-1.23,-0.75l-0.85,-1.2l-1.67,-1.19l-0.86,0.13l-2.11,-1.32l-1.01,0.31l-1.8,-0.29l-0.52,-0.91l-3.09,-1.68l0.77,-0.52l-0.1,-1.12l0.41,-0.64l1.34,-0.32l2.0,-2.88l-0.11,-0.57l-0.66,-0.43l0.39,-1.38l-0.52,-2.1l0.49,-0.83l-0.4,-2.13l-0.97,-1.35l0.17,-0.66l0.86,-0.08l0.47,-0.75l-0.46,-1.63l1.41,-0.07l1.8,-1.69l0.93,-0.24l0.3,-0.38l0.45,-2.76l1.22,-1.0l1.44,-0.04l0.45,-0.5l1.91,0.12l2.93,-1.84l1.15,-1.14l0.91,0.46l-0.25,0.45Z\", \"name\": \"Colombia\"}, \"CN\": {\"path\": \"M740.23,148.97l4.57,1.3l2.8,2.17l0.98,2.9l0.38,0.27l3.8,0.0l2.32,-1.28l3.29,-0.75l-0.96,2.09l-1.02,1.28l-0.85,3.4l-1.52,2.73l-2.76,-0.5l-2.4,1.13l-0.21,0.45l0.64,2.57l-0.32,3.2l-0.94,0.06l-0.37,0.89l-0.91,-1.01l-0.64,0.07l-0.92,1.57l-3.73,1.25l-0.26,0.48l0.26,1.06l-1.5,-0.08l-1.09,-0.86l-0.56,0.06l-1.67,2.06l-2.7,1.56l-2.03,1.88l-3.4,0.83l-1.93,1.4l-1.15,0.34l0.33,-0.7l-0.41,-0.89l1.79,-1.79l0.02,-0.54l-1.32,-1.56l-0.48,-0.1l-2.24,1.09l-2.83,2.06l-1.51,1.83l-2.28,0.13l-1.55,1.49l-0.04,0.5l1.32,1.97l2.0,0.58l0.31,1.35l1.98,0.84l3.0,-1.96l2.0,1.02l1.49,0.11l0.22,0.83l-3.37,0.86l-1.12,1.48l-2.5,1.52l-1.29,1.99l0.14,0.56l2.57,1.48l0.97,2.7l3.17,4.63l-0.03,1.66l-1.35,0.65l-0.2,0.51l0.6,1.47l1.4,0.91l-0.89,3.82l-1.43,0.38l-3.85,6.44l-2.27,3.11l-6.78,4.57l-2.73,0.29l-1.45,1.04l-0.62,-0.61l-0.55,-0.01l-1.36,1.25l-3.39,1.27l-2.61,0.4l-1.1,2.79l-0.81,0.09l-0.49,-1.42l0.5,-0.85l-0.25,-0.59l-3.36,-0.84l-1.3,0.4l-2.31,-0.62l-0.94,-0.84l0.33,-1.28l-0.3,-0.49l-2.19,-0.46l-1.13,-0.93l-0.47,-0.02l-2.06,1.36l-4.29,0.28l-2.76,1.05l-0.28,0.43l0.32,2.53l-0.59,-0.03l-0.19,-1.34l-0.55,-0.34l-1.68,0.7l-2.46,-1.23l0.62,-1.87l-0.26,-0.51l-1.37,-0.44l-0.54,-2.22l-0.45,-0.3l-2.13,0.35l0.24,-2.48l2.39,-2.4l0.03,-4.31l-1.19,-0.92l-0.78,-1.49l-0.41,-0.21l-1.41,0.19l-1.98,-0.3l0.46,-1.07l-1.17,-1.7l-0.55,-0.11l-1.63,1.05l-2.25,-0.57l-2.89,1.73l-2.25,1.98l-1.75,0.29l-1.17,-0.71l-3.31,-0.65l-1.48,0.79l-1.04,1.27l-0.12,-1.17l-0.54,-0.34l-1.44,0.54l-5.55,-0.86l-1.98,-1.16l-1.89,-0.54l-0.99,-1.35l-1.34,-0.37l-2.55,-1.79l-2.01,-0.84l-1.21,0.56l-5.57,-3.45l-0.53,-2.31l1.19,0.25l0.48,-0.37l0.08,-1.42l-0.98,-1.56l0.15,-2.44l-2.69,-3.32l-4.12,-1.23l-0.67,-2.0l-1.92,-1.48l-0.38,-0.7l-0.51,-3.01l-1.52,-0.66l-0.7,0.13l-0.48,-2.05l0.55,-0.51l-0.09,-0.82l2.03,-1.19l1.6,-0.54l2.56,0.38l0.42,-0.22l0.85,-1.7l3.0,-0.33l1.1,-1.26l4.05,-1.77l0.39,-0.91l-0.17,-1.44l1.45,-0.67l0.2,-0.52l-2.07,-4.9l4.51,-1.12l1.37,-0.73l1.89,-5.51l4.98,0.86l1.51,-1.7l0.11,-2.87l1.99,-0.38l1.83,-2.06l0.49,-0.13l0.68,2.08l2.23,1.77l3.44,1.16l1.55,2.29l-0.92,3.49l0.96,1.67l6.54,1.13l2.95,1.87l1.47,0.35l1.06,2.62l1.53,1.91l3.05,0.08l5.14,0.67l3.37,-0.41l2.36,0.43l3.65,1.8l3.06,0.04l1.45,0.88l2.87,-1.59l3.95,-1.02l3.83,-0.14l3.06,-1.14l1.77,-1.6l1.72,-1.01l0.17,-0.49l-1.1,-2.05l1.02,-1.54l4.02,0.8l2.45,-1.61l3.76,-1.19l1.96,-2.13l1.63,-0.83l3.51,-0.4l1.92,0.34l0.46,-0.3l0.17,-1.5l-2.27,-2.22l-2.11,-1.09l-2.18,1.11l-2.32,-0.47l-1.29,0.32l-0.4,-0.82l2.73,-5.16l3.02,1.06l3.53,-2.06l0.18,-1.68l2.16,-3.35l1.49,-1.35l-0.03,-1.85l-1.07,-0.85l1.54,-1.26l2.98,-0.59l3.23,-0.09l3.64,0.99l2.04,1.16l3.29,6.71l0.92,3.19ZM696.92,237.31l-1.87,1.08l-1.63,-0.64l-0.06,-1.79l1.03,-0.98l2.58,-0.69l1.16,0.05l0.3,0.54l-0.98,1.06l-0.53,1.37Z\", \"name\": \"China\"}, \"CM\": {\"path\": \"M457.92,257.49l1.05,1.91l-1.4,0.16l-1.05,-0.23l-0.45,0.22l-0.54,1.19l0.08,0.45l1.48,1.47l1.05,0.45l1.01,2.46l-1.52,2.99l-0.68,0.68l-0.13,3.69l2.38,3.84l1.09,0.8l0.24,2.48l-3.67,-1.14l-11.27,-0.13l0.23,-1.79l-0.98,-1.66l-1.19,-0.54l-0.44,-0.97l-0.6,-0.42l1.71,-4.27l0.75,-0.13l1.38,-1.36l0.65,-0.03l1.71,0.99l1.93,-1.12l1.14,-3.18l1.38,-1.17l2.0,-5.14l2.17,-2.13l0.3,-1.64l-0.86,-0.88l0.03,-0.33l0.94,1.28l0.07,3.22Z\", \"name\": \"Cameroon\"}, \"CL\": {\"path\": \"M246.5,429.18l-3.14,1.83l-0.57,3.16l-0.64,0.05l-2.68,-1.06l-2.82,-2.33l-3.04,-1.89l-0.69,-1.85l0.63,-2.14l-1.21,-2.11l-0.31,-5.37l1.01,-2.91l2.57,-2.38l-0.18,-0.68l-3.16,-0.77l2.05,-2.47l0.77,-4.65l2.32,0.9l0.54,-0.29l1.31,-6.31l-0.22,-0.44l-1.68,-0.8l-0.56,0.28l-0.7,3.36l-0.81,-0.22l1.56,-9.41l1.15,-2.24l-0.71,-2.82l-0.18,-2.84l1.01,-0.33l3.26,-9.14l1.07,-4.22l-0.56,-4.21l0.74,-2.34l-0.29,-3.27l1.46,-3.34l2.04,-16.59l-0.66,-7.76l1.03,-0.53l0.54,-0.9l0.79,1.14l0.32,1.78l1.25,1.16l-0.69,2.55l1.33,2.9l0.97,3.59l0.46,0.29l1.5,-0.3l0.11,0.23l-0.76,2.44l-2.57,1.23l-0.23,0.37l0.08,4.33l-0.46,0.77l0.56,1.21l-1.58,1.51l-1.68,2.62l-0.89,2.47l0.2,2.7l-1.48,2.73l1.12,5.09l0.64,0.61l-0.01,2.29l-1.38,2.68l0.01,2.4l-1.89,2.04l0.02,2.75l0.69,2.57l-1.43,1.13l-1.26,5.68l0.39,3.51l-0.97,0.89l0.58,3.5l1.02,1.14l-0.65,1.02l0.15,0.57l1.0,0.53l0.16,0.69l-1.03,0.85l0.26,1.75l-0.89,4.03l-1.31,2.66l0.24,1.75l-0.71,1.83l-1.99,1.7l0.3,3.67l0.88,1.19l1.58,0.01l0.01,2.21l1.04,1.95l5.98,0.63ZM248.69,430.79l0.0,7.33l0.4,0.4l3.52,0.05l-0.44,0.75l-1.94,0.98l-2.49,-0.37l-1.88,-1.06l-2.55,-0.49l-5.59,-3.71l-2.38,-2.63l4.1,2.48l3.32,1.23l0.45,-0.12l1.29,-1.57l0.83,-2.32l2.05,-1.24l1.31,0.29Z\", \"name\": \"Chile\"}, \"CA\": {\"path\": \"M280.06,145.6l-1.67,2.88l0.07,0.49l0.5,0.04l1.46,-0.98l1.0,0.42l-0.56,0.72l0.17,0.62l2.22,0.89l1.35,-0.71l1.95,0.78l-0.66,2.01l0.5,0.51l1.32,-0.42l0.98,3.17l-0.91,2.41l-0.8,0.08l-1.23,-0.45l0.47,-2.25l-0.89,-0.83l-0.48,0.06l-2.78,2.63l-0.34,-0.02l1.02,-0.85l-0.14,-0.69l-2.4,-0.77l-7.4,0.08l-0.17,-0.41l1.3,-0.94l0.02,-0.64l-0.73,-0.58l1.85,-1.74l2.57,-5.16l1.47,-1.79l1.99,-1.05l0.46,0.06l-1.53,2.45ZM68.32,74.16l4.13,0.95l4.02,2.14l2.61,0.4l2.47,-1.89l2.88,-1.31l3.85,0.48l3.71,-1.94l3.82,-1.04l1.56,1.68l0.49,0.08l1.87,-1.04l0.65,-1.98l1.24,0.35l4.16,3.94l0.54,0.01l2.75,-2.49l0.26,2.59l0.49,0.35l3.08,-0.73l1.04,-1.27l2.73,0.23l3.83,1.86l5.86,1.61l3.47,0.75l2.44,-0.26l2.73,1.78l-2.98,1.81l-0.19,0.41l0.31,0.32l4.53,0.92l6.87,-0.5l2.0,-0.69l2.49,2.39l0.53,0.02l2.72,-2.16l-0.02,-0.64l-2.16,-1.54l1.15,-1.06l4.83,-0.61l1.84,0.95l2.48,2.31l3.01,-0.23l4.55,1.92l3.85,-0.67l3.61,0.1l0.41,-0.44l-0.25,-2.36l1.79,-0.61l3.49,1.32l-0.01,3.77l0.31,0.39l0.45,-0.22l1.48,-3.16l1.74,0.1l0.41,-0.3l1.13,-4.37l-2.78,-3.11l-2.8,-1.74l0.19,-4.64l2.71,-3.07l2.98,0.67l2.41,1.95l3.19,4.8l-1.99,1.97l0.21,0.68l4.33,0.84l-0.01,4.15l0.25,0.37l0.44,-0.09l3.07,-3.15l2.54,2.39l-0.61,3.33l2.42,2.88l0.61,0.0l2.61,-3.08l1.88,-3.82l0.17,-4.58l6.72,0.94l3.13,2.04l0.13,1.82l-1.76,2.19l-0.01,0.49l1.66,2.16l-0.26,1.71l-4.68,2.8l-3.28,0.61l-2.47,-1.2l-0.55,0.23l-0.73,2.04l-2.38,3.43l-0.74,1.77l-2.74,2.57l-3.44,0.25l-2.21,1.78l-0.28,2.53l-2.82,0.55l-3.12,3.22l-2.72,4.31l-1.03,3.17l-0.14,4.31l0.33,0.41l3.44,0.57l2.24,5.95l0.45,0.23l3.4,-0.69l4.52,1.51l2.43,1.31l1.91,1.73l3.1,0.96l2.62,1.46l6.6,0.54l-0.35,2.74l0.81,3.53l1.81,3.78l3.83,3.3l0.45,0.04l2.1,-1.28l1.37,-3.69l-1.31,-5.38l-1.45,-1.58l3.57,-1.47l2.84,-2.46l1.52,-2.8l-0.25,-2.55l-1.7,-3.07l-2.85,-2.61l2.8,-3.95l-1.08,-3.37l-0.79,-5.67l1.36,-0.7l6.76,1.41l2.12,-0.96l5.12,3.36l1.05,1.61l4.08,0.26l-0.06,2.87l0.83,4.7l0.3,0.32l2.16,0.54l1.73,2.06l0.5,0.09l3.63,-2.03l2.52,-4.19l1.26,-1.32l7.6,11.72l-0.92,2.04l0.16,0.51l3.3,1.97l2.22,1.98l4.1,0.98l1.43,0.99l0.95,2.79l2.1,0.68l0.84,1.08l0.17,3.45l-3.37,2.26l-4.22,1.24l-3.06,2.63l-4.06,0.51l-5.35,-0.69l-6.39,0.2l-2.3,2.41l-3.26,1.51l-6.47,7.15l-0.06,0.48l0.44,0.19l2.13,-0.52l4.17,-4.24l5.12,-2.62l3.52,-0.3l1.69,1.21l-2.12,2.21l0.81,3.47l1.02,2.61l3.47,1.6l4.14,-0.45l2.15,-2.8l0.26,1.48l1.14,0.8l-2.56,1.69l-5.5,1.82l-2.54,1.27l-2.74,2.15l-1.4,-0.16l-0.07,-2.01l4.14,-2.44l0.18,-0.45l-0.39,-0.29l-6.63,0.45l-1.39,-1.49l-0.14,-4.43l-1.11,-0.91l-1.82,0.39l-0.66,-0.66l-0.6,0.03l-1.91,2.39l-0.82,2.52l-0.8,1.27l-1.67,0.56l-0.46,0.76l-8.31,0.07l-1.21,0.62l-2.35,1.97l-0.71,-0.14l-1.37,0.96l-1.12,-0.48l-4.74,1.26l-0.9,1.17l0.21,0.62l1.73,0.3l-1.81,0.31l-1.85,0.81l-2.11,-0.13l-2.95,1.78l-0.69,-0.09l1.39,-2.1l1.73,-1.21l0.1,-2.29l1.16,-1.99l0.49,0.53l2.03,0.42l1.2,-1.16l0.02,-0.47l-2.66,-3.51l-2.28,-0.61l-5.64,-0.71l-0.4,-0.57l-0.79,0.13l0.2,-0.41l-0.22,-0.55l-0.68,-0.26l0.19,-1.26l-0.78,-0.73l0.31,-0.64l-0.29,-0.57l-2.6,-0.44l-0.75,-1.63l-0.94,-0.66l-4.31,-0.65l-1.13,1.19l-1.48,0.59l-0.85,1.06l-2.83,-0.76l-2.09,0.39l-2.39,-0.97l-4.24,-0.7l-0.57,-0.4l-0.41,-1.63l-0.4,-0.3l-0.85,0.02l-0.39,0.4l-0.01,0.85l-69.13,-0.01l-6.51,-4.52l-4.5,-1.38l-1.26,-2.66l0.33,-1.93l-0.23,-0.43l-3.01,-1.35l-0.55,-2.77l-2.89,-2.38l-0.04,-1.45l1.39,-1.83l-0.28,-2.55l-4.16,-2.2l-4.07,-6.6l-4.02,-3.22l-1.3,-1.88l-0.5,-0.13l-2.51,1.21l-2.23,1.87l-3.85,-3.88l-2.44,-1.04l-2.22,-0.13l0.03,-37.49ZM260.37,148.65l3.04,0.76l2.26,1.2l-3.78,-0.95l-1.53,-1.01ZM249.4,3.81l6.68,0.49l5.32,0.79l4.26,1.57l-0.07,1.1l-5.85,2.53l-6.02,1.21l-2.39,1.39l-0.18,0.45l0.39,0.29l4.01,-0.02l-4.65,2.82l-4.2,1.74l-4.19,4.59l-5.03,0.92l-1.67,1.15l-7.47,0.59l-0.37,0.37l0.32,0.42l2.41,0.49l-0.81,0.47l-0.12,0.59l1.83,2.41l-2.02,1.59l-3.81,1.51l-1.32,2.16l-3.38,1.53l-0.22,0.48l0.35,1.19l0.4,0.29l3.88,-0.18l0.03,0.61l-6.33,2.95l-6.41,-1.4l-7.43,0.79l-3.72,-0.62l-4.4,-0.25l-0.23,-1.83l4.29,-1.11l0.28,-0.51l-1.1,-3.45l1.0,-0.25l6.58,2.28l0.47,-0.16l-0.05,-0.49l-3.41,-3.45l-3.58,-0.98l1.48,-1.55l4.34,-1.29l0.97,-2.19l-0.16,-0.48l-3.42,-2.13l-0.81,-2.26l6.2,0.22l2.24,0.58l3.91,-2.1l0.2,-0.43l-0.35,-0.32l-5.64,-0.67l-8.73,0.36l-4.26,-1.9l-2.12,-2.4l-2.78,-1.66l-0.41,-1.52l3.31,-1.03l2.93,-0.2l4.91,-0.99l3.7,-2.27l2.87,0.3l2.62,1.67l0.56,-0.14l1.82,-3.2l3.13,-0.94l4.44,-0.69l7.53,-0.26l1.48,0.67l7.19,-1.06l10.8,0.79ZM203.85,57.54l0.01,0.42l1.97,2.97l0.68,-0.02l2.24,-3.72l5.95,-1.86l4.01,4.64l-0.35,2.91l0.5,0.43l4.95,-1.36l2.32,-1.8l5.31,2.28l3.27,2.11l0.3,1.84l0.48,0.33l4.42,-0.99l2.64,2.87l5.97,1.77l2.06,1.72l2.11,3.71l-4.19,1.86l-0.01,0.73l5.9,2.83l3.94,0.94l3.78,3.95l3.46,0.25l-0.63,2.37l-4.11,4.47l-2.76,-1.56l-3.9,-3.94l-3.59,0.41l-0.33,0.34l-0.19,2.72l2.63,2.38l3.42,1.89l0.94,0.97l1.55,3.75l-0.7,2.29l-2.74,-0.92l-6.25,-3.15l-0.51,0.13l0.05,0.52l6.07,5.69l0.18,0.59l-6.09,-1.39l-5.31,-2.24l-2.63,-1.66l0.6,-0.77l-0.12,-0.6l-7.39,-4.01l-0.59,0.37l0.03,0.79l-6.73,0.6l-1.69,-1.1l1.36,-2.46l4.51,-0.07l5.15,-0.52l0.31,-0.6l-0.74,-1.3l0.78,-1.84l3.21,-4.05l-0.67,-2.35l-1.11,-1.6l-3.84,-2.1l-4.35,-1.28l0.91,-0.63l0.06,-0.61l-2.65,-2.75l-2.34,-0.36l-1.89,-1.46l-0.53,0.03l-1.24,1.23l-4.36,0.55l-9.04,-0.99l-9.26,-1.98l-1.6,-1.22l2.22,-1.77l0.13,-0.44l-0.38,-0.27l-3.22,-0.02l-0.72,-4.25l1.83,-4.04l2.42,-1.85l5.5,-1.1l-1.39,2.35ZM261.19,159.33l2.07,0.61l1.44,-0.04l-1.15,0.63l-2.94,-1.23l-0.4,-0.68l0.36,-0.37l0.61,1.07ZM230.83,84.39l-2.37,0.18l-0.49,-1.63l0.93,-2.09l1.94,-0.51l1.62,0.99l0.02,1.52l-1.66,1.54ZM229.43,58.25l0.11,0.65l-4.87,-0.21l-2.72,0.62l-3.1,-2.57l0.08,-1.26l0.86,-0.23l5.57,0.51l4.08,2.5ZM222.0,105.02l-0.72,1.49l-0.63,-0.19l-0.48,-0.84l0.81,-0.99l0.65,0.05l0.37,0.46ZM183.74,38.32l2.9,1.7l4.79,-0.01l1.84,1.46l-0.49,1.68l0.23,0.48l2.82,1.14l1.76,1.26l7.01,0.65l4.1,-1.1l5.03,-0.43l3.93,0.35l2.48,1.77l0.46,1.7l-1.3,1.1l-3.56,1.01l-3.23,-0.59l-7.17,0.76l-5.09,0.09l-3.99,-0.6l-6.42,-1.54l-0.79,-2.51l-0.3,-2.49l-2.64,-2.5l-5.32,-0.72l-2.52,-1.4l0.68,-1.57l4.78,0.31ZM207.38,91.35l0.4,1.56l0.56,0.26l1.06,-0.52l1.32,0.96l5.42,2.57l0.2,1.68l0.46,0.35l1.68,-0.28l1.15,0.85l-1.55,0.87l-3.61,-0.88l-1.32,-1.69l-0.57,-0.06l-2.45,2.1l-3.12,1.79l-0.7,-1.87l-0.42,-0.26l-2.16,0.24l1.39,-1.39l0.32,-3.14l0.76,-3.35l1.18,0.22ZM215.49,102.6l-2.67,1.95l-1.4,-0.07l-0.3,-0.58l1.53,-1.48l2.84,0.18ZM202.7,24.12l2.53,1.59l-2.87,1.4l-4.53,4.05l-4.25,0.38l-5.03,-0.68l-2.45,-2.04l0.03,-1.62l1.82,-1.37l0.14,-0.45l-0.38,-0.27l-4.45,0.04l-2.59,-1.76l-1.41,-2.29l1.57,-2.32l1.62,-1.66l2.44,-0.39l0.25,-0.65l-0.6,-0.74l4.86,-0.25l3.24,3.11l8.16,2.3l1.9,3.61ZM187.47,59.2l-2.76,3.49l-2.38,-0.15l-1.44,-3.84l0.04,-2.2l1.19,-1.88l2.3,-1.23l5.07,0.17l4.11,1.02l-3.24,3.72l-2.88,0.89ZM186.07,48.79l-1.08,1.53l-3.34,-0.34l-2.56,-1.1l1.03,-1.75l3.25,-1.23l1.95,1.58l0.75,1.3ZM185.71,35.32l-5.3,-0.2l-0.32,-0.71l4.31,0.07l1.3,0.84ZM180.68,32.48l-3.34,1.0l-1.79,-1.1l-0.98,-1.87l-0.15,-1.73l4.1,0.53l2.67,1.7l-0.51,1.47ZM180.9,76.31l-1.1,1.08l-3.13,-1.23l-2.12,0.43l-2.71,-1.57l1.72,-1.09l1.55,-1.72l3.81,1.9l1.98,2.2ZM169.74,54.87l2.96,0.97l4.17,-0.57l0.41,0.88l-2.14,2.11l0.09,0.64l3.55,1.92l-0.4,3.72l-3.79,1.65l-2.17,-0.35l-1.72,-1.74l-6.02,-3.5l0.03,-0.85l4.68,0.54l0.4,-0.21l-0.05,-0.45l-2.48,-2.81l2.46,-1.95ZM174.45,40.74l1.37,1.73l0.07,2.44l-1.05,3.45l-3.79,0.47l-2.32,-0.69l0.05,-2.64l-0.44,-0.41l-3.68,0.35l-0.12,-3.1l2.45,0.1l3.67,-1.73l3.41,0.29l0.37,-0.26ZM170.05,31.55l0.67,1.56l-3.33,-0.49l-4.22,-1.77l-4.35,-0.16l1.4,-0.94l-0.06,-0.7l-2.81,-1.23l-0.12,-1.39l4.39,0.68l6.62,1.98l1.81,2.47ZM134.5,58.13l-1.02,1.82l0.45,0.58l5.4,-1.39l3.33,2.29l0.49,-0.03l2.6,-2.23l1.94,1.32l2.0,4.5l0.7,0.06l1.3,-2.29l-1.63,-4.46l1.69,-0.54l2.31,0.71l2.65,1.81l2.49,7.92l8.48,4.27l-0.19,1.35l-3.79,0.33l-0.26,0.67l1.4,1.49l-0.58,1.1l-4.23,-0.64l-4.43,-1.19l-3.0,0.28l-4.66,1.47l-10.52,1.04l-1.43,-2.02l-3.42,-1.2l-2.21,0.43l-2.51,-2.86l4.84,-1.05l3.6,0.19l3.27,-0.78l0.31,-0.39l-0.31,-0.39l-4.84,-1.06l-8.79,0.27l-0.85,-1.07l5.26,-1.66l0.27,-0.45l-0.4,-0.34l-3.8,0.06l-3.81,-1.06l1.81,-3.01l1.66,-1.79l6.48,-2.81l1.97,0.71ZM158.7,56.61l-1.7,2.44l-3.2,-2.75l0.37,-0.3l3.11,-0.18l1.42,0.79ZM149.61,42.73l1.01,1.89l0.5,0.18l2.14,-0.82l2.23,0.19l0.36,2.04l-1.33,2.09l-8.28,0.76l-6.35,2.15l-3.41,0.1l-0.19,-0.96l4.9,-2.08l0.23,-0.46l-0.41,-0.31l-11.25,0.59l-2.89,-0.74l3.04,-4.44l2.14,-1.32l6.81,1.69l4.58,3.06l4.37,0.39l0.36,-0.63l-3.36,-4.6l1.85,-1.53l2.18,0.51l0.77,2.26ZM144.76,34.41l-4.36,1.44l-3.0,-1.4l1.46,-1.24l3.47,-0.52l2.96,0.71l-0.52,1.01ZM145.13,29.83l-1.9,0.66l-3.67,-0.0l2.27,-1.61l3.3,0.95ZM118.92,65.79l-6.03,2.02l-1.33,-1.9l-5.38,-2.28l2.59,-5.05l2.16,-3.14l-0.02,-0.48l-1.97,-2.41l7.64,-0.7l3.6,1.02l6.3,0.27l4.42,2.95l-2.53,0.98l-6.24,3.43l-3.1,3.28l-0.11,2.01ZM129.54,35.53l-0.28,3.37l-1.72,1.62l-2.33,0.28l-4.61,2.19l-3.86,0.76l-2.64,-0.87l3.72,-3.4l5.01,-3.34l3.72,0.07l3.0,-0.67ZM111.09,152.69l-0.67,0.24l-3.85,-1.37l-0.83,-1.17l-2.12,-1.07l-0.66,-1.02l-2.4,-0.55l-0.74,-1.71l6.02,1.45l2.0,2.55l2.52,1.39l0.73,1.27ZM87.8,134.64l0.89,0.29l1.86,-0.21l-0.65,3.34l1.69,2.33l-1.31,-1.33l-0.99,-1.62l-1.17,-0.98l-0.33,-1.82Z\", \"name\": \"Canada\"}, \"CG\": {\"path\": \"M466.72,276.48l-0.1,1.03l-1.25,2.97l-0.19,3.62l-0.46,1.78l-0.23,0.63l-1.61,1.19l-1.21,1.39l-1.09,2.43l0.04,2.09l-3.25,3.24l-0.5,-0.24l-0.5,-0.83l-1.36,-0.02l-0.98,0.89l-1.68,-0.99l-1.54,1.24l-1.52,-1.96l1.57,-1.14l0.11,-0.52l-0.77,-1.35l2.1,-0.66l0.39,-0.73l1.05,0.82l2.21,0.11l1.12,-1.37l0.37,-1.81l-0.27,-2.09l-1.13,-1.5l1.0,-2.69l-0.13,-0.45l-0.92,-0.58l-1.6,0.17l-0.51,-0.94l0.1,-0.61l2.75,0.09l3.97,1.24l0.51,-0.33l0.17,-1.28l1.24,-2.21l1.28,-1.14l2.76,0.49Z\", \"name\": \"Congo\"}, \"CF\": {\"path\": \"M461.16,278.2l-0.26,-1.19l-1.09,-0.77l-0.84,-1.17l-0.29,-1.0l-1.04,-1.15l0.08,-3.43l0.58,-0.49l1.16,-2.35l1.85,-0.17l0.61,-0.62l0.97,0.58l3.15,-0.96l2.48,-1.92l0.02,-0.96l2.81,0.02l2.36,-1.17l1.93,-2.85l1.16,-0.93l1.11,-0.3l0.27,0.86l1.34,1.47l-0.39,2.01l0.3,1.01l4.01,2.75l0.17,0.93l2.63,2.31l0.6,1.44l2.08,1.4l-3.84,-0.21l-1.94,0.88l-1.23,-0.49l-2.67,1.2l-1.29,-0.18l-0.51,0.36l-0.6,1.22l-3.35,-0.65l-1.57,-0.91l-2.42,-0.83l-1.45,0.91l-0.97,1.27l-0.26,1.56l-3.22,-0.43l-1.49,1.33l-0.94,1.62Z\", \"name\": \"Central African Rep.\"}, \"CD\": {\"path\": \"M487.01,272.38l2.34,-0.14l1.35,1.84l1.34,0.45l0.86,-0.39l1.21,0.12l1.07,-0.41l0.54,0.89l2.04,1.54l-0.14,2.72l0.7,0.54l-1.38,1.13l-1.53,2.54l-0.17,2.05l-0.59,1.08l-0.02,1.72l-0.72,0.84l-0.66,3.01l0.63,1.32l-0.44,4.26l0.64,1.47l-0.37,1.22l0.86,1.8l1.53,1.41l0.3,1.26l0.44,0.5l-4.08,0.75l-0.92,1.81l0.51,1.34l-0.74,5.43l0.17,0.38l2.45,1.46l0.54,-0.1l0.12,1.62l-1.28,-0.01l-1.85,-2.35l-1.94,-0.45l-0.48,-1.13l-0.55,-0.2l-1.41,0.74l-1.71,-0.3l-1.01,-1.18l-2.49,-0.19l-0.44,-0.77l-1.98,-0.21l-2.88,0.36l0.11,-2.41l-0.85,-1.13l-0.16,-1.36l0.32,-1.73l-0.46,-0.89l-0.04,-1.49l-0.4,-0.39l-2.53,0.02l0.1,-0.41l-0.39,-0.49l-1.28,0.01l-0.43,0.45l-1.62,0.32l-0.83,1.79l-1.09,-0.28l-2.4,0.52l-1.37,-1.91l-1.3,-3.3l-0.38,-0.27l-7.39,-0.03l-2.46,0.42l0.5,-0.45l0.37,-1.47l0.66,-0.38l0.92,0.08l0.73,-0.82l0.87,0.02l0.31,0.68l1.4,0.36l3.59,-3.63l0.01,-2.23l1.02,-2.29l2.69,-2.39l0.43,-0.99l0.49,-1.96l0.17,-3.51l1.25,-2.95l0.36,-3.14l0.86,-1.13l1.1,-0.66l3.57,1.73l3.65,0.73l0.46,-0.21l0.8,-1.46l1.24,0.19l2.61,-1.17l0.81,0.44l1.04,-0.03l0.59,-0.66l0.7,-0.16l1.81,0.25Z\", \"name\": \"Dem. Rep. Congo\"}, \"CZ\": {\"path\": \"M458.46,144.88l1.22,1.01l1.47,0.23l0.13,0.93l1.36,0.68l0.54,-0.2l0.24,-0.55l1.15,0.25l0.53,1.09l1.68,0.18l0.6,0.84l-1.04,0.73l-0.96,1.28l-1.6,0.17l-0.55,0.56l-1.04,-0.46l-1.05,0.15l-2.12,-0.96l-1.05,0.34l-1.2,1.12l-1.56,-0.87l-2.57,-2.1l-0.53,-1.88l4.7,-2.52l0.71,0.26l0.9,-0.28Z\", \"name\": \"Czech Rep.\"}, \"CY\": {\"path\": \"M504.36,193.47l0.43,0.28l-1.28,0.57l-0.92,-0.28l-0.24,-0.46l2.01,-0.13Z\", \"name\": \"Cyprus\"}, \"CR\": {\"path\": \"M211.34,258.05l0.48,0.99l1.6,1.6l-0.54,0.45l0.29,1.42l-0.25,1.19l-1.09,-0.59l-0.05,-1.25l-2.46,-1.42l-0.28,-0.77l-0.66,-0.45l-0.45,-0.0l-0.11,1.04l-1.32,-0.95l0.31,-1.3l-0.36,-0.6l0.31,-0.27l1.42,0.58l1.29,-0.14l0.56,0.56l0.74,0.17l0.55,-0.27Z\", \"name\": \"Costa Rica\"}, \"CU\": {\"path\": \"M221.21,227.25l1.27,1.02l2.19,-0.28l4.43,3.33l2.08,0.43l-0.1,0.38l0.36,0.5l1.75,0.1l1.48,0.84l-3.11,0.51l-4.15,-0.03l0.77,-0.67l-0.04,-0.64l-1.2,-0.74l-1.49,-0.16l-0.7,-0.61l-0.56,-1.4l-0.4,-0.25l-1.34,0.1l-2.2,-0.66l-0.88,-0.58l-3.18,-0.4l-0.27,-0.16l0.58,-0.74l-0.36,-0.29l-2.72,-0.05l-1.7,1.29l-0.91,0.03l-0.61,0.69l-1.01,0.22l1.11,-1.29l1.01,-0.52l3.69,-1.01l3.98,0.21l2.21,0.84Z\", \"name\": \"Cuba\"}, \"SZ\": {\"path\": \"M500.35,351.36l0.5,2.04l-0.38,0.89l-1.05,0.21l-1.23,-1.2l-0.02,-0.64l0.83,-1.57l1.34,0.27Z\", \"name\": \"Swaziland\"}, \"SY\": {\"path\": \"M511.0,199.79l0.05,-1.33l0.54,-1.36l1.28,-0.99l0.13,-0.45l-0.41,-1.11l-1.14,-0.36l-0.19,-1.74l0.52,-1.0l1.29,-1.21l0.2,-1.18l0.59,0.23l2.62,-0.76l1.36,0.52l2.06,-0.01l2.95,-1.08l3.25,-0.26l-0.67,0.94l-1.28,0.66l-0.21,0.4l0.23,2.01l-0.88,3.19l-10.15,5.73l-2.15,-0.85Z\", \"name\": \"Syria\"}, \"KG\": {\"path\": \"M621.35,172.32l-3.87,1.69l-0.96,1.18l-3.04,0.34l-1.13,1.86l-2.36,-0.35l-1.99,0.63l-2.39,1.4l0.06,0.95l-0.4,0.37l-4.52,0.43l-3.02,-0.93l-2.37,0.17l0.11,-0.79l2.32,0.42l1.13,-0.88l1.99,0.2l3.21,-2.14l-0.03,-0.69l-2.97,-1.57l-1.94,0.65l-1.22,-0.74l1.71,-1.58l-0.12,-0.67l-0.36,-0.15l0.32,-0.77l1.36,-0.35l4.02,1.02l0.49,-0.3l0.35,-1.59l1.09,-0.48l3.42,1.22l1.11,-0.31l7.64,0.39l1.16,1.0l1.23,0.39Z\", \"name\": \"Kyrgyzstan\"}, \"KE\": {\"path\": \"M506.26,284.69l1.87,-2.56l0.93,-2.15l-1.38,-4.08l-1.06,-1.6l2.82,-2.75l0.79,0.26l0.12,1.41l0.86,0.83l1.9,0.11l3.28,2.13l3.57,0.44l1.05,-1.12l1.96,-0.9l0.82,0.68l1.16,0.09l-1.78,2.45l0.03,9.12l1.3,1.94l-1.37,0.78l-0.67,1.03l-1.08,0.46l-0.34,1.67l-0.81,1.07l-0.45,1.55l-0.68,0.56l-3.2,-2.23l-0.35,-1.58l-8.86,-4.98l0.14,-1.6l-0.57,-1.04Z\", \"name\": \"Kenya\"}, \"SS\": {\"path\": \"M481.71,263.34l1.07,-0.72l1.2,-3.18l1.36,-0.26l1.61,1.99l0.87,0.34l1.1,-0.41l1.5,0.07l0.57,0.53l2.49,0.0l0.44,-0.63l1.07,-0.4l0.45,-0.84l0.59,-0.33l1.9,1.33l1.6,-0.2l2.83,-3.33l-0.32,-2.21l1.59,-0.52l-0.24,1.6l0.3,1.83l1.35,1.18l0.2,1.87l0.35,0.41l0.02,1.53l-0.23,0.47l-1.42,0.25l-0.85,1.44l0.3,0.6l1.4,0.16l1.11,1.08l0.59,1.13l1.03,0.53l1.28,2.36l-4.41,3.98l-1.74,0.01l-1.89,0.55l-1.47,-0.52l-1.15,0.57l-2.96,-2.62l-1.3,0.49l-1.06,-0.15l-0.79,0.39l-0.82,-0.22l-1.8,-2.7l-1.91,-1.1l-0.66,-1.5l-2.62,-2.32l-0.18,-0.94l-2.37,-1.6Z\", \"name\": \"S. Sudan\"}, \"SR\": {\"path\": \"M283.12,270.19l2.1,0.53l-1.08,1.95l0.2,1.72l0.93,1.49l-0.59,2.03l-0.43,0.71l-1.12,-0.42l-1.32,0.22l-0.93,-0.2l-0.46,0.26l-0.25,0.73l0.33,0.7l-0.89,-0.13l-1.39,-1.97l-0.31,-1.34l-0.97,-0.31l-0.89,-1.47l0.35,-1.61l1.45,-0.82l0.33,-1.87l2.61,0.44l0.57,-0.47l1.75,-0.16Z\", \"name\": \"Suriname\"}, \"KH\": {\"path\": \"M689.52,249.39l0.49,1.45l-0.28,2.74l-4.0,1.86l-0.16,0.6l0.68,0.95l-2.06,0.17l-2.05,0.97l-1.82,-0.32l-2.12,-3.7l-0.55,-2.85l1.4,-1.85l3.02,-0.45l2.23,0.35l2.01,0.98l0.51,-0.14l0.95,-1.48l1.74,0.74Z\", \"name\": \"Cambodia\"}, \"SV\": {\"path\": \"M195.8,250.13l1.4,-1.19l2.24,1.45l0.98,-0.27l0.44,0.2l-0.27,1.05l-1.14,-0.03l-3.64,-1.21Z\", \"name\": \"El Salvador\"}, \"SK\": {\"path\": \"M476.82,151.17l-1.14,1.9l-2.73,-0.92l-0.82,0.2l-0.74,0.8l-3.46,0.73l-0.47,0.69l-1.76,0.33l-1.88,-1.0l-0.18,-0.81l0.38,-0.75l1.87,-0.32l1.74,-1.89l0.83,0.16l0.79,-0.34l1.51,1.04l1.34,-0.63l1.25,0.3l1.65,-0.42l1.81,0.95Z\", \"name\": \"Slovakia\"}, \"KR\": {\"path\": \"M737.51,185.84l0.98,-0.1l0.87,-1.17l2.69,-0.32l0.33,-0.29l1.76,2.79l0.58,1.76l0.02,3.12l-0.8,1.32l-2.21,0.55l-1.93,1.13l-1.8,0.19l-0.2,-1.1l0.43,-2.28l-0.95,-2.56l1.43,-0.37l0.23,-0.62l-1.43,-2.06Z\", \"name\": \"Korea\"}, \"SI\": {\"path\": \"M456.18,162.07l-0.51,-1.32l0.18,-1.05l1.69,0.2l1.42,-0.71l2.09,-0.07l0.62,-0.51l0.21,0.47l-1.61,0.67l-0.44,1.34l-0.66,0.24l-0.26,0.82l-1.22,-0.49l-0.84,0.46l-0.69,-0.04Z\", \"name\": \"Slovenia\"}, \"KP\": {\"path\": \"M736.77,185.16l-0.92,-0.42l-0.88,0.62l-1.21,-0.88l0.96,-1.15l0.59,-2.59l-0.46,-0.74l-2.09,-0.77l1.64,-1.52l2.72,-1.58l1.58,-1.91l1.11,0.78l2.17,0.11l0.41,-0.5l-0.3,-1.22l3.52,-1.18l0.94,-1.4l0.98,1.08l-2.19,2.18l0.01,2.14l-1.06,0.54l-1.41,1.4l-1.7,0.52l-1.25,1.09l-0.14,1.98l0.94,0.45l1.15,1.04l-0.13,0.26l-2.6,0.29l-1.13,1.29l-1.22,0.08Z\", \"name\": \"Dem. Rep. Korea\"}, \"SO\": {\"path\": \"M525.13,288.48l-1.13,-1.57l-0.03,-8.86l2.66,-3.38l1.67,-0.13l2.13,-1.69l3.41,-0.23l7.08,-7.55l2.91,-3.69l0.08,-4.82l2.98,-0.67l1.24,-0.86l0.45,-0.0l-0.2,3.0l-1.21,3.62l-2.73,5.97l-2.13,3.65l-5.03,6.16l-8.56,6.4l-2.78,3.08l-0.8,1.56Z\", \"name\": \"Somalia\"}, \"SN\": {\"path\": \"M390.09,248.21l0.12,1.55l0.49,1.46l0.96,0.82l0.05,1.28l-1.26,-0.19l-0.75,0.33l-1.84,-0.61l-5.84,-0.13l-2.54,0.51l-0.22,-1.03l1.77,0.04l2.01,-0.91l1.03,0.48l1.09,0.04l1.29,-0.62l0.14,-0.58l-0.51,-0.74l-1.81,0.25l-1.13,-0.63l-0.79,0.04l-0.72,0.61l-2.31,0.06l-0.92,-1.77l-0.81,-0.64l0.64,-0.35l2.46,-3.74l1.04,0.19l1.38,-0.56l1.19,-0.02l2.72,1.37l3.03,3.48Z\", \"name\": \"Senegal\"}, \"SL\": {\"path\": \"M394.46,264.11l-1.73,1.98l-0.58,1.33l-2.07,-1.06l-1.22,-1.26l-0.65,-2.39l1.16,-0.96l0.67,-1.17l1.21,-0.52l1.66,0.0l1.03,1.64l0.52,2.41Z\", \"name\": \"Sierra Leone\"}, \"SB\": {\"path\": \"M826.69,311.6l-0.61,0.09l-0.2,-0.33l0.37,0.15l0.44,0.09ZM824.18,307.38l-0.26,-0.3l-0.31,-0.91l0.03,0.0l0.54,1.21ZM823.04,309.33l-1.66,-0.22l-0.2,-0.52l1.16,0.28l0.69,0.46ZM819.28,304.68l1.14,0.65l0.02,0.03l-0.81,-0.44l-0.35,-0.23Z\", \"name\": \"Solomon Is.\"}, \"SA\": {\"path\": \"M537.53,210.34l2.0,0.24l0.9,1.32l1.49,-0.06l0.87,2.08l1.29,0.76l0.51,0.99l1.56,1.03l-0.1,1.9l0.32,0.9l1.58,2.47l0.76,0.53l0.7,-0.04l1.68,4.23l7.53,1.33l0.51,-0.29l0.77,1.25l-1.55,4.87l-7.29,2.52l-7.3,1.03l-2.34,1.17l-1.88,2.74l-0.76,0.28l-0.82,-0.78l-0.91,0.12l-2.88,-0.51l-3.51,0.25l-0.86,-0.56l-0.57,0.15l-0.66,1.27l0.16,1.11l-0.43,0.32l-0.93,-1.4l-0.33,-1.16l-1.23,-0.88l-1.27,-2.06l-0.78,-2.22l-1.73,-1.79l-1.14,-0.48l-1.54,-2.31l-0.21,-3.41l-1.44,-2.93l-1.27,-1.16l-1.33,-0.57l-1.31,-3.37l-0.77,-0.67l-0.97,-1.97l-2.8,-4.03l-1.06,-0.17l0.37,-1.96l0.2,-0.72l2.74,0.3l1.08,-0.84l0.6,-0.94l1.74,-0.35l0.65,-1.03l0.71,-0.4l0.1,-0.62l-2.06,-2.28l4.39,-1.22l0.48,-0.37l2.77,0.69l3.66,1.9l7.03,5.5l4.87,0.3Z\", \"name\": \"Saudi Arabia\"}, \"SE\": {\"path\": \"M480.22,89.3l-4.03,1.17l-2.43,2.86l0.26,2.57l-8.77,6.64l-1.78,5.79l1.78,2.68l2.22,1.96l-2.07,3.77l-2.72,1.13l-0.95,6.04l-1.29,3.01l-2.74,-0.31l-0.4,0.22l-1.31,2.59l-2.34,0.13l-0.75,-3.09l-2.08,-4.03l-1.83,-4.96l1.0,-1.93l2.14,-2.7l0.83,-4.45l-1.6,-2.17l-0.15,-4.94l1.48,-3.39l2.58,-0.15l0.87,-1.59l-0.78,-1.57l3.76,-5.59l4.04,-7.48l2.17,0.01l0.39,-0.29l0.57,-2.07l4.37,0.64l0.46,-0.34l0.33,-2.56l1.1,-0.13l6.94,4.87l0.06,6.32l0.66,1.36Z\", \"name\": \"Sweden\"}, \"SD\": {\"path\": \"M505.98,259.4l-0.34,-0.77l-1.17,-0.9l-0.26,-1.61l0.29,-1.81l-0.34,-0.46l-1.16,-0.17l-0.54,0.59l-1.23,0.11l-0.28,0.65l0.53,0.65l0.17,1.22l-2.44,3.0l-0.96,0.19l-2.39,-1.4l-0.95,0.52l-0.38,0.78l-1.11,0.41l-0.29,0.5l-1.94,0.0l-0.54,-0.52l-1.81,-0.09l-0.95,0.4l-2.45,-2.35l-2.07,0.54l-0.73,1.26l-0.6,2.1l-1.25,0.58l-0.75,-0.62l0.27,-2.65l-1.48,-1.78l-0.22,-1.48l-0.92,-0.96l-0.02,-1.29l-0.57,-1.16l-0.68,-0.16l0.69,-1.29l-0.18,-1.14l0.65,-0.62l0.03,-0.55l-0.36,-0.41l1.55,-2.97l1.91,0.16l0.43,-0.4l-0.1,-10.94l2.49,-0.01l0.4,-0.4l-0.0,-4.82l29.02,0.0l0.64,2.04l-0.49,0.66l0.36,2.69l0.93,3.16l2.12,1.55l-0.89,1.04l-1.72,0.39l-0.98,0.9l-1.43,5.65l0.24,1.15l-0.38,2.06l-0.96,2.38l-1.53,1.31l-1.32,2.91l-1.22,0.86l-0.37,1.34Z\", \"name\": \"Sudan\"}, \"DO\": {\"path\": \"M241.8,239.2l0.05,-0.65l-0.46,-0.73l0.42,-0.44l0.19,-1.0l-0.09,-1.53l1.66,0.01l1.99,0.63l0.33,0.67l1.28,0.19l0.33,0.76l1.0,0.08l0.8,0.62l-0.45,0.51l-1.13,-0.47l-1.88,-0.01l-1.27,0.59l-0.75,-0.55l-1.01,0.54l-0.79,1.4l-0.23,-0.61Z\", \"name\": \"Dominican Rep.\"}, \"DJ\": {\"path\": \"M528.43,256.18l-0.45,0.66l-0.58,-0.25l-1.51,0.13l-0.18,-1.01l1.45,-1.95l0.83,0.17l0.77,-0.44l0.2,1.0l-1.2,0.51l-0.06,0.7l0.73,0.47Z\", \"name\": \"Djibouti\"}, \"DK\": {\"path\": \"M452.28,129.07l-1.19,2.24l-2.13,-1.6l-0.23,-0.95l2.98,-0.95l0.57,1.26ZM447.74,126.31l-0.26,0.57l-0.88,-0.07l-1.8,2.53l0.48,1.69l-1.09,0.36l-1.61,-0.39l-0.89,-1.69l-0.07,-3.43l0.96,-1.73l2.02,-0.2l1.09,-1.07l1.33,-0.67l-0.05,1.06l-0.73,1.41l0.3,1.0l1.2,0.64Z\", \"name\": \"Denmark\"}, \"DE\": {\"path\": \"M453.14,155.55l-0.55,-0.36l-1.2,-0.1l-1.87,0.57l-2.13,-0.13l-0.56,0.63l-0.86,-0.6l-0.96,0.09l-2.57,-0.93l-0.85,0.67l-1.47,-0.02l0.24,-1.75l1.23,-2.14l-0.28,-0.59l-3.52,-0.58l-0.92,-0.66l0.12,-1.2l-0.48,-0.88l0.27,-2.17l-0.37,-3.03l1.41,-0.22l0.63,-1.26l0.66,-3.19l-0.41,-1.18l0.26,-0.39l1.66,-0.15l0.33,0.54l0.62,0.07l1.7,-1.69l-0.54,-3.02l1.37,0.33l1.31,-0.37l0.31,1.18l2.25,0.71l-0.02,0.92l0.5,0.4l2.55,-0.65l1.34,-0.87l2.57,1.24l1.06,0.98l0.48,1.44l-0.57,0.74l-0.0,0.48l0.87,1.15l0.57,1.64l-0.14,1.29l0.82,1.7l-1.5,-0.07l-0.56,0.57l-4.47,2.15l-0.22,0.54l0.68,2.26l2.58,2.16l-0.66,1.11l-0.79,0.36l-0.23,0.43l0.32,1.87Z\", \"name\": \"Germany\"}, \"YE\": {\"path\": \"M528.27,246.72l0.26,-0.42l-0.22,-1.01l0.19,-1.5l0.92,-0.69l-0.07,-1.35l0.39,-0.75l1.01,0.47l3.34,-0.27l3.76,0.41l0.95,0.81l1.36,-0.58l1.74,-2.62l2.18,-1.09l6.86,-0.94l2.48,5.41l-1.64,0.76l-0.56,1.9l-6.23,2.16l-2.29,1.8l-1.93,0.05l-1.41,1.02l-4.24,0.74l-1.72,1.49l-3.28,0.19l-0.52,-1.18l0.02,-1.51l-1.34,-3.29Z\", \"name\": \"Yemen\"}, \"AT\": {\"path\": \"M462.89,152.8l0.04,2.25l-1.07,0.0l-0.33,0.63l0.36,0.51l-1.04,2.13l-2.02,0.07l-1.33,0.7l-5.29,-0.99l-0.47,-0.93l-0.44,-0.21l-2.47,0.55l-0.42,0.51l-3.18,-0.81l0.43,-0.91l1.12,0.78l0.6,-0.17l0.25,-0.58l1.93,0.12l1.86,-0.56l1.0,0.08l0.68,0.57l0.62,-0.15l0.26,-0.77l-0.3,-1.78l0.8,-0.44l0.68,-1.15l1.52,0.85l0.47,-0.06l1.34,-1.25l0.64,-0.17l1.81,0.92l1.28,-0.11l0.7,0.37Z\", \"name\": \"Austria\"}, \"DZ\": {\"path\": \"M441.46,188.44l-0.32,1.07l0.39,2.64l-0.54,2.16l-1.58,1.82l0.37,2.39l1.91,1.55l0.18,0.8l1.42,1.03l1.84,7.23l0.12,1.16l-0.57,5.0l0.2,1.51l-0.87,0.99l-0.02,0.51l1.41,1.86l0.14,1.2l0.89,1.48l0.5,0.16l0.98,-0.41l1.73,1.08l0.82,1.23l-8.22,4.81l-7.23,5.11l-3.43,1.13l-2.3,0.21l-0.28,-1.59l-2.56,-1.09l-0.67,-1.25l-26.12,-17.86l0.01,-3.47l3.77,-1.88l2.44,-0.41l2.12,-0.75l1.08,-1.42l2.81,-1.05l0.35,-2.08l1.33,-0.29l1.04,-0.94l3.47,-0.69l0.46,-1.08l-0.1,-0.45l-0.58,-0.52l-0.82,-2.81l-0.19,-1.83l-0.78,-1.49l2.03,-1.31l2.63,-0.48l1.7,-1.22l2.31,-0.84l8.24,-0.73l1.49,0.38l2.28,-1.1l2.46,-0.02l0.92,0.6l1.35,-0.05Z\", \"name\": \"Algeria\"}, \"US\": {\"path\": \"M892.72,99.2l1.31,0.53l1.41,-0.37l1.89,0.98l1.89,0.42l-1.32,0.58l-2.9,-1.53l-2.08,0.22l-0.26,-0.15l0.07,-0.67ZM183.22,150.47l0.37,1.47l1.12,0.85l4.23,0.7l2.39,0.98l2.17,-0.38l1.85,0.5l-1.55,0.65l-3.49,2.61l-0.16,0.77l0.5,0.39l2.33,-0.61l1.77,1.02l5.15,-2.4l-0.31,0.65l0.25,0.56l1.36,0.38l1.71,1.16l4.7,-0.88l0.67,0.85l1.31,0.21l0.58,0.58l-1.34,0.17l-2.18,-0.32l-3.6,0.89l-2.71,3.25l0.35,0.9l0.59,-0.0l0.55,-0.6l-1.36,4.65l0.29,3.09l0.67,1.58l0.61,0.45l1.77,-0.44l1.6,-1.96l0.14,-2.21l-0.82,-1.96l0.11,-1.13l1.19,-2.37l0.44,-0.33l0.48,0.75l0.4,-0.29l0.4,-1.37l0.6,-0.47l0.24,-0.8l1.69,0.49l1.65,1.08l-0.03,2.37l-1.27,1.13l-0.0,1.13l0.87,0.36l1.66,-1.29l0.5,0.17l0.5,2.6l-2.49,3.75l0.17,0.61l1.54,0.62l1.48,0.17l1.92,-0.44l4.72,-2.15l2.16,-1.8l-0.05,-1.24l0.75,-0.22l3.92,0.36l2.12,-1.05l0.21,-0.4l-0.28,-1.48l3.27,-2.4l8.32,-0.02l0.56,-0.82l1.9,-0.77l0.93,-1.51l0.74,-2.37l1.58,-1.98l0.92,0.62l1.47,-0.47l0.8,0.66l-0.0,4.09l1.96,2.6l-2.34,1.31l-5.37,2.09l-1.83,2.72l0.02,1.79l0.83,1.59l0.54,0.23l-6.19,0.94l-2.2,0.89l-0.23,0.48l0.45,0.29l2.99,-0.46l-2.19,0.56l-1.13,0.0l-0.15,-0.32l-0.48,0.08l-0.76,0.82l0.22,0.67l0.32,0.06l-0.41,1.62l-1.27,1.58l-1.48,-1.07l-0.49,-0.04l-0.16,0.46l0.52,1.58l0.61,0.59l0.03,0.79l-0.95,1.38l-1.21,-1.22l-0.27,-2.27l-0.35,-0.35l-0.42,0.25l-0.48,1.27l0.33,1.41l-0.97,-0.27l-0.48,0.24l0.18,0.5l1.52,0.83l0.1,2.52l0.79,0.51l0.52,3.42l-1.42,1.88l-2.47,0.8l-1.71,1.66l-1.31,0.25l-1.27,1.03l-0.43,0.99l-2.69,1.78l-2.64,3.03l-0.45,2.12l0.45,2.08l0.85,2.38l1.09,1.9l0.04,1.2l1.16,3.06l-0.18,2.69l-0.55,1.43l-0.47,0.21l-0.89,-0.23l-0.49,-1.18l-0.87,-0.56l-2.75,-5.16l0.48,-1.68l-0.72,-1.78l-2.01,-2.38l-1.12,-0.53l-2.72,1.18l-1.47,-1.35l-1.57,-0.68l-2.99,0.31l-2.17,-0.3l-2.0,0.19l-1.15,0.46l-0.19,0.58l0.39,0.63l0.14,1.34l-0.84,-0.2l-0.84,0.46l-1.58,-0.07l-2.08,-1.44l-2.09,0.33l-1.91,-0.62l-3.73,0.84l-2.39,2.07l-2.54,1.22l-1.45,1.41l-0.61,1.38l0.34,3.71l-0.29,0.02l-3.5,-1.33l-1.25,-3.11l-1.44,-1.5l-2.24,-3.56l-1.76,-1.09l-2.27,-0.01l-1.71,2.07l-1.76,-0.69l-1.16,-0.74l-1.52,-2.98l-3.93,-3.16l-4.34,-0.0l-0.4,0.4l-0.0,0.74l-6.5,0.02l-9.02,-3.14l-0.34,-0.71l-5.7,0.49l-0.43,-1.29l-1.62,-1.61l-1.14,-0.38l-0.55,-0.88l-1.28,-0.13l-1.01,-0.77l-2.22,-0.27l-0.43,-0.3l-0.36,-1.58l-2.4,-2.83l-2.01,-3.85l-0.06,-0.9l-2.92,-3.26l-0.33,-2.29l-1.3,-1.66l0.52,-2.37l-0.09,-2.57l-0.78,-2.3l0.95,-2.82l0.61,-5.68l-0.47,-4.27l-1.46,-4.08l3.19,0.79l1.26,2.83l0.69,0.08l0.69,-1.14l-1.1,-4.79l68.76,-0.0l0.4,-0.4l0.14,-0.86ZM32.44,67.52l1.73,1.97l0.55,0.05l0.99,-0.79l3.65,0.24l-0.09,0.62l0.32,0.45l3.83,0.77l2.61,-0.43l5.19,1.4l4.84,0.43l1.89,0.57l3.42,-0.7l6.14,1.87l-0.03,38.06l0.38,0.4l2.39,0.11l2.31,0.98l3.9,3.99l0.55,0.04l2.4,-2.03l2.16,-1.04l1.2,1.71l3.95,3.14l4.09,6.63l4.2,2.29l0.06,1.83l-1.02,1.23l-1.16,-1.08l-2.04,-1.03l-0.67,-2.89l-3.28,-3.03l-1.65,-3.57l-6.35,-0.32l-2.82,-1.01l-5.26,-3.85l-6.77,-2.04l-3.53,0.3l-4.81,-1.69l-3.25,-1.63l-2.78,0.8l-0.28,0.46l0.44,2.21l-3.91,0.96l-2.26,1.27l-2.3,0.65l-0.27,-1.65l1.05,-3.42l2.49,-1.09l0.16,-0.6l-0.69,-0.96l-0.55,-0.1l-3.19,2.12l-1.78,2.56l-3.55,2.61l-0.04,0.61l1.56,1.52l-2.07,2.29l-5.11,2.57l-0.77,1.66l-3.76,1.77l-0.92,1.73l-2.69,1.38l-1.81,-0.22l-6.95,3.32l-3.97,0.91l4.85,-2.5l2.59,-1.86l3.26,-0.52l1.19,-1.4l3.42,-2.1l2.59,-2.27l0.42,-2.68l1.23,-2.1l-0.04,-0.46l-0.45,-0.11l-2.68,1.03l-0.63,-0.49l-0.53,0.03l-1.05,1.04l-1.36,-1.54l-0.66,0.08l-0.32,0.62l-0.58,-1.14l-0.56,-0.16l-2.41,1.42l-1.07,-0.0l-0.17,-1.75l0.3,-1.71l-1.61,-1.33l-3.41,0.59l-1.96,-1.63l-1.57,-0.84l-0.15,-2.21l-1.7,-1.43l0.82,-1.88l1.99,-2.12l0.88,-1.92l1.71,-0.24l2.04,0.51l1.87,-1.77l1.91,0.25l1.91,-1.23l0.17,-0.43l-0.47,-1.82l-1.07,-0.7l1.39,-1.17l0.12,-0.45l-0.39,-0.26l-1.65,0.07l-2.66,0.88l-0.75,0.78l-1.92,-0.8l-3.46,0.44l-3.44,-0.91l-1.06,-1.61l-2.65,-1.99l2.91,-1.43l5.5,-2.0l1.52,0.0l-0.26,1.62l0.41,0.46l5.29,-0.16l0.3,-0.65l-2.03,-2.59l-3.14,-1.68l-1.79,-2.12l-2.4,-1.83l-3.09,-1.24l1.04,-1.69l4.23,-0.14l3.36,-2.07l0.73,-2.27l2.39,-1.99l2.42,-0.52l4.65,-1.97l2.46,0.23l3.71,-2.35l3.5,0.89ZM37.6,123.41l-2.25,1.23l-0.95,-0.69l-0.29,-1.24l3.21,-1.63l1.42,0.21l0.67,0.7l-1.8,1.42ZM31.06,234.03l0.98,0.47l0.74,0.87l-1.77,1.07l-0.44,-1.53l0.49,-0.89ZM29.34,232.07l0.18,0.05l0.08,0.05l-0.16,0.03l-0.11,-0.14ZM25.16,230.17l0.05,-0.03l0.18,0.22l-0.13,-0.01l-0.1,-0.18ZM5.89,113.26l-1.08,0.41l-2.21,-1.12l1.53,-0.4l1.62,0.28l0.14,0.83Z\", \"name\": \"United States\"}, \"LV\": {\"path\": \"M489.16,122.85l0.96,0.66l0.22,1.65l0.68,1.76l-3.65,1.7l-2.23,-1.58l-1.29,-0.26l-0.68,-0.77l-2.42,0.34l-4.16,-0.23l-2.47,0.9l0.06,-1.98l1.13,-2.06l1.95,-1.02l2.12,2.58l2.01,-0.07l0.38,-0.33l0.44,-2.52l1.76,-0.53l3.06,1.7l2.15,0.07Z\", \"name\": \"Latvia\"}, \"UY\": {\"path\": \"M286.85,372.74l-0.92,1.5l-2.59,1.44l-1.69,-0.52l-1.42,0.26l-2.39,-1.19l-1.52,0.08l-1.27,-1.3l0.16,-1.5l0.56,-0.79l-0.02,-2.73l1.21,-4.74l1.19,-0.21l2.37,2.0l1.08,0.03l4.36,3.17l1.22,1.6l-0.96,1.5l0.61,1.4Z\", \"name\": \"Uruguay\"}, \"LB\": {\"path\": \"M510.37,198.01l-0.88,0.51l1.82,-3.54l0.62,0.08l0.22,0.61l-1.13,0.88l-0.65,1.47Z\", \"name\": \"Lebanon\"}, \"LA\": {\"path\": \"M689.54,248.53l-1.76,-0.74l-0.49,0.15l-0.94,1.46l-1.32,-0.64l0.62,-0.98l0.11,-2.17l-2.04,-2.42l-0.25,-2.65l-1.9,-2.1l-2.15,-0.31l-0.78,0.91l-1.12,0.06l-1.05,-0.4l-2.06,1.2l-0.04,-1.59l0.61,-2.68l-0.36,-0.49l-1.35,-0.1l-0.11,-1.23l-0.96,-0.88l1.96,-1.89l0.39,0.36l1.33,0.07l0.42,-0.45l-0.34,-2.66l0.7,-0.21l1.28,1.81l1.11,2.35l0.36,0.23l2.82,0.02l0.71,1.67l-1.39,0.65l-0.72,0.93l0.13,0.6l2.91,1.51l3.6,5.25l1.88,1.78l0.56,1.62l-0.35,1.96Z\", \"name\": \"Lao PDR\"}, \"TW\": {\"path\": \"M724.01,226.68l-0.74,1.48l-0.9,-1.52l-0.25,-1.74l1.38,-2.44l1.73,-1.74l0.64,0.44l-1.85,5.52Z\", \"name\": \"Taiwan\"}, \"TT\": {\"path\": \"M266.64,259.32l0.28,-1.16l1.13,-0.22l-0.06,1.2l-1.35,0.18Z\", \"name\": \"Trinidad and Tobago\"}, \"TR\": {\"path\": \"M513.21,175.47l3.64,1.17l3.05,-0.44l2.1,0.26l3.11,-1.56l2.46,-0.13l2.19,1.33l0.33,0.82l-0.22,1.33l0.25,0.44l2.28,1.13l-1.17,0.57l-0.21,0.45l0.75,3.2l-0.41,1.16l1.13,1.92l-0.55,0.22l-0.9,-0.67l-2.91,-0.37l-1.24,0.46l-4.23,0.41l-2.81,1.05l-1.91,0.01l-1.52,-0.53l-2.58,0.75l-0.66,-0.45l-0.62,0.3l-0.12,1.45l-0.89,0.84l-0.47,-0.67l0.79,-1.3l-0.41,-0.2l-1.43,0.23l-2.0,-0.63l-2.02,1.65l-3.51,0.3l-2.13,-1.53l-2.7,-0.1l-0.86,1.24l-1.38,0.27l-2.29,-1.44l-2.71,-0.01l-1.37,-2.65l-1.68,-1.52l1.07,-1.99l-0.09,-0.49l-1.27,-1.12l2.37,-2.41l3.7,-0.11l1.28,-2.24l4.49,0.37l3.21,-1.97l2.81,-0.82l3.99,-0.06l4.29,2.07ZM488.79,176.72l-1.72,1.31l-0.5,-0.88l1.37,-2.57l-0.7,-0.85l1.7,-0.63l1.8,0.34l0.46,1.17l1.76,0.78l-2.87,0.32l-1.3,1.01Z\", \"name\": \"Turkey\"}, \"LK\": {\"path\": \"M624.16,268.99l-1.82,0.48l-0.99,-1.67l-0.42,-3.46l0.95,-3.43l1.21,0.98l2.26,4.19l-0.34,2.33l-0.85,0.58Z\", \"name\": \"Sri Lanka\"}, \"TN\": {\"path\": \"M448.1,188.24l-1.0,1.27l-0.02,1.32l0.84,0.88l-0.28,2.09l-1.53,1.32l-0.12,0.42l0.48,1.54l1.42,0.32l0.53,1.11l0.9,0.52l-0.11,1.67l-3.54,2.64l-0.1,2.38l-0.58,0.3l-0.96,-4.45l-1.54,-1.25l-0.16,-0.78l-1.92,-1.56l-0.18,-1.76l1.51,-1.62l0.59,-2.34l-0.38,-2.78l0.42,-1.21l2.45,-1.05l1.29,0.26l-0.06,1.11l0.58,0.38l1.47,-0.73Z\", \"name\": \"Tunisia\"}, \"TL\": {\"path\": \"M734.55,307.93l-0.1,-0.97l4.5,-0.86l-2.82,1.28l-1.59,0.55Z\", \"name\": \"Timor-Leste\"}, \"TM\": {\"path\": \"M553.03,173.76l-0.04,0.34l-0.09,-0.22l0.13,-0.12ZM555.87,172.66l0.45,-0.1l1.48,0.74l2.06,2.43l4.07,-0.18l0.38,-0.51l-0.32,-1.19l1.92,-0.94l1.91,-1.59l2.94,1.39l0.43,2.47l1.19,0.67l2.58,-0.13l0.62,0.4l1.32,3.12l4.54,3.44l2.67,1.45l3.06,1.14l-0.04,1.05l-1.33,-0.75l-0.59,0.19l-0.32,0.84l-2.2,0.81l-0.46,2.13l-1.21,0.74l-1.91,0.42l-0.73,1.33l-1.56,0.31l-2.22,-0.94l-0.2,-2.17l-0.38,-0.36l-1.73,-0.09l-2.76,-2.46l-2.14,-0.4l-2.84,-1.48l-1.78,-0.27l-1.24,0.53l-1.57,-0.08l-2.0,1.69l-1.7,0.43l-0.36,-1.58l0.36,-2.98l-0.22,-0.4l-1.65,-0.84l0.54,-1.69l-0.34,-0.52l-1.22,-0.13l0.36,-1.64l2.22,0.59l2.2,-0.95l0.12,-0.65l-1.77,-1.74l-0.66,-1.57Z\", \"name\": \"Turkmenistan\"}, \"TJ\": {\"path\": \"M597.75,178.82l-2.54,-0.44l-0.47,0.34l-0.24,1.7l0.43,0.45l2.64,-0.22l3.18,0.95l4.39,-0.41l0.56,2.37l0.52,0.29l0.67,-0.24l1.11,0.49l0.21,2.13l-3.76,-0.21l-1.8,1.32l-1.76,0.74l-0.61,-0.58l0.21,-2.23l-0.64,-0.49l-0.07,-0.93l-1.36,-0.66l-0.45,0.07l-1.08,1.01l-0.55,1.48l-1.31,-0.05l-0.95,1.16l-0.9,-0.35l-1.86,0.74l1.26,-2.83l-0.54,-2.17l-1.67,-0.82l0.33,-0.66l2.18,-0.04l1.19,-1.63l0.76,-1.79l2.43,-0.5l-0.26,1.0l0.73,1.05Z\", \"name\": \"Tajikistan\"}, \"LS\": {\"path\": \"M491.06,363.48l-0.49,0.15l-1.49,-1.67l1.1,-1.43l2.19,-1.44l1.51,1.27l-0.98,1.82l-1.23,0.38l-0.62,0.93Z\", \"name\": \"Lesotho\"}, \"TH\": {\"path\": \"M670.27,255.86l-1.41,3.87l0.15,2.0l0.38,0.36l1.38,0.07l0.9,2.04l0.55,2.34l1.4,1.44l1.61,0.38l0.96,0.97l-0.5,0.64l-1.1,0.2l-0.34,-1.18l-2.04,-1.1l-0.63,0.23l-0.63,-0.62l-0.48,-1.3l-2.56,-2.63l-0.73,0.41l0.95,-3.89l2.16,-4.22ZM670.67,254.77l-0.92,-2.18l-0.26,-2.61l-2.14,-3.06l0.71,-0.49l0.89,-2.59l-3.61,-5.45l0.87,-0.51l1.05,-2.58l1.74,-0.18l2.6,-1.59l0.76,0.56l0.13,1.39l0.37,0.36l1.23,0.09l-0.51,2.28l0.05,2.42l0.6,0.34l2.43,-1.42l0.77,0.39l1.47,-0.07l0.71,-0.88l1.48,0.14l1.71,1.88l0.25,2.65l1.92,2.11l-0.1,1.89l-0.61,0.86l-2.22,-0.33l-3.5,0.64l-1.6,2.12l0.36,2.58l-1.51,-0.79l-1.84,-0.01l0.28,-1.52l-0.4,-0.47l-2.21,0.01l-0.4,0.37l-0.19,2.74l-0.34,0.93Z\", \"name\": \"Thailand\"}, \"TF\": {\"path\": \"M596.68,420.38l-3.2,0.18l-0.05,-1.26l0.39,-1.41l1.3,0.78l2.08,0.35l-0.52,1.36Z\", \"name\": \"Fr. S. Antarctic Lands\"}, \"TG\": {\"path\": \"M422.7,257.63l-0.09,1.23l1.53,1.52l0.08,1.09l0.5,0.65l-0.11,5.62l0.49,1.47l-1.31,0.35l-1.02,-2.13l-0.18,-1.12l0.53,-2.19l-0.63,-1.16l-0.22,-3.68l-1.01,-1.4l0.07,-0.28l1.37,0.03Z\", \"name\": \"Togo\"}, \"TD\": {\"path\": \"M480.25,235.49l0.12,9.57l-2.1,0.05l-1.14,1.89l-0.69,1.63l0.34,0.73l-0.66,0.91l0.24,0.89l-0.86,1.95l0.45,0.5l0.6,-0.1l0.34,0.64l0.03,1.38l0.9,1.04l-1.45,0.43l-1.27,1.03l-1.83,2.76l-2.16,1.07l-2.31,-0.15l-0.86,0.25l-0.26,0.49l0.17,0.61l-2.11,1.68l-2.85,0.87l-1.09,-0.57l-0.73,0.66l-1.12,0.1l-1.1,-3.12l-1.25,-0.64l-1.22,-1.22l0.29,-0.64l3.01,0.04l0.35,-0.6l-1.3,-2.2l-0.08,-3.31l-0.97,-1.66l0.22,-1.04l-0.38,-0.48l-1.22,-0.04l0.0,-1.25l-0.98,-1.07l0.96,-3.01l3.25,-2.65l0.13,-3.33l0.95,-5.18l0.52,-1.07l-0.1,-0.48l-0.91,-0.78l-0.2,-0.96l-0.8,-0.58l-0.55,-3.65l2.1,-1.2l19.57,9.83Z\", \"name\": \"Chad\"}, \"LY\": {\"path\": \"M483.48,203.15l-0.75,1.1l0.29,1.39l-0.6,1.83l0.73,2.14l0.0,24.12l-2.48,0.01l-0.41,0.85l-19.41,-9.76l-4.41,2.28l-1.37,-1.33l-3.82,-1.1l-1.14,-1.65l-1.98,-1.23l-1.22,0.32l-0.66,-1.11l-0.17,-1.26l-1.28,-1.69l0.87,-1.19l-0.07,-4.34l0.43,-2.27l-0.86,-3.45l1.13,-0.76l0.22,-1.16l-0.2,-1.03l3.48,-2.61l0.29,-1.94l2.45,0.8l1.18,-0.21l1.98,0.44l3.15,1.18l1.37,2.54l5.72,1.67l2.64,1.35l1.61,-0.72l1.29,-1.34l-0.44,-2.34l0.66,-1.13l1.67,-1.21l1.57,-0.35l3.14,0.53l1.08,1.28l3.99,0.78l0.36,0.54Z\", \"name\": \"Libya\"}, \"AE\": {\"path\": \"M550.76,223.97l1.88,-0.4l3.84,0.02l4.78,-4.75l0.19,0.36l0.26,1.58l-0.81,0.01l-0.39,0.35l-0.08,2.04l-0.81,0.63l-0.01,0.96l-0.66,0.99l-0.39,1.41l-7.08,-1.25l-0.7,-1.96Z\", \"name\": \"United Arab Emirates\"}, \"VE\": {\"path\": \"M240.68,256.69l0.53,0.75l-0.02,1.06l-1.07,1.78l0.95,2.0l0.42,0.22l1.4,-0.44l0.56,-1.83l-0.77,-1.17l-0.1,-1.47l2.82,-0.93l0.26,-0.49l-0.28,-0.96l0.3,-0.28l0.66,1.31l1.96,0.26l1.4,1.22l0.08,0.68l0.39,0.35l4.81,-0.22l1.49,1.11l1.92,0.31l1.67,-0.84l0.22,-0.6l3.44,-0.14l-0.17,0.55l0.86,1.19l2.19,0.35l1.67,1.1l0.37,1.86l0.41,0.32l1.55,0.17l-1.66,1.35l-0.22,0.92l0.65,0.97l-1.67,0.54l-0.3,0.4l0.04,0.99l-0.56,0.57l-0.01,0.55l1.85,2.27l-0.66,0.69l-4.47,1.29l-0.72,0.54l-3.69,-0.9l-0.71,0.27l-0.02,0.7l0.91,0.53l-0.08,1.54l0.35,1.58l0.35,0.31l1.66,0.17l-1.3,0.52l-0.48,1.13l-2.68,0.91l-0.6,0.77l-1.57,0.13l-1.17,-1.13l-0.8,-2.52l-1.25,-1.26l1.02,-1.23l-1.29,-2.95l0.18,-1.62l1.0,-2.21l-0.2,-0.49l-1.14,-0.46l-4.02,0.36l-1.82,-2.1l-1.57,-0.33l-2.99,0.22l-1.06,-0.97l0.25,-1.23l-0.2,-1.01l-0.59,-0.69l-0.29,-1.06l-1.08,-0.39l0.78,-2.79l1.9,-2.11Z\", \"name\": \"Venezuela\"}, \"AF\": {\"path\": \"M600.7,188.88l-1.57,1.3l-0.1,0.48l0.8,2.31l-1.09,1.04l-0.03,1.27l-0.48,0.71l-2.16,-0.08l-0.37,0.59l0.78,1.48l-1.38,0.69l-1.06,1.69l0.06,1.7l-0.65,0.52l-0.91,-0.21l-1.91,0.36l-0.48,0.77l-1.88,0.13l-1.4,1.56l-0.18,2.32l-2.91,1.02l-1.65,-0.23l-0.71,0.55l-1.41,-0.3l-2.41,0.39l-3.52,-1.17l1.96,-2.35l-0.21,-1.78l-0.3,-0.34l-1.63,-0.4l-0.19,-1.58l-0.75,-2.03l0.95,-1.36l-0.19,-0.6l-0.73,-0.28l1.47,-4.8l2.14,0.9l2.12,-0.36l0.74,-1.34l1.77,-0.39l1.54,-0.92l0.63,-2.31l1.87,-0.5l0.49,-0.81l0.94,0.56l2.13,0.11l2.55,0.92l1.95,-0.83l0.65,0.43l0.56,-0.13l0.69,-1.12l1.57,-0.08l0.72,-1.66l0.79,-0.74l0.8,0.39l-0.17,0.56l0.71,0.58l-0.08,2.39l1.11,0.95ZM601.37,188.71l1.73,-0.71l1.43,-1.18l4.03,0.35l-2.23,0.74l-4.95,0.8Z\", \"name\": \"Afghanistan\"}, \"IQ\": {\"path\": \"M530.82,187.47l0.79,0.66l1.26,-0.28l1.46,3.08l1.63,0.94l0.14,1.23l-1.22,1.05l-0.53,2.52l1.73,2.67l3.12,1.62l1.15,1.88l-0.38,1.85l0.39,0.48l0.41,-0.0l0.02,1.07l0.76,0.94l-2.47,-0.1l-1.71,2.44l-4.31,-0.2l-7.02,-5.48l-3.73,-1.94l-2.88,-0.73l-0.85,-2.87l5.45,-3.02l0.95,-3.43l-0.19,-1.96l1.27,-0.7l1.22,-1.7l0.87,-0.36l2.69,0.34Z\", \"name\": \"Iraq\"}, \"IS\": {\"path\": \"M384.14,88.06l-0.37,2.61l2.54,2.51l-2.9,2.75l-9.19,3.4l-9.25,-1.66l1.7,-1.22l-0.1,-0.7l-4.05,-1.47l2.96,-0.53l0.33,-0.43l-0.11,-1.2l-0.33,-0.36l-4.67,-0.85l1.28,-2.04l3.45,-0.56l3.77,2.72l0.44,0.02l3.64,-2.16l3.3,1.08l3.98,-2.16l3.58,0.26Z\", \"name\": \"Iceland\"}, \"IR\": {\"path\": \"M533.43,187.16l-1.27,-2.15l0.42,-0.98l-0.71,-3.04l1.03,-0.5l0.33,0.83l1.26,1.35l2.05,0.51l1.11,-0.16l2.89,-2.11l0.62,-0.14l0.39,0.46l-0.72,1.2l0.06,0.49l1.56,1.53l0.65,0.04l0.67,1.81l2.56,0.83l1.87,1.48l3.69,0.49l3.91,-0.76l0.47,-0.73l2.17,-0.6l1.66,-1.54l1.51,0.08l1.18,-0.53l1.59,0.24l2.83,1.48l1.88,0.3l2.77,2.47l1.77,0.18l0.18,1.99l-1.68,5.49l0.24,0.5l0.61,0.23l-0.82,1.48l0.8,2.18l0.19,1.71l0.3,0.34l1.63,0.4l0.15,1.32l-2.15,2.35l-0.01,0.53l2.21,3.03l2.34,1.24l0.06,2.14l1.24,0.72l0.11,0.69l-3.31,1.27l-1.08,3.03l-9.68,-1.68l-0.99,-3.05l-1.43,-0.73l-2.17,0.46l-2.47,1.26l-2.83,-0.82l-2.46,-2.02l-2.41,-0.8l-3.42,-6.06l-0.48,-0.2l-1.18,0.39l-1.44,-0.82l-0.5,0.08l-0.65,0.74l-0.97,-1.01l-0.02,-1.31l-0.71,-0.39l0.26,-1.81l-1.29,-2.11l-3.13,-1.63l-1.58,-2.43l0.5,-1.9l1.31,-1.26l-0.19,-1.66l-1.74,-1.1l-1.57,-3.3Z\", \"name\": \"Iran\"}, \"AM\": {\"path\": \"M536.99,182.33l-0.28,0.03l-1.23,-2.13l-0.93,0.01l-0.62,-0.66l-0.69,-0.07l-0.96,-0.81l-1.56,-0.62l0.19,-1.12l-0.26,-0.79l2.72,-0.36l1.09,1.01l-0.17,0.92l1.02,0.78l-0.47,0.62l0.08,0.56l2.04,1.23l0.04,1.4Z\", \"name\": \"Armenia\"}, \"IT\": {\"path\": \"M451.59,158.63l3.48,0.94l-0.21,1.17l0.3,0.83l-1.49,-0.24l-2.04,1.1l-0.21,0.39l0.13,1.45l-0.25,1.12l0.82,1.57l2.39,1.63l1.31,2.54l2.79,2.43l2.05,0.08l0.21,0.23l-0.39,0.33l0.09,0.67l4.05,1.97l2.17,1.76l-0.16,0.36l-1.17,-1.08l-2.18,-0.49l-0.44,0.2l-1.05,1.91l0.14,0.54l1.57,0.95l-0.19,0.98l-1.06,0.33l-1.25,2.34l-0.37,0.08l0.0,-0.33l1.0,-2.45l-1.73,-3.17l-1.12,-0.51l-0.88,-1.33l-1.51,-0.51l-1.27,-1.25l-1.75,-0.18l-4.12,-3.21l-1.62,-1.65l-1.03,-3.19l-3.53,-1.36l-1.3,0.51l-1.69,1.41l0.16,-0.72l-0.28,-0.47l-1.14,-0.33l-0.53,-1.96l0.72,-0.78l0.04,-0.48l-0.65,-1.17l0.8,0.39l1.4,-0.23l1.11,-0.84l0.52,0.35l1.19,-0.1l0.75,-1.2l1.53,0.33l1.36,-0.56l0.35,-1.14l1.08,0.32l0.68,-0.64l1.98,-0.44l0.42,0.82ZM459.19,184.75l-0.65,1.65l0.32,1.05l-0.31,0.89l-1.5,-0.85l-4.5,-1.67l0.19,-0.82l2.67,0.23l3.78,-0.48ZM443.93,176.05l1.18,1.66l-0.3,3.32l-1.06,-0.01l-0.77,0.73l-0.53,-0.44l-0.1,-3.37l-0.39,-1.22l1.04,0.01l0.92,-0.68Z\", \"name\": \"Italy\"}, \"VN\": {\"path\": \"M690.56,230.25l-2.7,1.82l-2.09,2.46l-0.63,1.95l4.31,6.45l2.32,1.65l1.43,1.94l1.11,4.59l-0.32,4.24l-1.93,1.54l-2.84,1.61l-2.11,2.15l-2.73,2.06l-0.59,-1.05l0.63,-1.53l-0.13,-0.47l-1.34,-1.04l1.51,-0.71l2.55,-0.18l0.3,-0.63l-0.82,-1.14l4.0,-2.07l0.31,-3.05l-0.57,-1.77l0.42,-2.66l-0.73,-1.97l-1.86,-1.76l-3.63,-5.29l-2.72,-1.46l0.36,-0.47l1.5,-0.64l0.21,-0.52l-0.97,-2.27l-0.37,-0.24l-2.83,-0.02l-2.24,-3.9l0.83,-0.4l4.39,-0.29l2.06,-1.31l1.15,0.89l1.88,0.4l-0.17,1.51l1.35,1.16l1.67,0.45Z\", \"name\": \"Vietnam\"}, \"AR\": {\"path\": \"M249.29,428.93l-2.33,-0.52l-5.83,-0.43l-0.89,-1.66l0.05,-2.37l-0.45,-0.4l-1.43,0.18l-0.67,-0.91l-0.2,-3.13l1.88,-1.47l0.79,-2.04l-0.25,-1.7l1.3,-2.68l0.91,-4.15l-0.22,-1.69l0.85,-0.45l0.2,-0.44l-0.27,-1.16l-0.98,-0.68l0.59,-0.92l-0.05,-0.5l-1.04,-1.07l-0.52,-3.1l0.97,-0.86l-0.42,-3.58l1.2,-5.43l1.38,-0.98l0.16,-0.43l-0.75,-2.79l-0.01,-2.43l1.78,-1.75l0.06,-2.57l1.43,-2.85l0.01,-2.58l-0.69,-0.74l-1.09,-4.52l1.47,-2.7l-0.18,-2.79l0.85,-2.35l1.59,-2.46l1.73,-1.64l0.05,-0.52l-0.6,-0.84l0.44,-0.85l-0.07,-4.19l2.7,-1.44l0.86,-2.75l-0.21,-0.71l1.76,-2.01l2.9,0.57l1.38,1.78l0.68,-0.08l0.87,-1.87l2.39,0.09l4.95,4.77l2.17,0.49l3.0,1.92l2.47,1.0l0.25,0.82l-2.37,3.93l0.23,0.59l5.39,1.16l2.12,-0.44l2.45,-2.16l0.5,-2.38l0.76,-0.31l0.98,1.2l-0.04,1.8l-3.67,2.51l-2.85,2.66l-3.43,3.88l-1.3,5.07l0.01,2.72l-0.54,0.73l-0.36,3.28l3.14,2.64l-0.16,2.11l1.4,1.11l-0.1,1.09l-2.29,3.52l-3.55,1.49l-4.92,0.6l-2.71,-0.29l-0.43,0.51l0.5,1.65l-0.49,2.1l0.38,1.42l-1.19,0.83l-2.36,0.38l-2.3,-1.04l-1.38,0.83l0.41,3.64l1.69,0.91l1.4,-0.71l0.36,0.76l-2.04,0.86l-2.01,1.89l-0.97,4.63l-2.34,0.1l-2.09,1.78l-0.61,2.75l2.46,2.31l2.17,0.63l-0.7,2.32l-2.83,1.73l-1.73,3.86l-2.17,1.22l-1.16,1.67l0.75,3.76l1.04,1.28ZM256.71,438.88l-2.0,0.15l-1.4,-1.22l-3.82,-0.1l-0.0,-5.83l1.6,3.05l3.26,2.07l3.08,0.78l-0.71,1.1Z\", \"name\": \"Argentina\"}, \"AU\": {\"path\": \"M705.8,353.26l0.26,0.04l0.17,-0.47l-0.48,-1.42l0.92,1.11l0.45,0.15l0.27,-0.39l-0.1,-1.56l-1.98,-3.63l1.09,-3.31l-0.24,-1.57l0.34,-0.62l0.38,1.06l0.43,-0.19l0.99,-1.7l1.91,-0.83l1.29,-1.15l1.81,-0.91l0.96,-0.17l0.92,0.26l1.92,-0.95l1.47,-0.28l1.03,-0.8l1.43,0.04l2.78,-0.84l1.36,-1.15l0.71,-1.45l1.41,-1.26l0.3,-2.58l1.27,-1.59l0.78,1.65l0.54,0.19l1.07,-0.51l0.15,-0.6l-0.73,-1.0l0.45,-0.71l0.78,0.39l0.58,-0.3l0.28,-1.82l1.87,-2.14l1.12,-0.39l0.28,-0.58l0.62,0.17l0.53,-0.73l1.87,-0.57l1.65,1.05l1.35,1.48l3.39,0.38l0.43,-0.54l-0.46,-1.23l1.05,-1.79l1.04,-0.61l0.14,-0.55l-0.25,-0.41l0.88,-1.17l1.31,-0.77l1.3,0.27l2.1,-0.48l0.31,-0.4l-0.05,-1.3l-0.92,-0.77l1.48,0.56l1.41,1.07l2.11,0.65l0.81,-0.2l1.4,0.7l1.69,-0.66l0.8,0.19l0.64,-0.33l0.71,0.77l-1.33,1.94l-0.71,0.07l-0.35,0.51l0.24,0.86l-1.52,2.35l0.12,1.05l2.15,1.65l1.97,0.85l3.04,2.36l1.97,0.65l0.55,0.88l2.72,0.85l1.84,-1.1l2.07,-5.97l-0.42,-3.59l0.3,-1.73l0.47,-0.87l-0.31,-0.68l1.09,-3.28l0.46,-0.47l0.4,0.71l0.16,1.51l0.65,0.52l0.16,1.04l0.85,1.21l0.12,2.38l0.9,2.0l0.57,0.18l1.3,-0.78l1.69,1.7l-0.2,1.08l0.53,2.2l0.39,1.3l0.68,0.48l0.6,1.95l-0.19,1.48l0.81,1.76l6.01,3.69l-0.11,0.76l1.38,1.58l0.95,2.77l0.58,0.22l0.72,-0.41l0.8,0.9l0.61,0.01l0.46,2.41l4.81,4.71l0.66,2.02l-0.07,3.31l1.14,2.2l-0.13,2.24l-1.1,3.68l0.03,1.64l-0.47,1.89l-1.05,2.4l-1.9,1.47l-1.72,3.51l-2.38,6.09l-0.24,2.82l-1.14,0.8l-2.85,0.15l-2.31,1.19l-2.51,2.25l-3.09,-1.57l0.3,-1.15l-0.54,-0.47l-1.5,0.63l-2.01,1.94l-7.12,-2.18l-1.48,-1.63l-1.14,-3.74l-1.45,-1.26l-1.81,-0.26l0.56,-1.18l-0.61,-2.1l-0.72,-0.1l-1.14,1.82l-0.9,0.21l0.63,-0.82l0.36,-1.55l0.92,-1.31l-0.13,-2.34l-0.7,-0.22l-2.0,2.34l-1.51,0.93l-0.94,2.01l-1.35,-0.81l-0.02,-1.52l-1.57,-2.04l-1.09,-0.88l0.24,-0.33l-0.14,-0.59l-3.21,-1.69l-1.83,-0.12l-2.54,-1.35l-4.58,0.28l-6.02,1.9l-2.53,-0.13l-2.62,1.41l-2.13,0.63l-1.49,2.6l-3.49,0.31l-2.29,-0.5l-3.48,0.43l-1.6,1.47l-0.81,-0.04l-2.37,1.63l-3.26,-0.1l-3.72,-2.21l0.04,-1.05l1.19,-0.46l0.49,-0.89l0.21,-2.97l-0.28,-1.64l-1.34,-2.86l-0.38,-1.47l0.05,-1.72l-0.95,-1.7l-0.18,-0.97l-1.01,-0.99l-0.29,-1.98l-1.13,-1.75ZM784.92,393.44l2.65,1.02l3.23,-0.96l1.09,0.14l0.15,3.06l-0.85,1.13l-0.17,1.63l-0.87,-0.24l-1.57,1.91l-1.68,-0.18l-1.4,-2.36l-0.37,-2.04l-1.39,-2.51l0.04,-0.8l1.15,0.18Z\", \"name\": \"Australia\"}, \"IL\": {\"path\": \"M507.76,203.05l0.4,-0.78l0.18,0.4l-0.33,1.03l0.52,0.44l0.68,-0.22l-0.86,3.6l-1.16,-3.32l0.59,-0.74l-0.03,-0.41ZM508.73,200.34l0.37,-1.02l0.64,0.0l0.52,-0.51l-0.49,1.53l-0.56,-0.24l-0.48,0.23Z\", \"name\": \"Israel\"}, \"IN\": {\"path\": \"M623.34,207.03l-1.24,1.04l-0.97,2.55l0.22,0.51l8.04,3.87l3.42,0.37l1.57,1.38l4.92,0.88l2.18,-0.04l0.38,-0.3l0.29,-1.24l-0.32,-1.64l0.14,-0.87l0.82,-0.31l0.45,2.48l2.28,1.02l1.77,-0.38l4.14,0.1l0.38,-0.36l0.18,-1.66l-0.5,-0.65l1.37,-0.29l2.25,-1.99l2.7,-1.62l1.93,0.62l1.8,-0.98l0.79,1.14l-0.68,0.91l0.26,0.63l2.42,0.36l0.09,0.47l-0.83,0.75l0.13,1.07l-1.52,-0.29l-3.24,1.86l-0.13,1.78l-1.32,2.14l-0.18,1.39l-0.93,1.82l-1.64,-0.5l-0.52,0.37l-0.09,2.63l-0.56,1.11l0.19,0.81l-0.53,0.27l-1.18,-3.73l-1.08,-0.27l-0.38,0.31l-0.24,1.0l-0.66,-0.66l0.54,-1.06l1.22,-0.34l1.15,-2.25l-0.24,-0.56l-1.57,-0.47l-4.34,-0.28l-0.18,-1.56l-0.35,-0.35l-1.11,-0.12l-1.91,-1.12l-0.56,0.17l-0.88,1.82l0.11,0.49l1.36,1.07l-1.09,0.69l-0.69,1.11l0.18,0.56l1.24,0.57l-0.32,1.54l0.85,1.94l0.36,2.01l-0.22,0.59l-4.58,0.52l-0.33,0.42l0.13,1.8l-1.17,1.36l-3.65,1.81l-2.79,3.03l-4.32,3.28l-0.18,1.27l-4.65,1.79l-0.77,2.16l0.64,5.3l-1.06,2.49l-0.01,3.94l-1.24,0.28l-1.14,1.93l0.39,0.84l-1.68,0.53l-1.04,1.83l-0.65,0.47l-2.06,-2.05l-2.1,-6.02l-2.2,-3.64l-1.05,-4.75l-2.29,-3.57l-1.76,-8.2l0.01,-3.11l-0.49,-2.53l-0.55,-0.29l-3.53,1.52l-1.53,-0.27l-2.86,-2.77l0.85,-0.67l0.08,-0.55l-0.74,-1.03l-2.67,-2.06l1.24,-1.32l5.34,0.01l0.39,-0.49l-0.5,-2.29l-1.42,-1.46l-0.27,-1.93l-1.43,-1.2l2.31,-2.37l3.05,0.06l2.62,-2.85l1.6,-2.81l2.4,-2.73l0.07,-2.04l1.97,-1.48l-0.02,-0.65l-1.93,-1.31l-0.82,-1.78l-0.8,-2.21l0.9,-0.89l3.59,0.65l2.92,-0.42l2.33,-2.19l2.31,2.85l-0.24,2.13l0.99,1.59l-0.05,0.82l-1.34,-0.28l-0.47,0.48l0.7,3.06l2.62,1.99l2.99,1.65Z\", \"name\": \"India\"}, \"TZ\": {\"path\": \"M495.56,296.42l2.8,-3.12l-0.02,-0.81l-0.64,-1.3l0.68,-0.52l0.14,-1.47l-0.76,-1.25l0.31,-0.11l2.26,0.03l-0.51,2.76l0.76,1.3l0.5,0.12l1.05,-0.53l1.19,-0.12l0.61,0.24l1.43,-0.62l0.1,-0.67l-0.71,-0.62l1.57,-1.7l8.65,4.86l0.32,1.53l3.34,2.33l-1.05,2.8l0.13,1.61l1.63,1.12l-0.6,1.76l-0.01,2.33l1.89,4.03l0.57,0.43l-1.46,1.08l-2.61,0.94l-1.43,-0.04l-1.06,0.77l-2.29,0.36l-2.87,-0.68l-0.83,0.07l-0.63,-0.75l-0.31,-2.78l-1.32,-1.35l-3.25,-0.77l-3.96,-1.58l-1.18,-2.41l-0.32,-1.75l-1.76,-1.49l0.42,-1.05l-0.44,-0.89l0.08,-0.96l-0.46,-0.58l0.06,-0.56Z\", \"name\": \"Tanzania\"}, \"AZ\": {\"path\": \"M539.29,175.73l1.33,0.32l1.94,-1.8l2.3,3.34l1.43,0.43l-1.26,0.15l-0.35,0.32l-0.8,3.14l-0.99,0.96l0.05,1.11l-1.26,-1.13l0.7,-1.18l-0.04,-0.47l-0.74,-0.86l-1.48,0.15l-2.34,1.71l-0.03,-1.27l-2.03,-1.35l0.47,-0.62l-0.08,-0.56l-1.03,-0.79l0.29,-0.43l-0.14,-0.58l-1.13,-0.86l1.89,0.68l1.69,0.06l0.37,-0.87l-0.81,-1.37l0.42,0.06l1.63,1.72ZM533.78,180.57l0.61,0.46l0.69,-0.0l0.59,1.15l-0.68,-0.15l-1.21,-1.45Z\", \"name\": \"Azerbaijan\"}, \"IE\": {\"path\": \"M405.08,135.42l0.35,2.06l-1.75,2.78l-4.22,1.88l-2.84,-0.4l1.73,-3.0l-1.18,-3.53l4.6,-3.74l0.32,1.15l-0.49,1.74l0.4,0.51l1.47,-0.04l1.6,0.6Z\", \"name\": \"Ireland\"}, \"ID\": {\"path\": \"M756.47,287.89l0.69,4.01l2.79,1.78l0.51,-0.1l2.04,-2.59l2.71,-1.43l2.05,-0.0l3.9,1.73l2.46,0.45l0.08,15.12l-1.75,-1.54l-2.54,-0.51l-0.88,0.71l-2.32,0.06l0.69,-1.33l1.45,-0.64l0.23,-0.46l-0.65,-2.74l-1.24,-2.21l-5.04,-2.29l-2.09,-0.23l-3.68,-2.27l-0.55,0.13l-0.65,1.07l-0.52,0.12l-0.55,-1.89l-1.21,-0.78l1.84,-0.62l1.72,0.05l0.39,-0.52l-0.21,-0.66l-0.38,-0.28l-3.45,-0.0l-1.13,-1.48l-2.1,-0.43l-0.52,-0.6l2.69,-0.48l1.28,-0.78l3.66,0.94l0.3,0.71ZM757.91,300.34l-0.62,0.82l-0.1,-0.8l0.59,-1.12l0.13,1.1ZM747.38,292.98l0.34,0.72l-1.22,-0.57l-4.68,-0.1l0.27,-0.62l2.78,-0.09l2.52,0.67ZM741.05,285.25l-0.67,-2.88l0.64,-2.01l0.41,0.86l1.21,0.18l0.16,0.7l-0.1,1.68l-0.84,-0.16l-0.46,0.3l-0.34,1.34ZM739.05,293.5l-0.5,0.44l-1.34,-0.36l-0.17,-0.37l1.73,-0.08l0.27,0.36ZM721.45,284.51l-0.19,1.97l2.24,2.23l0.54,0.02l1.27,-1.07l2.75,-0.5l-0.9,1.21l-2.11,0.93l-0.16,0.6l2.22,3.01l-0.3,1.07l1.36,1.74l-2.26,0.85l-0.28,-0.31l0.12,-1.19l-1.64,-1.34l0.17,-2.23l-0.56,-0.39l-1.67,0.76l-0.23,0.39l0.3,6.17l-1.1,0.25l-0.69,-0.47l0.64,-2.21l-0.39,-2.42l-0.39,-0.34l-0.8,-0.01l-0.58,-1.29l0.98,-1.6l0.35,-1.96l1.32,-3.87ZM728.59,296.27l0.38,0.49l-0.02,1.28l-0.88,0.49l-0.53,-0.47l1.04,-1.79ZM729.04,286.98l0.27,-0.05l-0.02,0.13l-0.24,-0.08ZM721.68,284.05l0.16,-0.32l1.89,-1.65l1.83,0.68l3.16,0.35l2.94,-0.1l2.39,-1.66l-1.73,2.13l-1.66,0.43l-2.41,-0.48l-4.17,0.13l-2.39,0.51ZM730.55,310.47l1.11,-1.93l2.03,-0.82l0.08,0.62l-1.45,1.67l-1.77,0.46ZM728.12,305.88l-0.1,0.38l-3.46,0.66l-2.91,-0.27l-0.0,-0.25l1.54,-0.41l1.66,0.73l1.67,-0.19l1.61,-0.65ZM722.9,310.24l-0.64,0.03l-2.26,-1.2l1.11,-0.24l1.78,1.41ZM716.26,305.77l0.88,0.51l1.28,-0.17l0.2,0.35l-4.65,0.73l0.39,-0.67l1.15,-0.02l0.75,-0.73ZM711.66,293.84l-0.38,-0.16l-2.54,1.01l-1.12,-1.44l-1.69,-0.13l-1.16,-0.75l-3.04,0.77l-1.1,-1.15l-3.31,-0.11l-0.35,-3.05l-1.35,-0.95l-1.11,-1.98l-0.33,-2.06l0.27,-2.14l0.9,-1.01l0.37,1.15l2.09,1.49l1.53,-0.48l1.82,0.08l1.38,-1.19l1.0,-0.18l2.28,0.67l2.26,-0.53l1.52,-3.64l1.01,-0.99l0.78,-2.57l4.1,0.3l-1.11,1.77l0.02,0.46l1.7,2.2l-0.23,1.39l2.07,1.71l-2.33,0.42l-0.88,1.9l0.1,2.05l-2.4,1.9l-0.06,2.45l-0.7,2.79ZM692.58,302.03l0.35,0.26l4.8,0.25l0.78,-0.97l4.17,1.09l1.13,1.68l3.69,0.45l2.13,1.04l-1.8,0.6l-2.77,-0.99l-4.8,-0.12l-5.24,-1.41l-1.84,-0.25l-1.11,0.3l-4.26,-0.97l-0.7,-1.14l-1.59,-0.13l1.18,-1.65l2.74,0.13l2.87,1.13l0.26,0.68ZM685.53,299.17l-2.22,0.04l-2.06,-2.03l-3.15,-2.01l-2.93,-3.51l-3.11,-5.33l-2.2,-2.12l-1.64,-4.06l-2.32,-1.69l-1.27,-2.07l-1.96,-1.5l-2.51,-2.65l-0.11,-0.66l4.81,0.53l2.15,2.38l3.31,2.74l2.35,2.66l2.7,0.17l1.95,1.59l1.54,2.17l1.59,0.95l-0.84,1.71l0.15,0.52l1.44,0.87l0.79,0.1l0.4,1.58l0.87,1.4l1.96,0.39l1.0,1.31l-0.6,3.01l-0.09,3.5Z\", \"name\": \"Indonesia\"}, \"UA\": {\"path\": \"M492.5,162.44l1.28,-2.49l1.82,0.19l0.66,-0.23l0.09,-0.71l-0.25,-0.75l-0.79,-0.72l-0.33,-1.21l-0.86,-0.62l-0.02,-1.19l-1.13,-0.86l-1.15,-0.19l-2.04,-1.0l-1.66,0.32l-0.66,0.47l-0.92,-0.0l-0.84,0.78l-2.48,0.7l-1.18,-0.71l-3.07,-0.36l-0.89,0.43l-0.24,-0.55l-1.11,-0.7l0.35,-0.93l1.26,-1.02l-0.54,-1.23l2.04,-2.43l1.4,-0.62l0.25,-1.19l-1.04,-2.39l0.83,-0.13l1.28,-0.84l1.8,-0.07l2.47,0.26l2.86,0.81l1.88,0.06l0.86,0.44l1.04,-0.41l0.77,0.66l2.18,-0.15l0.92,0.3l0.52,-0.34l0.15,-1.53l0.56,-0.54l2.85,-0.05l0.84,-0.72l3.04,-0.18l1.23,1.46l-0.48,0.77l0.21,1.03l0.36,0.32l1.8,0.14l0.93,2.08l3.18,1.15l1.94,-0.45l1.67,1.49l1.4,-0.03l3.35,0.96l0.02,0.54l-0.96,1.59l0.47,1.97l-0.26,0.7l-2.36,0.28l-1.29,0.89l-0.23,1.38l-1.83,0.27l-1.58,0.97l-2.41,0.21l-2.16,1.17l-0.21,0.38l0.34,2.26l1.23,0.75l2.13,-0.08l-0.14,0.31l-2.65,0.53l-3.23,1.69l-0.87,-0.39l0.42,-1.1l-0.25,-0.52l-2.21,-0.73l2.35,-1.06l0.12,-0.65l-0.93,-0.82l-3.62,-0.74l-0.13,-0.89l-0.46,-0.34l-2.61,0.59l-0.91,1.69l-1.71,2.04l-0.86,-0.4l-1.62,0.27Z\", \"name\": \"Ukraine\"}, \"QA\": {\"path\": \"M549.33,221.64l-0.76,-0.23l-0.14,-1.64l0.84,-1.29l0.47,0.52l0.04,1.34l-0.45,1.3Z\", \"name\": \"Qatar\"}, \"MZ\": {\"path\": \"M508.58,318.75l-0.34,-2.57l0.51,-2.05l3.55,0.63l2.5,-0.38l1.02,-0.76l1.49,0.01l2.74,-0.98l1.66,-1.2l0.5,9.24l0.41,1.23l-0.68,1.67l-0.93,1.71l-1.5,1.5l-5.16,2.28l-2.78,2.73l-1.02,0.53l-1.71,1.8l-0.98,0.57l-0.35,2.41l1.16,1.94l0.49,2.17l0.43,0.31l-0.06,2.06l-0.39,1.17l0.5,0.72l-0.25,0.73l-0.92,0.83l-5.12,2.39l-1.22,1.36l0.21,1.13l0.58,0.39l-0.11,0.72l-1.22,-0.01l-0.73,-2.97l0.42,-3.09l-1.78,-5.37l2.49,-2.81l0.69,-1.89l0.44,-0.43l0.28,-1.53l-0.39,-0.93l0.59,-3.65l-0.01,-3.26l-1.49,-1.16l-1.2,-0.22l-1.74,-1.17l-1.92,0.01l-0.29,-2.08l7.06,-1.96l1.28,1.09l0.89,-0.1l0.67,0.44l0.1,0.73l-0.51,1.29l0.19,1.81l1.75,1.83l0.65,-0.13l0.71,-1.65l1.17,-0.86l-0.26,-3.47l-1.05,-1.85l-1.04,-0.94Z\", \"name\": \"Mozambique\"}}, \"height\": 440.70631074413296, \"projection\": {\"type\": \"mill\", \"centralMeridian\": 11.5}, \"width\": 900.0});","/*!\n * Date picker for pickadate.js v3.6.3\n * http://amsul.github.io/pickadate.js/date.htm\n */\n\n(function (factory) {\n\n // AMD.\n if (typeof define == 'function' && define.amd)\n define(['picker', 'jquery'], factory);\n\n // Node.js/browserify.\n else if (typeof exports == 'object')\n module.exports = factory(require('./picker.js'), require('jquery'));\n\n // Browser globals.\n else factory(Picker, jQuery);\n\n}(function (Picker, $) {\n\n\n /**\n * Globals and constants\n */\n var DAYS_IN_WEEK = 7,\n WEEKS_IN_CALENDAR = 6,\n _ = Picker._;\n\n\n\n /**\n * The date picker constructor\n */\n function DatePicker(picker, settings) {\n\n var calendar = this,\n element = picker.$node[0],\n elementValue = element.value,\n elementDataValue = picker.$node.data('value'),\n valueString = elementDataValue || elementValue,\n formatString = elementDataValue ? settings.formatSubmit : settings.format,\n isRTL = function () {\n\n return element.currentStyle ?\n\n // For IE.\n element.currentStyle.direction == 'rtl' :\n\n // For normal browsers.\n getComputedStyle(picker.$root[0]).direction == 'rtl';\n };\n\n calendar.settings = settings;\n calendar.$node = picker.$node;\n\n // The queue of methods that will be used to build item objects.\n calendar.queue = {\n min: 'measure create',\n max: 'measure create',\n now: 'now create',\n select: 'parse create validate',\n highlight: 'parse navigate create validate',\n currentView: 'toggleView',\n view: 'parse create validate viewset',\n disable: 'deactivate',\n enable: 'activate',\n };\n\n // The component's item object.\n calendar.item = {};\n\n calendar.item.clear = null;\n calendar.item.disable = (settings.disable || []).slice(0);\n calendar.item.enable = -(function (collectionDisabled) {\n return collectionDisabled[0] === true ? collectionDisabled.shift() : -1;\n })(calendar.item.disable);\n calendar.item.currentView = 'days';\n calendar.item.currentVisibleMinYear;\n\n calendar.\n set('min', settings.min).\n set('max', settings.max).\n set('now');\n\n // When there’s a value, set the `select`, which in turn\n // also sets the `highlight` and `view`.\n if (valueString) {\n calendar.set('select', valueString, {\n format: formatString,\n defaultValue: true\n });\n }\n\n // If there’s no value, default to highlighting “today”.\n else {\n calendar.\n set('select', null).\n set('highlight', calendar.item.now);\n }\n\n\n // The keycode to movement mapping.\n calendar.key = {\n 40: 7, // Down\n 38: -7, // Up\n 39: function () {\n return isRTL() ? -1 : 1;\n }, // Right\n 37: function () {\n return isRTL() ? 1 : -1;\n }, // Left\n go: function (timeChange) {\n var highlightedObject = calendar.item.highlight,\n targetDate = new Date(highlightedObject.year, highlightedObject.month, highlightedObject.date + timeChange);\n calendar.set(\n 'highlight',\n targetDate, {\n interval: timeChange\n }\n );\n this.render();\n }\n };\n\n\n // Bind some picker events.\n picker.on('render', function () { \n var value = this.value;\n if (value) {\n picker.set('highlight', [value, picker.get('view').month, picker.get('highlight').date]);\n picker.$root.find('.' + settings.klass.selectYear).trigger('focus');\n }\n }, 1).\n on('open', function () {\n var includeToday = '';\n if (calendar.disabled(calendar.get('now'))) {\n includeToday = ':not(.' + settings.klass.buttonToday + ')';\n }\n picker.$root.find('button' + includeToday + ', select').attr('disabled', false);\n }, 1).\n on('close', function () {\n picker.$root.find('button, select').attr('disabled', true);\n }, 1);\n } //DatePicker\n\n\n /**\n * Set a datepicker item object.\n */\n DatePicker.prototype.set = function (type, value, options) {\n\n var calendar = this,\n calendarItem = calendar.item;\n\n // If the value is `null` just set it immediately.\n if (value === null) {\n if (type == 'clear') type = 'select';\n calendarItem[type] = value;\n return calendar;\n }\n // Otherwise go through the queue of methods, and invoke the functions.\n // Update this as the time unit, and set the final value as this item.\n // * In the case of `enable`, keep the queue but set `disable` instead.\n // And in the case of `flip`, keep the queue but set `enable` instead.\n calendarItem[(type == 'enable' ? 'disable' : type == 'flip' ? 'enable' : type)] = calendar.queue[type].split(' ').map(function (method) {\n value = calendar[method](type, value, options);\n return value;\n }).pop();\n // Check if we need to cascade through more updates.\n if (type == 'select') {\n calendar.set('highlight', calendarItem.select, options);\n } else if (type == 'highlight') {\n calendar.set('view', calendarItem.highlight, options);\n } else if (type.match(/^(flip|min|max|disable|enable)$/)) {\n if (calendarItem.select && calendar.disabled(calendarItem.select)) {\n calendar.set('select', calendarItem.select, options);\n }\n if (calendarItem.highlight && calendar.disabled(calendarItem.highlight)) {\n calendar.set('highlight', calendarItem.highlight, options);\n }\n }\n\n return calendar;\n }; //DatePicker.prototype.set\n\n\n /**\n * Get a datepicker item object.\n */\n DatePicker.prototype.get = function (type) {\n return this.item[type];\n }; //DatePicker.prototype.get\n\n\n /**\n * Create a picker date object.\n */\n DatePicker.prototype.create = function (type, value, options) {\n\n var isInfiniteValue,\n calendar = this;\n\n // If there’s no value, use the type as the value.\n value = value === undefined ? type : value;\n\n\n // If it’s infinity, update the value.\n if (value == -Infinity || value == Infinity) {\n isInfiniteValue = value;\n }\n\n // If it’s an object, use the native date object.\n else if ($.isPlainObject(value) && _.isInteger(value.pick)) {\n value = value.obj;\n }\n\n // If it’s an array, convert it into a date and make sure\n // that it’s a valid date – otherwise default to today.\n else if ($.isArray(value)) {\n value = new Date(value[0], value[1], value[2]);\n value = _.isDate(value) ? value : calendar.create().obj;\n }\n\n // If it’s a number or date object, make a normalized date.\n else if (_.isInteger(value) || _.isDate(value)) {\n value = calendar.normalize(new Date(value), options);\n }\n\n // If it’s a literal true or any other case, set it to now.\n else /*if ( value === true )*/ {\n value = calendar.now(type, value, options);\n }\n\n // Return the compiled object.\n return {\n year: isInfiniteValue || value.getFullYear(),\n month: isInfiniteValue || value.getMonth(),\n date: isInfiniteValue || value.getDate(),\n day: isInfiniteValue || value.getDay(),\n obj: isInfiniteValue || value,\n pick: isInfiniteValue || value.getTime()\n };\n };//DatePicker.prototype.create\n\n\n /**\n * Create a range limit object using an array, date object,\n * literal “true”, or integer relative to another time.\n */\n DatePicker.prototype.createRange = function (from, to) {\n\n var calendar = this,\n createDate = function (date) {\n if (date === true || $.isArray(date) || _.isDate(date)) {\n return calendar.create(date);\n }\n return date;\n };\n\n // Create objects if possible.\n if (!_.isInteger(from)) {\n from = createDate(from);\n }\n if (!_.isInteger(to)) {\n to = createDate(to);\n }\n\n // Create relative dates.\n if (_.isInteger(from) && $.isPlainObject(to)) {\n from = [to.year, to.month, to.date + from];\n } else if (_.isInteger(to) && $.isPlainObject(from)) {\n to = [from.year, from.month, from.date + to];\n }\n\n return {\n from: createDate(from),\n to: createDate(to)\n };\n }; //DatePicker.prototype.createRange\n\n\n /**\n * Check if a date unit falls within a date range object.\n */\n DatePicker.prototype.withinRange = function (range, dateUnit) {\n range = this.createRange(range.from, range.to);\n return dateUnit.pick >= range.from.pick && dateUnit.pick <= range.to.pick;\n };\n\n\n /**\n * Check if two date range objects overlap.\n */\n DatePicker.prototype.overlapRanges = function (one, two) {\n\n var calendar = this;\n\n // Convert the ranges into comparable dates.\n one = calendar.createRange(one.from, one.to);\n two = calendar.createRange(two.from, two.to);\n\n return calendar.withinRange(one, two.from) || calendar.withinRange(one, two.to) ||\n calendar.withinRange(two, one.from) || calendar.withinRange(two, one.to);\n };\n\n\n /**\n * Get the date today.\n */\n DatePicker.prototype.now = function (type, value, options) {\n value = new Date();\n if (options && options.rel) {\n value.setDate(value.getDate() + options.rel);\n }\n return this.normalize(value, options);\n };\n\n\n /**\n * Navigate to next/prev month.\n */\n DatePicker.prototype.navigate = function (type, value, options) {\n\n var calendar = this,\n targetDateObject,\n targetYear,\n targetMonth,\n targetDate,\n isTargetArray = $.isArray(value),\n isTargetObject = $.isPlainObject(value),\n viewsetObject = this.item.view;\n /*,\n safety = 100*/\n\n\n if (isTargetArray || isTargetObject) {\n\n if (isTargetObject) {\n targetYear = value.year;\n targetMonth = value.month;\n targetDate = value.date;\n } else {\n targetYear = +value[0];\n targetMonth = +value[1];\n targetDate = +value[2];\n }\n\n // If we’re navigating months but the view is in a different\n // month, navigate to the view’s year and month.\n if (options && options.nav && viewsetObject && viewsetObject.month !== targetMonth) {\n targetYear = viewsetObject.year;\n targetMonth = viewsetObject.month;\n }\n\n if (calendar.item.currentView === 'months') {\n targetDateObject = new Date(targetYear + (options && options.nav ? options.nav : 0), targetMonth, 1);\n } else if (calendar.item.currentView === 'years') {\n targetDateObject = new Date(targetYear + (options && options.nav ? options.nav * 24 : 0), targetMonth, 1);\n } else if (calendar.item.currentView === 'days') {\n targetDateObject = new Date(targetYear, targetMonth + (options && options.nav ? options.nav : 0), 1);\n }\n \n targetYear = targetDateObject.getFullYear();\n targetMonth = targetDateObject.getMonth();\n\n // If the month we’re going to doesn’t have enough days,\n // keep decreasing the date until we reach the month’s last date.\n while ( /*safety &&*/ new Date(targetYear, targetMonth, targetDate).getMonth() !== targetMonth) {\n targetDate -= 1;\n /*safety -= 1\n if ( !safety ) {\n throw 'Fell into an infinite loop while navigating to ' + new Date( targetYear, targetMonth, targetDate ) + '.'\n }*/\n }\n\n value = [targetYear, targetMonth, targetDate];\n }\n\n return value;\n }; //DatePicker.prototype.navigate\n\n\n /**\n * Normalize a date by setting the hours to midnight.\n */\n DatePicker.prototype.normalize = function (value /*, options*/ ) {\n value.setHours(0, 0, 0, 0);\n return value;\n };\n\n\n /**\n * Measure the range of dates.\n */\n DatePicker.prototype.measure = function (type, value /*, options*/ ) {\n\n var calendar = this;\n\n // If it's an integer, get a date relative to today.\n if (_.isInteger(value)) {\n value = calendar.now(type, value, {\n rel: value\n });\n }\n\n // If it’s anything false-y, remove the limits.\n else if (!value) {\n value = type == 'min' ? -Infinity : Infinity;\n }\n\n // If it’s a string, parse it.\n else if (typeof value == 'string') {\n value = calendar.parse(type, value);\n }\n\n return value;\n }; ///DatePicker.prototype.measure\n\n\n /**\n * Create a viewset object based on navigation.\n */\n DatePicker.prototype.viewset = function (type, dateObject /*, options*/ ) {\n return this.create([dateObject.year, dateObject.month, 1]);\n };\n\n\n /**\n * Validate a date as enabled and shift if needed.\n */\n DatePicker.prototype.validate = function (type, dateObject, options) {\n\n var calendar = this,\n\n // Keep a reference to the original date.\n originalDateObject = dateObject,\n\n // Make sure we have an interval.\n interval = options && options.interval ? options.interval : 1,\n\n // Check if the calendar enabled dates are inverted.\n isFlippedBase = calendar.item.enable === -1,\n\n // Check if we have any enabled dates after/before now.\n hasEnabledBeforeTarget, hasEnabledAfterTarget,\n\n // The min & max limits.\n minLimitObject = calendar.item.min,\n maxLimitObject = calendar.item.max,\n\n // Check if we’ve reached the limit during shifting.\n reachedMin, reachedMax,\n\n // Check if the calendar is inverted and at least one weekday is enabled.\n hasEnabledWeekdays = isFlippedBase && calendar.item.disable.filter(function (value) {\n\n // If there’s a date, check where it is relative to the target.\n if ($.isArray(value)) {\n var dateTime = calendar.create(value).pick;\n if (dateTime < dateObject.pick) hasEnabledBeforeTarget = true;\n else if (dateTime > dateObject.pick) hasEnabledAfterTarget = true;\n }\n\n // Return only integers for enabled weekdays.\n return _.isInteger(value);\n }).length;\n /*,\n\n safety = 100*/\n\n\n\n // Cases to validate for:\n // [1] Not inverted and date disabled.\n // [2] Inverted and some dates enabled.\n // [3] Not inverted and out of range.\n //\n // Cases to **not** validate for:\n // • Navigating months.\n // • Not inverted and date enabled.\n // • Inverted and all dates disabled.\n // • ..and anything else.\n if (!options || (!options.nav && !options.defaultValue))\n if (\n /* 1 */\n (!isFlippedBase && calendar.disabled(dateObject)) ||\n /* 2 */\n (isFlippedBase && calendar.disabled(dateObject) && (hasEnabledWeekdays || hasEnabledBeforeTarget || hasEnabledAfterTarget)) ||\n /* 3 */\n (!isFlippedBase && (dateObject.pick <= minLimitObject.pick || dateObject.pick >= maxLimitObject.pick))\n ) {\n\n\n // When inverted, flip the direction if there aren’t any enabled weekdays\n // and there are no enabled dates in the direction of the interval.\n if (isFlippedBase && !hasEnabledWeekdays && ((!hasEnabledAfterTarget && interval > 0) || (!hasEnabledBeforeTarget && interval < 0))) {\n interval *= -1;\n }\n\n\n // Keep looping until we reach an enabled date.\n while ( /*safety &&*/ calendar.disabled(dateObject)) {\n\n /*safety -= 1\n if ( !safety ) {\n throw 'Fell into an infinite loop while validating ' + dateObject.obj + '.'\n }*/\n\n\n // If we’ve looped into the next/prev month with a large interval, return to the original date and flatten the interval.\n if (Math.abs(interval) > 1 && (dateObject.month < originalDateObject.month || dateObject.month > originalDateObject.month)) {\n dateObject = originalDateObject;\n interval = interval > 0 ? 1 : -1;\n }\n\n\n // If we’ve reached the min/max limit, reverse the direction, flatten the interval and set it to the limit.\n if (dateObject.pick <= minLimitObject.pick) {\n reachedMin = true;\n interval = 1;\n dateObject = calendar.create([\n minLimitObject.year,\n minLimitObject.month,\n minLimitObject.date + (dateObject.pick === minLimitObject.pick ? 0 : -1)\n ]);\n } else if (dateObject.pick >= maxLimitObject.pick) {\n reachedMax = true;\n interval = -1;\n dateObject = calendar.create([\n maxLimitObject.year,\n maxLimitObject.month,\n maxLimitObject.date + (dateObject.pick === maxLimitObject.pick ? 0 : 1)\n ]);\n }\n\n\n // If we’ve reached both limits, just break out of the loop.\n if (reachedMin && reachedMax) {\n break;\n }\n\n\n // Finally, create the shifted date using the interval and keep looping.\n dateObject = calendar.create([dateObject.year, dateObject.month, dateObject.date + interval]);\n }\n\n } //endif\n\n\n // Return the date object settled on.\n return dateObject;\n }; //DatePicker.prototype.validate\n\n\n /**\n * Check if a date is disabled.\n */\n DatePicker.prototype.disabled = function (dateToVerify) {\n\n var\n calendar = this,\n\n // Filter through the disabled dates to check if this is one.\n isDisabledMatch = calendar.item.disable.filter(function (dateToDisable) {\n\n // If the date is a number, match the weekday with 0index and `firstDay` check.\n if (_.isInteger(dateToDisable)) {\n return dateToVerify.day === (calendar.settings.firstDay ? dateToDisable : dateToDisable - 1) % 7;\n }\n\n // If it’s an array or a native JS date, create and match the exact date.\n if ($.isArray(dateToDisable) || _.isDate(dateToDisable)) {\n return dateToVerify.pick === calendar.create(dateToDisable).pick;\n }\n\n // If it’s an object, match a date within the “from” and “to” range.\n if ($.isPlainObject(dateToDisable)) {\n return calendar.withinRange(dateToDisable, dateToVerify);\n }\n });\n\n // If this date matches a disabled date, confirm it’s not inverted.\n isDisabledMatch = isDisabledMatch.length && !isDisabledMatch.filter(function (dateToDisable) {\n return $.isArray(dateToDisable) && dateToDisable[3] == 'inverted' ||\n $.isPlainObject(dateToDisable) && dateToDisable.inverted;\n }).length;\n\n // Check the calendar “enabled” flag and respectively flip the\n // disabled state. Then also check if it’s beyond the min/max limits.\n return calendar.item.enable === -1 ? !isDisabledMatch : isDisabledMatch ||\n dateToVerify.pick < calendar.item.min.pick ||\n dateToVerify.pick > calendar.item.max.pick;\n\n }; //DatePicker.prototype.disabled\n\n\n /**\n * Parse a string into a usable type.\n */\n DatePicker.prototype.parse = function (type, value, options) {\n\n var calendar = this,\n parsingObject = {};\n\n // If it’s already parsed, we’re good.\n if (!value || typeof value != 'string') {\n return value;\n }\n\n // We need a `.format` to parse the value with.\n if (!(options && options.format)) {\n options = options || {};\n options.format = calendar.settings.format;\n }\n\n // Convert the format into an array and then map through it.\n calendar.formats.toArray(options.format).map(function (label) {\n\n var\n // Grab the formatting label.\n formattingLabel = calendar.formats[label],\n\n // The format length is from the formatting label function or the\n // label length without the escaping exclamation (!) mark.\n formatLength = formattingLabel ? _.trigger(formattingLabel, calendar, [value, parsingObject]) : label.replace(/^!/, '').length;\n\n // If there's a format label, split the value up to the format length.\n // Then add it to the parsing object with appropriate label.\n if (formattingLabel) {\n parsingObject[label] = value.substr(0, formatLength);\n }\n\n // Update the value as the substring from format length to end.\n value = value.substr(formatLength);\n });\n\n // Compensate for month 0index.\n return [\n parsingObject.yyyy || parsingObject.yy,\n +(parsingObject.mm || parsingObject.m) - 1,\n parsingObject.dd || parsingObject.d\n ];\n }; //DatePicker.prototype.parse\n\n\n /**\n * Various formats to display the object in.\n */\n DatePicker.prototype.formats = (function () {\n\n // Return the length of the first word in a collection.\n function getWordLengthFromCollection(string, collection, dateObject) {\n\n // Grab the first word from the string.\n // Regex pattern from http://stackoverflow.com/q/150033\n var word = string.match(/[^\\x00-\\x7F]+|\\w+/)[0];\n\n // If there's no month index, add it to the date object\n if (!dateObject.mm && !dateObject.m) {\n dateObject.m = collection.indexOf(word) + 1;\n }\n\n // Return the length of the word.\n return word.length;\n }\n\n // Get the length of the first word in a string.\n function getFirstWordLength(string) {\n return string.match(/\\w+/)[0].length;\n }\n\n return {\n\n d: function (string, dateObject) {\n\n // If there's string, then get the digits length.\n // Otherwise return the selected date.\n return string ? _.digits(string) : dateObject.date;\n },\n dd: function (string, dateObject) {\n\n // If there's a string, then the length is always 2.\n // Otherwise return the selected date with a leading zero.\n return string ? 2 : _.lead(dateObject.date);\n },\n ddd: function (string, dateObject) {\n\n // If there's a string, then get the length of the first word.\n // Otherwise return the short selected weekday.\n return string ? getFirstWordLength(string) : this.settings.weekdaysShort[dateObject.day];\n },\n dddd: function (string, dateObject) {\n\n // If there's a string, then get the length of the first word.\n // Otherwise return the full selected weekday.\n return string ? getFirstWordLength(string) : this.settings.weekdaysFull[dateObject.day];\n },\n m: function (string, dateObject) {\n\n // If there's a string, then get the length of the digits\n // Otherwise return the selected month with 0index compensation.\n return string ? _.digits(string) : dateObject.month + 1;\n },\n mm: function (string, dateObject) {\n\n // If there's a string, then the length is always 2.\n // Otherwise return the selected month with 0index and leading zero.\n return string ? 2 : _.lead(dateObject.month + 1);\n },\n mmm: function (string, dateObject) {\n\n var collection = this.settings.monthsShort;\n\n // If there's a string, get length of the relevant month from the short\n // months collection. Otherwise return the selected month from that collection.\n return string ? getWordLengthFromCollection(string, collection, dateObject) : collection[dateObject.month];\n },\n mmmm: function (string, dateObject) {\n\n var collection = this.settings.monthsFull;\n\n // If there's a string, get length of the relevant month from the full\n // months collection. Otherwise return the selected month from that collection.\n return string ? getWordLengthFromCollection(string, collection, dateObject) : collection[dateObject.month];\n },\n yy: function (string, dateObject) {\n\n // If there's a string, then the length is always 2.\n // Otherwise return the selected year by slicing out the first 2 digits.\n return string ? 2 : ('' + dateObject.year).slice(2);\n },\n yyyy: function (string, dateObject) {\n\n // If there's a string, then the length is always 4.\n // Otherwise return the selected year.\n return string ? 4 : dateObject.year;\n },\n\n // Create an array by splitting the formatting string passed.\n toArray: function (formatString) {\n return formatString.split(/(d{1,4}|m{1,4}|y{4}|yy|!.)/g);\n },\n\n // Format an object into a string using the formatting options.\n toString: function (formatString, itemObject) {\n var calendar = this;\n return calendar.formats.toArray(formatString).map(function (label) {\n return _.trigger(calendar.formats[label], calendar, [0, itemObject]) || label.replace(/^!/, '');\n }).join('');\n }\n };\n })(); //DatePicker.prototype.formats\n\n\n\n\n /**\n * Check if two date units are the exact.\n */\n DatePicker.prototype.isDateExact = function (one, two) {\n\n var calendar = this;\n\n // When we’re working with weekdays, do a direct comparison.\n if (\n (_.isInteger(one) && _.isInteger(two)) ||\n (typeof one == 'boolean' && typeof two == 'boolean')\n ) {\n return one === two;\n }\n\n // When we’re working with date representations, compare the “pick” value.\n if (\n (_.isDate(one) || $.isArray(one)) &&\n (_.isDate(two) || $.isArray(two))\n ) {\n return calendar.create(one).pick === calendar.create(two).pick;\n }\n\n // When we’re working with range objects, compare the “from” and “to”.\n if ($.isPlainObject(one) && $.isPlainObject(two)) {\n return calendar.isDateExact(one.from, two.from) && calendar.isDateExact(one.to, two.to);\n }\n\n return false;\n };\n\n\n /**\n * Check if two date units overlap.\n */\n DatePicker.prototype.isDateOverlap = function (one, two) {\n\n var calendar = this,\n firstDay = calendar.settings.firstDay ? 1 : 0;\n\n // When we’re working with a weekday index, compare the days.\n if (_.isInteger(one) && (_.isDate(two) || $.isArray(two))) {\n one = one % 7 + firstDay;\n return one === calendar.create(two).day + 1;\n }\n if (_.isInteger(two) && (_.isDate(one) || $.isArray(one))) {\n two = two % 7 + firstDay;\n return two === calendar.create(one).day + 1;\n }\n\n // When we’re working with range objects, check if the ranges overlap.\n if ($.isPlainObject(one) && $.isPlainObject(two)) {\n return calendar.overlapRanges(one, two);\n }\n\n return false;\n };\n\n\n /**\n * Flip the “enabled” state.\n */\n DatePicker.prototype.flipEnable = function (val) {\n var itemObject = this.item;\n itemObject.enable = val || (itemObject.enable == -1 ? 1 : -1);\n };\n\n\n /**\n * Mark a collection of dates as “disabled”.\n */\n DatePicker.prototype.deactivate = function (type, datesToDisable) {\n\n var calendar = this,\n disabledItems = calendar.item.disable.slice(0);\n\n\n // If we’re flipping, that’s all we need to do.\n if (datesToDisable == 'flip') {\n calendar.flipEnable();\n } else if (datesToDisable === false) {\n calendar.flipEnable(1);\n disabledItems = [];\n } else if (datesToDisable === true) {\n calendar.flipEnable(-1);\n disabledItems = [];\n }\n\n // Otherwise go through the dates to disable.\n else {\n\n datesToDisable.map(function (unitToDisable) {\n\n var matchFound;\n\n // When we have disabled items, check for matches.\n // If something is matched, immediately break out.\n for (var index = 0; index < disabledItems.length; index += 1) {\n if (calendar.isDateExact(unitToDisable, disabledItems[index])) {\n matchFound = true;\n break;\n }\n }\n\n // If nothing was found, add the validated unit to the collection.\n if (!matchFound) {\n if (\n _.isInteger(unitToDisable) ||\n _.isDate(unitToDisable) ||\n $.isArray(unitToDisable) ||\n ($.isPlainObject(unitToDisable) && unitToDisable.from && unitToDisable.to)\n ) {\n disabledItems.push(unitToDisable);\n }\n }\n });\n }\n\n // Return the updated collection.\n return disabledItems;\n }; //DatePicker.prototype.deactivate\n\n\n /**\n * Mark a collection of dates as “enabled”.\n */\n DatePicker.prototype.activate = function (type, datesToEnable) {\n\n var calendar = this,\n disabledItems = calendar.item.disable,\n disabledItemsCount = disabledItems.length;\n\n // If we’re flipping, that’s all we need to do.\n if (datesToEnable == 'flip') {\n calendar.flipEnable();\n } else if (datesToEnable === true) {\n calendar.flipEnable(1);\n disabledItems = [];\n } else if (datesToEnable === false) {\n calendar.flipEnable(-1);\n disabledItems = [];\n }\n\n // Otherwise go through the disabled dates.\n else {\n\n datesToEnable.map(function (unitToEnable) {\n\n var matchFound,\n disabledUnit,\n index,\n isExactRange;\n\n // Go through the disabled items and try to find a match.\n for (index = 0; index < disabledItemsCount; index += 1) {\n\n disabledUnit = disabledItems[index];\n\n // When an exact match is found, remove it from the collection.\n if (calendar.isDateExact(disabledUnit, unitToEnable)) {\n matchFound = disabledItems[index] = null;\n isExactRange = true;\n break;\n }\n\n // When an overlapped match is found, add the “inverted” state to it.\n else if (calendar.isDateOverlap(disabledUnit, unitToEnable)) {\n if ($.isPlainObject(unitToEnable)) {\n unitToEnable.inverted = true;\n matchFound = unitToEnable;\n } else if ($.isArray(unitToEnable)) {\n matchFound = unitToEnable;\n if (!matchFound[3]) matchFound.push('inverted');\n } else if (_.isDate(unitToEnable)) {\n matchFound = [unitToEnable.getFullYear(), unitToEnable.getMonth(), unitToEnable.getDate(), 'inverted'];\n }\n break;\n }\n }\n\n // If a match was found, remove a previous duplicate entry.\n if (matchFound)\n for (index = 0; index < disabledItemsCount; index += 1) {\n if (calendar.isDateExact(disabledItems[index], unitToEnable)) {\n disabledItems[index] = null;\n break;\n }\n }\n\n // In the event that we’re dealing with an exact range of dates,\n // make sure there are no “inverted” dates because of it.\n if (isExactRange)\n for (index = 0; index < disabledItemsCount; index += 1) {\n if (calendar.isDateOverlap(disabledItems[index], unitToEnable)) {\n disabledItems[index] = null;\n break;\n }\n }\n\n // If something is still matched, add it into the collection.\n if (matchFound) {\n disabledItems.push(matchFound);\n }\n });\n }\n\n // Return the updated collection.\n return disabledItems.filter(function (val) {\n return val != null;\n });\n }; //DatePicker.prototype.activate\n\n\n /**\n * Create a string for the nodes in the picker.\n */\n DatePicker.prototype.nodes = function (isOpen) {\n\n var\n calendar = this,\n settings = calendar.settings,\n calendarItem = calendar.item,\n nowObject = calendarItem.now,\n selectedObject = calendarItem.select,\n highlightedObject = calendarItem.highlight,\n viewsetObject = calendarItem.view,\n disabledCollection = calendarItem.disable,\n minLimitObject = calendarItem.min,\n maxLimitObject = calendarItem.max\n\n // Create the calendar table head using a copy of weekday labels collection.\n // * We do a copy so we don't mutate the original array.\n var tableHead = (function (collection, fullCollection) {\n\n // If the first day should be Monday, move Sunday to the end.\n if (settings.firstDay) {\n collection.push(collection.shift());\n fullCollection.push(fullCollection.shift());\n }\n\n // Create and return the table head group.\n return _.node(\n 'thead',\n _.node(\n 'tr',\n _.group({\n min: 0,\n max: DAYS_IN_WEEK - 1,\n i: 1,\n node: 'th',\n item: function (counter) {\n return [\n collection[counter],\n settings.klass.weekdays,\n 'scope=col title=\"' + fullCollection[counter] + '\"'\n ];\n }\n })\n )\n ); //endreturn\n })((settings.showWeekdaysFull ? settings.weekdaysFull : settings.weekdaysShort).slice(0), settings.weekdaysFull.slice(0)), //tableHead\n\n\n // Create the nav for next/prev month.\n createMonthNav = function (next) {\n\n // Otherwise, return the created month tag.\n return _.node(\n 'button',\n ' ',\n settings.klass['nav' + (next ? 'Next' : 'Prev')] + (\n\n // If the focused month is outside the range, disabled the button.\n (next && viewsetObject.year >= maxLimitObject.year && viewsetObject.month >= maxLimitObject.month) ||\n (!next && viewsetObject.year <= minLimitObject.year && viewsetObject.month <= minLimitObject.month) ?\n ' ' + settings.klass.navDisabled : ''\n ),\n 'data-nav=' + (next || -1) + ' ' +\n _.ariaAttr({\n role: 'button',\n\n controls: calendar.$node[0].id + '_table'\n }) + ' ' +\n 'title=\"' + (next ? settings.labelMonthNext : settings.labelMonthPrev) + '\"'\n ); //endreturn\n }, //createMonthNav\n\n // Create the year label.\n createYearLabel = function () {\n var focusedYear = viewsetObject.year,\n\n // If years selector is set to a literal \"true\", set it to 5. Otherwise\n // divide in half to get half before and half after focused year.\n numberYears = settings.selectYears === true ? 5 : ~~(settings.selectYears / 2);\n const focusedMonth = settings.monthsFull[viewsetObject.month];\n // If there are years to select, add a dropdown menu.\n if (numberYears) {\n\n var\n minYear = minLimitObject.year,\n maxYear = maxLimitObject.year,\n lowestYear = focusedYear - numberYears,\n highestYear = focusedYear + numberYears;\n\n // If the min year is greater than the lowest year, increase the highest year\n // by the difference and set the lowest year to the min year.\n if (minYear > lowestYear) {\n highestYear += minYear - lowestYear;\n lowestYear = minYear;\n }\n\n // If the max year is less than the highest year, decrease the lowest year\n // by the lower of the two: available and needed years. Then set the\n // highest year to the max year.\n if (maxYear < highestYear) {\n\n var availableYears = lowestYear - minYear,\n neededYears = highestYear - maxYear;\n\n lowestYear -= availableYears > neededYears ? neededYears : availableYears;\n highestYear = maxYear;\n }\n\n return `
      ${focusedMonth} ${focusedYear}
      `;\n }\n\n // Otherwise just return the year focused\n return `
      ${focusedYear}
      `;\n }, //createYearLabel\n\n createFooter = function() {\n // * For Firefox forms to submit, make sure to set the buttons’ `type` attributes as “button”.\n return `\n \n \n \n `;\n },\n\n createYearsView = function() {\n\n return `\n ${_.group({\n min: 1,\n max: 6,\n i: 1,\n node: 'tr',\n item: function (rowCounter) {\n\n const currentVisibleMinYear = calendar.item.currentVisibleMinYear || viewsetObject.year;\n const min = currentVisibleMinYear + rowCounter * 4 - 4;\n const max = currentVisibleMinYear + rowCounter * 4 - 1;\n\n return [_.group({\n min: min,\n max: max,\n i:1,\n node: 'td',\n item: function(loopedYear) {\n\n const isDisabled = (viewsetObject.year < minLimitObject.year || viewsetObject.year > maxLimitObject.year) ? 'disabled' : '';\n const isToday = loopedYear === viewsetObject.year;\n const month = selectedObject ? selectedObject.month : 0;\n const date = selectedObject ? selectedObject.date : 1;\n\n const targetDate = calendar.create([loopedYear, month, date]);\n return [\n `
      ${loopedYear}
      `\n ];\n }\n })];\n }\n })}\n `;\n },\n\n createMonthView = function () {\n const monthsCollection = settings.showMonthsShort ? settings.monthsShort : settings.monthsFull;\n \n return `\n ${_.group({\n min: 1,\n max: 4,\n i: 1,\n node: 'tr',\n item: function (rowCounter) {\n\n const min = rowCounter * 3 - 3;\n const max = rowCounter * 3 -1;\n\n return [_.group({\n min: min,\n max: max,\n i:1,\n node: 'td',\n item: function(loopedMonth) {\n\n const isDisabled = ((viewsetObject.year == minLimitObject.year && loopedMonth < minLimitObject.month) || (viewsetObject.year == maxLimitObject.year && loopedMonth > maxLimitObject.month)) ? 'disabled' : '';\n const isToday = loopedMonth === viewsetObject.month;\n const year = selectedObject ? selectedObject.year : viewsetObject.year;\n const date = selectedObject ? selectedObject.date : 1;\n\n const targetDate = calendar.create([year, loopedMonth, date]);\n\n return [\n `
      ${monthsCollection[loopedMonth]}
      `\n ];\n }\n })];\n }\n })}\n `;\n },\n\n createDaysView = function() {\n return `\n ${_.group({\n min: 0,\n max: WEEKS_IN_CALENDAR - 1,\n i: 1,\n node: 'tr',\n item: function (rowCounter) {\n\n // If Monday is the first day and the month starts on Sunday, shift the date back a week.\n var shiftDateBy = settings.firstDay && calendar.create([viewsetObject.year, viewsetObject.month, 1]).day === 0 ? -7 : 0;\n\n return [\n _.group({\n min: DAYS_IN_WEEK * rowCounter - viewsetObject.day + shiftDateBy + 1, // Add 1 for weekday 0index\n max: function () {\n return this.min + DAYS_IN_WEEK - 1;\n },\n i: 1,\n node: 'td',\n item: function (targetDate) {\n\n // Convert the time date from a relative date to a target date.\n targetDate = calendar.create([viewsetObject.year, viewsetObject.month, targetDate + (settings.firstDay ? 1 : 0)]);\n\n var isSelected = selectedObject && selectedObject.pick == targetDate.pick,\n isHighlighted = highlightedObject && highlightedObject.pick == targetDate.pick,\n isDisabled = disabledCollection && calendar.disabled(targetDate) || targetDate.pick < minLimitObject.pick || targetDate.pick > maxLimitObject.pick,\n formattedDate = _.trigger(calendar.formats.toString, calendar, [settings.format, targetDate]);\n\n return [\n _.node(\n 'div',\n targetDate.date,\n (function (klasses) {\n\n // Add the `infocus` or `outfocus` classes based on month in view.\n klasses.push(viewsetObject.month == targetDate.month ? settings.klass.infocus : settings.klass.outfocus);\n\n // Add the `today` class if needed.\n if (nowObject.pick == targetDate.pick) {\n klasses.push(settings.klass.now);\n }\n\n // Add the `selected` class if something's selected and the time matches.\n if (isSelected) {\n klasses.push(settings.klass.selected);\n }\n\n // Add the `highlighted` class if something's highlighted and the time matches.\n if (isHighlighted) {\n klasses.push(settings.klass.highlighted);\n }\n\n // Add the `disabled` class if something's disabled and the object matches.\n if (isDisabled) {\n klasses.push(settings.klass.disabled);\n }\n\n return klasses.join(' ');\n })([settings.klass.day]),\n 'data-pick=' + targetDate.pick + ' ' + _.ariaAttr({\n role: 'gridcell',\n label: formattedDate,\n selected: isSelected && calendar.$node.val() === formattedDate ? true : null,\n activedescendant: isHighlighted ? true : null,\n disabled: isDisabled ? true : null\n })\n ),\n '',\n _.ariaAttr({\n role: 'presentation'\n })\n ]; //endreturn\n }\n })\n ]; //endreturn\n }\n })}\n `;\n },\n\n renderView = function(view) {\n switch(view) {\n case 'years':\n return `\n ${createYearsView()}\n `;\n case 'months':\n return `\n ${createMonthView()}\n `;\n default:\n return `\n ${tableHead}\n ${createDaysView()}\n `;\n }\n };\n // Create and return the entire calendar.\n return `\n
      \n ${createYearLabel()} \n
      \n ${createMonthNav()}\n ${createMonthNav(1)}\n
      \n
      \n \n ${renderView(calendar.item.currentView)}\n
      \n
      \n ${createFooter()}\n
      \n `;\n }; //DatePicker.prototype.nodes\n\n DatePicker.prototype.toggleView = function (type, value) {\n var calendar = this,\n calendarItem = calendar.item;\n\n if (value === 'days') {\n return value;\n };\n\n switch (calendarItem.currentView) {\n case 'days':\n return 'years';\n case 'months':\n return 'days';\n case 'years':\n return 'months';\n default:\n return;\n } \n };\n\n\n /**\n * The date picker defaults.\n */\n DatePicker.defaults = (function (prefix) {\n\n return {\n\n // The title label to use for the month nav buttons\n labelMonthNext: 'Next month',\n labelMonthPrev: 'Previous month',\n\n // The title label to use for the dropdown selectors\n labelMonthSelect: 'Select a month',\n labelYearSelect: 'Select a year',\n\n // Months and weekdays\n monthsFull: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n weekdaysFull: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n weekdaysShort: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n\n // Today and clear\n today: 'Today',\n clear: 'Clear',\n close: 'Close',\n cancel: 'Cancel',\n ok: 'ok',\n\n // Picker close behavior\n closeOnSelect: true,\n closeOnClear: true,\n\n // Update input value on select/clear\n updateInput: true,\n\n inline: false,\n\n // The format to show on the `input` element\n format: 'd mmmm, yyyy',\n\n // Classes\n klass: {\n\n table: prefix + 'table',\n\n header: prefix + 'header datepicker__box',\n\n nav: prefix + 'nav',\n navPrev: prefix + 'nav--prev btn btn-flat',\n navNext: prefix + 'nav--next btn btn-flat',\n navDisabled: prefix + 'nav--disabled',\n\n month: prefix + 'month',\n year: prefix + 'year',\n\n selectMonth: prefix + 'select-month',\n selectYear: prefix + 'select-year',\n\n weekdays: prefix + 'weekday',\n\n day: prefix + 'day',\n disabled: prefix + 'day--disabled',\n selected: prefix + 'day--selected',\n highlighted: prefix + 'day--highlighted',\n now: prefix + 'day--today',\n infocus: prefix + 'day--infocus',\n outfocus: prefix + 'day--outfocus',\n\n footer: prefix + 'footer',\n\n buttonClear: prefix + 'picker-button--clear',\n buttonClose: prefix + 'picker-button--close',\n buttonOk: prefix + 'picker-button--ok'\n }\n };\n })(Picker.klasses().picker + '__');\n\n /**\n * Extend the picker to add the date picker.\n */\n Picker.extend('datepicker', DatePicker);\n\n\n}));\n\n$.extend($.fn.datepicker.defaults, {\n selectMonths: true, // Creates a dropdown to control month\n selectYears: 15, // Creates a dropdown of 15 years to control year,\n\n onRender: function () {\n var $pickerInstance = this.$root;\n\n var day = this.get('highlight', 'dd');\n var month = this.get('highlight', 'mmm');\n var labeldayFirstThreeLetters = this.get('highlight', 'dddd').slice(0, 3);\n var monthFirstUC = month.charAt(0).toUpperCase() + month.slice(1);\n var isInline = this.component.settings.inline;\n\n if (!isInline) {\n $pickerInstance.find('.picker__header').prepend(`\n
      \n
      SELECT DATE
      \n
      \n ${labeldayFirstThreeLetters},\n ${monthFirstUC}\n ${day}\n
      \n
      \n `);\n }\n\n }\n});\n\n$('.picker-opener').on('click', function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n const elementOpenData = event.target.dataset.open;\n const $input = $(`#${elementOpenData}`).datepicker();\n const picker = $input.datepicker('picker');\n\n picker.open();\n});\n","/*!\n * Name : Just Another Parallax [Jarallax]\n * Version : 1.10.4\n * Author : nK \n * GitHub : https://github.com/nk-o/jarallax\n */\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 11);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */,\n/* 1 */,\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (callback) {\n\n\tif (document.readyState === 'complete' || document.readyState === 'interactive') {\n\t\t// Already ready or interactive, execute callback\n\t\tcallback.call();\n\t} else if (document.attachEvent) {\n\t\t// Old browsers\n\t\tdocument.attachEvent('onreadystatechange', function () {\n\t\t\tif (document.readyState === 'interactive') callback.call();\n\t\t});\n\t} else if (document.addEventListener) {\n\t\t// Modern browsers\n\t\tdocument.addEventListener('DOMContentLoaded', callback);\n\t}\n};\n\n/***/ }),\n/* 3 */,\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n\nvar win;\n\nif (typeof window !== \"undefined\") {\n win = window;\n} else if (typeof global !== \"undefined\") {\n win = global;\n} else if (typeof self !== \"undefined\") {\n win = self;\n} else {\n win = {};\n}\n\nmodule.exports = win;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(5)))\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar g;\n\n// This works in non-strict mode\ng = function () {\n\treturn this;\n}();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\n} catch (e) {\n\t// This works if the window reference is available\n\tif ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n/***/ }),\n/* 6 */,\n/* 7 */,\n/* 8 */,\n/* 9 */,\n/* 10 */,\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(12);\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _liteReady = __webpack_require__(2);\n\nvar _liteReady2 = _interopRequireDefault(_liteReady);\n\nvar _global = __webpack_require__(4);\n\nvar _jarallax = __webpack_require__(13);\n\nvar _jarallax2 = _interopRequireDefault(_jarallax);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// no conflict\nvar oldPlugin = _global.window.jarallax;\n_global.window.jarallax = _jarallax2.default;\n_global.window.jarallax.noConflict = function () {\n _global.window.jarallax = oldPlugin;\n return this;\n};\n\n// jQuery support\nif (typeof _global.jQuery !== 'undefined') {\n var jQueryPlugin = function jQueryPlugin() {\n var args = arguments || [];\n Array.prototype.unshift.call(args, this);\n var res = _jarallax2.default.apply(_global.window, args);\n return (typeof res === 'undefined' ? 'undefined' : _typeof(res)) !== 'object' ? res : this;\n };\n jQueryPlugin.constructor = _jarallax2.default.constructor;\n\n // no conflict\n var oldJqPlugin = _global.jQuery.fn.jarallax;\n _global.jQuery.fn.jarallax = jQueryPlugin;\n _global.jQuery.fn.jarallax.noConflict = function () {\n _global.jQuery.fn.jarallax = oldJqPlugin;\n return this;\n };\n}\n\n// data-jarallax initialization\n(0, _liteReady2.default)(function () {\n (0, _jarallax2.default)(document.querySelectorAll('[data-jarallax]'));\n});\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _liteReady = __webpack_require__(2);\n\nvar _liteReady2 = _interopRequireDefault(_liteReady);\n\nvar _rafl = __webpack_require__(14);\n\nvar _rafl2 = _interopRequireDefault(_rafl);\n\nvar _global = __webpack_require__(4);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar isIE = navigator.userAgent.indexOf('MSIE ') > -1 || navigator.userAgent.indexOf('Trident/') > -1 || navigator.userAgent.indexOf('Edge/') > -1;\n\nvar supportTransform = function () {\n var prefixes = 'transform WebkitTransform MozTransform'.split(' ');\n var div = document.createElement('div');\n for (var i = 0; i < prefixes.length; i++) {\n if (div && div.style[prefixes[i]] !== undefined) {\n return prefixes[i];\n }\n }\n return false;\n}();\n\n// Window data\nvar wndW = void 0;\nvar wndH = void 0;\nvar wndY = void 0;\nvar forceResizeParallax = false;\nvar forceScrollParallax = false;\nfunction updateWndVars(e) {\n wndW = _global.window.innerWidth || document.documentElement.clientWidth;\n wndH = _global.window.innerHeight || document.documentElement.clientHeight;\n if ((typeof e === 'undefined' ? 'undefined' : _typeof(e)) === 'object' && (e.type === 'load' || e.type === 'dom-loaded')) {\n forceResizeParallax = true;\n }\n}\nupdateWndVars();\n_global.window.addEventListener('resize', updateWndVars);\n_global.window.addEventListener('orientationchange', updateWndVars);\n_global.window.addEventListener('load', updateWndVars);\n(0, _liteReady2.default)(function () {\n updateWndVars({\n type: 'dom-loaded'\n });\n});\n\n// list with all jarallax instances\n// need to render all in one scroll/resize event\nvar jarallaxList = [];\n\n// Animate if changed window size or scrolled page\nvar oldPageData = false;\nfunction updateParallax() {\n if (!jarallaxList.length) {\n return;\n }\n\n if (_global.window.pageYOffset !== undefined) {\n wndY = _global.window.pageYOffset;\n } else {\n wndY = (document.documentElement || document.body.parentNode || document.body).scrollTop;\n }\n\n var isResized = forceResizeParallax || !oldPageData || oldPageData.width !== wndW || oldPageData.height !== wndH;\n var isScrolled = forceScrollParallax || isResized || !oldPageData || oldPageData.y !== wndY;\n\n forceResizeParallax = false;\n forceScrollParallax = false;\n\n if (isResized || isScrolled) {\n jarallaxList.forEach(function (item) {\n if (isResized) {\n item.onResize();\n }\n if (isScrolled) {\n item.onScroll();\n }\n });\n\n oldPageData = {\n width: wndW,\n height: wndH,\n y: wndY\n };\n }\n\n (0, _rafl2.default)(updateParallax);\n}\n\n// ResizeObserver\nvar resizeObserver = global.ResizeObserver ? new global.ResizeObserver(function (entry) {\n if (entry && entry.length) {\n (0, _rafl2.default)(function () {\n entry.forEach(function (item) {\n if (item.target && item.target.jarallax) {\n if (!forceResizeParallax) {\n item.target.jarallax.onResize();\n }\n forceScrollParallax = true;\n }\n });\n });\n }\n}) : false;\n\nvar instanceID = 0;\n\n// Jarallax class\n\nvar Jarallax = function () {\n function Jarallax(item, userOptions) {\n _classCallCheck(this, Jarallax);\n\n var self = this;\n\n self.instanceID = instanceID++;\n\n self.$item = item;\n\n self.defaults = {\n type: 'scroll', // type of parallax: scroll, scale, opacity, scale-opacity, scroll-opacity\n speed: 0.5, // supported value from -1 to 2\n imgSrc: null,\n imgElement: '.jarallax-img',\n imgSize: 'cover',\n imgPosition: '50% 50%',\n imgRepeat: 'no-repeat', // supported only for background, not for tag\n keepImg: false, // keep tag in it's default place\n elementInViewport: null,\n zIndex: -100,\n disableParallax: false,\n disableVideo: false,\n automaticResize: true, // use ResizeObserver to recalculate position and size of parallax image\n\n // video\n videoSrc: null,\n videoStartTime: 0,\n videoEndTime: 0,\n videoVolume: 0,\n videoPlayOnlyVisible: true,\n\n // events\n onScroll: null, // function(calculations) {}\n onInit: null, // function() {}\n onDestroy: null, // function() {}\n onCoverImage: null // function() {}\n };\n\n // DEPRECATED: old data-options\n var deprecatedDataAttribute = self.$item.getAttribute('data-jarallax');\n var oldDataOptions = JSON.parse(deprecatedDataAttribute || '{}');\n if (deprecatedDataAttribute) {\n // eslint-disable-next-line no-console\n console.warn('Detected usage of deprecated data-jarallax JSON options, you should use pure data-attribute options. See info here - https://github.com/nk-o/jarallax/issues/53');\n }\n\n // prepare data-options\n var dataOptions = self.$item.dataset || {};\n var pureDataOptions = {};\n Object.keys(dataOptions).forEach(function (key) {\n var loweCaseOption = key.substr(0, 1).toLowerCase() + key.substr(1);\n if (loweCaseOption && typeof self.defaults[loweCaseOption] !== 'undefined') {\n pureDataOptions[loweCaseOption] = dataOptions[key];\n }\n });\n\n self.options = self.extend({}, self.defaults, oldDataOptions, pureDataOptions, userOptions);\n self.pureOptions = self.extend({}, self.options);\n\n // prepare 'true' and 'false' strings to boolean\n Object.keys(self.options).forEach(function (key) {\n if (self.options[key] === 'true') {\n self.options[key] = true;\n } else if (self.options[key] === 'false') {\n self.options[key] = false;\n }\n });\n\n // fix speed option [-1.0, 2.0]\n self.options.speed = Math.min(2, Math.max(-1, parseFloat(self.options.speed)));\n\n // deprecated noAndroid and noIos options\n if (self.options.noAndroid || self.options.noIos) {\n // eslint-disable-next-line no-console\n console.warn('Detected usage of deprecated noAndroid or noIos options, you should use disableParallax option. See info here - https://github.com/nk-o/jarallax/#disable-on-mobile-devices');\n\n // prepare fallback if disableParallax option is not used\n if (!self.options.disableParallax) {\n if (self.options.noIos && self.options.noAndroid) {\n self.options.disableParallax = /iPad|iPhone|iPod|Android/;\n } else if (self.options.noIos) {\n self.options.disableParallax = /iPad|iPhone|iPod/;\n } else if (self.options.noAndroid) {\n self.options.disableParallax = /Android/;\n }\n }\n }\n\n // prepare disableParallax callback\n if (typeof self.options.disableParallax === 'string') {\n self.options.disableParallax = new RegExp(self.options.disableParallax);\n }\n if (self.options.disableParallax instanceof RegExp) {\n var disableParallaxRegexp = self.options.disableParallax;\n self.options.disableParallax = function () {\n return disableParallaxRegexp.test(navigator.userAgent);\n };\n }\n if (typeof self.options.disableParallax !== 'function') {\n self.options.disableParallax = function () {\n return false;\n };\n }\n\n // prepare disableVideo callback\n if (typeof self.options.disableVideo === 'string') {\n self.options.disableVideo = new RegExp(self.options.disableVideo);\n }\n if (self.options.disableVideo instanceof RegExp) {\n var disableVideoRegexp = self.options.disableVideo;\n self.options.disableVideo = function () {\n return disableVideoRegexp.test(navigator.userAgent);\n };\n }\n if (typeof self.options.disableVideo !== 'function') {\n self.options.disableVideo = function () {\n return false;\n };\n }\n\n // custom element to check if parallax in viewport\n var elementInVP = self.options.elementInViewport;\n // get first item from array\n if (elementInVP && (typeof elementInVP === 'undefined' ? 'undefined' : _typeof(elementInVP)) === 'object' && typeof elementInVP.length !== 'undefined') {\n var _elementInVP = elementInVP;\n\n var _elementInVP2 = _slicedToArray(_elementInVP, 1);\n\n elementInVP = _elementInVP2[0];\n }\n // check if dom element\n if (!(elementInVP instanceof Element)) {\n elementInVP = null;\n }\n self.options.elementInViewport = elementInVP;\n\n self.image = {\n src: self.options.imgSrc || null,\n $container: null,\n useImgTag: false,\n\n // position fixed is needed for the most of browsers because absolute position have glitches\n // on MacOS with smooth scroll there is a huge lags with absolute position - https://github.com/nk-o/jarallax/issues/75\n // on mobile devices better scrolled with absolute position\n position: /iPad|iPhone|iPod|Android/.test(navigator.userAgent) ? 'absolute' : 'fixed'\n };\n\n if (self.initImg() && self.canInitParallax()) {\n self.init();\n }\n }\n\n // add styles to element\n\n\n _createClass(Jarallax, [{\n key: 'css',\n value: function css(el, styles) {\n if (typeof styles === 'string') {\n return _global.window.getComputedStyle(el).getPropertyValue(styles);\n }\n\n // add transform property with vendor prefix\n if (styles.transform && supportTransform) {\n styles[supportTransform] = styles.transform;\n }\n\n Object.keys(styles).forEach(function (key) {\n el.style[key] = styles[key];\n });\n return el;\n }\n\n // Extend like jQuery.extend\n\n }, {\n key: 'extend',\n value: function extend(out) {\n var _arguments = arguments;\n\n out = out || {};\n Object.keys(arguments).forEach(function (i) {\n if (!_arguments[i]) {\n return;\n }\n Object.keys(_arguments[i]).forEach(function (key) {\n out[key] = _arguments[i][key];\n });\n });\n return out;\n }\n\n // get window size and scroll position. Useful for extensions\n\n }, {\n key: 'getWindowData',\n value: function getWindowData() {\n return {\n width: wndW,\n height: wndH,\n y: wndY\n };\n }\n\n // Jarallax functions\n\n }, {\n key: 'initImg',\n value: function initImg() {\n var self = this;\n\n // find image element\n var $imgElement = self.options.imgElement;\n if ($imgElement && typeof $imgElement === 'string') {\n $imgElement = self.$item.querySelector($imgElement);\n }\n // check if dom element\n if (!($imgElement instanceof Element)) {\n $imgElement = null;\n }\n\n if ($imgElement) {\n if (self.options.keepImg) {\n self.image.$item = $imgElement.cloneNode(true);\n } else {\n self.image.$item = $imgElement;\n self.image.$itemParent = $imgElement.parentNode;\n }\n self.image.useImgTag = true;\n }\n\n // true if there is img tag\n if (self.image.$item) {\n return true;\n }\n\n // get image src\n if (self.image.src === null) {\n self.image.src = self.css(self.$item, 'background-image').replace(/^url\\(['\"]?/g, '').replace(/['\"]?\\)$/g, '');\n }\n return !(!self.image.src || self.image.src === 'none');\n }\n }, {\n key: 'canInitParallax',\n value: function canInitParallax() {\n return supportTransform && !this.options.disableParallax();\n }\n }, {\n key: 'init',\n value: function init() {\n var self = this;\n var containerStyles = {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n pointerEvents: 'none'\n };\n var imageStyles = {};\n\n if (!self.options.keepImg) {\n // save default user styles\n var curStyle = self.$item.getAttribute('style');\n if (curStyle) {\n self.$item.setAttribute('data-jarallax-original-styles', curStyle);\n }\n if (self.image.useImgTag) {\n var curImgStyle = self.image.$item.getAttribute('style');\n if (curImgStyle) {\n self.image.$item.setAttribute('data-jarallax-original-styles', curImgStyle);\n }\n }\n }\n\n // set relative position and z-index to the parent\n if (self.css(self.$item, 'position') === 'static') {\n self.css(self.$item, {\n position: 'relative'\n });\n }\n if (self.css(self.$item, 'z-index') === 'auto') {\n self.css(self.$item, {\n zIndex: 0\n });\n }\n\n // container for parallax image\n self.image.$container = document.createElement('div');\n self.css(self.image.$container, containerStyles);\n self.css(self.image.$container, {\n 'z-index': self.options.zIndex\n });\n\n // fix for IE https://github.com/nk-o/jarallax/issues/110\n if (isIE) {\n self.css(self.image.$container, {\n opacity: 0.9999\n });\n }\n\n self.image.$container.setAttribute('id', 'jarallax-container-' + self.instanceID);\n self.$item.appendChild(self.image.$container);\n\n // use img tag\n if (self.image.useImgTag) {\n imageStyles = self.extend({\n 'object-fit': self.options.imgSize,\n 'object-position': self.options.imgPosition,\n // support for plugin https://github.com/bfred-it/object-fit-images\n 'font-family': 'object-fit: ' + self.options.imgSize + '; object-position: ' + self.options.imgPosition + ';',\n 'max-width': 'none'\n }, containerStyles, imageStyles);\n\n // use div with background image\n } else {\n self.image.$item = document.createElement('div');\n if (self.image.src) {\n imageStyles = self.extend({\n 'background-position': self.options.imgPosition,\n 'background-size': self.options.imgSize,\n 'background-repeat': self.options.imgRepeat,\n 'background-image': 'url(\"' + self.image.src + '\")'\n }, containerStyles, imageStyles);\n }\n }\n\n if (self.options.type === 'opacity' || self.options.type === 'scale' || self.options.type === 'scale-opacity' || self.options.speed === 1) {\n self.image.position = 'absolute';\n }\n\n // check if one of parents have transform style (without this check, scroll transform will be inverted if used parallax with position fixed)\n // discussion - https://github.com/nk-o/jarallax/issues/9\n if (self.image.position === 'fixed') {\n var parentWithTransform = 0;\n var $itemParents = self.$item;\n while ($itemParents !== null && $itemParents !== document && parentWithTransform === 0) {\n var parentTransform = self.css($itemParents, '-webkit-transform') || self.css($itemParents, '-moz-transform') || self.css($itemParents, 'transform');\n if (parentTransform && parentTransform !== 'none') {\n parentWithTransform = 1;\n self.image.position = 'absolute';\n }\n $itemParents = $itemParents.parentNode;\n }\n }\n\n // add position to parallax block\n imageStyles.position = self.image.position;\n\n // insert parallax image\n self.css(self.image.$item, imageStyles);\n self.image.$container.appendChild(self.image.$item);\n\n // set initial position and size\n self.onResize();\n self.onScroll(true);\n\n // ResizeObserver\n if (self.options.automaticResize && resizeObserver) {\n resizeObserver.observe(self.$item);\n }\n\n // call onInit event\n if (self.options.onInit) {\n self.options.onInit.call(self);\n }\n\n // remove default user background\n if (self.css(self.$item, 'background-image') !== 'none') {\n self.css(self.$item, {\n 'background-image': 'none'\n });\n }\n\n self.addToParallaxList();\n }\n\n // add to parallax instances list\n\n }, {\n key: 'addToParallaxList',\n value: function addToParallaxList() {\n jarallaxList.push(this);\n\n if (jarallaxList.length === 1) {\n updateParallax();\n }\n }\n\n // remove from parallax instances list\n\n }, {\n key: 'removeFromParallaxList',\n value: function removeFromParallaxList() {\n var self = this;\n\n jarallaxList.forEach(function (item, key) {\n if (item.instanceID === self.instanceID) {\n jarallaxList.splice(key, 1);\n }\n });\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n var self = this;\n\n self.removeFromParallaxList();\n\n // return styles on container as before jarallax init\n var originalStylesTag = self.$item.getAttribute('data-jarallax-original-styles');\n self.$item.removeAttribute('data-jarallax-original-styles');\n // null occurs if there is no style tag before jarallax init\n if (!originalStylesTag) {\n self.$item.removeAttribute('style');\n } else {\n self.$item.setAttribute('style', originalStylesTag);\n }\n\n if (self.image.useImgTag) {\n // return styles on img tag as before jarallax init\n var originalStylesImgTag = self.image.$item.getAttribute('data-jarallax-original-styles');\n self.image.$item.removeAttribute('data-jarallax-original-styles');\n // null occurs if there is no style tag before jarallax init\n if (!originalStylesImgTag) {\n self.image.$item.removeAttribute('style');\n } else {\n self.image.$item.setAttribute('style', originalStylesTag);\n }\n\n // move img tag to its default position\n if (self.image.$itemParent) {\n self.image.$itemParent.appendChild(self.image.$item);\n }\n }\n\n // remove additional dom elements\n if (self.$clipStyles) {\n self.$clipStyles.parentNode.removeChild(self.$clipStyles);\n }\n if (self.image.$container) {\n self.image.$container.parentNode.removeChild(self.image.$container);\n }\n\n // call onDestroy event\n if (self.options.onDestroy) {\n self.options.onDestroy.call(self);\n }\n\n // delete jarallax from item\n delete self.$item.jarallax;\n }\n\n // it will remove some image overlapping\n // overlapping occur due to an image position fixed inside absolute position element\n\n }, {\n key: 'clipContainer',\n value: function clipContainer() {\n // needed only when background in fixed position\n if (this.image.position !== 'fixed') {\n return;\n }\n\n var self = this;\n var rect = self.image.$container.getBoundingClientRect();\n var width = rect.width,\n height = rect.height;\n\n\n if (!self.$clipStyles) {\n self.$clipStyles = document.createElement('style');\n self.$clipStyles.setAttribute('type', 'text/css');\n self.$clipStyles.setAttribute('id', 'jarallax-clip-' + self.instanceID);\n var head = document.head || document.getElementsByTagName('head')[0];\n head.appendChild(self.$clipStyles);\n }\n\n var styles = '#jarallax-container-' + self.instanceID + ' {\\n clip: rect(0 ' + width + 'px ' + height + 'px 0);\\n clip: rect(0, ' + width + 'px, ' + height + 'px, 0);\\n }';\n\n // add clip styles inline (this method need for support IE8 and less browsers)\n if (self.$clipStyles.styleSheet) {\n self.$clipStyles.styleSheet.cssText = styles;\n } else {\n self.$clipStyles.innerHTML = styles;\n }\n }\n }, {\n key: 'coverImage',\n value: function coverImage() {\n var self = this;\n\n var rect = self.image.$container.getBoundingClientRect();\n var contH = rect.height;\n var speed = self.options.speed;\n\n var isScroll = self.options.type === 'scroll' || self.options.type === 'scroll-opacity';\n var scrollDist = 0;\n var resultH = contH;\n var resultMT = 0;\n\n // scroll parallax\n if (isScroll) {\n // scroll distance and height for image\n if (speed < 0) {\n scrollDist = speed * Math.max(contH, wndH);\n } else {\n scrollDist = speed * (contH + wndH);\n }\n\n // size for scroll parallax\n if (speed > 1) {\n resultH = Math.abs(scrollDist - wndH);\n } else if (speed < 0) {\n resultH = scrollDist / speed + Math.abs(scrollDist);\n } else {\n resultH += Math.abs(wndH - contH) * (1 - speed);\n }\n\n scrollDist /= 2;\n }\n\n // store scroll distance\n self.parallaxScrollDistance = scrollDist;\n\n // vertical center\n if (isScroll) {\n resultMT = (wndH - resultH) / 2;\n } else {\n resultMT = (contH - resultH) / 2;\n }\n\n // apply result to item\n self.css(self.image.$item, {\n height: resultH + 'px',\n marginTop: resultMT + 'px',\n left: self.image.position === 'fixed' ? rect.left + 'px' : '0',\n width: rect.width + 'px'\n });\n\n // call onCoverImage event\n if (self.options.onCoverImage) {\n self.options.onCoverImage.call(self);\n }\n\n // return some useful data. Used in the video cover function\n return {\n image: {\n height: resultH,\n marginTop: resultMT\n },\n container: rect\n };\n }\n }, {\n key: 'isVisible',\n value: function isVisible() {\n return this.isElementInViewport || false;\n }\n }, {\n key: 'onScroll',\n value: function onScroll(force) {\n var self = this;\n\n var rect = self.$item.getBoundingClientRect();\n var contT = rect.top;\n var contH = rect.height;\n var styles = {};\n\n // check if in viewport\n var viewportRect = rect;\n if (self.options.elementInViewport) {\n viewportRect = self.options.elementInViewport.getBoundingClientRect();\n }\n self.isElementInViewport = viewportRect.bottom >= 0 && viewportRect.right >= 0 && viewportRect.top <= wndH && viewportRect.left <= wndW;\n\n // stop calculations if item is not in viewport\n if (force ? false : !self.isElementInViewport) {\n return;\n }\n\n // calculate parallax helping variables\n var beforeTop = Math.max(0, contT);\n var beforeTopEnd = Math.max(0, contH + contT);\n var afterTop = Math.max(0, -contT);\n var beforeBottom = Math.max(0, contT + contH - wndH);\n var beforeBottomEnd = Math.max(0, contH - (contT + contH - wndH));\n var afterBottom = Math.max(0, -contT + wndH - contH);\n var fromViewportCenter = 1 - 2 * (wndH - contT) / (wndH + contH);\n\n // calculate on how percent of section is visible\n var visiblePercent = 1;\n if (contH < wndH) {\n visiblePercent = 1 - (afterTop || beforeBottom) / contH;\n } else if (beforeTopEnd <= wndH) {\n visiblePercent = beforeTopEnd / wndH;\n } else if (beforeBottomEnd <= wndH) {\n visiblePercent = beforeBottomEnd / wndH;\n }\n\n // opacity\n if (self.options.type === 'opacity' || self.options.type === 'scale-opacity' || self.options.type === 'scroll-opacity') {\n styles.transform = 'translate3d(0,0,0)';\n styles.opacity = visiblePercent;\n }\n\n // scale\n if (self.options.type === 'scale' || self.options.type === 'scale-opacity') {\n var scale = 1;\n if (self.options.speed < 0) {\n scale -= self.options.speed * visiblePercent;\n } else {\n scale += self.options.speed * (1 - visiblePercent);\n }\n styles.transform = 'scale(' + scale + ') translate3d(0,0,0)';\n }\n\n // scroll\n if (self.options.type === 'scroll' || self.options.type === 'scroll-opacity') {\n var positionY = self.parallaxScrollDistance * fromViewportCenter;\n\n // fix if parallax block in absolute position\n if (self.image.position === 'absolute') {\n positionY -= contT;\n }\n\n styles.transform = 'translate3d(0,' + positionY + 'px,0)';\n }\n\n self.css(self.image.$item, styles);\n\n // call onScroll event\n if (self.options.onScroll) {\n self.options.onScroll.call(self, {\n section: rect,\n\n beforeTop: beforeTop,\n beforeTopEnd: beforeTopEnd,\n afterTop: afterTop,\n beforeBottom: beforeBottom,\n beforeBottomEnd: beforeBottomEnd,\n afterBottom: afterBottom,\n\n visiblePercent: visiblePercent,\n fromViewportCenter: fromViewportCenter\n });\n }\n }\n }, {\n key: 'onResize',\n value: function onResize() {\n this.coverImage();\n this.clipContainer();\n }\n }]);\n\n return Jarallax;\n}();\n\n// global definition\n\n\nvar plugin = function plugin(items) {\n // check for dom element\n // thanks: http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object\n if ((typeof HTMLElement === 'undefined' ? 'undefined' : _typeof(HTMLElement)) === 'object' ? items instanceof HTMLElement : items && (typeof items === 'undefined' ? 'undefined' : _typeof(items)) === 'object' && items !== null && items.nodeType === 1 && typeof items.nodeName === 'string') {\n items = [items];\n }\n\n var options = arguments[1];\n var args = Array.prototype.slice.call(arguments, 2);\n var len = items.length;\n var k = 0;\n var ret = void 0;\n\n for (k; k < len; k++) {\n if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object' || typeof options === 'undefined') {\n if (!items[k].jarallax) {\n items[k].jarallax = new Jarallax(items[k], options);\n }\n } else if (items[k].jarallax) {\n // eslint-disable-next-line prefer-spread\n ret = items[k].jarallax[options].apply(items[k].jarallax, args);\n }\n if (typeof ret !== 'undefined') {\n return ret;\n }\n }\n\n return items;\n};\nplugin.constructor = Jarallax;\n\nexports.default = plugin;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(5)))\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar global = __webpack_require__(4);\n\n/**\n * `requestAnimationFrame()`\n */\n\nvar request = global.requestAnimationFrame || global.webkitRequestAnimationFrame || global.mozRequestAnimationFrame || fallback;\n\nvar prev = +new Date();\nfunction fallback(fn) {\n var curr = +new Date();\n var ms = Math.max(0, 16 - (curr - prev));\n var req = setTimeout(fn, ms);\n return prev = curr, req;\n}\n\n/**\n * `cancelAnimationFrame()`\n */\n\nvar cancel = global.cancelAnimationFrame || global.webkitCancelAnimationFrame || global.mozCancelAnimationFrame || clearTimeout;\n\nif (Function.prototype.bind) {\n request = request.bind(global);\n cancel = cancel.bind(global);\n}\n\nexports = module.exports = request;\nexports.cancel = cancel;\n\n/***/ })\n/******/ ]);\n","/*!\n * Name : Video Background Extension for Jarallax\n * Version : 1.0.1\n * Author : nK \n * GitHub : https://github.com/nk-o/jarallax\n */\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 6);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */,\n/* 1 */,\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (callback) {\n\n\tif (document.readyState === 'complete' || document.readyState === 'interactive') {\n\t\t// Already ready or interactive, execute callback\n\t\tcallback.call();\n\t} else if (document.attachEvent) {\n\t\t// Old browsers\n\t\tdocument.attachEvent('onreadystatechange', function () {\n\t\t\tif (document.readyState === 'interactive') callback.call();\n\t\t});\n\t} else if (document.addEventListener) {\n\t\t// Modern browsers\n\t\tdocument.addEventListener('DOMContentLoaded', callback);\n\t}\n};\n\n/***/ }),\n/* 3 */,\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n\nvar win;\n\nif (typeof window !== \"undefined\") {\n win = window;\n} else if (typeof global !== \"undefined\") {\n win = global;\n} else if (typeof self !== \"undefined\") {\n win = self;\n} else {\n win = {};\n}\n\nmodule.exports = win;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(5)))\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar g;\n\n// This works in non-strict mode\ng = function () {\n\treturn this;\n}();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\n} catch (e) {\n\t// This works if the window reference is available\n\tif ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(7);\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _videoWorker = __webpack_require__(8);\n\nvar _videoWorker2 = _interopRequireDefault(_videoWorker);\n\nvar _global = __webpack_require__(4);\n\nvar _global2 = _interopRequireDefault(_global);\n\nvar _liteReady = __webpack_require__(2);\n\nvar _liteReady2 = _interopRequireDefault(_liteReady);\n\nvar _jarallaxVideo = __webpack_require__(10);\n\nvar _jarallaxVideo2 = _interopRequireDefault(_jarallaxVideo);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// add video worker globally to fallback jarallax < 1.10 versions\n_global2.default.VideoWorker = _global2.default.VideoWorker || _videoWorker2.default;\n\n(0, _jarallaxVideo2.default)();\n\n// data-jarallax-video initialization\n(0, _liteReady2.default)(function () {\n if (typeof jarallax !== 'undefined') {\n jarallax(document.querySelectorAll('[data-jarallax-video]'));\n }\n});\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = __webpack_require__(9);\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// Deferred\n// thanks http://stackoverflow.com/questions/18096715/implement-deferred-object-without-using-jquery\nfunction Deferred() {\n this._done = [];\n this._fail = [];\n}\nDeferred.prototype = {\n execute: function execute(list, args) {\n var i = list.length;\n args = Array.prototype.slice.call(args);\n while (i--) {\n list[i].apply(null, args);\n }\n },\n resolve: function resolve() {\n this.execute(this._done, arguments);\n },\n reject: function reject() {\n this.execute(this._fail, arguments);\n },\n done: function done(callback) {\n this._done.push(callback);\n },\n fail: function fail(callback) {\n this._fail.push(callback);\n }\n};\n\nvar ID = 0;\nvar YoutubeAPIadded = 0;\nvar VimeoAPIadded = 0;\nvar loadingYoutubePlayer = 0;\nvar loadingVimeoPlayer = 0;\nvar loadingYoutubeDefer = new Deferred();\nvar loadingVimeoDefer = new Deferred();\n\nvar VideoWorker = function () {\n function VideoWorker(url, options) {\n _classCallCheck(this, VideoWorker);\n\n var self = this;\n\n self.url = url;\n\n self.options_default = {\n autoplay: false,\n loop: false,\n mute: false,\n volume: 100,\n showContols: true,\n\n // start / end video time in seconds\n startTime: 0,\n endTime: 0\n };\n\n self.options = self.extend({}, self.options_default, options);\n\n // check URL\n self.videoID = self.parseURL(url);\n\n // init\n if (self.videoID) {\n self.ID = ID++;\n self.loadAPI();\n self.init();\n }\n }\n\n // Extend like jQuery.extend\n\n\n _createClass(VideoWorker, [{\n key: 'extend',\n value: function extend(out) {\n var _arguments = arguments;\n\n out = out || {};\n Object.keys(arguments).forEach(function (i) {\n if (!_arguments[i]) {\n return;\n }\n Object.keys(_arguments[i]).forEach(function (key) {\n out[key] = _arguments[i][key];\n });\n });\n return out;\n }\n }, {\n key: 'parseURL',\n value: function parseURL(url) {\n // parse youtube ID\n function getYoutubeID(ytUrl) {\n // eslint-disable-next-line no-useless-escape\n var regExp = /.*(?:youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=)([^#\\&\\?]*).*/;\n var match = ytUrl.match(regExp);\n return match && match[1].length === 11 ? match[1] : false;\n }\n\n // parse vimeo ID\n function getVimeoID(vmUrl) {\n // eslint-disable-next-line no-useless-escape\n var regExp = /https?:\\/\\/(?:www\\.|player\\.)?vimeo.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/([^\\/]*)\\/videos\\/|album\\/(\\d+)\\/video\\/|video\\/|)(\\d+)(?:$|\\/|\\?)/;\n var match = vmUrl.match(regExp);\n return match && match[3] ? match[3] : false;\n }\n\n // parse local string\n function getLocalVideos(locUrl) {\n // eslint-disable-next-line no-useless-escape\n var videoFormats = locUrl.split(/,(?=mp4\\:|webm\\:|ogv\\:|ogg\\:)/);\n var result = {};\n var ready = 0;\n videoFormats.forEach(function (val) {\n // eslint-disable-next-line no-useless-escape\n var match = val.match(/^(mp4|webm|ogv|ogg)\\:(.*)/);\n if (match && match[1] && match[2]) {\n // eslint-disable-next-line prefer-destructuring\n result[match[1] === 'ogv' ? 'ogg' : match[1]] = match[2];\n ready = 1;\n }\n });\n return ready ? result : false;\n }\n\n var Youtube = getYoutubeID(url);\n var Vimeo = getVimeoID(url);\n var Local = getLocalVideos(url);\n\n if (Youtube) {\n this.type = 'youtube';\n return Youtube;\n } else if (Vimeo) {\n this.type = 'vimeo';\n return Vimeo;\n } else if (Local) {\n this.type = 'local';\n return Local;\n }\n\n return false;\n }\n }, {\n key: 'isValid',\n value: function isValid() {\n return !!this.videoID;\n }\n\n // events\n\n }, {\n key: 'on',\n value: function on(name, callback) {\n this.userEventsList = this.userEventsList || [];\n\n // add new callback in events list\n (this.userEventsList[name] || (this.userEventsList[name] = [])).push(callback);\n }\n }, {\n key: 'off',\n value: function off(name, callback) {\n var _this = this;\n\n if (!this.userEventsList || !this.userEventsList[name]) {\n return;\n }\n\n if (!callback) {\n delete this.userEventsList[name];\n } else {\n this.userEventsList[name].forEach(function (val, key) {\n if (val === callback) {\n _this.userEventsList[name][key] = false;\n }\n });\n }\n }\n }, {\n key: 'fire',\n value: function fire(name) {\n var _this2 = this;\n\n var args = [].slice.call(arguments, 1);\n if (this.userEventsList && typeof this.userEventsList[name] !== 'undefined') {\n this.userEventsList[name].forEach(function (val) {\n // call with all arguments\n if (val) {\n val.apply(_this2, args);\n }\n });\n }\n }\n }, {\n key: 'play',\n value: function play(start) {\n var self = this;\n if (!self.player) {\n return;\n }\n\n if (self.type === 'youtube' && self.player.playVideo) {\n if (typeof start !== 'undefined') {\n self.player.seekTo(start || 0);\n }\n if (YT.PlayerState.PLAYING !== self.player.getPlayerState()) {\n self.player.playVideo();\n }\n }\n\n if (self.type === 'vimeo') {\n if (typeof start !== 'undefined') {\n self.player.setCurrentTime(start);\n }\n self.player.getPaused().then(function (paused) {\n if (paused) {\n self.player.play();\n }\n });\n }\n\n if (self.type === 'local') {\n if (typeof start !== 'undefined') {\n self.player.currentTime = start;\n }\n if (self.player.paused) {\n self.player.play();\n }\n }\n }\n }, {\n key: 'pause',\n value: function pause() {\n var self = this;\n if (!self.player) {\n return;\n }\n\n if (self.type === 'youtube' && self.player.pauseVideo) {\n if (YT.PlayerState.PLAYING === self.player.getPlayerState()) {\n self.player.pauseVideo();\n }\n }\n\n if (self.type === 'vimeo') {\n self.player.getPaused().then(function (paused) {\n if (!paused) {\n self.player.pause();\n }\n });\n }\n\n if (self.type === 'local') {\n if (!self.player.paused) {\n self.player.pause();\n }\n }\n }\n }, {\n key: 'mute',\n value: function mute() {\n var self = this;\n if (!self.player) {\n return;\n }\n\n if (self.type === 'youtube' && self.player.mute) {\n self.player.mute();\n }\n\n if (self.type === 'vimeo' && self.player.setVolume) {\n self.player.setVolume(0);\n }\n\n if (self.type === 'local') {\n self.$video.muted = true;\n }\n }\n }, {\n key: 'unmute',\n value: function unmute() {\n var self = this;\n if (!self.player) {\n return;\n }\n\n if (self.type === 'youtube' && self.player.mute) {\n self.player.unMute();\n }\n\n if (self.type === 'vimeo' && self.player.setVolume) {\n self.player.setVolume(self.options.volume);\n }\n\n if (self.type === 'local') {\n self.$video.muted = false;\n }\n }\n }, {\n key: 'setVolume',\n value: function setVolume() {\n var volume = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var self = this;\n if (!self.player || !volume) {\n return;\n }\n\n if (self.type === 'youtube' && self.player.setVolume) {\n self.player.setVolume(volume);\n }\n\n if (self.type === 'vimeo' && self.player.setVolume) {\n self.player.setVolume(volume);\n }\n\n if (self.type === 'local') {\n self.$video.volume = volume / 100;\n }\n }\n }, {\n key: 'getVolume',\n value: function getVolume(callback) {\n var self = this;\n if (!self.player) {\n callback(false);\n return;\n }\n\n if (self.type === 'youtube' && self.player.getVolume) {\n callback(self.player.getVolume());\n }\n\n if (self.type === 'vimeo' && self.player.getVolume) {\n self.player.getVolume().then(function (volume) {\n callback(volume);\n });\n }\n\n if (self.type === 'local') {\n callback(self.$video.volume * 100);\n }\n }\n }, {\n key: 'getMuted',\n value: function getMuted(callback) {\n var self = this;\n if (!self.player) {\n callback(null);\n return;\n }\n\n if (self.type === 'youtube' && self.player.isMuted) {\n callback(self.player.isMuted());\n }\n\n if (self.type === 'vimeo' && self.player.getVolume) {\n self.player.getVolume().then(function (volume) {\n callback(!!volume);\n });\n }\n\n if (self.type === 'local') {\n callback(self.$video.muted);\n }\n }\n }, {\n key: 'getImageURL',\n value: function getImageURL(callback) {\n var self = this;\n\n if (self.videoImage) {\n callback(self.videoImage);\n return;\n }\n\n if (self.type === 'youtube') {\n var availableSizes = ['maxresdefault', 'sddefault', 'hqdefault', '0'];\n var step = 0;\n\n var tempImg = new Image();\n tempImg.onload = function () {\n // if no thumbnail, youtube add their own image with width = 120px\n if ((this.naturalWidth || this.width) !== 120 || step === availableSizes.length - 1) {\n // ok\n self.videoImage = 'https://img.youtube.com/vi/' + self.videoID + '/' + availableSizes[step] + '.jpg';\n callback(self.videoImage);\n } else {\n // try another size\n step++;\n this.src = 'https://img.youtube.com/vi/' + self.videoID + '/' + availableSizes[step] + '.jpg';\n }\n };\n tempImg.src = 'https://img.youtube.com/vi/' + self.videoID + '/' + availableSizes[step] + '.jpg';\n }\n\n if (self.type === 'vimeo') {\n var request = new XMLHttpRequest();\n request.open('GET', 'https://vimeo.com/api/v2/video/' + self.videoID + '.json', true);\n request.onreadystatechange = function () {\n if (this.readyState === 4) {\n if (this.status >= 200 && this.status < 400) {\n // Success!\n var response = JSON.parse(this.responseText);\n self.videoImage = response[0].thumbnail_large;\n callback(self.videoImage);\n } else {\n // Error :(\n }\n }\n };\n request.send();\n request = null;\n }\n }\n\n // fallback to the old version.\n\n }, {\n key: 'getIframe',\n value: function getIframe(callback) {\n this.getVideo(callback);\n }\n }, {\n key: 'getVideo',\n value: function getVideo(callback) {\n var self = this;\n\n // return generated video block\n if (self.$video) {\n callback(self.$video);\n return;\n }\n\n // generate new video block\n self.onAPIready(function () {\n var hiddenDiv = void 0;\n if (!self.$video) {\n hiddenDiv = document.createElement('div');\n hiddenDiv.style.display = 'none';\n }\n\n // Youtube\n if (self.type === 'youtube') {\n self.playerOptions = {};\n self.playerOptions.videoId = self.videoID;\n self.playerOptions.playerVars = {\n autohide: 1,\n rel: 0,\n autoplay: 0,\n // autoplay enable on mobile devices\n playsinline: 1\n };\n\n // hide controls\n if (!self.options.showContols) {\n self.playerOptions.playerVars.iv_load_policy = 3;\n self.playerOptions.playerVars.modestbranding = 1;\n self.playerOptions.playerVars.controls = 0;\n self.playerOptions.playerVars.showinfo = 0;\n self.playerOptions.playerVars.disablekb = 1;\n }\n\n // events\n var ytStarted = void 0;\n var ytProgressInterval = void 0;\n self.playerOptions.events = {\n onReady: function onReady(e) {\n // mute\n if (self.options.mute) {\n e.target.mute();\n } else if (self.options.volume) {\n e.target.setVolume(self.options.volume);\n }\n\n // autoplay\n if (self.options.autoplay) {\n self.play(self.options.startTime);\n }\n self.fire('ready', e);\n\n // volumechange\n setInterval(function () {\n self.getVolume(function (volume) {\n if (self.options.volume !== volume) {\n self.options.volume = volume;\n self.fire('volumechange', e);\n }\n });\n }, 150);\n },\n onStateChange: function onStateChange(e) {\n // loop\n if (self.options.loop && e.data === YT.PlayerState.ENDED) {\n self.play(self.options.startTime);\n }\n if (!ytStarted && e.data === YT.PlayerState.PLAYING) {\n ytStarted = 1;\n self.fire('started', e);\n }\n if (e.data === YT.PlayerState.PLAYING) {\n self.fire('play', e);\n }\n if (e.data === YT.PlayerState.PAUSED) {\n self.fire('pause', e);\n }\n if (e.data === YT.PlayerState.ENDED) {\n self.fire('ended', e);\n }\n\n // progress check\n if (e.data === YT.PlayerState.PLAYING) {\n ytProgressInterval = setInterval(function () {\n self.fire('timeupdate', e);\n\n // check for end of video and play again or stop\n if (self.options.endTime && self.player.getCurrentTime() >= self.options.endTime) {\n if (self.options.loop) {\n self.play(self.options.startTime);\n } else {\n self.pause();\n }\n }\n }, 150);\n } else {\n clearInterval(ytProgressInterval);\n }\n }\n };\n\n var firstInit = !self.$video;\n if (firstInit) {\n var div = document.createElement('div');\n div.setAttribute('id', self.playerID);\n hiddenDiv.appendChild(div);\n document.body.appendChild(hiddenDiv);\n }\n self.player = self.player || new window.YT.Player(self.playerID, self.playerOptions);\n if (firstInit) {\n self.$video = document.getElementById(self.playerID);\n\n // get video width and height\n self.videoWidth = parseInt(self.$video.getAttribute('width'), 10) || 1280;\n self.videoHeight = parseInt(self.$video.getAttribute('height'), 10) || 720;\n }\n }\n\n // Vimeo\n if (self.type === 'vimeo') {\n self.playerOptions = '';\n\n self.playerOptions += 'player_id=' + self.playerID;\n self.playerOptions += '&autopause=0';\n self.playerOptions += '&transparent=0';\n\n // hide controls\n if (!self.options.showContols) {\n self.playerOptions += '&badge=0&byline=0&portrait=0&title=0';\n }\n\n // autoplay\n self.playerOptions += '&autoplay=' + (self.options.autoplay ? '1' : '0');\n\n // loop\n self.playerOptions += '&loop=' + (self.options.loop ? 1 : 0);\n\n if (!self.$video) {\n self.$video = document.createElement('iframe');\n self.$video.setAttribute('id', self.playerID);\n self.$video.setAttribute('src', 'https://player.vimeo.com/video/' + self.videoID + '?' + self.playerOptions);\n self.$video.setAttribute('frameborder', '0');\n hiddenDiv.appendChild(self.$video);\n document.body.appendChild(hiddenDiv);\n }\n\n self.player = self.player || new Vimeo.Player(self.$video);\n\n // get video width and height\n self.player.getVideoWidth().then(function (width) {\n self.videoWidth = width || 1280;\n });\n self.player.getVideoHeight().then(function (height) {\n self.videoHeight = height || 720;\n });\n\n // set current time for autoplay\n if (self.options.startTime && self.options.autoplay) {\n self.player.setCurrentTime(self.options.startTime);\n }\n\n // mute\n if (self.options.mute) {\n self.player.setVolume(0);\n } else if (self.options.volume) {\n self.player.setVolume(self.options.volume);\n }\n\n var vmStarted = void 0;\n self.player.on('timeupdate', function (e) {\n if (!vmStarted) {\n self.fire('started', e);\n vmStarted = 1;\n }\n\n self.fire('timeupdate', e);\n\n // check for end of video and play again or stop\n if (self.options.endTime) {\n if (self.options.endTime && e.seconds >= self.options.endTime) {\n if (self.options.loop) {\n self.play(self.options.startTime);\n } else {\n self.pause();\n }\n }\n }\n });\n self.player.on('play', function (e) {\n self.fire('play', e);\n\n // check for the start time and start with it\n if (self.options.startTime && e.seconds === 0) {\n self.play(self.options.startTime);\n }\n });\n self.player.on('pause', function (e) {\n self.fire('pause', e);\n });\n self.player.on('ended', function (e) {\n self.fire('ended', e);\n });\n self.player.on('loaded', function (e) {\n self.fire('ready', e);\n });\n self.player.on('volumechange', function (e) {\n self.fire('volumechange', e);\n });\n }\n\n // Local\n function addSourceToLocal(element, src, type) {\n var source = document.createElement('source');\n source.src = src;\n source.type = type;\n element.appendChild(source);\n }\n if (self.type === 'local') {\n if (!self.$video) {\n self.$video = document.createElement('video');\n\n // show controls\n if (self.options.showContols) {\n self.$video.controls = true;\n }\n\n // mute\n if (self.options.mute) {\n self.$video.muted = true;\n } else if (self.$video.volume) {\n self.$video.volume = self.options.volume / 100;\n }\n\n // loop\n if (self.options.loop) {\n self.$video.loop = true;\n }\n\n // autoplay enable on mobile devices\n self.$video.setAttribute('playsinline', '');\n self.$video.setAttribute('webkit-playsinline', '');\n\n self.$video.setAttribute('id', self.playerID);\n hiddenDiv.appendChild(self.$video);\n document.body.appendChild(hiddenDiv);\n\n Object.keys(self.videoID).forEach(function (key) {\n addSourceToLocal(self.$video, self.videoID[key], 'video/' + key);\n });\n }\n\n self.player = self.player || self.$video;\n\n var locStarted = void 0;\n self.player.addEventListener('playing', function (e) {\n if (!locStarted) {\n self.fire('started', e);\n }\n locStarted = 1;\n });\n self.player.addEventListener('timeupdate', function (e) {\n self.fire('timeupdate', e);\n\n // check for end of video and play again or stop\n if (self.options.endTime) {\n if (self.options.endTime && this.currentTime >= self.options.endTime) {\n if (self.options.loop) {\n self.play(self.options.startTime);\n } else {\n self.pause();\n }\n }\n }\n });\n self.player.addEventListener('play', function (e) {\n self.fire('play', e);\n });\n self.player.addEventListener('pause', function (e) {\n self.fire('pause', e);\n });\n self.player.addEventListener('ended', function (e) {\n self.fire('ended', e);\n });\n self.player.addEventListener('loadedmetadata', function () {\n // get video width and height\n self.videoWidth = this.videoWidth || 1280;\n self.videoHeight = this.videoHeight || 720;\n\n self.fire('ready');\n\n // autoplay\n if (self.options.autoplay) {\n self.play(self.options.startTime);\n }\n });\n self.player.addEventListener('volumechange', function (e) {\n self.getVolume(function (volume) {\n self.options.volume = volume;\n });\n self.fire('volumechange', e);\n });\n }\n\n callback(self.$video);\n });\n }\n }, {\n key: 'init',\n value: function init() {\n var self = this;\n\n self.playerID = 'VideoWorker-' + self.ID;\n }\n }, {\n key: 'loadAPI',\n value: function loadAPI() {\n var self = this;\n\n if (YoutubeAPIadded && VimeoAPIadded) {\n return;\n }\n\n var src = '';\n\n // load Youtube API\n if (self.type === 'youtube' && !YoutubeAPIadded) {\n YoutubeAPIadded = 1;\n src = 'https://www.youtube.com/iframe_api';\n }\n\n // load Vimeo API\n if (self.type === 'vimeo' && !VimeoAPIadded) {\n VimeoAPIadded = 1;\n src = 'https://player.vimeo.com/api/player.js';\n }\n\n if (!src) {\n return;\n }\n\n // add script in head section\n var tag = document.createElement('script');\n var head = document.getElementsByTagName('head')[0];\n tag.src = src;\n\n head.appendChild(tag);\n\n head = null;\n tag = null;\n }\n }, {\n key: 'onAPIready',\n value: function onAPIready(callback) {\n var self = this;\n\n // Youtube\n if (self.type === 'youtube') {\n // Listen for global YT player callback\n if ((typeof YT === 'undefined' || YT.loaded === 0) && !loadingYoutubePlayer) {\n // Prevents Ready event from being called twice\n loadingYoutubePlayer = 1;\n\n // Creates deferred so, other players know when to wait.\n window.onYouTubeIframeAPIReady = function () {\n window.onYouTubeIframeAPIReady = null;\n loadingYoutubeDefer.resolve('done');\n callback();\n };\n } else if ((typeof YT === 'undefined' ? 'undefined' : _typeof(YT)) === 'object' && YT.loaded === 1) {\n callback();\n } else {\n loadingYoutubeDefer.done(function () {\n callback();\n });\n }\n }\n\n // Vimeo\n if (self.type === 'vimeo') {\n if (typeof Vimeo === 'undefined' && !loadingVimeoPlayer) {\n loadingVimeoPlayer = 1;\n var vimeoInterval = setInterval(function () {\n if (typeof Vimeo !== 'undefined') {\n clearInterval(vimeoInterval);\n loadingVimeoDefer.resolve('done');\n callback();\n }\n }, 20);\n } else if (typeof Vimeo !== 'undefined') {\n callback();\n } else {\n loadingVimeoDefer.done(function () {\n callback();\n });\n }\n }\n\n // Local\n if (self.type === 'local') {\n callback();\n }\n }\n }]);\n\n return VideoWorker;\n}();\n\nexports.default = VideoWorker;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = jarallaxVideo;\n\nvar _videoWorker = __webpack_require__(8);\n\nvar _videoWorker2 = _interopRequireDefault(_videoWorker);\n\nvar _global = __webpack_require__(4);\n\nvar _global2 = _interopRequireDefault(_global);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction jarallaxVideo() {\n var jarallax = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _global2.default.jarallax;\n\n if (typeof jarallax === 'undefined') {\n return;\n }\n\n var Jarallax = jarallax.constructor;\n\n // append video after init Jarallax\n var defInit = Jarallax.prototype.init;\n Jarallax.prototype.init = function () {\n var self = this;\n\n defInit.apply(self);\n\n if (self.video && !self.options.disableVideo()) {\n self.video.getVideo(function (video) {\n var $parent = video.parentNode;\n self.css(video, {\n position: self.image.position,\n top: '0px',\n left: '0px',\n right: '0px',\n bottom: '0px',\n width: '100%',\n height: '100%',\n maxWidth: 'none',\n maxHeight: 'none',\n margin: 0,\n zIndex: -1\n });\n self.$video = video;\n self.image.$container.appendChild(video);\n\n // remove parent video element (created by VideoWorker)\n $parent.parentNode.removeChild($parent);\n });\n }\n };\n\n // cover video\n var defCoverImage = Jarallax.prototype.coverImage;\n Jarallax.prototype.coverImage = function () {\n var self = this;\n var imageData = defCoverImage.apply(self);\n var node = self.image.$item ? self.image.$item.nodeName : false;\n\n if (imageData && self.video && node && (node === 'IFRAME' || node === 'VIDEO')) {\n var h = imageData.image.height;\n var w = h * self.image.width / self.image.height;\n var ml = (imageData.container.width - w) / 2;\n var mt = imageData.image.marginTop;\n\n if (imageData.container.width > w) {\n w = imageData.container.width;\n h = w * self.image.height / self.image.width;\n ml = 0;\n mt += (imageData.image.height - h) / 2;\n }\n\n // add video height over than need to hide controls\n if (node === 'IFRAME') {\n h += 400;\n mt -= 200;\n }\n\n self.css(self.$video, {\n width: w + 'px',\n marginLeft: ml + 'px',\n height: h + 'px',\n marginTop: mt + 'px'\n });\n }\n\n return imageData;\n };\n\n // init video\n var defInitImg = Jarallax.prototype.initImg;\n Jarallax.prototype.initImg = function () {\n var self = this;\n var defaultResult = defInitImg.apply(self);\n\n if (!self.options.videoSrc) {\n self.options.videoSrc = self.$item.getAttribute('data-jarallax-video') || null;\n }\n\n if (self.options.videoSrc) {\n self.defaultInitImgResult = defaultResult;\n return true;\n }\n\n return defaultResult;\n };\n\n var defCanInitParallax = Jarallax.prototype.canInitParallax;\n Jarallax.prototype.canInitParallax = function () {\n var self = this;\n var defaultResult = defCanInitParallax.apply(self);\n\n if (!self.options.videoSrc) {\n return defaultResult;\n }\n\n var video = new _videoWorker2.default(self.options.videoSrc, {\n autoplay: true,\n loop: true,\n showContols: false,\n startTime: self.options.videoStartTime || 0,\n endTime: self.options.videoEndTime || 0,\n mute: self.options.videoVolume ? 0 : 1,\n volume: self.options.videoVolume || 0\n });\n\n if (video.isValid()) {\n // if parallax will not be inited, we can add thumbnail on background.\n if (!defaultResult) {\n if (!self.defaultInitImgResult) {\n video.getImageURL(function (url) {\n // save default user styles\n var curStyle = self.$item.getAttribute('style');\n if (curStyle) {\n self.$item.setAttribute('data-jarallax-original-styles', curStyle);\n }\n\n // set new background\n self.css(self.$item, {\n 'background-image': 'url(\"' + url + '\")',\n 'background-position': 'center',\n 'background-size': 'cover'\n });\n });\n }\n\n // init video\n } else {\n video.on('ready', function () {\n if (self.options.videoPlayOnlyVisible) {\n var oldOnScroll = self.onScroll;\n self.onScroll = function () {\n oldOnScroll.apply(self);\n if (self.isVisible()) {\n video.play();\n } else {\n video.pause();\n }\n };\n } else {\n video.play();\n }\n });\n\n video.on('started', function () {\n self.image.$default_item = self.image.$item;\n self.image.$item = self.$video;\n\n // set video width and height\n self.image.width = self.video.videoWidth || 1280;\n self.image.height = self.video.videoHeight || 720;\n self.options.imgWidth = self.image.width;\n self.options.imgHeight = self.image.height;\n self.coverImage();\n self.clipContainer();\n self.onScroll();\n\n // hide image\n if (self.image.$default_item) {\n self.image.$default_item.style.display = 'none';\n }\n });\n\n self.video = video;\n\n // set image if not exists\n if (!self.defaultInitImgResult) {\n if (video.type !== 'local') {\n video.getImageURL(function (url) {\n self.image.src = url;\n self.init();\n });\n\n return false;\n }\n\n // set empty image on local video if not defined\n self.image.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\n return true;\n }\n }\n }\n\n return defaultResult;\n };\n\n // Destroy video parallax\n var defDestroy = Jarallax.prototype.destroy;\n Jarallax.prototype.destroy = function () {\n var self = this;\n\n if (self.image.$default_item) {\n self.image.$item = self.image.$default_item;\n delete self.image.$default_item;\n }\n\n defDestroy.apply(self);\n };\n}\n\n/***/ })\n/******/ ]);","/*! npm.im/object-fit-images 3.2.4 */\nvar objectFitImages = (function () {\n'use strict';\n\nvar OFI = 'bfred-it:object-fit-images';\nvar propRegex = /(object-fit|object-position)\\s*:\\s*([-.\\w\\s%]+)/g;\nvar testImg = typeof Image === 'undefined' ? {style: {'object-position': 1}} : new Image();\nvar supportsObjectFit = 'object-fit' in testImg.style;\nvar supportsObjectPosition = 'object-position' in testImg.style;\nvar supportsOFI = 'background-size' in testImg.style;\nvar supportsCurrentSrc = typeof testImg.currentSrc === 'string';\nvar nativeGetAttribute = testImg.getAttribute;\nvar nativeSetAttribute = testImg.setAttribute;\nvar autoModeEnabled = false;\n\nfunction createPlaceholder(w, h) {\n\treturn (\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='\" + w + \"' height='\" + h + \"'%3E%3C/svg%3E\");\n}\n\nfunction polyfillCurrentSrc(el) {\n\tif (el.srcset && !supportsCurrentSrc && window.picturefill) {\n\t\tvar pf = window.picturefill._;\n\t\t// parse srcset with picturefill where currentSrc isn't available\n\t\tif (!el[pf.ns] || !el[pf.ns].evaled) {\n\t\t\t// force synchronous srcset parsing\n\t\t\tpf.fillImg(el, {reselect: true});\n\t\t}\n\n\t\tif (!el[pf.ns].curSrc) {\n\t\t\t// force picturefill to parse srcset\n\t\t\tel[pf.ns].supported = false;\n\t\t\tpf.fillImg(el, {reselect: true});\n\t\t}\n\n\t\t// retrieve parsed currentSrc, if any\n\t\tel.currentSrc = el[pf.ns].curSrc || el.src;\n\t}\n}\n\nfunction getStyle(el) {\n\tvar style = getComputedStyle(el).fontFamily;\n\tvar parsed;\n\tvar props = {};\n\twhile ((parsed = propRegex.exec(style)) !== null) {\n\t\tprops[parsed[1]] = parsed[2];\n\t}\n\treturn props;\n}\n\nfunction setPlaceholder(img, width, height) {\n\t// Default: fill width, no height\n\tvar placeholder = createPlaceholder(width || 1, height || 0);\n\n\t// Only set placeholder if it's different\n\tif (nativeGetAttribute.call(img, 'src') !== placeholder) {\n\t\tnativeSetAttribute.call(img, 'src', placeholder);\n\t}\n}\n\nfunction onImageReady(img, callback) {\n\t// naturalWidth is only available when the image headers are loaded,\n\t// this loop will poll it every 100ms.\n\tif (img.naturalWidth) {\n\t\tcallback(img);\n\t} else {\n\t\tsetTimeout(onImageReady, 100, img, callback);\n\t}\n}\n\nfunction fixOne(el) {\n\tvar style = getStyle(el);\n\tvar ofi = el[OFI];\n\tstyle['object-fit'] = style['object-fit'] || 'fill'; // default value\n\n\t// Avoid running where unnecessary, unless OFI had already done its deed\n\tif (!ofi.img) {\n\t\t// fill is the default behavior so no action is necessary\n\t\tif (style['object-fit'] === 'fill') {\n\t\t\treturn;\n\t\t}\n\n\t\t// Where object-fit is supported and object-position isn't (Safari < 10)\n\t\tif (\n\t\t\t!ofi.skipTest && // unless user wants to apply regardless of browser support\n\t\t\tsupportsObjectFit && // if browser already supports object-fit\n\t\t\t!style['object-position'] // unless object-position is used\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// keep a clone in memory while resetting the original to a blank\n\tif (!ofi.img) {\n\t\tofi.img = new Image(el.width, el.height);\n\t\tofi.img.srcset = nativeGetAttribute.call(el, \"data-ofi-srcset\") || el.srcset;\n\t\tofi.img.src = nativeGetAttribute.call(el, \"data-ofi-src\") || el.src;\n\n\t\t// preserve for any future cloneNode calls\n\t\t// https://github.com/bfred-it/object-fit-images/issues/53\n\t\tnativeSetAttribute.call(el, \"data-ofi-src\", el.src);\n\t\tif (el.srcset) {\n\t\t\tnativeSetAttribute.call(el, \"data-ofi-srcset\", el.srcset);\n\t\t}\n\n\t\tsetPlaceholder(el, el.naturalWidth || el.width, el.naturalHeight || el.height);\n\n\t\t// remove srcset because it overrides src\n\t\tif (el.srcset) {\n\t\t\tel.srcset = '';\n\t\t}\n\t\ttry {\n\t\t\tkeepSrcUsable(el);\n\t\t} catch (err) {\n\t\t\tif (window.console) {\n\t\t\t\tconsole.warn('https://bit.ly/ofi-old-browser');\n\t\t\t}\n\t\t}\n\t}\n\n\tpolyfillCurrentSrc(ofi.img);\n\n\tel.style.backgroundImage = \"url(\\\"\" + ((ofi.img.currentSrc || ofi.img.src).replace(/\"/g, '\\\\\"')) + \"\\\")\";\n\tel.style.backgroundPosition = style['object-position'] || 'center';\n\tel.style.backgroundRepeat = 'no-repeat';\n\tel.style.backgroundOrigin = 'content-box';\n\n\tif (/scale-down/.test(style['object-fit'])) {\n\t\tonImageReady(ofi.img, function () {\n\t\t\tif (ofi.img.naturalWidth > el.width || ofi.img.naturalHeight > el.height) {\n\t\t\t\tel.style.backgroundSize = 'contain';\n\t\t\t} else {\n\t\t\t\tel.style.backgroundSize = 'auto';\n\t\t\t}\n\t\t});\n\t} else {\n\t\tel.style.backgroundSize = style['object-fit'].replace('none', 'auto').replace('fill', '100% 100%');\n\t}\n\n\tonImageReady(ofi.img, function (img) {\n\t\tsetPlaceholder(el, img.naturalWidth, img.naturalHeight);\n\t});\n}\n\nfunction keepSrcUsable(el) {\n\tvar descriptors = {\n\t\tget: function get(prop) {\n\t\t\treturn el[OFI].img[prop ? prop : 'src'];\n\t\t},\n\t\tset: function set(value, prop) {\n\t\t\tel[OFI].img[prop ? prop : 'src'] = value;\n\t\t\tnativeSetAttribute.call(el, (\"data-ofi-\" + prop), value); // preserve for any future cloneNode\n\t\t\tfixOne(el);\n\t\t\treturn value;\n\t\t}\n\t};\n\tObject.defineProperty(el, 'src', descriptors);\n\tObject.defineProperty(el, 'currentSrc', {\n\t\tget: function () { return descriptors.get('currentSrc'); }\n\t});\n\tObject.defineProperty(el, 'srcset', {\n\t\tget: function () { return descriptors.get('srcset'); },\n\t\tset: function (ss) { return descriptors.set(ss, 'srcset'); }\n\t});\n}\n\nfunction hijackAttributes() {\n\tfunction getOfiImageMaybe(el, name) {\n\t\treturn el[OFI] && el[OFI].img && (name === 'src' || name === 'srcset') ? el[OFI].img : el;\n\t}\n\tif (!supportsObjectPosition) {\n\t\tHTMLImageElement.prototype.getAttribute = function (name) {\n\t\t\treturn nativeGetAttribute.call(getOfiImageMaybe(this, name), name);\n\t\t};\n\n\t\tHTMLImageElement.prototype.setAttribute = function (name, value) {\n\t\t\treturn nativeSetAttribute.call(getOfiImageMaybe(this, name), name, String(value));\n\t\t};\n\t}\n}\n\nfunction fix(imgs, opts) {\n\tvar startAutoMode = !autoModeEnabled && !imgs;\n\topts = opts || {};\n\timgs = imgs || 'img';\n\n\tif ((supportsObjectPosition && !opts.skipTest) || !supportsOFI) {\n\t\treturn false;\n\t}\n\n\t// use imgs as a selector or just select all images\n\tif (imgs === 'img') {\n\t\timgs = document.getElementsByTagName('img');\n\t} else if (typeof imgs === 'string') {\n\t\timgs = document.querySelectorAll(imgs);\n\t} else if (!('length' in imgs)) {\n\t\timgs = [imgs];\n\t}\n\n\t// apply fix to all\n\tfor (var i = 0; i < imgs.length; i++) {\n\t\timgs[i][OFI] = imgs[i][OFI] || {\n\t\t\tskipTest: opts.skipTest\n\t\t};\n\t\tfixOne(imgs[i]);\n\t}\n\n\tif (startAutoMode) {\n\t\tdocument.body.addEventListener('load', function (e) {\n\t\t\tif (e.target.tagName === 'IMG') {\n\t\t\t\tfix(e.target, {\n\t\t\t\t\tskipTest: opts.skipTest\n\t\t\t\t});\n\t\t\t}\n\t\t}, true);\n\t\tautoModeEnabled = true;\n\t\timgs = 'img'; // reset to a generic selector for watchMQ\n\t}\n\n\t// if requested, watch media queries for object-fit change\n\tif (opts.watchMQ) {\n\t\twindow.addEventListener('resize', fix.bind(null, imgs, {\n\t\t\tskipTest: opts.skipTest\n\t\t}));\n\t}\n}\n\nfix.supportsObjectFit = supportsObjectFit;\nfix.supportsObjectPosition = supportsObjectPosition;\n\nhijackAttributes();\n\nreturn fix;\n\n}());\n","/*!\n * ClockPicker v0.0.7 (http://weareoutman.github.io/clockpicker/)\n * Copyright 2014 Wang Shenwei.\n * Licensed under MIT (https://github.com/weareoutman/clockpicker/blob/gh-pages/LICENSE)\n *\n * Further modified\n * Copyright 2015 Ching Yaw Hao.\n */\n\n;(function(){\n\tvar $ = window.jQuery,\n\t\t\t$win = $(window),\n\t\t\t$doc = $(document);\n\n\t// Can I use inline svg ?\n\tvar svgNS = 'http://www.w3.org/2000/svg',\n\t\t svgSupported = 'SVGAngle' in window && (function() {\n\t\t\t var supported,\n\t\t\t\tel = document.createElement('div');\n\t\t\t\tel.innerHTML = '';\n\t\t\t\tsupported = (el.firstChild && el.firstChild.namespaceURI) == svgNS;\n\t\t\t\tel.innerHTML = '';\n\t\t\t\treturn supported;\n\t\t\t})();\n\n\t// Can I use transition ?\n\tvar transitionSupported = (function() {\n\t\tvar style = document.createElement('div').style;\n\t\treturn 'transition' in style ||\n\t\t\t\t\t 'WebkitTransition' in style ||\n\t\t\t\t 'MozTransition' in style ||\n\t\t\t\t\t 'msTransition' in style ||\n\t\t\t\t\t 'OTransition' in style;\n\t})();\n\n\t// Listen touch events in touch screen device, instead of mouse events in desktop.\n\tvar touchSupported = 'ontouchstart' in window,\n\t\t\tmousedownEvent = 'mousedown' + ( touchSupported ? ' touchstart' : ''),\n\t\t\tmousemoveEvent = 'mousemove.clockpicker' + ( touchSupported ? ' touchmove.clockpicker' : ''),\n\t\t\tmouseupEvent = 'mouseup.clockpicker' + ( touchSupported ? ' touchend.clockpicker' : '');\n\n\t// Vibrate the device if supported\n\tvar vibrate = navigator.vibrate ? 'vibrate' : navigator.webkitVibrate ? 'webkitVibrate' : null;\n\n\tfunction createSvgElement(name) {\n\t\treturn document.createElementNS(svgNS, name);\n\t}\n\n function debounce(func, wait, immediate) {\n var timeout;\n return function() {\n var context = this, args = arguments;\n var later = function() {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n}\n\n\tfunction leadingZero(num) {\n\t\treturn (num < 10 ? '0' : '') + num;\n\t}\n\n\t// Get a unique id\n\tvar idCounter = 0;\n\tfunction uniqueId(prefix) {\n\t\tvar id = ++idCounter + '';\n\t\treturn prefix ? prefix + id : id;\n\t}\n\n\t// Clock size\n\tvar dialRadius = 135,\n\t\t\touterRadius = 110,\n\t\t\t// innerRadius = 80 on 12 hour clock\n\t\t\tinnerRadius = 80,\n\t\t\ttickRadius = 20,\n\t\t\tdiameter = dialRadius * 2,\n\t\t\tduration = transitionSupported ? 350 : 1;\n\n\t// Popover template\n\tvar tpl = [\n\t\t'
      ',\n\t\t\t'
      ',\n\t\t\t\t'
      ',\n\t\t\t\t\t'
      ',\n\t\t\t\t\t\t'
      ',\n\t\t\t\t\t\t\t'
      ',\n\t\t\t\t\t\t\t\t'
      ',\n\t\t\t\t\t\t\t\t\t'
      ',\n\t\t\t\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t\t\t\t':',\n\t\t\t\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t\t\t'
      ',\n\t\t\t\t\t\t\t\t\t'
      ',\n\t\t\t\t\t\t\t\t\t\t'
      ',\n\t\t\t\t\t\t\t\t\t'
      ',\n\t\t\t\t\t\t\t\t'
      ',\n\t\t\t\t\t\t\t'
      ',\n\t\t\t\t\t\t\t'
      ',\n\t\t\t\t\t\t\t\t'
      ',\n\t\t\t\t\t\t\t\t\t'
      ',\n\t\t\t\t\t\t\t\t\t'
      ',\n\t\t\t\t\t\t\t\t\t'
      ',\n\t\t\t\t\t\t\t\t'
      ',\n\t\t\t\t\t\t\t\t'
      ',\n\t\t\t\t\t\t\t\t'
      ',\n\t\t\t\t\t\t\t'
      ',\n\t\t\t\t\t\t\t'
      ',\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\t].join('');\n\n\t// ClockPicker\n\tfunction ClockPicker(element, options) {\n\t\tvar popover = $(tpl),\n\t\t\t\tplate = popover.find('.clockpicker-plate'),\n\t\t\t\tholder = popover.find('.picker__holder'),\n\t\t\t\thoursView = popover.find('.clockpicker-hours'),\n\t\t\t\tminutesView = popover.find('.clockpicker-minutes'),\n\t\t\t\tamPmBlock = popover.find('.clockpicker-am-pm-block'),\n\t\t\t\tisInput = element.prop('tagName') === 'INPUT',\n input = isInput ? element : element.find('input'),\n isHTML5 = input.prop('type') === 'time',\n\t\t\t\tlabel = $(\"label[for=\" + input.attr(\"id\") + \"]\"),\n\t\t\t\tself = this,\n\t\t\t\ttimer;\n\n\t\tthis.id = uniqueId('cp');\n\t\tthis.element = element;\n\t\tthis.holder = holder;\n\t\tthis.options = options;\n\t\tthis.isAppended = false;\n\t\tthis.isShown = false;\n\t\tthis.currentView = 'hours';\n\t\tthis.isInput = isInput;\n\t\tthis.input = input;\n\t\tthis.label = label;\n\t\tthis.popover = popover;\n\t\tthis.plate = plate;\n\t\tthis.hoursView = hoursView;\n\t\tthis.minutesView = minutesView;\n\t\tthis.amPmBlock = amPmBlock;\n\t\tthis.spanHours = popover.find('.clockpicker-span-hours');\n\t\tthis.spanMinutes = popover.find('.clockpicker-span-minutes');\n\t\tthis.spanAmPm = popover.find('.clockpicker-span-am-pm');\n\t\tthis.footer = popover.find('.picker__footer');\n\t\tthis.amOrPm = \"\";\n\t\tthis.isTwelvehour = options.twelvehour;\n\t\tthis.minTime = 0;\n this.maxTime = 0;\n this.minMinutes = 0;\n this.maxMinutes = 59;\n this.minHours = 0;\n this.maxHours = 23;\n this.isInvalidTimeScope = false;\n\n const parseTimeOptions = (scope) => {\n const time = scope + 'Time';\n this[time] = options[scope].split(':');\n \n // user can set using am/pm. Convert 12h clock settings to 24h clock settings \n if (this[time][1].length === 4) {\n const period = this[time][1].replace(/\\d+/g, '').toUpperCase();\n this[time][1] = this[time][1].replace(/\\D+/g, '');\n if (period === 'PM') \n this[time][0] = parseInt(this[time][0]) + 12\n }\n \n if (this[time].length !== 2)\n this[time] = null;\n else {\n for (let i = 0; i < this[time].length; i++) {\n this[time][i] = +this[time][i];\n }\n }\n }\n\n // Parse minTime Option\n if (options.min) {\n parseTimeOptions('min');\n this.minMinutes = this.minTime[1];\n this.minHours = this.minTime[0];\n }\n\n // Parse maxTime Option\n if (options.max) {\n parseTimeOptions('max');\n\n // Ensure that max is after min, if not remove the max it's invalid\n if ((this.minHours > this.maxHours) || (this.minHours === this.maxHours && this.minMinutes >= this.maxMinutes)) {\n this.maxTime = 0;\n } else {\n this.maxMinutes = this.maxTime[1];\n this.maxHours = this.maxTime[0];\n }\n }\n\n\t\t// Setup for for 12 hour clock if option is selected\n\t\tif (options.twelvehour) {\n\t\t\tvar amPmButtonsTemplate = [\n\t\t\t\t'
      ',\n\t\t\t\t\t'',\n\t\t\t\t\t'',\n\t\t\t\t'
      '\n\t\t\t].join('');\n\n\t\t\tvar amPmButtons = $(amPmButtonsTemplate);\n \n const togglePeriod = (period) => {\n let previsiousPeriod = 'pm';\n\n if (period === 'PM')\n previsiousPeriod = 'am';\n \n self.amOrPm = period;\n self.amPmBlock.children(`.${previsiousPeriod}-button`).removeClass('active');\n self.amPmBlock.children(`.${period.toLowerCase()}-button`).addClass('active');\n self.spanAmPm.empty().append(period);\n\n this.disableOutOfRangeElements();\n\t\t\t}\n\n\t\t\tif (!options.ampmclickable) {\n\t\t\t\t$('').on(\"click\", function() {\n togglePeriod('AM');\n\t\t\t\t}).appendTo(this.amPmBlock);\n\t\t\t\t$('').on(\"click\", function() {\n togglePeriod('PM');\n\t\t\t\t}).appendTo(this.amPmBlock);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.spanAmPm.empty();\n\t\t\t\t$('
      AM
      ').on(\"click\", function() {\n\t\t\t\t\tself.spanAmPm.children('#click-am').addClass(\"text-primary\");\n\t\t\t\t\tself.spanAmPm.children('#click-pm').removeClass(\"text-primary\");\n\t\t\t\t\tself.amOrPm = \"AM\";\n\t\t\t\t}).appendTo(this.spanAmPm);\n\t\t\t\t$('
      PM
      ').on(\"click\", function() {\n\t\t\t\t\tself.spanAmPm.children('#click-pm').addClass(\"text-primary\");\n\t\t\t\t\tself.spanAmPm.children('#click-am').removeClass(\"text-primary\");\n\t\t\t\t\tself.amOrPm = 'PM';\n\t\t\t\t}).appendTo(this.spanAmPm);\n }\n }\n \n\n\t\tif(options.darktheme)\n\t\t\tpopover.addClass('darktheme');\n\n\t\t\t// If autoclose is not setted, append a button\n\t\t$('').click($.proxy(this.done, this)).appendTo(this.footer);\n\n\t\t$('').click($.proxy(this.clearInput, this)).appendTo(this.footer);\n\t\tthis.spanHours.click($.proxy(this.toggleView, this, 'hours'));\n\t\tthis.spanMinutes.click($.proxy(this.toggleView, this, 'minutes'));\n\n\t\t// Show or toggle\n\t\tinput.on('click.clockpicker', debounce( $.proxy(this.show, this), 100));\n\n\t\t// Build ticks\n\t\tvar tickTpl = $('
      '),\n\t\t\t\ti, tick, radian, radius;\n\n\t\t// Hours view\n if (options.twelvehour) {\n for (i = 0; i < 12; i += options.hourstep) {\n tick = tickTpl.clone();\n radian = i / 6 * Math.PI;\n radius = outerRadius;\n tick.css('font-size', '140%');\n tick.css({\n left: dialRadius + Math.sin(radian) * radius - tickRadius,\n top: dialRadius - Math.cos(radian) * radius - tickRadius\n });\n tick.html(i === 0 ? 12 : i);\n hoursView.append(tick);\n tick.on(mousedownEvent, mousedown);\n this.disableOutOfRangeElements();\n }\n\t\t} else {\n for (i = 0; i < 24; i += options.hourstep) {\n tick = tickTpl.clone();\n radian = i / 6 * Math.PI;\n var inner = i > 0 && i < 13;\n radius = inner ? innerRadius : outerRadius;\n tick.css({\n left: dialRadius + Math.sin(radian) * radius - tickRadius,\n top: dialRadius - Math.cos(radian) * radius - tickRadius\n });\n if (inner) {\n tick.css('font-size', '120%');\n }\n tick.html(i === 0 ? '00' : i);\n hoursView.append(tick);\n tick.on(mousedownEvent, mousedown);\n this.disableOutOfRangeElements();\n }\n\t\t}\n\n // Minutes view\n var incrementValue = Math.max(options.minutestep, 5);\n for (i = 0; i < 60; i += incrementValue) {\n for (i = 0; i < 60; i += 5) {\n tick = tickTpl.clone();\n radian = i / 30 * Math.PI;\n tick.css({\n left: dialRadius + Math.sin(radian) * outerRadius - tickRadius,\n top: dialRadius - Math.cos(radian) * outerRadius - tickRadius\n });\n tick.css('font-size', '140%');\n tick.html(leadingZero(i));\n minutesView.append(tick);\n tick.on(mousedownEvent, mousedown);\n }\n }\n\t\t\n\t\t// Clicking on minutes view space\n\t\tplate.on(mousedownEvent, function(e) {\n\t\t\tif ($(e.target).closest('.clockpicker-tick').length === 0)\n\t\t\t\tmousedown(e, true);\n\t\t});\n\n\t\t// Mousedown or touchstart\n\t\tfunction mousedown(e, space) {\n\t\t\tvar offset = plate.offset(),\n\t\t\t\t\tisTouch = /^touch/.test(e.type),\n\t\t\t\t\tx0 = offset.left + dialRadius,\n\t\t\t\t\ty0 = offset.top + dialRadius,\n\t\t\t\t\tdx = (isTouch ? e.originalEvent.touches[0] : e).pageX - x0,\n\t\t\t\t\tdy = (isTouch ? e.originalEvent.touches[0] : e).pageY - y0,\n\t\t\t\t\tz = Math.sqrt(dx * dx + dy * dy),\n\t\t\t\t\tmoved = false;\n\n\t\t\t// When clicking on minutes view space, check the mouse position\n\t\t\tif (space && (z < outerRadius - tickRadius || z > outerRadius + tickRadius))\n\t\t\t\treturn;\n\t\t\te.preventDefault();\n\n\t\t\t// Set cursor style of body after 200ms\n\t\t\tvar movingTimer = setTimeout(function(){\n\t\t\t\tself.popover.addClass('clockpicker-moving');\n\t\t\t}, 200);\n\n\t\t\t// Place the canvas to top\n\t\t\tif (svgSupported)\n\t\t\t\tplate.append(self.canvas);\n\n\t\t\t// Clock\n\t\t\tself.setHand(dx, dy, !space, true);\n\n\t\t\t// Mousemove on document\n\t\t\t$doc.off(mousemoveEvent).on(mousemoveEvent, function(e){\n\t\t\t\te.preventDefault();\n\t\t\t\tvar isTouch = /^touch/.test(e.type),\n\t\t\t\t\t\tx = (isTouch ? e.originalEvent.touches[0] : e).pageX - x0,\n\t\t\t\t\t\ty = (isTouch ? e.originalEvent.touches[0] : e).pageY - y0;\n\t\t\t\tif (! moved && x === dx && y === dy)\n\t\t\t\t\t// Clicking in chrome on windows will trigger a mousemove event\n\t\t\t\t\treturn;\n\t\t\t\tmoved = true;\n\t\t\t\tself.setHand(x, y, false, true);\n\t\t\t});\n\n\t\t\t// Mouseup on document\n\t\t\t$doc.off(mouseupEvent).on(mouseupEvent, function(e) {\n\t\t\t\t$doc.off(mouseupEvent);\n\t\t\t\te.preventDefault();\n\t\t\t\tvar isTouch = /^touch/.test(e.type),\n\t\t\t\t\t\tx = (isTouch ? e.originalEvent.changedTouches[0] : e).pageX - x0,\n\t\t\t\t\t\ty = (isTouch ? e.originalEvent.changedTouches[0] : e).pageY - y0;\n\t\t\t\tif ((space || moved) && x === dx && y === dy)\n self.setHand(x, y);\n \n let {hours, minutes, amOrPm, maxHours, minHours, maxMinutes, minMinutes} = self;\n \n if (amOrPm === 'PM') {\n if (minHours < 12)\n minHours = 0;\n if (minHours > 12)\n minHours -= 12;\n if (maxHours > 12)\n maxHours -= 12; \n }\n\n // dont toggleView if selected time out of scope\n if (self.isInvalidTimeScope) {\n self.isInvalidTimeScope = false;\n e.stopPropagation();\n }\n else if (self.currentView === 'hours')\n self.toggleView('minutes', duration / 2);\n else if (self.currentView != 'hours' && options.autoclose) {\n self.minutesView.addClass('clockpicker-dial-out');\n setTimeout(function(){\n self.done();\n }, duration / 2);\n self.currentHours = 0\n } \n\n\t\t\t\tplate.prepend(canvas);\n\n\t\t\t\t// Reset cursor style of body\n\t\t\t\tclearTimeout(movingTimer);\n\t\t\t\tself.popover.removeClass('clockpicker-moving');\n\n\t\t\t\t// Unbind mousemove event\n\t\t\t\t$doc.off(mousemoveEvent);\n });\n self.disableOutOfRangeElements();\n\t\t}\n\n\t\tif (svgSupported) {\n\t\t\t// Draw clock hands and others\n\t\t\tvar canvas = popover.find('.clockpicker-canvas'),\n\t\t\t\t\tsvg = createSvgElement('svg');\n\t\t\tsvg.setAttribute('class', 'clockpicker-svg');\n\t\t\tsvg.setAttribute('width', diameter);\n\t\t\tsvg.setAttribute('height', diameter);\n\t\t\tvar g = createSvgElement('g');\n\t\t\tg.setAttribute('transform', 'translate(' + dialRadius + ',' + dialRadius + ')');\n\t\t\tvar bearing = createSvgElement('circle');\n\t\t\tbearing.setAttribute('class', 'clockpicker-canvas-bearing');\n\t\t\tbearing.setAttribute('cx', 0);\n\t\t\tbearing.setAttribute('cy', 0);\n\t\t\tbearing.setAttribute('r', 2);\n\t\t\tvar hand = createSvgElement('line');\n\t\t\thand.setAttribute('x1', 0);\n hand.setAttribute('y1', 0);\n\t\t\tvar bg = createSvgElement('circle');\n\t\t\tbg.setAttribute('class', 'clockpicker-canvas-bg');\n\t\t\tbg.setAttribute('r', tickRadius);\n\t\t\tvar fg = createSvgElement('circle');\n\t\t\tfg.setAttribute('class', 'clockpicker-canvas-fg');\n\t\t\tfg.setAttribute('r', 5);\n\t\t\tg.appendChild(hand);\n\t\t\tg.appendChild(bg);\n\t\t\tg.appendChild(fg);\n\t\t\tg.appendChild(bearing);\n\t\t\tsvg.appendChild(g);\n\t\t\tcanvas.append(svg);\n\n\t\t\tthis.hand = hand;\n\t\t\tthis.bg = bg;\n\t\t\tthis.fg = fg;\n\t\t\tthis.bearing = bearing;\n\t\t\tthis.g = g;\n\t\t\tthis.canvas = canvas;\n\t\t}\n\n\t\traiseCallback(this.options.init);\n\t}\n\n\tfunction raiseCallback(callbackFunction) {\n\t\tif(callbackFunction && typeof callbackFunction === \"function\")\n\t\t\tcallbackFunction();\n\t}\n\n\t// Default options\n\tClockPicker.DEFAULTS = {\n\t\t'default': '', // default time, 'now' or '13:14' e.g.\n\t\tfromnow: 0, // set default time to * milliseconds from now (using with default = 'now')\n donetext: 'Done', // done button text\n cleartext: 'Clear', // clear button text\n\t\tautoclose: false, // auto close when minute is selected\n\t\tampmclickable: false, // set am/pm button on itself\n\t\tdarktheme: false,\t\t\t // set to dark theme\n\t\ttwelvehour: false, // change to 12 hour AM/PM clock from 24 hour\n vibrate: true, // vibrate the device when dragging clock hand\n hourstep: 1, // allow to multi increment the hour\n minutestep: 1, // allow to multi increment the minute\n\t\tampmSubmit: false, // allow submit with AM and PM buttons instead of the minute selection/picker\n\t\tcontainer: 'body', \t\t // set the container selector\n\t};\n\n\t// Show or hide popover\n\tClockPicker.prototype.toggle = function() {\n\t\tthis[this.isShown ? 'hide' : 'show']();\n\t};\n\n\t// Set popover position\n\tClockPicker.prototype.locate = function() {\n\t\tvar element = this.element,\n\t\t\t\tpopover = $(this.options.container).append(this.popover),\n\t\t\t\toffset = element.offset(),\n\t\t\t\twidth = element.outerWidth(),\n\t\t\t\theight = element.outerHeight(),\n\t\t\t\talign = this.options.align,\n\t\t\t\tself = this;\n\n\t\tthis.popover.show();\n };\n\n // The input can be changed by the user\n // So before we can use this.hours/this.minutes we must update it\n ClockPicker.prototype.parseInputValue = function(){\n var value = this.input.prop('value') || this.options['default'] || '';\n\n if (value === 'now') {\n value = new Date(+ new Date() + this.options.fromnow);\n }\n if (value instanceof Date) {\n value = value.getHours() + ':' + value.getMinutes();\n }\n\n value = value.split(':');\n\n // Minutes can have AM/PM that needs to be removed\n this.hours = + value[0] || 0;\n this.minutes = + (value[1] + '').replace(/\\D/g, '') || 0;\n\n this.hours = Math.round(this.hours / this.options.hourstep) * this.options.hourstep;\n this.minutes = Math.round(this.minutes / this.options.minutestep) * this.options.minutestep;\n\n if (this.options.twelvehour) {\n var period = (value[1] + '').replace(/\\d+/g, '').toLowerCase();\n this.amOrPm = this.hours > 12 || period === 'pm' ? 'PM' : 'AM';\n }\n };\n\n\t// Show popover\n\tClockPicker.prototype.show = function(e){\n\t\t// Not show again\n\t\tif (this.isShown) {\n\t\t\treturn;\n\t\t}\n\t\traiseCallback(this.options.beforeShow);\n\t\t$(':input').each(function() {\n\t\t\t$(this).attr('tabindex', -1);\n\t\t})\n\t\tvar self = this;\n\t\t// Initialize\n\t\tthis.input.blur();\n\t\tthis.popover.addClass('picker--opened');\n\t\tthis.input.addClass('picker__input picker__input--active');\n\t\t$(document.body).css('overflow', 'hidden');\n\t\tif (!this.isAppended) {\n\t\t\t// Append popover to body\n\t\t\tthis.popover.insertAfter(this.input);\n\t\t\tif(this.options.twelvehour) {\n\t\t\t\tthis.amOrPm = 'AM';\n\t\t\t\tif(!this.options.ampmclickable) {\n\t\t\t\t\tthis.amPmBlock.children('.pm-button').removeClass('active');\n\t\t\t\t\tthis.amPmBlock.children('.am-button').addClass('active');\n\t\t\t\t\tthis.spanAmPm.empty().append('PM');\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.spanAmPm.children('#click-am').addClass(\"text-primary\");\n\t\t\t\t\tthis.spanAmPm.children('#click-pm').removeClass(\"text-primary\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Reset position when resize\n\t\t\t$win.on('resize.clockpicker' + this.id, function() {\n\t\t\t\tif (self.isShown) {\n\t\t\t\t\tself.locate();\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.isAppended = true;\n\t\t}\n\t\t// Get the time\n this.parseInputValue();\n\n if (this.hours === 0) {\n this.hours = this.minHours;\n }\n\n\t\tthis.spanHours.html(leadingZero(this.hours));\n this.spanMinutes.html(leadingZero(this.minutes));\n\n if (this.options.twelvehour) {\n this.spanAmPm.empty().append(this.amOrPm);\n }\n this.disableOutOfRangeElements();\n\t\t// Toggle to hours view\n\t\tthis.toggleView('hours');\n\t\t// Set position\n\t\tthis.locate();\n\t\tthis.isShown = true;\n\t\t// Hide when clicking or tabbing on any element except the clock and input\n\t\t$doc.on('click.clockpicker.' + this.id + ' focusin.clockpicker.' + this.id, debounce(function(e) {\n\t\t\tvar target = $(e.target);\n\t\t\tif (target.closest(self.popover.find('.picker__wrap')).length === 0 && target.closest(self.input).length === 0)\n\t\t\t\tself.hide();\n\t\t}, 100));\n\t\t// Hide when ESC is pressed\n\t\t$doc.on('keyup.clockpicker.' + this.id, debounce( function(e){\n\t\t\tif (e.keyCode === 27)\n\t\t\t\tself.hide();\n\t\t},100));\n\t\traiseCallback(this.options.afterShow);\n\t};\n\t// Hide popover\n\tClockPicker.prototype.hide = function() {\n\t\traiseCallback(this.options.beforeHide);\n\t\tthis.input.removeClass('picker__input picker__input--active');\n\t\tthis.popover.removeClass('picker--opened');\n\t\t$(document.body).css('overflow', 'visible');\n\t\tthis.isShown = false;\n\t\t$(':input').each(function(index) {\n\t\t\t$(this).attr('tabindex', index + 1);\n\t\t});\n\t\t// Unbinding events on document\n\t\t$doc.off('click.clockpicker.' + this.id + ' focusin.clockpicker.' + this.id);\n\t\t$doc.off('keyup.clockpicker.' + this.id);\n\t\tthis.popover.hide();\n\t\traiseCallback(this.options.afterHide);\n };\n // set invalid or disable some elements if needed\n ClockPicker.prototype.disableOutOfRangeElements = function() {\n let {hours, minutes, currentView, isTwelvehour, amOrPm, maxHours, minHours, maxMinutes, minMinutes} = this;\n const $hoursTick = $('.clockpicker-hours').children(),\n $minutesTick = $('.clockpicker-minutes').children(),\n $amBtn = $('.am-button'),\n $pmBtn = $('.pm-button'),\n $doneBtn = $('.done-button');\n\n // disable am/pm switch btn when time is out of allow range for am/pm period\n if (isTwelvehour && currentView === 'minutes') {\n $doneBtn.removeClass('grey-text disabled');\n if (amOrPm === 'AM' && !(hours + 12 <= maxHours))\n $pmBtn.addClass('disabled');\n else if (amOrPm === 'PM' && !(hours >= minHours))\n $amBtn.addClass('disabled');\n } \n\n // min and max hours is in 24h format, conver to 12h format if needed\n if (isTwelvehour && amOrPm === 'PM') {\n if (minHours < 12)\n minHours = 0;\n\n if (minHours > 12)\n minHours -= 12;\n \n if (maxHours > 12)\n maxHours -= 12; \n }\n\n // disable done btn when time is out of allow range \n if (isTwelvehour && currentView === 'hours') {\n $amBtn.removeClass('disabled');\n $pmBtn.removeClass('disabled');\n\n if (amOrPm === 'AM' && (!(hours >= minHours) || !(hours <= maxHours))) {\n $doneBtn.addClass('grey-text disabled');\n } else if (amOrPm === 'PM' && (!(hours >= minHours) || !(hours <= maxHours))) {\n $doneBtn.addClass('grey-text disabled');\n } else {\n $doneBtn.removeClass('grey-text disabled');\n }\n }\n\n // disable done btn when time is out of allow range \n if (currentView === 'minutes') {\n if ((hours === minHours && minutes < minMinutes) || (hours === maxHours && minutes > maxMinutes))\n $doneBtn.addClass('grey-text disabled');\n else\n $doneBtn.removeClass('grey-text disabled');\n }\n\n // set invalid if hours is out of allow range\n if (currentView === 'hours') {\n $hoursTick.each((index, el) => {\n let hours = el.innerHTML;\n \n if (this.isTwelvehour && hours == 12)\n hours = 0;\n \n if (hours > maxHours || hours < minHours)\n $(el).addClass('grey-text disabled');\n else\n $(el).removeClass('grey-text disabled');\n });\n }\n\n // set invalid if minutes is out of allow range\n if (currentView === 'minutes') {\n $minutesTick.each((index, el) => {\n if (minHours == hours && el.innerHTML < minMinutes)\n $(el).addClass('grey-text disabled');\n else if (maxHours == hours && el.innerHTML > maxMinutes)\n $(el).addClass('grey-text disabled');\n else\n $(el).removeClass('grey-text disabled');\n });\n }\n }\n\n\t// Toggle to hours or minutes view\n\tClockPicker.prototype.toggleView = function(view, delay) {\n\t\tvar raiseAfterHourSelect = false;\n\t\tif (view === 'minutes' && $(this.hoursView).css(\"visibility\") === \"visible\") {\n\t\t\traiseCallback(this.options.beforeHourSelect);\n\t\t\traiseAfterHourSelect = true;\n\t\t}\n\t\tvar isHours = view === 'hours',\n\t\t\t\tnextView = isHours ? this.hoursView : this.minutesView,\n\t\t\t\thideView = isHours ? this.minutesView : this.hoursView;\n this.currentView = view;\n \n\t\tthis.spanHours.toggleClass('text-primary', isHours);\n this.spanMinutes.toggleClass('text-primary', ! isHours);\n \n\t\t// Let's make transitions\n\t\thideView.addClass('clockpicker-dial-out');\n nextView.css('visibility', 'visible').removeClass('clockpicker-dial-out');\n \n\t\t// Reset clock hand\n\t\tthis.resetClock(delay);\n\n\t\t// After transitions ended\n\t\tclearTimeout(this.toggleViewTimer);\n\t\tthis.toggleViewTimer = setTimeout(function() {\n\t\t\thideView.css('visibility', 'hidden');\n\t\t}, duration);\n\n this.disableOutOfRangeElements();\n\n\t\tif (raiseAfterHourSelect)\n\t\t\traiseCallback(this.options.afterHourSelect);\n\t};\n\n\t// Reset clock hand\n\tClockPicker.prototype.resetClock = function(delay) {\n\t\tvar view = this.currentView,\n\t\t\t\tvalue = this[view],\n\t\t\t\tisHours = view === 'hours',\n\t\t\t\tunit = Math.PI / (isHours ? 6 : 30),\n\t\t\t\tradian = value * unit,\n\t\t\t\tradius = isHours && value > 0 && value < 13 ? innerRadius : outerRadius,\n\t\t\t\tx = Math.sin(radian) * radius,\n\t\t\t\ty = - Math.cos(radian) * radius,\n\t\t\t\tself = this;\n\n\t\tif(svgSupported && delay) {\n\t\t\tself.canvas.addClass('clockpicker-canvas-out');\n\t\t\tsetTimeout(function(){\n\t\t\t\tself.canvas.removeClass('clockpicker-canvas-out');\n\t\t\t\tself.setHand(x, y);\n\t\t\t}, delay);\n\t\t} else\n\t\t\tthis.setHand(x, y);\n\t};\n\n\t// Set clock hand to (x, y)\n\tClockPicker.prototype.setHand = function(x, y, roundBy5, dragging) {\n\t\tvar radian = Math.atan2(x, - y),\n\t\t\t\tisHours = this.currentView === 'hours',\n\t\t\t\tz = Math.sqrt(x * x + y * y),\n\t\t\t\toptions = this.options,\n\t\t\t\tinner = isHours && z < (outerRadius + innerRadius) / 2,\n\t\t\t\tradius = inner ? innerRadius : outerRadius,\n\t\t\t\tunit,\n value;\n\n // Calculate the unit\n if (isHours) {\n unit = options.hourstep / 6 * Math.PI\n } else {\n unit = options.minutestep / 30 * Math.PI\n }\n\n\t\tif (options.twelvehour)\n\t\t\tradius = outerRadius;\n\n\t\t// Radian should in range [0, 2PI]\n\t\tif (radian < 0)\n\t\t\tradian = Math.PI * 2 + radian;\n\n\t\t// Get the round value\n value = Math.round(radian / unit);\n\n\t\t// Get the round radian\n\t\tradian = value * unit;\n\t\t// Correct the hours or minutes\n if (isHours) {\n value *= options.hourstep;\n if (! options.twelvehour && (!inner)==(value>0)) {\n value += 12;\n }\n if (options.twelvehour && value === 0) {\n value = 12;\n }\n if (value === 24) {\n value = 0;\n\t\t\t}\n } else {\n value *= options.minutestep;\n if (value === 60) {\n value = 0;\n }\n }\n // disable action when out of allow range\n let { minHours, maxHours, minMinutes, maxMinutes, amOrPm } = this;\n\n if (isHours) {\n let hours = value; \n\n if (this.amOrPm === 'PM') {\n if (minHours < 12)\n minHours = 0;\n if (minHours > 12)\n minHours -= 12;\n if (maxHours > 12)\n maxHours -= 12;\n }\n \n if (this.isTwelvehour && hours == 12)\n hours = 0;\n\n if (hours < minHours || hours > maxHours){\n this.isInvalidTimeScope = true;\n return;\n }\n\n if (this.isTwelvehour && hours === 12) {\n this.isInvalidTimeScope = true;\n return;\n }\n } else {\n let { hours } = this;\n\n if (amOrPm === 'PM')\n hours += 12;\n\n if ((hours == minHours && value < minMinutes) || (hours == maxHours && value > maxMinutes)) {\n this.isInvalidTimeScope = true;\n return;\n }\n\t\t}\n\n\t\tif (isHours)\n\t\t\tthis.fg.setAttribute('class', 'clockpicker-canvas-fg');\n\t\telse {\n\t\t\tif (value % 5 == 0)\n\t\t\t\tthis.fg.setAttribute('class', 'clockpicker-canvas-fg');\n\t\t\telse\n\t\t\t\tthis.fg.setAttribute('class', 'clockpicker-canvas-fg active');\n\t\t}\n\n\t\t// Once hours or minutes changed, vibrate the device\n\t\tif (this[this.currentView] !== value)\n\t\t\tif (vibrate && this.options.vibrate)\n\t\t\t\t// Do not vibrate too frequently\n\t\t\t\tif (! this.vibrateTimer) {\n\t\t\t\t\tnavigator[vibrate](10);\n\t\t\t\t\tthis.vibrateTimer = setTimeout($.proxy(function(){\n\t\t\t\t\t\tthis.vibrateTimer = null;\n\t\t\t\t\t}, this), 100);\n }\n\t\tthis[this.currentView] = value;\n\t\tthis[isHours ? 'spanHours' : 'spanMinutes'].html(leadingZero(value));\n\n\t\t// If svg is not supported, just add an active class to the tick\n\t\tif (! svgSupported) {\n\t\t\tthis[isHours ? 'hoursView' : 'minutesView'].find('.clockpicker-tick').each(function(){\n\t\t\t\tvar tick = $(this);\n\t\t\t\ttick.toggleClass('active', value === + tick.html());\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\t// Place clock hand at the top when dragging\n\t\tif (dragging || (! isHours && value % 5)) {\n\t\t\tthis.g.insertBefore(this.hand, this.bearing);\n\t\t\tthis.g.insertBefore(this.bg, this.fg);\n\t\t\tthis.bg.setAttribute('class', 'clockpicker-canvas-bg clockpicker-canvas-bg-trans');\n\t\t} else {\n\t\t\t// Or place it at the bottom\n\t\t\tthis.g.insertBefore(this.hand, this.bg);\n\t\t\tthis.g.insertBefore(this.fg, this.bg);\n\t\t\tthis.bg.setAttribute('class', 'clockpicker-canvas-bg');\n\t\t}\n\n\t\t// Set clock hand and others' position\n var cx = Math.sin(radian) * radius,\n cy = - Math.cos(radian) * radius;\n this.hand.setAttribute('x2', cx);\n this.hand.setAttribute('y2', cy);\n this.bg.setAttribute('cx', cx);\n this.bg.setAttribute('cy', cy);\n this.fg.setAttribute('cx', cx);\n this.fg.setAttribute('cy', cy);\n };\n\n \t// Clear clock text\n ClockPicker.prototype.clearInput = function() {\n\t\tthis.input.val('');\n\t\tthis.hide();\n\n\t\tif(this.options.afterDone && typeof this.options.afterDone === 'function')\n\t\t\tthis.options.afterDone(this.input, null);\n\t};\n\n // Allow user to get time as Date object\n ClockPicker.prototype.getTime = function(callback) {\n this.parseInputValue();\n\n var hours = this.hours;\n if (this.options.twelvehour && hours < 12 && this.amOrPm === 'PM') {\n hours += 12;\n }\n\n var selectedTime = new Date();\n selectedTime.setMinutes(this.minutes)\n selectedTime.setHours(hours);\n selectedTime.setSeconds(0);\n\n return callback && callback.apply(this.element, selectedTime) || selectedTime;\n }\n\n\t// Hours and minutes are selected\n\tClockPicker.prototype.done = function() {\n\t\traiseCallback(this.options.beforeDone);\n\t\tthis.hide();\n\t\tthis.label.addClass('active');\n\n\t\tvar last = this.input.prop('value'),\n outHours = this.hours,\n value = ':' + leadingZero(this.minutes);\n\n if (this.isHTML5 && this.options.twelvehour) {\n if (this.hours < 12 && this.amOrPm === 'PM') {\n outHours += 12;\n }\n if (this.hours === 12 && this.amOrPm === 'AM') {\n outHours = 0;\n }\n }\n\n value = leadingZero(outHours) + value;\n\n if (!this.isHTML5 && this.options.twelvehour) {\n value = value + this.amOrPm;\n }\n\n\t\tthis.input.prop('value', value);\n\t\tif(value !== last) {\n\t\t\tthis.input.trigger('change');\n\t\t\tif(!this.isInput)\n\t\t\t\tthis.element.trigger('change');\n\t\t}\n\n\t\tif(this.options.autoclose)\n\t\t\tthis.input.trigger('blur');\n\n\t\traiseCallback(this.options.afterDone);\n\t};\n\n\t// Remove clockpicker from input\n\tClockPicker.prototype.remove = function() {\n\t\tthis.element.removeData('clockpicker');\n\t\tthis.input.off('focus.clockpicker click.clockpicker');\n\t\tif (this.isShown)\n\t\t\tthis.hide();\n\t\tif (this.isAppended) {\n\t\t\t$win.off('resize.clockpicker' + this.id);\n\t\t\tthis.popover.remove();\n\t\t}\n\t};\n\n\t// Extends $.fn.clockpicker\n\t$.fn.pickatime = function(option){\n\t\tvar args = Array.prototype.slice.call(arguments, 1);\n\t\tfunction handleClockPickerRequest(){\n\t\t\tvar $this = $(this),\n\t\t\t\t\tdata = $this.data('clockpicker');\n\t\t\tif (!data) {\n\t\t\t\tvar options = $.extend({}, ClockPicker.DEFAULTS, $this.data(), typeof option == 'object' && option);\n\t\t\t\t$this.data('clockpicker', new ClockPicker($this, options));\n\t\t\t} else {\n\t\t\t\t// Manual operations. show, hide, remove, e.g.\n\t\t\t\tif (typeof data[option] === 'function')\n\t\t\t\t\tdata[option].apply(data, args);\n\t\t\t}\n }\n // If we explicitly do a call on a single element then we can return the value (if needed)\n // This allows us, for example, to return the value of getTime\n if (this.length == 1) {\n var returnValue = handleClockPickerRequest.apply(this[0]);\n\n // If we do not have any return value then return the object itself so you can chain\n return returnValue !== undefined ? returnValue : this;\n }\n\n // If we do have a list then we do not care about return values\n return this.each(handleClockPickerRequest);\n\t};\n\t\n\t$('.time-picker-opener').on('click', e => {\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\n\t\tconst openElementData = e.target.dataset.open;\n\t\tconst $picker = $(`#${openElementData}`).pickatime('picker');\n\t\t$picker.data('clockpicker').show();\n\t});\n}());\n","jQuery(($) => {\n\n $.fn.dateTimePicker = function(delimiter = ', ') {\n\n const $this = $(this)[0];\n\n let result = $(`.picker-opener[data-open='${$this.dataset.open}']`);\n const $timePicker = $(`.timepicker[data-open='${$this.dataset.open}']`);\n const $datePicker = $(`#${$this.dataset.open}`);\n\n $datePicker.pickadate({\n onClose: function () {\n\n const input = $timePicker.pickatime({\n afterHide: () => {\n $timePicker.trigger(\"change\");\n }\n });\n const picker = input.pickatime('picker');\n picker.data('clockpicker').show();\n },\n format: 'yyyy/mm/dd',\n formatSubmit: 'yyyy/mm/dd',\n });\n\n $datePicker.on('change', () => {\n let timeValue = $timePicker.val();\n let dateValue = $datePicker.val();\n result[0].value = `${dateValue}${timeValue !=='' && dateValue !=='' ? delimiter : ''}${timeValue}`;\n });\n\n $timePicker.on('change', () => {\n let timeValue = $timePicker.val();\n let dateValue = $datePicker.val();\n result[0].value = `${dateValue}${timeValue !=='' && dateValue !=='' ? delimiter : ''}${timeValue}`;\n });\n\n };\n\n});\n","jQuery(($) => {\n const $win = $(window);\n const $doc = $(document);\n\n // Can I use inline svg ?\n const svgNS = 'http://www.w3.org/2000/svg';\n const svgSupported = 'SVGAngle' in window && (() => {\n const el = document.createElement('div');\n el.innerHTML = '';\n const supported = (el.firstChild && el.firstChild.namespaceURI) == svgNS;\n el.innerHTML = '';\n return supported;\n })();\n\n // Can I use transition ?\n const transitionSupported = (() => {\n const style = document.createElement('div').style;\n return 'transition' in style ||\n 'WebkitTransition' in style ||\n 'MozTransition' in style ||\n 'msTransition' in style ||\n 'OTransition' in style;\n })();\n\n // Listen touch events in touch screen device, instead of mouse events in desktop.\n const touchSupported = 'ontouchstart' in window;\n const mousedownEvent = `mousedown ${touchSupported ? ' touchstart' : ''}`;\n const mousemoveEvent = `mousemove.clockpicker ${touchSupported ? ' touchmove.clockpicker' : ''}`;\n const mouseupEvent = `mouseup.clockpicker ${touchSupported ? ' touchend.clockpicker' : ''}`;\n\n // Vibrate the device if supported\n const vibrate = navigator.vibrate ? 'vibrate' : navigator.webkitVibrate ? 'webkitVibrate' : null;\n\n function createSvgElement(name) {\n return document.createElementNS(svgNS, name);\n }\n\n function debounce(func, wait, immediate) {\n var timeout;\n return function () {\n var context = this\n var args = arguments;\n var later = function() {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n }\n\n function leadingZero(num) {\n return (num < 10 ? '0' : '') + num;\n }\n\n // Get a unique id\n var idCounter = 0;\n function uniqueId(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n }\n\n // Clock size\n var dialRadius = 135,\n outerRadius = 110,\n // innerRadius = 80 on 12 hour clock\n innerRadius = 80,\n tickRadius = 20,\n diameter = dialRadius * 2,\n duration = transitionSupported ? 350 : 1;\n\n // Popover template\n var tpl = [\n '
      ',\n '
      ',\n '
      ',\n '
      ',\n '
      ',\n '
      ',\n '
      ',\n '
      ',\n '',\n ':',\n '',\n '
      ',\n '
      ',\n '
      ',\n '
      ',\n '
      ',\n '
      ',\n '
      ',\n '
      ',\n '
      ',\n '
      ',\n '
      ',\n '
      ',\n '
      ',\n '
      ',\n '
      ',\n '
      ',\n '
      ',\n '
      ',\n '
      '\n ].join('');\n\n // ClockPicker\n function ClockPicker(element) {\n var popover = $(tpl),\n plate = popover.find('.clockpicker-plate'),\n holder = popover.find('.picker__holder'),\n hoursView = popover.find('.clockpicker-hours'),\n minutesView = popover.find('.clockpicker-minutes'),\n amPmBlock = popover.find('.clockpicker-am-pm-block'),\n icon = element.children('i'),\n input = element.children('input'),\n isHTML5 = input.prop('type') === 'time',\n label = $(\"label[for=\" + input.attr(\"id\") + \"]\"),\n self = this,\n options = {};\n\n options.default = element.attr('default') || '';\n options.fromnow = element.attr('fromnow') || 0;\n options.donetext = element.attr('donetext') || 'OK';\n options.cleartext = element.attr('cleartext') || 'Clear';\n options.closetext = element.attr('closetext') || 'Close';\n options.autoclose = element.attr('autoclose') || false;\n options.darktheme = element.attr('darktheme') || false;\n options.twelvehour = element.attr('twelvehour') || false;\n options.vibrate = element.attr('vibrate') || true;\n options.hourstep = element.attr('hourstep') || 1;\n options.minutestep = element.attr('minutestep') || 1;\n options.inputshowpicker = element.attr('inputshowpicker') || false;\n options.min = element.attr('min') || 0;\n options.max = element.attr('max') || 0;\n\n this.id = uniqueId('cp');\n this.element = element;\n this.holder = holder;\n this.options = options;\n this.isAppended = false;\n this.isShown = false;\n this.currentView = 'hours';\n this.input = input;\n this.icon = icon;\n this.label = label;\n this.popover = popover;\n this.plate = plate;\n this.hoursView = hoursView;\n this.minutesView = minutesView;\n this.amPmBlock = amPmBlock;\n this.spanHours = popover.find('.clockpicker-span-hours');\n this.spanMinutes = popover.find('.clockpicker-span-minutes');\n this.footer = popover.find('.picker__footer');\n this.amOrPm = \"\";\n this.isTwelvehour = options.twelvehour;\n this.minTime = options.min;\n this.maxTime = options.max;\n this.minMinutes = 0;\n this.maxMinutes = 59;\n this.minHours = 0;\n this.maxHours = 23;\n this.isInvalidTimeScope = false;\n this.hoursBeforeChange = null;\n this.minutesBeforeChange = null; \n\n // round minutestep to multiples of five\n if (options.minutestep > 20) {\n options.minutestep = 20\n } else if (options.minutestep != 1 && options.minutestep % 5) {\n const rest = options.minutestep % 5;\n if (rest >= 2.5) {\n options.minutestep += 5 - rest;\n } else {\n options.minutestep -= rest;\n }\n }\n\n this.icon.removeClass('active');\n this.input.on('focus', () => this.icon.addClass('active'));\n this.input.on('blur', () => this.icon.removeClass('active'));\n const parseTimeOptions = (scope) => {\n const time = scope + 'Time';\n this[time] = options[scope].split(':');\n \n // user can set using am/pm. Convert 12h clock settings to 24h clock settings \n if (this[time][1].length === 4) {\n const period = this[time][1].replace(/\\d+/g, '').toUpperCase();\n this[time][1] = this[time][1].replace(/\\D+/g, '');\n if (period === 'PM') \n this[time][0] = parseInt(this[time][0]) + 12\n }\n \n if (this[time].length !== 2)\n this[time] = null;\n else {\n for (let i = 0; i < this[time].length; i++) {\n this[time][i] = +this[time][i];\n }\n }\n };\n \n // Parse minTime Option\n if (options.min) {\n parseTimeOptions('min');\n this.minMinutes = this.minTime[1];\n this.minHours = this.minTime[0];\n }\n\n // Parse maxTime Option\n if (options.max) {\n parseTimeOptions('max');\n\n // Ensure that max is after min, if not remove the max it's invalid\n if ((this.minHours > this.maxHours) || (this.minHours === this.maxHours && this.minMinutes >= this.maxMinutes)) {\n this.maxTime = 0;\n } else {\n this.maxMinutes = this.maxTime[1];\n this.maxHours = this.maxTime[0];\n }\n }\n\n // Setup for for 12 hour clock if option is selected\n if (options.twelvehour) {\n $('' + \"AM\" + '').on(\"click\", function() {\n self.togglePeriod('AM');\n }).appendTo(this.amPmBlock);\n $('' + \"PM\" + '').on(\"click\", function() {\n self.togglePeriod('PM');\n }).appendTo(this.amPmBlock);\n }\n \n\n if(options.darktheme)\n popover.addClass('darktheme');\n\n // If autoclose is not setted, append a button\n $('').click($.proxy(this.clearInput, this)).appendTo(this.footer);\n $('').click($.proxy(this.closeInput, this)).appendTo(this.footer);\n $('').click($.proxy(this.done, this)).appendTo(this.footer);\n this.spanHours.click($.proxy(this.toggleView, this, 'hours'));\n this.spanMinutes.click($.proxy(this.toggleView, this, 'minutes'));\n\n\n\n // Build ticks\n var tickTpl = $('
      '),\n i, tick, radian, radius;\n\n // Hours view\n if (options.twelvehour) {\n for (i = 0; i < 12; i += options.hourstep) {\n tick = tickTpl.clone();\n radian = i / 6 * Math.PI;\n radius = outerRadius;\n tick.css('font-size', '140%');\n tick.css({\n left: dialRadius + Math.sin(radian) * radius - tickRadius,\n top: dialRadius - Math.cos(radian) * radius - tickRadius\n });\n tick.html(i === 0 ? 12 : i);\n hoursView.append(tick);\n tick.on(mousedownEvent, mousedown);\n this.disableOutOfRangeElements();\n }\n } else {\n for (i = 0; i < 24; i += options.hourstep) {\n tick = tickTpl.clone();\n radian = i / 6 * Math.PI;\n var inner = i > 0 && i < 13;\n radius = inner ? innerRadius : outerRadius;\n tick.css({\n left: dialRadius + Math.sin(radian) * radius - tickRadius,\n top: dialRadius - Math.cos(radian) * radius - tickRadius\n });\n if (inner) {\n tick.css('font-size', '120%');\n }\n tick.html(i === 0 ? '00' : i);\n hoursView.append(tick);\n tick.on(mousedownEvent, mousedown);\n this.disableOutOfRangeElements();\n }\n }\n\n // Minutes view\n var incrementValue = Math.max(options.minutestep, 5);\n for (i = 0; i < 60; i += incrementValue) {\n for (i = 0; i < 60; i += 5) {\n tick = tickTpl.clone();\n radian = i / 30 * Math.PI;\n tick.css({\n left: dialRadius + Math.sin(radian) * outerRadius - tickRadius,\n top: dialRadius - Math.cos(radian) * outerRadius - tickRadius\n });\n tick.css('font-size', '140%');\n tick.html(leadingZero(i));\n minutesView.append(tick);\n tick.on(mousedownEvent, mousedown);\n }\n }\n \n // Clicking on minutes view space\n plate.on(mousedownEvent, function(e) {\n if ($(e.target).closest('.clockpicker-tick').length === 0)\n mousedown(e, true);\n });\n\n // Mousedown or touchstart\n function mousedown(e, space) {\n var offset = plate.offset(),\n isTouch = /^touch/.test(e.type),\n x0 = offset.left + dialRadius,\n y0 = offset.top + dialRadius,\n dx = (isTouch ? e.originalEvent.touches[0] : e).pageX - x0,\n dy = (isTouch ? e.originalEvent.touches[0] : e).pageY - y0,\n z = Math.sqrt(dx * dx + dy * dy),\n moved = false;\n\n // When clicking on minutes view space, check the mouse position\n if (space && (z < outerRadius - tickRadius || z > outerRadius + tickRadius))\n return;\n e.preventDefault();\n\n // Set cursor style of body after 200ms\n var movingTimer = setTimeout(function(){\n self.popover.addClass('clockpicker-moving');\n }, 200);\n\n // Place the canvas to top\n if (svgSupported)\n plate.append(self.canvas);\n\n // Clock\n self.setHand(dx, dy, !space, true);\n\n // Mousemove on document\n $doc.off(mousemoveEvent).on(mousemoveEvent, function(e){\n e.preventDefault();\n var isTouch = /^touch/.test(e.type),\n x = (isTouch ? e.originalEvent.touches[0] : e).pageX - x0,\n y = (isTouch ? e.originalEvent.touches[0] : e).pageY - y0;\n if (! moved && x === dx && y === dy)\n // Clicking in chrome on windows will trigger a mousemove event\n return;\n moved = true;\n self.setHand(x, y, false, true);\n });\n\n // Mouseup on document\n $doc.off(mouseupEvent).on(mouseupEvent, function(e) {\n $doc.off(mouseupEvent);\n e.preventDefault();\n var isTouch = /^touch/.test(e.type),\n x = (isTouch ? e.originalEvent.changedTouches[0] : e).pageX - x0,\n y = (isTouch ? e.originalEvent.changedTouches[0] : e).pageY - y0;\n if ((space || moved) && x === dx && y === dy)\n self.setHand(x, y);\n \n let {hours, minutes, amOrPm, maxHours, minHours, maxMinutes, minMinutes} = self;\n \n if (amOrPm === 'PM') {\n if (minHours < 12)\n minHours = 0;\n if (minHours > 12)\n minHours -= 12;\n if (maxHours > 12)\n maxHours -= 12; \n }\n\n // dont toggleView if selected time out of scope\n if (self.isInvalidTimeScope) {\n self.isInvalidTimeScope = false;\n e.stopPropagation();\n }\n else if (self.currentView === 'hours')\n self.toggleView('minutes', duration / 2);\n else if (self.currentView != 'hours' && options.autoclose) {\n self.minutesView.addClass('clockpicker-dial-out');\n setTimeout(function(){\n self.done();\n }, duration / 2);\n self.currentHours = 0\n } \n\n plate.prepend(canvas);\n\n // Reset cursor style of body\n clearTimeout(movingTimer);\n self.popover.removeClass('clockpicker-moving');\n\n // Unbind mousemove event\n $doc.off(mousemoveEvent);\n });\n self.disableOutOfRangeElements();\n }\n\n if (svgSupported) {\n // Draw clock hands and others\n var canvas = popover.find('.clockpicker-canvas'),\n svg = createSvgElement('svg');\n svg.setAttribute('class', 'clockpicker-svg');\n svg.setAttribute('width', diameter);\n svg.setAttribute('height', diameter);\n var g = createSvgElement('g');\n g.setAttribute('transform', 'translate(' + dialRadius + ',' + dialRadius + ')');\n var bearing = createSvgElement('circle');\n bearing.setAttribute('class', 'clockpicker-canvas-bearing');\n bearing.setAttribute('cx', 0);\n bearing.setAttribute('cy', 0);\n bearing.setAttribute('r', 2);\n var hand = createSvgElement('line');\n hand.setAttribute('x1', 0);\n hand.setAttribute('y1', 0);\n var bg = createSvgElement('circle');\n bg.setAttribute('class', 'clockpicker-canvas-bg');\n bg.setAttribute('r', tickRadius);\n var fg = createSvgElement('circle');\n fg.setAttribute('class', 'clockpicker-canvas-fg');\n fg.setAttribute('r', 5);\n g.appendChild(hand);\n g.appendChild(bg);\n g.appendChild(fg);\n g.appendChild(bearing);\n svg.appendChild(g);\n canvas.append(svg);\n\n this.hand = hand;\n this.bg = bg;\n this.fg = fg;\n this.bearing = bearing;\n this.g = g;\n this.canvas = canvas;\n }\n\n const tab = 9;\n const enter = 13;\n const arrowUp = 38;\n const arrowDown = 40;\n const space = 32;\n\n const setTabTrap = () => {\n popover.find('.clockpicker-span-hours').on('keydown', (e) => {\n if (e.keyCode === tab && e.shiftKey) {\n e.preventDefault();\n popover.find('.done-button').focus();\n }\n });\n \n popover.find('.done-button').on('keydown', (e) => {\n if (e.keyCode === tab && !e.shiftKey) {\n e.preventDefault();\n popover.find('.clockpicker-span-hours').focus();\n }\n });\n };\n\n const setIconTabindex = () => {\n icon.attr('tabindex', '0');\n };\n\n const setAriaInputAndIcon = () => {\n icon.attr('aria-haspopup', 'true');\n };\n\n const isNewValueOutOfRange = (val) => {\n let {hours, isTwelvehour, amOrPm, currentView, maxHours, minHours, maxMinutes, minMinutes} = self;\n\n if (isTwelvehour && currentView === 'hours' && amOrPm === 'PM' && val < 12) {\n val += 12;\n }\n\n if (isTwelvehour && currentView === 'minutes' && amOrPm === 'PM') {\n hours += 12;\n }\n\n if (currentView === 'hours' && (val > maxHours || val < minHours)) {\n return true;\n }\n\n if (currentView === 'minutes' && (hours == minHours && val < minMinutes)) {\n return true;\n }\n\n if (currentView === 'minutes' && (hours == maxHours && val > maxMinutes)) {\n return true;\n }\n \n return false;\n };\n\n const bindIconKeydown = () => {\n icon.on('keydown', (e) => {\n if (e.keyCode === space || e.keyCode === enter) {\n debounce(this.show(), 100);\n }\n });\n };\n\n const bindHoursSpanKeydown = () => {\n this.spanHours.on('keydown', (e) => {\n let newValue;\n \n if (e.keyCode === arrowUp) {\n \n if (this.currentView !== 'hours') {\n this.toggleView('hours');\n }\n \n if (this.isTwelvehour) {\n if (this.hours === 11) {\n newValue = this.hours + 1;\n const period = this.amOrPm === 'AM' ? 'PM' : 'AM';\n self.togglePeriod(period)\n } else if (this.hours === 12) {\n newValue = 1;\n } else {\n newValue = this.hours + 1;\n }\n } else {\n if ( this.hours === 23 ) {\n newValue = 0\n } else {\n newValue = this.hours + 1;\n }\n }\n \n if (isNewValueOutOfRange(newValue)) {\n if ( this.isTwelvehour && this.minHours <= 12 ) {\n self.togglePeriod('AM');\n }\n newValue = this.minHours;\n }\n \n this.hours = newValue;\n this.spanHours.html(leadingZero(this.hours));\n this.resetClock();\n }\n \n if (e.keyCode === arrowDown) {\n \n if (this.currentView !== 'hours') {\n this.toggleView('hours');\n }\n \n if (this.isTwelvehour) {\n if (this.hours === 1) {\n newValue = 12;\n } else if (this.hours === 12) {\n newValue = this.hours - 1;\n const period = this.amOrPm === 'AM' ? 'PM' : 'AM';\n self.togglePeriod(period);\n } else {\n newValue = this.hours - 1;\n }\n } else {\n if ( this.hours === 0 ) {\n newValue = 23;\n } else {\n newValue = this.hours - 1;\n }\n }\n \n if (isNewValueOutOfRange(newValue)) {\n if (this.isTwelvehour && this.maxHours >= 12) {\n self.togglePeriod('PM');\n }\n newValue = this.maxHours;\n }\n \n this.hours = newValue;\n this.spanHours.html(leadingZero(this.hours));\n this.resetClock();\n }\n \n if (e.keyCode === enter) {\n this.toggleView('hours');\n }\n });\n };\n\n const bindMinutesSpanKeydown = () => {\n this.spanMinutes.on('keydown', (e) => {\n let newValue;\n if (e.keyCode === arrowUp) {\n if (this.currentView !== 'minutes') {\n this.toggleView('minutes');\n } \n \n if (this.minutes === 59) {\n newValue = 0;\n } else {\n newValue = this.minutes + 1;\n }\n \n if (isNewValueOutOfRange(newValue)) {\n let { hours, amOrPm, minHours, maxHours, minMinutes } = this;\n \n if (amOrPm === 'PM') {\n hours += 12;\n }\n \n if ( hours === minHours ) {\n newValue = minMinutes;\n }\n \n if ( hours === maxHours ) {\n newValue = 0;\n }\n }\t\t\n \n this.minutes = newValue;\n this.spanMinutes.html(leadingZero(this.minutes));\n this.resetClock();\n }\n \n if (e.keyCode === arrowDown) {\n if (this.currentView !== 'minutes') {\n this.toggleView('minutes');\n } \n \n if (this.minutes === 0) {\n newValue = 59;\n } else {\n newValue = this.minutes - 1;\n }\n \n if (isNewValueOutOfRange(newValue)) {\n let { hours, amOrPm, minHours, maxHours, maxMinutes } = this;\n \n if (amOrPm === 'PM') {\n hours += 12;\n }\n \n if ( hours === minHours ) {\n newValue = 59;\n }\n \n if ( hours === maxHours ) {\n newValue = maxMinutes;\n }\n }\t\n \n this.minutes = newValue;\n this.spanMinutes.html(leadingZero(this.minutes));\n this.resetClock();\n }\n \n if (e.keyCode === enter) {\n this.toggleView('minutes');\n }\n });\n };\n\n const bindAmPmBlockKeydown = () => {\n if (this.isTwelvehour) {\n popover.find('.am').on('keydown', (e) => {\n if (e.keyCode === enter) {\n e.preventDefault();\n self.togglePeriod('AM');\n }\n });\n \n popover.find('.pm').on('keydown', (e) => {\n if (e.keyCode === enter) {\n e.preventDefault();\n self.togglePeriod('PM');\n }\n });\n }\n };\n\n const bindCloseButtonClick = () => {\n popover.find('.close-button').on('click', () => {\n this.close();\n });\n };\n\n const bindShowOnClick = () => {\n let el;\n if (options.inputshowpicker) {\n el = input;\n } else {\n el = icon;\n }\n\n el.on('click.clockpicker', debounce( $.proxy(this.show, this), 100));\n };\n\n\n setTabTrap();\n setIconTabindex();\n setAriaInputAndIcon();\n bindIconKeydown();\n bindHoursSpanKeydown();\n bindAmPmBlockKeydown();\n bindMinutesSpanKeydown();\n bindCloseButtonClick();\n bindShowOnClick();\n raiseCallback(this.options.init);\n }\n\n function raiseCallback(callbackFunction) {\n if(callbackFunction && typeof callbackFunction === \"function\")\n callbackFunction();\n }\n\n // Default options\n ClockPicker.DEFAULTS = {\n 'default': '', // default time, 'now' or '13:14' e.g.\n fromnow: 0, // set default time to * milliseconds from now (using with default = 'now')\n donetext: 'OK', // done button text\n cleartext: 'Clear', // clear button text\n closetext: 'Cancel',\n autoclose: false, // auto close when minute is selected\n darktheme: false,\t\t\t // set to dark theme\n twelvehour: false, // change to 12 hour AM/PM clock from 24 hour\n vibrate: true, // vibrate the device when dragging clock hand\n hourstep: 1, // allow to multi increment the hour\n minutestep: 1, // allow to multi increment the minute\n inputshowpicker: false\n };\n\n // Show or hide popover\n ClockPicker.prototype.toggle = function() {\n this[this.isShown ? 'hide' : 'show']();\n };\n\n // Set popover position\n ClockPicker.prototype.locate = function() {\n var element = this.element,\n popover = $('body').append(this.popover),\n offset = element.offset(),\n width = element.outerWidth(),\n height = element.outerHeight(),\n align = this.options.align,\n self = this;\n\n this.popover.show();\n };\n\n // The input can be changed by the user\n // So before we can use this.hours/this.minutes we must update it\n ClockPicker.prototype.parseInputValue = function(){\n var value = this.input.prop('value') || this.options['default'] || '';\n\n if (value === 'now') {\n value = new Date(+ new Date() + this.options.fromnow);\n }\n if (value instanceof Date) {\n value = value.getHours() + ':' + value.getMinutes();\n }\n\n value = value.split(':');\n\n // Minutes can have AM/PM that needs to be removed\n this.hours = + value[0] || 0;\n this.minutes = + (value[1] + '').replace(/\\D/g, '') || 0;\n\n this.hours = Math.round(this.hours / this.options.hourstep) * this.options.hourstep;\n this.minutes = Math.round(this.minutes / this.options.minutestep) * this.options.minutestep;\n\n if (this.options.twelvehour) {\n var period = (value[1] + '').replace(/\\d+/g, '').toLowerCase();\n this.amOrPm = this.hours > 12 || period === 'pm' ? 'PM' : 'AM';\n }\n };\n\n // Show popover\n ClockPicker.prototype.show = function(e){\n // Not show again\n if (this.isShown) {\n return;\n }\n\n raiseCallback(this.options.beforeShow);\n $(':input').each(function() {\n $(this).attr('tabindex', -1);\n });\n \n var self = this;\n // Initialize\n this.input.blur();\n this.popover.addClass('picker--opened');\n this.input.addClass('picker__input picker__input--active');\n\n if (this.options.inputshowpicker) {\n this.input.siblings('label').addClass('active');\n }\n\n $(document.body).css('overflow', 'hidden');\n if (!this.isAppended) {\n // Append popover to body\n this.popover.insertAfter(this.input);\n if(this.options.twelvehour) {\n this.amOrPm = 'AM';\n this.amPmBlock.children('.pm').removeClass('active');\n this.amPmBlock.children('.am').addClass('active');\n }\n // Reset position when resize\n $win.on('resize.clockpicker' + this.id, function() {\n if (self.isShown) {\n self.locate();\n }\n });\n this.isAppended = true;\n }\n // Get the time\n this.parseInputValue();\n\n if (this.hours === 0) {\n this.hours = this.minHours;\n }\n \n this.hoursBeforeChange = this.hours;\n this.minutesBeforeChange = this.minutes;\n\n this.spanHours.html(leadingZero(this.hours));\n this.spanMinutes.html(leadingZero(this.minutes));\n\n if (this.options.twelvehour) {\n this.togglePeriod(this.amOrPm);\n }\n \n this.disableOutOfRangeElements();\n // Toggle to hours view\n this.toggleView('hours');\n // Set position\n this.locate();\n this.isShown = true;\n this.spanHours.focus();\n // Hide when clicking or tabbing on any element except the clock and input\n $doc.on('click.clockpicker.' + this.id + ' focusin.clockpicker.' + this.id, debounce(function(e) {\n var target = $(e.target);\n if (target.closest(self.popover.find('.picker__wrap')).length === 0 && target.closest(self.input).length === 0)\n self.hide();\n }, 100));\n // Hide when ESC is pressed\n $doc.on('keyup.clockpicker.' + this.id, debounce( function(e){\n if (e.keyCode === 27)\n self.hide();\n },100));\n raiseCallback(this.options.afterShow);\n };\n // Hide popover\n ClockPicker.prototype.hide = function() {\n raiseCallback(this.options.beforeHide);\n this.input.removeClass('picker__input picker__input--active');\n this.popover.removeClass('picker--opened');\n $(document.body).css('overflow', 'visible');\n this.isShown = false;\n $(':input').each(function () {\n $(this).attr('tabindex', 0);\n });\n // Unbinding events on document\n $doc.off('click.clockpicker.' + this.id + ' focusin.clockpicker.' + this.id);\n $doc.off('keyup.clockpicker.' + this.id);\n this.input.trigger('blur');\n this.popover.hide();\n raiseCallback(this.options.afterHide);\n };\n \n ClockPicker.prototype.close = function () {\n this.hours = this.hoursBeforeChange;\n this.minutes = this.minutesBeforeChange;\n\n this.hide();\n };\n // set invalid or disable some elements if needed\n ClockPicker.prototype.disableOutOfRangeElements = function() {\n let {hours, minutes, currentView, isTwelvehour, amOrPm, maxHours, minHours, maxMinutes, minMinutes, options} = this;\n const $hoursTick = $('.clockpicker-hours').children(),\n $minutesTick = $('.clockpicker-minutes').children(),\n $amBtn = $('.am'),\n $pmBtn = $('.pm'),\n $doneBtn = $('.done-button');\n\n // disable am/pm switch btn when time is out of allow range for am/pm period\n if (isTwelvehour && currentView === 'minutes') {\n $doneBtn.removeClass('grey-text disabled');\n if (amOrPm === 'AM' && !(hours + 12 <= maxHours) && options.max)\n $pmBtn.addClass('disabled');\n else if (amOrPm === 'PM' && !(hours >= minHours) && options.min)\n $amBtn.addClass('disabled');\n } \n\n // min and max hours is in 24h format, convert to 12h format if needed\n if (isTwelvehour && amOrPm === 'PM') {\n if (minHours < 12)\n minHours = 0;\n\n if (minHours > 12)\n minHours -= 12;\n \n if (maxHours > 12)\n maxHours -= 12; \n }\n\n // disable done btn when time is out of allow range \n if (isTwelvehour && currentView === 'hours') {\n $amBtn.removeClass('disabled');\n $pmBtn.removeClass('disabled');\n\n if (amOrPm === 'AM' && (!(hours >= minHours) || !(hours <= maxHours))) {\n $doneBtn.addClass('grey-text disabled');\n } else if (amOrPm === 'PM' && (!(hours >= minHours) || !(hours <= maxHours)) && options.max) {\n $doneBtn.addClass('grey-text disabled');\n } else {\n $doneBtn.removeClass('grey-text disabled');\n }\n }\n\n // disable done btn when time is out of allow range \n if (currentView === 'minutes') {\n if ((hours === minHours && minutes < minMinutes) || (hours === maxHours && minutes > maxMinutes))\n $doneBtn.addClass('grey-text disabled');\n else\n $doneBtn.removeClass('grey-text disabled');\n }\n\n // set invalid if hours is out of allow range\n if (currentView === 'hours') {\n $hoursTick.each((index, el) => {\n let hours = el.innerHTML;\n \n if (this.isTwelvehour && hours == 12)\n hours = 0;\n \n if (hours > maxHours || hours < minHours)\n $(el).addClass('grey-text disabled');\n else\n $(el).removeClass('grey-text disabled');\n });\n }\n\n // set invalid if minutes is out of allow range\n if (currentView === 'minutes') {\n $minutesTick.each((index, el) => {\n if (minHours == hours && el.innerHTML < minMinutes)\n $(el).addClass('grey-text disabled');\n else if (maxHours == hours && el.innerHTML > maxMinutes)\n $(el).addClass('grey-text disabled');\n else if (el.innerHTML % this.options.minutestep !== 0)\n $(el).addClass('grey-text disabled');\n else\n $(el).removeClass('grey-text disabled');\n });\n }\n };\n\n // Toggle to hours or minutes view\n ClockPicker.prototype.toggleView = function(view, delay) {\n var raiseAfterHourSelect = false;\n if (view === 'minutes' && $(this.hoursView).css(\"visibility\") === \"visible\") {\n raiseCallback(this.options.beforeHourSelect);\n raiseAfterHourSelect = true;\n }\n var isHours = view === 'hours',\n nextView = isHours ? this.hoursView : this.minutesView,\n hideView = isHours ? this.minutesView : this.hoursView;\n this.currentView = view;\n \n this.spanHours.toggleClass('text-primary', isHours);\n this.spanMinutes.toggleClass('text-primary', ! isHours);\n \n // Let's make transitions\n hideView.addClass('clockpicker-dial-out');\n nextView.css('visibility', 'visible').removeClass('clockpicker-dial-out');\n \n // Reset clock hand\n this.resetClock(delay);\n\n // After transitions ended\n clearTimeout(this.toggleViewTimer);\n this.toggleViewTimer = setTimeout(function() {\n hideView.css('visibility', 'hidden');\n }, duration);\n\n this.disableOutOfRangeElements();\n\n if (raiseAfterHourSelect)\n raiseCallback(this.options.afterHourSelect);\n };\n\n ClockPicker.prototype.togglePeriod = function(period) {\n let previsiousPeriod = 'pm';\n\n if (period === 'PM')\n previsiousPeriod = 'am';\n\n this.amOrPm = period;\n this.amPmBlock.children(`.${previsiousPeriod.toLowerCase()}`).removeClass('active');\n this.amPmBlock.children(`.${period.toLowerCase()}`).addClass('active');\n\n this.disableOutOfRangeElements();\n };\n\n // Reset clock hand\n ClockPicker.prototype.resetClock = function(delay) {\n var view = this.currentView,\n value = this[view],\n isHours = view === 'hours',\n unit = Math.PI / (isHours ? 6 : 30),\n radian = value * unit,\n radius = isHours && value > 0 && value < 13 ? innerRadius : outerRadius,\n x = Math.sin(radian) * radius,\n y = - Math.cos(radian) * radius,\n self = this;\n\n if(svgSupported && delay) {\n self.canvas.addClass('clockpicker-canvas-out');\n setTimeout(function(){\n self.canvas.removeClass('clockpicker-canvas-out');\n self.setHand(x, y);\n }, delay);\n } else\n this.setHand(x, y);\n };\n\n // Set clock hand to (x, y)\n ClockPicker.prototype.setHand = function(x, y, roundBy5, dragging) {\n var radian = Math.atan2(x, - y),\n isHours = this.currentView === 'hours',\n z = Math.sqrt(x * x + y * y),\n options = this.options,\n inner = isHours && z < (outerRadius + innerRadius) / 2,\n radius = inner ? innerRadius : outerRadius,\n unit,\n value;\n\n // Calculate the unit\n if (isHours) {\n unit = options.hourstep / 6 * Math.PI\n } else {\n unit = options.minutestep / 30 * Math.PI\n }\n\n if (options.twelvehour)\n radius = outerRadius;\n\n // Radian should in range [0, 2PI]\n if (radian < 0)\n radian = Math.PI * 2 + radian;\n\n // Get the round value\n value = Math.round(radian / unit);\n\n // Get the round radian\n radian = value * unit;\n // Correct the hours or minutes\n if (isHours) {\n value *= options.hourstep;\n if (! options.twelvehour && (!inner)==(value>0)) {\n value += 12;\n }\n if (options.twelvehour && value === 0) {\n value = 12;\n }\n if (value === 24) {\n value = 0;\n }\n } else {\n value *= options.minutestep;\n if (value === 60) {\n value = 0;\n }\n }\n // disable action when out of allow range\n let { minHours, maxHours, minMinutes, maxMinutes, amOrPm } = this;\n\n if (isHours) {\n let hours = value; \n\n if (this.amOrPm === 'PM') {\n if (minHours < 12)\n minHours = 0;\n if (minHours > 12)\n minHours -= 12;\n if (maxHours > 12)\n maxHours -= 12;\n }\n \n if (this.isTwelvehour && hours == 12)\n hours = 0;\n\n if (hours < minHours || hours > maxHours){\n this.isInvalidTimeScope = true;\n return;\n }\n\n if (this.isTwelvehour && hours === 12) {\n this.isInvalidTimeScope = true;\n return;\n }\n } else {\n let { hours } = this;\n\n if (amOrPm === 'PM')\n hours += 12;\n\n if ((hours == minHours && value < minMinutes) || (hours == maxHours && value > maxMinutes)) {\n this.isInvalidTimeScope = true;\n return;\n }\n }\n\n if (isHours)\n this.fg.setAttribute('class', 'clockpicker-canvas-fg');\n else {\n if (value % 5 == 0)\n this.fg.setAttribute('class', 'clockpicker-canvas-fg');\n else\n this.fg.setAttribute('class', 'clockpicker-canvas-fg active');\n }\n\n // Once hours or minutes changed, vibrate the device\n if (this[this.currentView] !== value)\n if (vibrate && this.options.vibrate)\n // Do not vibrate too frequently\n if (! this.vibrateTimer) {\n navigator[vibrate](10);\n this.vibrateTimer = setTimeout($.proxy(function(){\n this.vibrateTimer = null;\n }, this), 100);\n }\n this[this.currentView] = value;\n this[isHours ? 'spanHours' : 'spanMinutes'].html(leadingZero(value));\n\n // If svg is not supported, just add an active class to the tick\n if (! svgSupported) {\n this[isHours ? 'hoursView' : 'minutesView'].find('.clockpicker-tick').each(function(){\n var tick = $(this);\n tick.toggleClass('active', value === + tick.html());\n });\n return;\n }\n\n // Place clock hand at the top when dragging\n if (dragging || (! isHours && value % 5)) {\n this.g.insertBefore(this.hand, this.bearing);\n this.g.insertBefore(this.bg, this.fg);\n this.bg.setAttribute('class', 'clockpicker-canvas-bg clockpicker-canvas-bg-trans');\n } else {\n // Or place it at the bottom\n this.g.insertBefore(this.hand, this.bg);\n this.g.insertBefore(this.fg, this.bg);\n this.bg.setAttribute('class', 'clockpicker-canvas-bg');\n }\n\n // Set clock hand and others' position\n var cx = Math.sin(radian) * radius,\n cy = - Math.cos(radian) * radius;\n this.hand.setAttribute('x2', cx);\n this.hand.setAttribute('y2', cy);\n this.bg.setAttribute('cx', cx);\n this.bg.setAttribute('cy', cy);\n this.fg.setAttribute('cx', cx);\n this.fg.setAttribute('cy', cy);\n };\n\n // Clear clock text\n ClockPicker.prototype.clearInput = function() {\n this.input.val('');\n this.hide();\n\n if(this.options.afterDone && typeof this.options.afterDone === 'function')\n this.options.afterDone(this.input, null);\n };\n\n // Allow user to get time as Date object\n ClockPicker.prototype.getTime = function(callback) {\n this.parseInputValue();\n\n var hours = this.hours;\n if (this.options.twelvehour && hours < 12 && this.amOrPm === 'PM') {\n hours += 12;\n }\n\n var selectedTime = new Date();\n selectedTime.setMinutes(this.minutes)\n selectedTime.setHours(hours);\n selectedTime.setSeconds(0);\n\n return callback && callback.apply(this.element, selectedTime) || selectedTime;\n };\n\n // Hours and minutes are selected\n ClockPicker.prototype.done = function() {\n raiseCallback(this.options.beforeDone);\n this.hide();\n this.label.addClass('active');\n\n var last = this.input.prop('value'),\n outHours = this.hours,\n value = ':' + leadingZero(this.minutes);\n\n if (this.isHTML5 && this.options.twelvehour) {\n if (this.hours < 12 && this.amOrPm === 'PM') {\n outHours += 12;\n }\n if (this.hours === 12 && this.amOrPm === 'AM') {\n outHours = 0;\n }\n }\n\n value = leadingZero(outHours) + value;\n\n if (!this.isHTML5 && this.options.twelvehour) {\n value = value + this.amOrPm;\n }\n\n this.input.prop('value', value);\n if(value !== last) {\n this.input.trigger('change');\n }\n\n if(this.options.autoclose)\n this.input.trigger('blur');\n\n raiseCallback(this.options.afterDone);\n };\n\n // Remove clockpicker from input\n ClockPicker.prototype.remove = function() {\n this.element.removeData('clockpicker');\n this.input.off('focus.clockpicker click.clockpicker');\n if (this.isShown)\n this.hide();\n if (this.isAppended) {\n $win.off('resize.clockpicker' + this.id);\n this.popover.remove();\n }\n };\n\n // Extends $.fn.clockpicker\n $.fn.timepicker = function(option){\n var args = Array.prototype.slice.call(arguments, 1);\n function handleClockPickerRequest(){\n var $this = $(this),\n data = $this.data('clockpicker');\n if (!data) {\n $this.data('clockpicker', new ClockPicker($this));\n } else {\n // Manual operations. show, hide, remove, e.g.\n if (typeof data[option] === 'function')\n data[option].apply(data, args);\n }\n }\n \n // If we explicitly do a call on a single element then we can return the value (if needed)\n // This allows us, for example, to return the value of getTime\n if (this.length == 1) {\n var returnValue = handleClockPickerRequest.apply(this[0]);\n\n // If we do not have any return value then return the object itself so you can chain\n return returnValue !== undefined ? returnValue : this;\n }\n\n // If we do have a list then we do not care about return values\n return this.each(handleClockPickerRequest);\n };\n\n // autoinit timepicker\n $('div.timepicker').timepicker();\n\n $('#time-picker-opener').on('click', e => {\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\n\t\tconst openElementData = e.target.dataset.open;\n\t\tconst $picker = $(`#${openElementData}`).timepicker('picker');\n\t\t$picker.data('clockpicker').show();\n\t});\n});\n","jQuery(($) => {\n\n class SideNav2 {\n\n constructor(element, options) {\n\n this.settings = {\n menuLeftMinBorder: 0.3,\n menuLeftMaxBorder: -0.5,\n menuRightMinBorder: -0.3,\n menuRightMaxBorder: 0.5,\n menuVelocityOffset: 10\n };\n\n this.defaults = {\n menuWidth: 240,\n edge: 'left',\n closeOnClick: false,\n breakpoint: 1440,\n timeDurationOpen: 500,\n timeDurationClose: 500,\n timeDurationOverlayOpen: 200,\n timeDurationOverlayClose: 200,\n easingOpen: 'easeInOutQuad',\n easingClose: 'easeInOutQuad',\n showOverlay: true,\n showCloseButton: false,\n slim: false,\n onOpen: null,\n onClose: null,\n // side, push, over\n mode: 'over'\n };\n\n this.$element = element;\n\n this.$elementCloned = element.clone().css({\n display: 'inline-block',\n lineHeight: '24px'\n }).html('');\n\n this.options = this.assignOptions(options);\n\n this.menuOut = false;\n this.lastTouchVelocity = {\n x: {\n startPosition: 0,\n startTime: 0,\n endPosition: 0,\n endTime: 0\n }\n };\n\n this.$body = $('body');\n this.$menu = $(`#${this.$element.attr('data-activates')}`);\n this.$sidenavOverlay = $('#sidenav-overlay');\n this.$dragTarget = $('
      ');\n this.isTouchDevice = 'ontouchstart' in document.documentElement;\n this.$body.append(this.$dragTarget);\n\n }\n\n assignOptions(newOptions) {\n\n return $.extend({}, this.defaults, newOptions);\n }\n\n init() {\n this.setMenuWidth();\n this.setMenuTranslation();\n this.closeOnClick();\n this.openOnClick();\n this.bindTouchEvents();\n this.bindKeydownEvents();\n this.showCloseButton();\n this.inputOnClick();\n this.setTabTrap();\n this.handleSlim();\n if (this.options.slim === true) {\n $('#toggle').trigger('click');\n }\n this.onOpen();\n this.onClose();\n if(this.options[0] + this.options[1] + this.options[2] + this.options[3] === 'show' && this.menuOut === false) {\n this.$element.trigger('click')\n }\n if(this.options[0] + this.options[1] + this.options[2] + this.options[3] === 'hide' && this.menuOut === true) {\n this.removeMenu();\n }\n \n if(this.options.mode === 'push' || this.options.mode === 'side') {\n $('.fixed-sn .main, .fixed-sn footer, .fixed-sn header').css({\n transition: 'all 0.5s ease-in-out'\n });\n }\n }\n\n setMenuWidth() {\n\n const $sidenavBg = $(`#${this.$menu.attr('id')}`).find('> .sidenav-bg');\n\n this.$menu.css('width', this.options.menuWidth);\n $sidenavBg.css('width', this.options.menuWidth);\n\n }\n\n setMenuTranslation() {\n\n if (this.options.edge === 'left') {\n\n this.$menu.css('transform', 'translateX(-100%)');\n this.$dragTarget.css({\n left: 0\n });\n\n } else {\n\n this.$menu.addClass('right-aligned').css('transform', 'translateX(100%)');\n this.$dragTarget.css({\n right: 0\n });\n }\n\n if (!this.$menu.hasClass('side')) {\n \n return;\n }\n\n if (window.innerWidth > this.options.breakpoint) {\n\n this.menuOut = true; \n this.$menu.css('transform', 'translateX(0)');\n } else {\n\n this.menuOut = false; \n }\n\n this.$menu.find('input[type=text]').on('touchstart', () => {\n\n this.$menu.addClass('transform-fix-input');\n });\n\n $(window).on('resize', () => {\n if (!this.isTouchDevice) {\n $('.fixed-sn main, .fixed-sn footer').css('padding-left', this.options.menuWidth);\n }\n \n if (window.innerWidth > this.options.breakpoint) {\n \n if (this.$sidenavOverlay.length) {\n \n this.removeMenu(true);\n $('.fixed-sn main, .fixed-sn footer').css('padding-left', this.options.menuWidth);\n } else {\n\n if(this.menuOut === false) { $(this).trigger('sidenav_open', [this.options.onOpen]) }\n\n this.$menu.css('transform', 'translateX(0%)');\n this.menuOut = true; \n }\n } else if (this.menuOut === false && !this.isTouchDevice) {\n \n const xValue = this.options.edge === 'left' ? '-100' : '100';\n this.$menu.css('transform', `translateX(${xValue}%)`);\n this.removeMenu(true);\n } else if (!this.isTouchDevice) {\n this.menuOut = false; \n this.removeMenu(true);\n }\n });\n\n }\n\n closeOnClick() {\n\n if (this.options.closeOnClick === true) {\n\n this.$menu.on('click', 'a:not(.collapsible-header)', () => this.removeMenu());\n\n if (this.$menu.css('transform') === 'translateX(0)') {\n this.$menu.on('click', () => this.removeMenu());\n }\n }\n }\n\n onOpen(callback) {\n\n $(this).on('sidenav_open', (event, callback) => {\n if (typeof callback === 'function') {\n\n callback();\n }\n });\n }\n\n onClose(callback) {\n\n $(this).on('sidenav_close', (event, callback) => {\n if (typeof callback === 'function') {\n\n callback();\n }\n });\n }\n\n openOnClick() {\n \n // eslint-disable-next-line consistent-return\n this.$element.on('click', e => {\n\n e.preventDefault();\n if (this.menuOut === true) {\n return this.removeMenu();\n } else {\n $(this).trigger('sidenav_open', [this.options.onOpen]);\n this.menuOut = true;\n }\n\n if (this.options.showOverlay === true) {\n if (!$('#sidenav-overlay').length) {\n \n this.showSidenavOverlay()\n }\n } else {\n this.showCloseButton();\n }\n\n let translateX = [];\n\n if (this.options.edge === 'left') {\n\n translateX = [0, -1 * this.options.menuWidth];\n } else {\n\n translateX = [0, this.options.menuWidth];\n }\n if (this.$menu.css('transform') !== 'matrix(1, 0, 0, 1, 0, 0)') {\n this.$menu.velocity({\n translateX\n }, {\n duration: this.options.timeDurationOpen,\n queue: false,\n easing: this.options.easingOpen\n });\n }\n // this.$sidenavOverlay.on('click', () => this.removeMenu());\n\n this.$sidenavOverlay.on('touchmove', this.touchmoveEventHandler.bind(this));\n this.$menu.on('touchmove', e => {\n\n e.preventDefault();\n\n this.$menu.find('.custom-scrollbar').css('padding-bottom', '30px');\n\n });\n\n if(this.options.showOverlay === false) {\n \n this.menuOut = true;\n }\n\n if(this.options.mode === 'push') {\n let sidePadding;\n if(!this.$menu.hasClass('slim')) {\n sidePadding = this.options.edge === 'left' ? {marginLeft: `${this.options.menuWidth}px`} : {marginLeft: `-${this.options.menuWidth}px`}\n } else {\n sidePadding = this.options.edge === 'left' ? {marginLeft: `3.75rem`} : {marginLeft: `-3.75rem`}\n }\n \n $('.fixed-sn .main, .fixed-sn footer, .fixed-sn header').css(sidePadding);\n \n }\n if(this.options.mode === 'side') {\n const elWidth = $('.main').width() - this.options.menuWidth;\n \n let sidePadding;\n if(!this.$menu.hasClass('slim')) {\n sidePadding = this.options.edge === 'left' ? {marginLeft: `${this.options.menuWidth}px`, width: `${elWidth}px`} : {marginRight: `${this.options.menuWidth}px`, width: `${elWidth}px`}\n } else {\n sidePadding = this.options.edge === 'left' ? {marginLeft: `3.75rem`, width: ``} : {marginLeft: `-3.75rem`, width: ``}\n }\n $('.fixed-sn .main, .fixed-sn footer, .fixed-sn header').css(sidePadding);\n }\n });\n }\n\n bindTouchEvents() {\n\n this.$dragTarget.on('click', () => {\n \n if (this.menuOut) {\n this.removeMenu();\n } \n } );\n\n this.$dragTarget.on('touchstart', e => {\n\n this.lastTouchVelocity.x.startPosition = e.touches[0].clientX;\n this.lastTouchVelocity.x.startTime = Date.now();\n });\n this.$dragTarget.on('touchmove', this.touchmoveEventHandler.bind(this));\n this.$dragTarget.on('touchend', this.touchendEventHandler.bind(this));\n }\n\n showCloseButton() {\n\n if (this.options.showCloseButton === true) {\n\n this.$menu.prepend(this.$elementCloned);\n this.$menu.find('.logo-wrapper').css({\n borderTop: '1px solid rgba(153,153,153,.3)'\n });\n }\n }\n\n inputOnClick() {\n\n this.$menu.find('input[type=text]').on('touchstart', () => this.$menu.css('transform', 'translateX(0)'));\n }\n\n removeMenu(restoreMenu) {\n if(this.options.mode === 'push') {\n $('.fixed-sn .main, .fixed-sn footer, .fixed-sn header').css({\n marginLeft: '0'\n });\n }\n if(this.options.mode === 'side') {\n const elWidth = $('.main').width() + this.options.menuWidth;\n $('.fixed-sn .main, .fixed-sn footer, .fixed-sn header').css({\n marginLeft: '0',\n width: `100%`\n });\n }\n this.$body.css({\n overflow: '',\n width: ''\n });\n\n this.$menu.velocity({\n translateX: this.options.edge === 'left' ? '-100%' : '100%'\n }, {\n duration: this.options.timeDurationClose,\n queue: false,\n easing: this.options.easingClose,\n complete: () => {\n if (restoreMenu === true) {\n this.$menu.removeAttr('style');\n this.$menu.css('width', this.options.menuWidth);\n }\n }\n });\n\n this.$menu.removeClass('transform-fix-input');\n this.hideSidenavOverlay();\n this.menuOut = false;\n \n $('.fixed-sn .double-nav').css('padding-left', 'unset');\n $('.fixed-sn main, .fixed-sn footer').css({\n 'padding-left': '0'\n });\n $(this).trigger('sidenav_close', [this.options.onClose]);\n }\n\n handleSlim() {\n\n const $toggle = $('#toggle');\n $toggle.on('click', () => {\n if (this.$menu.hasClass('slim')) {\n this.$menu.removeClass('slim');\n $('.sv-slim-icon').removeClass('fa-angle-double-right').addClass('fa-angle-double-left');\n $('.fixed-sn .double-nav').css({\n transition: 'all .3s ease-in-out',\n 'padding-left': '15.9rem'\n });\n \n if(this.options.mode === 'push') {\n const sidePadding = this.options.edge === 'left' ? {marginLeft: `15rem`} : {marginRight: `15rem`, marginLeft: '-15rem'}\n $('.fixed-sn .main, .fixed-sn footer, .fixed-sn header').css(sidePadding);\n }\n if(this.options.mode === 'side') {\n \n // const elWidth = $('.main').width() - this.options.menuWidth;\n const sidePadding = this.options.edge === 'left' ? {marginLeft: `15rem`, width: ``} : {marginRight: `15rem`, width: ``}\n $('.fixed-sn .main, .fixed-sn footer, .fixed-sn header').css(sidePadding);\n }\n\n $('.fixed-sn main, .fixed-sn footer').css({\n transition: 'all .3s ease-in-out',\n 'padding-left': '15rem'\n });\n\n } else {\n\n this.$menu.addClass('slim');\n \n if(this.options.edge === 'right') {\n this.$menu.css({right: '0'})\n }\n\n if(this.options.mode === 'push') {\n const sidePadding = this.options.edge === 'left' ? {marginLeft: `3.75rem`} : {marginRight: `3.75rem`, marginLeft: '0'}\n $('.fixed-sn .main, .fixed-sn footer, .fixed-sn header').css(sidePadding);\n }\n\n if(this.options.mode === 'side') {\n \n const elWidth = $('.main').width() - this.options.menuWidth;\n const sidePadding = this.options.edge === 'left' ? {marginLeft: `3.75rem`, width: ``} : {marginRight: `3.75rem`, width: ``}\n $('.fixed-sn .main, .fixed-sn footer, .fixed-sn header').css(sidePadding);\n }\n \n $('.sv-slim-icon').removeClass('fa-angle-double-left').addClass('fa-angle-double-right');\n $('.fixed-sn .double-nav').css('padding-left', '4.6rem');\n $('.fixed-sn main, .fixed-sn footer').css({\n 'padding-left': '3.7rem'\n });\n }\n });\n }\n\n touchmoveEventHandler(e) {\n\n if (e.type !== 'touchmove') {\n\n return;\n }\n\n const [touch] = e.touches;\n let touchX = touch.clientX;\n\n // calculate velocity every 20ms\n if (Date.now() - this.lastTouchVelocity.x.startTime > 20) {\n\n this.lastTouchVelocity.x.startPosition = touch.clientX;\n this.lastTouchVelocity.x.startTime = Date.now();\n }\n\n this.disableScrolling();\n\n const overlayExists = this.$sidenavOverlay.length !== 0;\n if (!overlayExists) {\n\n this.buildSidenavOverlay();\n }\n\n // Keep within boundaries\n if (this.options.edge === 'left') {\n\n if (touchX > this.options.menuWidth) {\n\n touchX = this.options.menuWidth;\n } else if (touchX < 0) {\n\n touchX = 0;\n }\n }\n\n this.translateSidenavX(touchX);\n this.updateOverlayOpacity(touchX);\n }\n\n setTabTrap() {\n\n this.$menu.find('.collapsible-header').each((i, el) => {\n $(el).attr('tabIndex', '0');\n })\n\n this.$menu.find('#toggle').attr('tabIndex', '0');\n\n const tabTrapElements = this.$menu.find('a[tabindex=0]');\n const numberOfElements = tabTrapElements.length;\n const firstElement = this.$menu.find('li').get(0);\n const lastElement = tabTrapElements.get(numberOfElements - 1);\n\n const tabKey = 9;\n\n $(lastElement).on('keydown', (e) => {\n if (e.keyCode === tabKey) {\n e.preventDefault();\n if (!e.shiftKey) {\n $(firstElement).find('a').focus();\n }\n \n if (e.shiftKey) {\n $(lastElement).focus();\n }\n }\n })\n }\n\n bindKeydownEvents () {\n const space = 32;\n const enter = 13;\n\n this.$menu.find('.collapsible-accordion a').on('keydown', (e) => {\n if (e.keyCode === space || e.keyCode === enter) {\n $(e.currentTarget).trigger('click');\n }\n });\n }\n\n calculateTouchVelocityX() {\n\n const distance = Math.abs(this.lastTouchVelocity.x.endPosition - this.lastTouchVelocity.x.startPosition);\n const time = Math.abs(this.lastTouchVelocity.x.endTime - this.lastTouchVelocity.x.startTime);\n\n return distance / time;\n }\n\n touchendEventHandler(e) {\n\n if (e.type !== 'touchend') {\n\n return;\n }\n\n const touch = e.changedTouches[0];\n\n this.lastTouchVelocity.x.endTime = Date.now();\n this.lastTouchVelocity.x.endPosition = touch.clientX;\n const velocityX = this.calculateTouchVelocityX();\n\n const touchX = touch.clientX;\n let leftPos = touchX - this.options.menuWidth;\n let rightPos = touchX - this.options.menuWidth / 2;\n if (leftPos > 0) {\n leftPos = 0;\n }\n if (rightPos < 0) {\n rightPos = 0;\n }\n\n if (this.options.edge === 'left') {\n\n // If velocityX <= 0.3 then the user is flinging the menu closed so ignore this.menuOut\n if (this.menuOut || velocityX <= this.settings.menuLeftMinBorder || velocityX < this.options.menuLeftMaxBorder) {\n\n if (leftPos !== 0) {\n\n this.translateMenuX([0, leftPos], '300');\n }\n\n this.showSidenavOverlay();\n\n } else if (!this.menuOut || velocityX > this.settings.menuLeftMinBorder) {\n\n this.enableScrolling();\n this.translateMenuX([-1 * this.options.menuWidth - this.options.menuVelocityOffset, leftPos], '200');\n this.hideSidenavOverlay();\n }\n\n this.$dragTarget.css({\n width: '10px',\n right: '',\n left: 0\n });\n } else if (this.menuOut && velocityX >= this.settings.menuRightMinBorder || velocityX > this.settings.menuRightMaxBorder) {\n\n this.translateMenuX([0, rightPos], '300');\n this.showSidenavOverlay();\n\n this.$dragTarget.css({\n width: '50%',\n right: '',\n left: 0\n });\n } else if (!this.menuOut || velocityX < this.settings.menuRightMinBorder) {\n\n this.enableScrolling();\n this.translateMenuX([this.options.menuWidth + this.options.menuVelocityOffset, rightPos], '200');\n this.hideSidenavOverlay();\n\n this.$dragTarget.css({\n width: '10px',\n right: 0,\n left: ''\n });\n }\n }\n\n buildSidenavOverlay() {\n\n if (this.options.showOverlay === true) {\n\n this.$sidenavOverlay = $('
      ');\n this.$sidenavOverlay.css('opacity', 0).on('click', () => this.removeMenu());\n\n this.$body.append(this.$sidenavOverlay);\n }\n }\n\n disableScrolling() {\n\n const oldWidth = this.$body.innerWidth();\n this.$body.css('overflow', 'hidden');\n this.$body.width(oldWidth);\n }\n\n enableScrolling() {\n\n this.$body.css({\n overflow: '',\n width: ''\n });\n }\n\n translateMenuX(fromTo, duration) {\n\n this.$menu.velocity({\n translateX: fromTo\n }, {\n duration: typeof duration === 'string' ? Number(duration) : duration,\n queue: false,\n easing: this.options.easingOpen\n });\n }\n\n translateSidenavX(touchX) {\n\n if (this.options.edge === 'left') {\n\n const isRightDirection = touchX >= this.options.menuWidth / 2;\n this.menuOut = isRightDirection;\n\n this.$menu.css('transform', `translateX(${touchX - this.options.menuWidth}px)`);\n } else {\n\n const isLeftDirection = touchX < window.innerWidth - this.options.menuWidth / 2;\n this.menuOut = isLeftDirection;\n\n let rightPos = touchX - this.options.menuWidth / 2;\n if (rightPos < 0) {\n rightPos = 0;\n }\n\n this.$menu.css('transform', `translateX(${rightPos}px)`);\n }\n }\n\n updateOverlayOpacity(touchX) {\n\n let overlayPercentage;\n if (this.options.edge === 'left') {\n\n overlayPercentage = touchX / this.options.menuWidth;\n } else {\n\n overlayPercentage = Math.abs((touchX - window.innerWidth) / this.options.menuWidth);\n }\n\n this.$sidenavOverlay.velocity({\n opacity: overlayPercentage\n }, {\n duration: 10,\n queue: false,\n easing: this.options.easingOpen\n });\n }\n\n showSidenavOverlay() {\n\n if (this.options.showOverlay === true && !$('#sidenav-overlay').length) {\n this.buildSidenavOverlay();\n }\n this.$sidenavOverlay.velocity({\n opacity: 1\n }, {\n duration: this.options.timeDurationOverlayOpen,\n queue: false,\n easing: this.options.easingOpen\n });\n }\n\n hideSidenavOverlay() {\n\n this.$sidenavOverlay.velocity({\n opacity: 0\n }, {\n duration: this.options.timeDurationOverlayClose,\n queue: false,\n easing: this.options.easingOpen,\n complete() {\n $(this).remove();\n }\n });\n }\n }\n\n $.fn.sideNav2 = function (options) {\n $(this).each(function () {\n const sidenav2 = new SideNav2($(this), options);\n sidenav2.init();\n });\n };\n\n $('.side-nav').on('touchmove', function (e) {\n e.stopPropagation();\n }, false);\n});\n"],"sourceRoot":""}