{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/swiper/shared/utils.mjs","webpack:///./node_modules/moment/moment.js","webpack:///./app/javascript/packs/util/methods.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./node_modules/swiper/shared/ssr-window.esm.mjs","webpack:///./node_modules/filepond/dist/filepond.js","webpack:///./node_modules/swiper/modules/keyboard.mjs","webpack:///./node_modules/swiper/shared/create-element-if-not-defined.mjs","webpack:///./node_modules/swiper/modules/navigation.mjs","webpack:///./node_modules/swiper/shared/classes-to-selector.mjs","webpack:///./node_modules/swiper/modules/pagination.mjs","webpack:///./node_modules/swiper/modules/thumbs.mjs","webpack:///./app/javascript/packs/components/product/product_page.js","webpack:///./app/javascript/packs/views/creator/products/form_sections.js","webpack:///./app/javascript/packs/util/touchDevice.js","webpack:///./node_modules/core-js/internals/global.js","webpack:///./node_modules/core-js/internals/is-callable.js","webpack:///./app/javascript/packs/components/product/bar_rating.js","webpack:///./node_modules/swiper/shared/swiper-core.mjs","webpack:///./app/javascript/packs/components/product/product_rating_form.js","webpack:///./app/javascript/packs/components/product/product_ratings_pagination.js","webpack:///./node_modules/core-js/internals/fails.js","webpack:///./node_modules/core-js/internals/function-uncurry-this.js","webpack:///./node_modules/sortablejs/modular/sortable.esm.js","webpack:///./node_modules/core-js/internals/has-own-property.js","webpack:///./app/javascript/packs/components/swiper_init/swiper.js","webpack:///./node_modules/core-js/internals/descriptors.js","webpack:///./node_modules/js-cookie/src/js.cookie.js","webpack:///./app/javascript/packs/views/creator/products/version_form.js","webpack:///./node_modules/chartkick/dist/chartkick.js","webpack:///./node_modules/highcharts/highcharts.js","webpack:///./node_modules/core-js/internals/is-object.js","webpack:///./node_modules/moment/locale/af.js","webpack:///./node_modules/moment/locale/ar.js","webpack:///./node_modules/moment/locale/ar-dz.js","webpack:///./node_modules/moment/locale/ar-kw.js","webpack:///./node_modules/moment/locale/ar-ly.js","webpack:///./node_modules/moment/locale/ar-ma.js","webpack:///./node_modules/moment/locale/ar-sa.js","webpack:///./node_modules/moment/locale/ar-tn.js","webpack:///./node_modules/moment/locale/az.js","webpack:///./node_modules/moment/locale/be.js","webpack:///./node_modules/moment/locale/bg.js","webpack:///./node_modules/moment/locale/bm.js","webpack:///./node_modules/moment/locale/bn.js","webpack:///./node_modules/moment/locale/bn-bd.js","webpack:///./node_modules/moment/locale/bo.js","webpack:///./node_modules/moment/locale/br.js","webpack:///./node_modules/moment/locale/bs.js","webpack:///./node_modules/moment/locale/ca.js","webpack:///./node_modules/moment/locale/cs.js","webpack:///./node_modules/moment/locale/cv.js","webpack:///./node_modules/moment/locale/cy.js","webpack:///./node_modules/moment/locale/da.js","webpack:///./node_modules/moment/locale/de.js","webpack:///./node_modules/moment/locale/de-at.js","webpack:///./node_modules/moment/locale/de-ch.js","webpack:///./node_modules/moment/locale/dv.js","webpack:///./node_modules/moment/locale/el.js","webpack:///./node_modules/moment/locale/en-au.js","webpack:///./node_modules/moment/locale/en-ca.js","webpack:///./node_modules/moment/locale/en-gb.js","webpack:///./node_modules/moment/locale/en-ie.js","webpack:///./node_modules/moment/locale/en-il.js","webpack:///./node_modules/moment/locale/en-in.js","webpack:///./node_modules/moment/locale/en-nz.js","webpack:///./node_modules/moment/locale/en-sg.js","webpack:///./node_modules/moment/locale/eo.js","webpack:///./node_modules/moment/locale/es.js","webpack:///./node_modules/moment/locale/es-do.js","webpack:///./node_modules/moment/locale/es-mx.js","webpack:///./node_modules/moment/locale/es-us.js","webpack:///./node_modules/moment/locale/et.js","webpack:///./node_modules/moment/locale/eu.js","webpack:///./node_modules/moment/locale/fa.js","webpack:///./node_modules/moment/locale/fi.js","webpack:///./node_modules/moment/locale/fil.js","webpack:///./node_modules/moment/locale/fo.js","webpack:///./node_modules/moment/locale/fr.js","webpack:///./node_modules/moment/locale/fr-ca.js","webpack:///./node_modules/moment/locale/fr-ch.js","webpack:///./node_modules/moment/locale/fy.js","webpack:///./node_modules/moment/locale/ga.js","webpack:///./node_modules/moment/locale/gd.js","webpack:///./node_modules/moment/locale/gl.js","webpack:///./node_modules/moment/locale/gom-deva.js","webpack:///./node_modules/moment/locale/gom-latn.js","webpack:///./node_modules/moment/locale/gu.js","webpack:///./node_modules/moment/locale/he.js","webpack:///./node_modules/moment/locale/hi.js","webpack:///./node_modules/moment/locale/hr.js","webpack:///./node_modules/moment/locale/hu.js","webpack:///./node_modules/moment/locale/hy-am.js","webpack:///./node_modules/moment/locale/id.js","webpack:///./node_modules/moment/locale/is.js","webpack:///./node_modules/moment/locale/it.js","webpack:///./node_modules/moment/locale/it-ch.js","webpack:///./node_modules/moment/locale/ja.js","webpack:///./node_modules/moment/locale/jv.js","webpack:///./node_modules/moment/locale/ka.js","webpack:///./node_modules/moment/locale/kk.js","webpack:///./node_modules/moment/locale/km.js","webpack:///./node_modules/moment/locale/kn.js","webpack:///./node_modules/moment/locale/ko.js","webpack:///./node_modules/moment/locale/ku.js","webpack:///./node_modules/moment/locale/ky.js","webpack:///./node_modules/moment/locale/lb.js","webpack:///./node_modules/moment/locale/lo.js","webpack:///./node_modules/moment/locale/lt.js","webpack:///./node_modules/moment/locale/lv.js","webpack:///./node_modules/moment/locale/me.js","webpack:///./node_modules/moment/locale/mi.js","webpack:///./node_modules/moment/locale/mk.js","webpack:///./node_modules/moment/locale/ml.js","webpack:///./node_modules/moment/locale/mn.js","webpack:///./node_modules/moment/locale/mr.js","webpack:///./node_modules/moment/locale/ms.js","webpack:///./node_modules/moment/locale/ms-my.js","webpack:///./node_modules/moment/locale/mt.js","webpack:///./node_modules/moment/locale/my.js","webpack:///./node_modules/moment/locale/nb.js","webpack:///./node_modules/moment/locale/ne.js","webpack:///./node_modules/moment/locale/nl.js","webpack:///./node_modules/moment/locale/nl-be.js","webpack:///./node_modules/moment/locale/nn.js","webpack:///./node_modules/moment/locale/oc-lnc.js","webpack:///./node_modules/moment/locale/pa-in.js","webpack:///./node_modules/moment/locale/pl.js","webpack:///./node_modules/moment/locale/pt.js","webpack:///./node_modules/moment/locale/pt-br.js","webpack:///./node_modules/moment/locale/ro.js","webpack:///./node_modules/moment/locale/ru.js","webpack:///./node_modules/moment/locale/sd.js","webpack:///./node_modules/moment/locale/se.js","webpack:///./node_modules/moment/locale/si.js","webpack:///./node_modules/moment/locale/sk.js","webpack:///./node_modules/moment/locale/sl.js","webpack:///./node_modules/moment/locale/sq.js","webpack:///./node_modules/moment/locale/sr.js","webpack:///./node_modules/moment/locale/sr-cyrl.js","webpack:///./node_modules/moment/locale/ss.js","webpack:///./node_modules/moment/locale/sv.js","webpack:///./node_modules/moment/locale/sw.js","webpack:///./node_modules/moment/locale/ta.js","webpack:///./node_modules/moment/locale/te.js","webpack:///./node_modules/moment/locale/tet.js","webpack:///./node_modules/moment/locale/tg.js","webpack:///./node_modules/moment/locale/th.js","webpack:///./node_modules/moment/locale/tk.js","webpack:///./node_modules/moment/locale/tl-ph.js","webpack:///./node_modules/moment/locale/tlh.js","webpack:///./node_modules/moment/locale/tr.js","webpack:///./node_modules/moment/locale/tzl.js","webpack:///./node_modules/moment/locale/tzm.js","webpack:///./node_modules/moment/locale/tzm-latn.js","webpack:///./node_modules/moment/locale/ug-cn.js","webpack:///./node_modules/moment/locale/uk.js","webpack:///./node_modules/moment/locale/ur.js","webpack:///./node_modules/moment/locale/uz.js","webpack:///./node_modules/moment/locale/uz-latn.js","webpack:///./node_modules/moment/locale/vi.js","webpack:///./node_modules/moment/locale/x-pseudo.js","webpack:///./node_modules/moment/locale/yo.js","webpack:///./node_modules/moment/locale/zh-cn.js","webpack:///./node_modules/moment/locale/zh-hk.js","webpack:///./node_modules/moment/locale/zh-mo.js","webpack:///./node_modules/moment/locale/zh-tw.js","webpack:///./node_modules/chart.js/dist/Chart.js","webpack:///./node_modules/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.js","webpack:///./node_modules/filepond-plugin-file-metadata/dist/filepond-plugin-file-metadata.js","webpack:///./node_modules/filepond-plugin-file-validate-type/dist/filepond-plugin-file-validate-type.js","webpack:///./node_modules/filepond-plugin-file-validate-size/dist/filepond-plugin-file-validate-size.js","webpack:///./node_modules/core-js/internals/function-bind-native.js","webpack:///./node_modules/core-js/internals/object-define-property.js","webpack:///./node_modules/core-js/internals/an-object.js","webpack:///./node_modules/core-js/internals/function-call.js","webpack:///./node_modules/core-js/internals/well-known-symbol.js","webpack:///./node_modules/core-js/internals/classof-raw.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/core-js/internals/to-object.js","webpack:///./node_modules/core-js/internals/shared-store.js","webpack:///./node_modules/core-js/internals/define-global-property.js","webpack:///./node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./node_modules/core-js/internals/get-built-in.js","webpack:///./node_modules/core-js/internals/engine-user-agent.js","webpack:///./node_modules/core-js/internals/a-callable.js","webpack:///./node_modules/core-js/internals/uid.js","webpack:///./node_modules/core-js/internals/to-integer-or-infinity.js","webpack:///./node_modules/core-js/internals/to-indexed-object.js","webpack:///./app/javascript/packs/jquery.js","webpack:///./app/javascript/packs/util/staging_placeholder.js","webpack:///./app/javascript/packs/components/backend_menu/backend_menu.js","webpack:///./app/javascript/packs/components/backend_search/backend_search.js","webpack:///./app/javascript/packs/components/chart/chartkick.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./app/javascript/packs/components/chart/highcharts.js","webpack:///./app/javascript/packs/components/checkout/checkout.js","webpack:///./app/javascript/packs/components/input_date/input_date.js","webpack:///./app/javascript/packs/components/input_file/input_file.js","webpack:///./app/javascript/packs/components/input_password/show_password.js","webpack:///./app/javascript/packs/components/input_select/input_select.js","webpack:///./app/javascript/packs/components/input_select/input_user_select.js","webpack:///./app/javascript/packs/components/input_select/input_variant_file_select.js","webpack:///./app/javascript/packs/components/input_slug/input_slug.js","webpack:///./app/javascript/packs/components/input_text/input_text.js","webpack:///./app/javascript/packs/components/input_text/counted.js","webpack:///./app/javascript/packs/components/modal/modal_cart_login.js","webpack:///./app/javascript/packs/components/modal/modal_support.js","webpack:///./app/javascript/packs/components/modal/modal_youtube.js","webpack:///./app/javascript/packs/components/product/product_content.js","webpack:///./app/javascript/packs/components/product/product_sidebar.js","webpack:///./app/javascript/packs/components/product/variant_pricing.js","webpack:///./app/javascript/packs/components/sort/sort.js","webpack:///./app/javascript/packs/components/sort/product_grid.js","webpack:///./app/javascript/packs/components/analytics/google_analytics.js","webpack:///./app/javascript/packs/components/copy/copy_text.js","webpack:///./app/javascript/packs/components/mailchimp/mailchimp_subscribe_form.js","webpack:///./app/javascript/packs/views/account/account.js","webpack:///./app/javascript/packs/views/admin/coupons/coupons.js","webpack:///./app/javascript/packs/views/admin/orders/orders.js","webpack:///./app/javascript/packs/views/admin/payouts/payouts.js","webpack:///./app/javascript/packs/views/admin/product_review/flags.js","webpack:///./app/javascript/packs/views/admin/product_review/product_edit.js","webpack:///./app/javascript/packs/views/admin/refunds/refunds.js","webpack:///./app/javascript/packs/views/admin/sale_campaigns/sale_campaigns.js","webpack:///./app/javascript/packs/views/creator/affiliates/creator_affiliates.js","webpack:///./app/javascript/packs/views/creator/emails/emails.js","webpack:///./app/javascript/packs/views/creator/products/categories.js","webpack:///./app/javascript/packs/views/creator/products/commission.js","webpack:///./app/javascript/packs/views/creator/products/dev_fund.js","webpack:///./app/javascript/packs/views/creator/products/edit_product.js","webpack:///./app/javascript/packs/views/creator/products/submit_review.js","webpack:///./app/javascript/packs/views/creator/products/variants_sortable.js","webpack:///./app/javascript/packs/views/creator/products/version_downloads_sortable.js","webpack:///./app/javascript/packs/views/creator/products/webhook_form.js","webpack:///./app/javascript/packs/views/creator/products/webhook_resend_form.js","webpack:///./app/javascript/packs/views/header/main_menu.js","webpack:///./app/javascript/packs/views/header/search.js","webpack:///./app/javascript/packs/views/header/user_dropdown.js","webpack:///./app/javascript/packs/views/header/creator_dropdown.js","webpack:///./app/javascript/packs/views/inbox/read_all_switch.js","webpack:///./app/javascript/packs/views/login/login.js","webpack:///./app/javascript/packs/views/order/pickup.js","webpack:///./app/javascript/packs/views/privacy/privacy.js","webpack:///./node_modules/@yaireo/tagify/dist/tagify.min.js","webpack:///./node_modules/core-js/internals/define-built-in-accessor.js","webpack:///./node_modules/core-js/internals/make-built-in.js","webpack:///./node_modules/core-js/internals/document-all.js","webpack:///./node_modules/core-js/internals/require-object-coercible.js","webpack:///./node_modules/core-js/internals/is-null-or-undefined.js","webpack:///./node_modules/core-js/internals/internal-state.js","webpack:///./node_modules/core-js/internals/ie8-dom-define.js","webpack:///./node_modules/core-js/internals/document-create-element.js","webpack:///./node_modules/core-js/internals/to-property-key.js","webpack:///./node_modules/core-js/internals/is-symbol.js","webpack:///./node_modules/core-js/internals/object-is-prototype-of.js","webpack:///./node_modules/core-js/internals/use-symbol-as-uid.js","webpack:///./node_modules/core-js/internals/symbol-constructor-detection.js","webpack:///./node_modules/core-js/internals/try-to-string.js","webpack:///./node_modules/core-js/internals/shared.js","webpack:///./node_modules/core-js/internals/create-property-descriptor.js","webpack:///./node_modules/core-js/internals/shared-key.js","webpack:///./node_modules/core-js/internals/hidden-keys.js","webpack:///./node_modules/core-js/internals/define-built-in.js","webpack:///./node_modules/core-js/internals/length-of-array-like.js","webpack:///./node_modules/core-js/internals/export.js","webpack:///./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./node_modules/core-js/internals/task.js","webpack:///./node_modules/core-js/internals/function-apply.js","webpack:///./node_modules/core-js/internals/array-slice.js","webpack:///./node_modules/core-js/internals/validate-arguments-length.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./app/javascript/packs/application.js","webpack:///./node_modules/core-js/modules/es.regexp.flags.js","webpack:///./node_modules/core-js/internals/function-name.js","webpack:///./node_modules/core-js/internals/inspect-source.js","webpack:///./node_modules/core-js/internals/weak-map-basic-detection.js","webpack:///./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack:///./node_modules/core-js/internals/to-primitive.js","webpack:///./node_modules/core-js/internals/engine-v8-version.js","webpack:///./node_modules/core-js/internals/get-method.js","webpack:///./node_modules/core-js/internals/ordinary-to-primitive.js","webpack:///./node_modules/core-js/internals/is-pure.js","webpack:///./node_modules/core-js/internals/regexp-flags.js","webpack:///./node_modules/core-js/modules/es.typed-array.set.js","webpack:///./node_modules/core-js/internals/array-buffer-view-core.js","webpack:///./node_modules/core-js/internals/array-buffer-basic-detection.js","webpack:///./node_modules/core-js/internals/classof.js","webpack:///./node_modules/core-js/internals/to-string-tag-support.js","webpack:///./node_modules/core-js/internals/object-get-prototype-of.js","webpack:///./node_modules/core-js/internals/correct-prototype-getter.js","webpack:///./node_modules/core-js/internals/object-set-prototype-of.js","webpack:///./node_modules/core-js/internals/function-uncurry-this-accessor.js","webpack:///./node_modules/core-js/internals/a-possible-prototype.js","webpack:///./node_modules/core-js/internals/to-length.js","webpack:///./node_modules/core-js/internals/math-trunc.js","webpack:///./node_modules/core-js/internals/to-offset.js","webpack:///./node_modules/core-js/internals/to-positive-integer.js","webpack:///./node_modules/core-js/modules/web.immediate.js","webpack:///./node_modules/core-js/modules/web.clear-immediate.js","webpack:///./node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///./node_modules/core-js/internals/indexed-object.js","webpack:///./node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./node_modules/core-js/internals/own-keys.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./node_modules/core-js/internals/object-keys-internal.js","webpack:///./node_modules/core-js/internals/array-includes.js","webpack:///./node_modules/core-js/internals/to-absolute-index.js","webpack:///./node_modules/core-js/internals/enum-bug-keys.js","webpack:///./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./node_modules/core-js/internals/is-forced.js","webpack:///./node_modules/core-js/internals/function-bind-context.js","webpack:///./node_modules/core-js/internals/function-uncurry-this-clause.js","webpack:///./node_modules/core-js/internals/html.js","webpack:///./node_modules/core-js/internals/engine-is-ios.js","webpack:///./node_modules/core-js/internals/engine-is-node.js","webpack:///./node_modules/core-js/modules/web.set-immediate.js","webpack:///./node_modules/core-js/internals/schedulers-fix.js","webpack:///./node_modules/core-js/internals/engine-is-bun.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/turbolinks/dist/turbolinks.js","webpack:///./node_modules/jquery-ujs/src/rails.js","webpack:///./node_modules/bootstrap/dist/js/bootstrap.bundle.min.js","webpack:///./node_modules/bootstrap-switch-button/dist/bootstrap-switch-button.min.js","webpack:///./node_modules/summernote/dist/summernote-lite.min.js","webpack:///./node_modules/cocoon-js/index.js","webpack:///./node_modules/flatpickr/dist/flatpickr.js","webpack:///./node_modules/select2/dist/js/select2.js","webpack:///./node_modules/sweetalert/dist/sweetalert.min.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./app/javascript/libraries/detect-swipe.js","webpack:///./app/javascript/libraries/featherlight.js","webpack:///./app/javascript/libraries/featherlight-gallery.js","webpack:///./app/javascript/libraries/jquery-bar-rating.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","classesToTokens","classes","trim","split","filter","deleteProps","obj","keys","forEach","e","nextTick","callback","delay","setTimeout","now","Date","getTranslate","el","axis","window","matrix","curTransform","transformMatrix","curStyle","style","getComputedStyle","currentStyle","WebKitCSSMatrix","transform","webkitTransform","length","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","getPropertyValue","toString","m41","parseFloat","m42","isObject","constructor","slice","extend","to","arguments","undefined","noExtend","nextSource","node","HTMLElement","nodeType","keysArray","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cancelAnimationFrame","cssModeFrameID","dir","isOutOfBound","current","target","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","requestAnimationFrame","getSlideTransformEl","slideEl","querySelector","shadowRoot","elementChildren","element","selector","children","matches","showWarning","text","console","warn","err","createElement","tag","document","classList","add","Array","isArray","elementOffset","box","getBoundingClientRect","body","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","elementPrevAll","prevEls","previousElementSibling","prev","push","elementNextAll","nextEls","nextElementSibling","next","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parent","parentElement","elementTransitionEnd","addEventListener","fireCallBack","removeEventListener","elementOuterSize","size","includeMargins","offsetWidth","hookCallback","some","hooks","apply","setHookCallback","input","hasOwnProp","b","isObjectEmpty","getOwnPropertyNames","k","isUndefined","isNumber","isDate","arr","fn","res","valueOf","createUTC","format","locale","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","isValid","_isValid","flags","parsedParts","isNowValid","isNaN","_d","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","NaN","fun","this","momentProperties","updateInProgress","copyConfig","from","val","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","msg","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","arg","args","Error","stack","deprecations","deprecateSimple","isFunction","Function","set","_config","_dayOfMonthOrdinalParseLenient","RegExp","_dayOfMonthOrdinalParse","source","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","mom","output","_calendar","zeroFill","number","targetLength","forceSign","absNumber","abs","zerosToFill","pow","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","func","localeData","removeFormattingTokens","match","makeFormatFunction","array","formatMoment","expandFormat","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","test","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","_longDateFormat","formatUpper","toUpperCase","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","ss","mm","h","hh","dd","w","ww","M","MM","y","yy","relativeTime","withoutSuffix","string","isFuture","_relativeTime","pastFuture","diff","aliases","addUnitAlias","unit","shorthand","lowerCase","toLowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","getPrioritizedUnits","unitsObj","u","sort","isLeapYear","year","absFloor","ceil","floor","toInt","argumentForCoercion","coercedNumber","isFinite","makeGetSet","keepTime","set$1","month","date","daysInMonth","stringGet","stringSet","prioritized","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","tokens","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","_a","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","mod","x","modMonth","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","dayOfMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","parseInt","getSetYear","getIsLeapYear","createDate","ms","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","concat","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","day","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","hours","kFormat","lowercase","minutes","matchMeridiem","_meridiemParse","localeIsPM","charAt","seconds","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","j","loadLocale","oldLocale","_abbr","getSetGlobalLocale","values","data","getLocale","defineLocale","abbr","parentLocale","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","exec","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","result","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","setUTCMinutes","getUTCMinutes","configFromString","createFromInputFallback","defaults","currentDateArray","nowValue","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","temp","weekdayOverflow","curWeek","GG","W","E","createLocal","gg","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","hour","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","score","configFromObject","dayOrDate","minute","second","millisecond","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","isValid$1","createInvalid$1","createDuration","Duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","_milliseconds","_days","_data","_bubble","isDuration","absRound","round","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","offset","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","parts","cloneWithOffset","model","clone","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","toArray","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","direction","period","tmp","isAdding","invalid","isString","String","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","properties","arrayTest","dataTypeTest","item","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","toISOString","keepOffset","toDate","inspect","prefix","datetime","suffix","zone","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","isoWeekday","unix","toObject","toJSON","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","narrow","localeErasConvertYear","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","isoWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","proto","createUnix","createInZone","parseZone","preParsePostFormat","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","dates","isDSTShifted","proto$1","get$1","index","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","argWithSuffix","argThresholds","withSuffix","th","assign","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","toIsoString","version","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","factory","url_add_param","url","param","hash","parser","href","parameters","search","ary","list","url_remove_param","parameter","urlparts","encodeURIComponent","pars","lastIndexOf","splice","url_get_param","sParameterName","sURLVariables","decodeURIComponent","location","substring","get_base_url","text_to_slug","Text","dollars_to_cents","amount","showLoadingMessage","message","$","addClass","prepend","hideLoadingMessage","remove","removeClass","get_sale_campaign_params","displayFlashMessage","type","$notice","global","noGlobal","getProto","getPrototypeOf","flat","class2type","hasOwn","fnToString","ObjectFunctionString","support","isWindow","preservedScriptAttributes","src","nonce","noModule","DOMEval","code","doc","script","getAttribute","setAttribute","head","appendChild","parentNode","removeChild","toType","rhtmlSuffix","jQuery","context","init","isArrayLike","nodeName","elem","jquery","num","pushStack","elems","merge","prevObject","each","first","eq","last","even","grep","_elem","odd","end","options","copy","copyIsArray","deep","isPlainObject","expando","random","isReady","error","noop","Ctor","isEmptyObject","globalEval","textContent","documentElement","nodeValue","makeArray","results","inArray","isXMLDoc","namespace","namespaceURI","docElem","ownerDocument","invert","callbackExpect","guid","iterator","pop","whitespace","rtrimCSS","contains","bup","compareDocumentPosition","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","escapeSelector","sel","preferredDoc","pushNative","Expr","outermostContext","sortInput","hasDuplicate","documentIsHTML","rbuggyQSA","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","booleans","identifier","attributes","pseudos","rwhitespace","rcomma","rleadingCombinator","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","fromCharCode","unloadHandler","setDocument","inDisabledFieldset","addCombinator","disabled","childNodes","els","find","seed","nid","groups","newSelector","newContext","getElementById","id","getElementsByTagName","getElementsByClassName","testContext","scope","tokenize","toSelector","querySelectorAll","qsaError","removeAttribute","select","cache","cacheLength","markFunction","assert","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","subWindow","webkitMatchesSelector","msMatchesSelector","defaultView","getById","getElementsByName","disconnectedMatch","cssHas","attrId","getAttributeNode","className","innerHTML","compare","sortDetached","expr","elements","matchesSelector","attr","attrHandle","uniqueSort","duplicates","sortStable","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","expectedNodeName","pattern","operator","check","what","_argument","simple","forward","ofType","_context","xml","outerCache","nodeIndex","start","useCache","firstChild","lastChild","pseudo","setFilters","idx","not","compile","unmatched","has","elemLang","root","focus","activeElement","safeActiveElement","hasFocus","tabIndex","enabled","checked","selected","selectedIndex","nextSibling","header","button","_matchIndexes","lt","gt","nth","radio","checkbox","file","password","image","submit","reset","parseOnly","soFar","preFilters","cached","combinator","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","matcherOut","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","compiled","filters","unique","getText","isXML","selectors","truncate","is","siblings","rneedsContext","rsingleTag","winnow","qualifier","self","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","contents","sibling","cur","targets","closest","prevAll","addBack","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","method","promise","fail","then","Callbacks","_","flag","createOptions","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","disable","lock","fireWith","Deferred","tuples","state","always","deferred","pipe","fns","newDefer","tuple","returned","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","handler","special","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","rejectWith","getErrorHook","getStackHook","stateString","when","singleValue","remaining","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","asyncError","readyException","readyList","completed","catch","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","camelCase","acceptData","owner","Data","uid","configurable","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","JSON","parse","getData","removeData","_removeData","attrs","dequeue","startLength","_queueHooks","unshift","stop","clearQueue","count","defer","pnum","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","display","css","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","show","hide","toggle","div","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","cloneNode","noCloneChecked","defaultValue","option","wrapMap","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","optgroup","rhtml","buildFragment","scripts","selection","ignored","wrap","attached","fragment","nodes","htmlPrefilter","createTextNode","rtypenamespace","returnTrue","returnFalse","on","types","one","origFn","event","off","leverageNative","isSetup","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","preventDefault","trigger","isImmediatePropagationStopped","handleObjIn","eventHandle","events","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","Event","originalEvent","writable","load","noBubble","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","blur","focusMappedHandler","documentMode","simulate","attaches","dataHolder","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","rcustomProp","getStyles","opener","swap","old","rboxStyle","curCSS","computed","width","minWidth","maxWidth","isCustomProp","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","measure","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","height","borderTopWidth","borderBottomWidth","offsetHeight","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","boxModelAdjustment","dimension","isBorderBox","styles","computedVal","extra","delta","marginDelta","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","animationIterationCount","aspectRatio","borderImageSlice","columnCount","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","order","orphans","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeMiterlimit","strokeOpacity","origName","scrollboxSizeBuggy","margin","padding","border","expand","expanded","propHooks","run","percent","eased","step","fx","linear","swing","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","interval","tick","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","stopped","prefilters","currentTime","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","complete","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflowX","overflowY","prefilter","opt","speeds","fadeTo","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","classNames","curValue","finalValue","toggleClass","stateVal","isValidValue","hasClass","rreturn","valHooks","optionSet","rquery","parseXML","parserErrorElem","DOMParser","parseFromString","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","triggerHandler","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","valueOrFunction","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","protocol","processData","async","contentType","accepts","json","responseFields","converters","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","isSuccess","response","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","xhr","XMLHttpRequest","xhrSuccessStatus","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","Height","Width","defaultExtra","funcName","unbind","delegate","undelegate","hover","fnOver","fnOut","rtrim","proxy","holdReady","hold","parseJSON","isNumeric","_jQuery","_$","noConflict","ssrDocument","createEvent","initEvent","createElementNS","importNode","hostname","origin","pathname","getDocument","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","Image","screen","matchMedia","getWindow","isNode","createStore","initialState","queries","actions","actionQueue","dispatchQueue","processDispatchQueue","isBlocking","actionHandlers","query","str","_queryHandles","_len","queryHandles","api","getState","processActionQueue","action","definition","forin","cb","createObject","hasAttribute","svgElements","isSVGElement","includes","appendChildView","childViews","removeChildView","IS_BROWSER","isBrowser","getChildCount","getViewRect","elementRect","bottom","inner","outer","childView","isRectIgnored","childViewRect","expandRect","calculateRectSize","marginBottom","marginRight","thereYet","destination","velocity","errorMargin","spring","_ref$stiffness","stiffness","_ref$damping","damping","_ref$mass","mass","resting","interpolate","ts","skipToEndState","onupdate","oncomplete","easeInOutQuad","_ref$duration","_ref$easing","_ref$delay","animator","createAnimator","category","def","addGetSet","overwrite","addEvent","isDefined","scaleX","scaleY","translateX","translateY","rotateX","rotateY","rotateZ","originX","originY","mixinConfig","viewProps","viewInternalAPI","viewExternalAPI","initialProps","currentProps","getOffset","getScale","getRect","write","propsHaveChanged","applyStyles","destroy","newProps","_ref2","perspective","transforms","elementCurrentStyle","Mixins","listeners","viewState","findIndex","animations","apis","updateRect","layoutCalculated","paddingTop","marginTop","offsetLeft","offsetTop","createView","_ref$tag","_ref$name","_ref$attributes","_ref$read","read","_ref$write","_ref$create","_ref$destroy","_ref$filterFrameActio","filterFrameActionsForChild","_ref$didCreateView","didCreateView","_ref$didWriteView","didWriteView","_ref$ignoreRect","ignoreRect","_ref$ignoreRectUpdate","ignoreRectUpdate","_ref$mixins","mixins","store","frameRect","isResting","activeMixins","ref","writers","readers","destroyers","getElement","getChildViews","getReference","createChildView","_read","internalAPI","reader","_write","frameActions","shouldOptimize","writer","timestamp","mixin","_destroy","destroyer","sharedAPIDefinition","internalAPIDefinition","needle","linkView","unlinkView","registerWriter","registerReader","registerDestroyer","invalidateLayout","externalAPIDefinition","mixinAPIDefinition","mixinAPI","childCount","createPainter","fps","painter","requestTick","cancelTick","setTimerType","performance","pause","createRoute","routes","_ref$actions","newNode","referenceNode","isEmpty","splitter","isBoolean","toBoolean","toNumber","toFloat","isInt","toBytes","naturalFileSize","toFunctionReference","levels","level","methods","patch","revert","fetch","restore","createServerAPI","outline","createAction","withCredentials","ondata","isNull","isAPI","getType","replaceSingleQuotes","conversionTable","boolean","int","float","bytes","function","serverapi","convertTo","getValueByType","newValue","valueType","newValueType","convertedValue","createOption","optionDefinition","createInitialState","items","listUpdateTimeout","itemUpdateTimeout","processingQueue","fromCamels","part","createOptionAPI","createOptionActions","createOptionQueries","InteractionMethod","API","DROP","BROWSE","PASTE","NONE","getUniqueId","_AwaitValue","wrapped","_AsyncGenerator","gen","front","Promise","request","resume","wrappedAwait","settle","_invoke","return","_objectWithoutPropertiesLoose","excluded","sourceKeys","_objectWithoutProperties","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","iter","asyncIterator","throw","arrayRemove","sync","listener","_fire","fireSync","_len2","_key2","onOnce","_cb","copyObjectPropertiesToObject","PRIVATE","createItemAPI","removeReleasedItems","released","ItemStatus","INIT","IDLE","PROCESSING_QUEUED","PROCESSING","PROCESSING_COMPLETE","PROCESSING_ERROR","PROCESSING_REVERT_ERROR","LOADING","LOAD_ERROR","FileOrigin","INPUT","LIMBO","LOCAL","getNonNumeric","getDecimalSeparator","toLocaleString","getThousandsSeparator","decimalSeparator","thousandsStringWithSeparator","Type","BOOLEAN","INT","NUMBER","STRING","ARRAY","OBJECT","FUNCTION","ACTION","SERVER_API","REGEX","applyFilterChain","utils","matchingFilters","f","initialFilter","reduce","applyFilters","addFilter","extendDefaultOptions","additionalOptions","defaultOptions","getOptions","setOptions","required","captureMethod","allowSyncAcceptAttribute","allowDrop","allowBrowse","allowPaste","allowMultiple","allowReplace","allowRevert","allowRemove","allowProcess","allowReorder","allowDirectoriesOnly","storeAsFile","forceRevert","maxFiles","checkValidity","itemInsertLocationFreedom","itemInsertLocation","itemInsertInterval","dropOnPage","dropOnElement","dropValidation","ignoredFiles","instantUpload","maxParallelUploads","allowMinimumUploadDuration","chunkUploads","chunkForce","chunkSize","chunkRetryDelays","server","fileSizeBase","labelFileSizeBytes","labelFileSizeKilobytes","labelFileSizeMegabytes","labelFileSizeGigabytes","labelDecimalSeparator","labelThousandsSeparator","labelIdle","labelInvalidField","labelFileWaitingForSize","labelFileSizeNotAvailable","labelFileCountSingular","labelFileCountPlural","labelFileLoading","labelFileAdded","labelFileLoadError","labelFileRemoved","labelFileRemoveError","labelFileProcessing","labelFileProcessingComplete","labelFileProcessingAborted","labelFileProcessingError","labelFileProcessingRevertError","labelTapToCancel","labelTapToRetry","labelTapToUndo","labelButtonRemoveItem","labelButtonAbortItemLoad","labelButtonRetryItemLoad","labelButtonAbortItemProcessing","labelButtonUndoItemProcessing","labelButtonRetryItemProcessing","labelButtonProcessItem","iconRemove","iconProcess","iconRetry","iconUndo","iconDone","oninit","onwarning","onactivatefile","oninitfile","onaddfilestart","onaddfileprogress","onaddfile","onprocessfilestart","onprocessfileprogress","onprocessfileabort","onprocessfilerevert","onprocessfile","onprocessfiles","onremovefile","onpreparefile","onupdatefiles","onreorderfiles","beforeDropFile","beforeAddFile","beforeRemoveFile","beforePrepareFile","stylePanelLayout","stylePanelAspectRatio","styleItemPanelAspectRatio","styleButtonRemoveItemPosition","styleButtonProcessItemPosition","styleLoadIndicatorPosition","styleProgressIndicatorPosition","styleButtonRemoveItemAlign","files","credits","getItemByQuery","getNumericAspectRatioFromString","getActiveItems","archived","Status","EMPTY","ERROR","BUSY","READY","canUpdateFileInput","dataTransfer","DataTransfer","File","ITEM_ERROR","ITEM_BUSY","ITEM_READY","isItemInErrorState","isItemInBusyState","isItemInReadyState","isAsync","GET_STATUS","GET_ITEM","GET_ACTIVE_ITEM","GET_ACTIVE_ITEMS","GET_ITEMS","GET_ITEM_NAME","filename","GET_ITEM_SIZE","fileSize","GET_STYLES","GET_PANEL_ASPECT_RATIO","GET_ITEM_PANEL_ASPECT_RATIO","GET_ITEMS_BY_STATUS","GET_TOTAL_ITEMS","SHOULD_UPDATE_FILE_INPUT","IS_ASYNC","GET_FILE_SIZE_LABELS","labelBytes","labelKilobytes","labelMegabytes","labelGigabytes","hasRoomForItem","maxFileCount","arrayInsert","insertItem","isBase64DataURI","getFilenameFromURL","getExtensionFromFilename","guesstimateExtension","subtype","leftPad","getDateString","getHours","getMinutes","getSeconds","getFileFromBlob","blob","extension","lastModifiedDate","_relativePath","getBlobBuilder","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","createBlob","arrayBuffer","BB","bb","getBlob","Blob","getBlobFromByteStringWithMimeType","byteString","ab","ArrayBuffer","ia","Uint8Array","getMimeTypeFromBase64DataURI","dataURI","getBase64DataFromBase64DataURI","getByteStringFromBase64DataURI","atob","getBlobFromBase64DataURI","getFileFromBase64DataURI","getFileNameFromHeader","decodeURI","getFileSizeFromHeader","getTranfserIdFromHeader","getFileInfoFromHeaders","info","rows","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","createFileLoader","fetchFn","getProgress","loadURL","computable","fileinfo","setSource","isGet","sendRequest","onheaders","onprogress","aborted","headersReceived","encodeURI","stringify","upload","lengthComputable","loaded","unescape","createResponse","createTimeoutResponse","hasQS","buildURL","createFetchFunction","apiUrl","ChunkStatus","QUEUED","COMPLETE","WAITING","processFileChunked","metadata","transfer","chunks","chunkTransferId","chunkServer","serverId","fd","requestTransferId","formData","FormData","requestParams","requestTransferOffset","requestUrl","lastChunkIndex","retries","completeProcessingChunks","canProcessChunk","chunk","processChunk","processChunks","updateTotalProgress","retryProcessChunk","every","totalBytesTransfered","totalSize","abortChunks","createFileProcessorFunction","canChunkUpload","shouldChunkUpload","willChunkUpload","createProcessorFunction","createRevertFunction","uniqueFileId","getRandomNumber","createPerceivedPerformanceUpdater","tickMin","tickMax","runtime","clear","createFileProcessor","processFn","perceivedProgress","perceivedPerformanceUpdater","perceivedDuration","progressFn","completeFn","transferId","getDuration","getFilenameWithoutExtension","createFileStub","isFile","deepCloneObject","createItem","serverFileReference","frozen","processingAborted","activeLoader","activeProcessor","abortProcessingRequestComplete","setStatus","getFileExtension","getFileType","getFileSize","getFile","loader","meta","retryLoad","abortLoad","processor","onprocess","requestProcessing","abortProcessing","revertFileUpload","serverTransferId","_setMetadata","silent","getMetadata","filenameWithoutExtension","fileExtension","fileType","relativePath","setMetadata","itemAPI","freeze","release","archive","getItemIndexByQuery","getItemById","itemId","fetchBlob","getDomainFromURL","isExternalURL","dynamicLabel","label","isMockItem","listUpdated","optionalPromise","sortItems","getItemByQueryFromState","itemHandler","_ref$success","_ref$failure","failure","ABORT_ALL","DID_SET_FILES","_ref2$value","activeItems","interactionMethod","DID_UPDATE_ITEM_METADATA","_ref3","change","doUpload","shouldPrepareOutput","MOVE_ITEM","_ref4","currentIndex","SORT","_ref5","ADD_ITEMS","_ref6","_ref6$success","_ref6$failure","insertLocation","totalItems","isValidFile","promises","all","ADD_ITEM","_ref7","_ref7$index","_ref7$success","_ref7$failure","_ref7$options","_item","mainStatus","main","sub","handleAdd","shouldAdd","loadComplete","_ref8","REQUEST_PREPARE_OUTPUT","_ref9","_ref9$failure","COMPLETE_LOAD_ITEM","_ref10","RETRY_ITEM_LOAD","REQUEST_ITEM_PREPARE","_success","REQUEST_ITEM_PROCESSING","processNow","PROCESS_ITEM","processNext","queueEntry","itemReference","RETRY_ITEM_PROCESSING","REQUEST_REMOVE_ITEM","shouldRemove","RELEASE_ITEM","REMOVE_ITEM","removeFromView","ABORT_ITEM_LOAD","ABORT_ITEM_PROCESSING","REQUEST_REVERT_ITEM_PROCESSING","handleRevert","shouldRevert","requestRemoveResult","REVERT_ITEM_PROCESSING","SET_OPTIONS","_ref11","optionKeys","prioritizedOptionKeys","PrioritizedOptions","formatFilename","createElement$1","tagName","textNode","polarToCartesian","centerX","centerY","radius","angleInDegrees","angleInRadians","sin","describeArc","startAngle","endAngle","arcSweep","percentageArc","progressIndicator","spin","svg","path","align","dataset","ringStrokeWidth","ringFrom","ringTo","coordinates","fileActionButton","icon","shouldDisable","toNaturalFileSize","_options$labelBytes","_options$labelKilobyt","_options$labelMegabyt","_options$labelGigabyt","KB","MB","GB","removeDecimalsWhenZero","decimalCount","create$2","fileName","updateFile","updateFileSizeOnError","fileInfo","DID_LOAD_ITEM","DID_UPDATE_ITEM_META","DID_THROW_ITEM_LOAD_ERROR","DID_THROW_ITEM_INVALID","toPercentage","create$3","didSetItemLoadProgress","title","fileStatus","DID_REVERT_ITEM_PROCESSING","DID_REQUEST_ITEM_PROCESSING","DID_ABORT_ITEM_PROCESSING","DID_COMPLETE_ITEM_PROCESSING","DID_UPDATE_ITEM_PROCESS_PROGRESS","DID_UPDATE_ITEM_LOAD_PROGRESS","DID_THROW_ITEM_PROCESSING_ERROR","DID_THROW_ITEM_PROCESSING_REVERT_ERROR","DID_THROW_ITEM_REMOVE_ERROR","Buttons","AbortItemLoad","RetryItemLoad","RemoveItem","ProcessItem","AbortItemProcessing","RetryItemProcessing","RevertItemProcessing","ButtonKeys","isSupported","calculateFileInfoOffset","getRemoveIndicatorAligment","buttonRect","buttonRemoveItem","calculateButtonWidth","buttonAbortItemLoad","calculateFileVerticalCenterOffset","calculateFileHorizontalCenterOffset","DefaultStyle","buttonRetryItemLoad","buttonProcessItem","buttonAbortItemProcessing","buttonRetryItemProcessing","buttonRevertItemProcessing","loadProgressIndicator","processProgressIndicator","processingCompleteIndicator","IdleStyle","ProcessingStyle","StyleMap","DID_START_ITEM_LOAD","DID_START_ITEM_REMOVE","DID_LOAD_LOCAL_ITEM","DID_START_ITEM_PROCESSING","processingCompleteIndicatorView","create$4","buttonFilter","LocalButtons","curr","alignRemoveItemButton","enabledButtons","_map","buttonView","loadIndicatorView","progressIndicatorView","activeStyles","write$2","route","stylesToApply","defaultStyles","control","DID_SET_LABEL_BUTTON_ABORT_ITEM_PROCESSING","DID_SET_LABEL_BUTTON_ABORT_ITEM_LOAD","DID_SET_LABEL_BUTTON_ABORT_ITEM_REMOVAL","buttonAbortItemRemoval","_ref12","fileWrapper","PANEL_SPRING_PROPS","create$6","section","createSection","scalable","viewConstructor","panel","heightCurrent","topRect","bottomRect","center","createDragHelper","itemIds","prevIndex","setIndex","getIndex","getItemIndex","ITEM_TRANSLATE_SPRING","ITEM_SCALE_SPRING","StateMap","create$7","handleClick","markedForRemoval","dragState","grab","isPrimary","removedActivateListener","dragOrigin","dragCenter","drag","dragOffset","drop","route$1","DID_UPDATE_PANEL_HEIGHT","write$4","DID_GRAB_ITEM","DID_DRAG_ITEM","DID_DROP_ITEM","currentState","filepondItemState","getItemsPerRow","horizontalSpace","itemWidth","getItemIndexByPosition","positionInView","itemRect","itemHorizontalMargin","itemsPerRow","childMid","itemVerticalMargin","itemHeight","_index","itemTop","itemRight","itemBottom","dropAreaDimensions","getHeight","setHeight","getWidth","setWidth","setDimensions","create$8","lastItemSpanwDate","moveItem","vx","vy","spawnDate","introItemView","getItemHeight","getItemWidth","route$2","DID_ADD_ITEM","addIndex","cooldown","dist","DID_REMOVE_ITEM","numItems","oldIndex","dragPosition","dragHeight","dragWidth","cols","getGridIndex","getColIndex","visibleChildren","childBottom","childTop","dragCoordinates","dragIndex","dragIndexOffset","removeIndexOffset","addIndexOffset","childRect","visualHeight","prevX","prevY","visualIndex","indexX","indexY","vectorX","vectorY","create$9","overflowing","route$3","DID_DRAG","scopeLeft","scopeTop","DID_END_DRAG","listScroller","newHeight","attrToggle","resetFileInput","form","create$a","setAcceptedFileTypes","toggleAllowMultiple","toggleDirectoryFilter","toggleDisabled","toggleRequired","setCaptureMethod","handleChange","webkitRelativePath","doesAllowBrowse","disableField","updateRequiredStatus","setCustomValidity","browser","DID_SET_DISABLED","DID_SET_ALLOW_BROWSE","DID_SET_ALLOW_DIRECTORIES_ONLY","DID_SET_ALLOW_MULTIPLE","DID_SET_ACCEPTED_FILE_TYPES","DID_SET_CAPTURE_METHOD","DID_SET_REQUIRED","Key","ENTER","SPACE","create$b","handleKeyDown","updateLabelValue","clickable","dropLabel","DID_SET_LABEL_IDLE","addBlob","write$7","route$4","DID_DROP","drip","setInputFiles","create$c","fields","getField","syncFieldPositionsWithItems","didReorderItems","write$8","shouldUseFileInput","dataContainer","fileItem","DID_DEFINE_VALUE","DID_PREPARE_OUTPUT","DID_REORDER_ITEMS","DID_SORT_ITEMS","images","text$1","zip","epub","guesstimateMimeType","requestDataTransferItems","links","getLinks","hasFiles","getFiles","promisedFiles","isFileSystemItem","getFilesFromItem","returnedFileGroups","group","isEntry","entry","getAsEntry","isDirectory","kind","isDirectoryEntry","getFilesInDirectory","getAsFile","dirCounter","fileCounter","resolveIfDone","readEntries","dirEntry","directoryReader","createReader","readBatch","entries","correctedFile","correctMissingFileType","fullPath","webkitGetAsEntry","getLinksFromTransferMetaData","getLinksFromTransferURLData","dragNDropObservers","eventPosition","pageLeft","pageTop","layerX","layerY","createDragNDropClient","scopeToObserve","filterElement","observer","getDragNDropObserver","client","ondrop","onenter","ondrag","onexit","allowdrop","addListener","newObserver","createDragNDropObserver","clients","dragenter","dragover","dragleave","createHandler","elementFromPoint","point","isEventTarget","elementAtPosition","initialTarget","setDropEffect","effect","dropEffect","overDropTarget","allowsTransfer","createHopper","validateItems","catchesDropsOnPage","requiresDropOnElement","_options$filterItems","filterItems","lastState","filteredItems","ondragend","ondragstart","updateHopperState","hopperState","listening","listeners$1","handlePaste","activeEl","inScope","clipboardData","listen","unlisten","createPaster","addFilesNotificationTimeout","notificationClearTimeout","filenames","assist","clear$1","listModified","isUsingFilePond","itemProcessedUndo","itemError","assistant","toCamels","debounce","immidiateOnly","MAX_FILES_LIMIT","prevent","create$e","bounds","widthPrevious","widthUpdated","updateHistory","previousAspectRatio","canHover","hasPointerEvents","passive","frag","rel","write$9","route$5","calculateRootBoundingBoxHeight","_root$ref","hopper","isMultiItem","atMaxCapacity","addAction","listItemMargin","calculateListItemMargin","listHeight","calculateListHeight","labelHeight","currentLabelHeight","listMarginTop","listMarginBottom","visual","boundsHeight","MAX_BOUNCES","bounces","listAvailableHeight","fixedHeight","_listAvailableHeight","cappedHeight","isCappedHeight","panelHeight","_listAvailableHeight2","itemMargin","scrollList","itemList","newItem","removedItem","verticalItemCount","measureHeight","maxHeight","exceedsMaxFiles","maxItems","totalBrowseItems","getDragIndex","toggleDrop","isAllowed","toggleBrowse","togglePaste","paster","DID_SET_ALLOW_DROP","DID_SET_ALLOW_PASTE","createApp","initialOptions","originalElement","visibilityHandler","resizeDoneTimer","isResizing","isResizingHorizontally","initialWindowWidth","currentWindowWidth","resizeHandler","isHidden","readWriteApi","innerWidth","routeActionsToEvents","eventRoutes","DID_DESTROY","DID_INIT","DID_THROW_MAX_FILES","DID_INIT_ITEM","DID_COMPLETE_ITEM_PROCESSING_ALL","DID_UPDATE_ITEMS","DID_ACTIVATE_ITEM","exposeEvent","pond","dispatchEvent","filtered","prepareFile","addFile","addFiles","isFilePondFile","removeFile","sources","lastArgument","processFile","prepareFiles","processFiles","_len3","_key3","removeFiles","_len4","_key4","q","moveFile","browse","replaceElement","restoreElement","isAttachedTo","createAppObject","customOptions","lowerCaseFirstLetter","attributeNameToPropertyName","attributeName","mapObject","propertyMap","mapping","selectorRegExp","getAttributesAsObject","attributeMapping","attribute","createAppAtElement","mergedOptions","attributeOptions","app","createApp$1","PRIVATE_METHODS","createAppAPI","replaceInString","replacements","createWorker","workerBlob","workerURL","URL","createObjectURL","worker","Worker","post","transferList","onmessage","postMessage","terminate","revokeObjectURL","loadImage","img","renameFile","renamedFile","copyFile","registeredPlugins","createAppPlugin","plugin","pluginOutline","views","isOperaMini","operamini","hasPromises","hasBlobSlice","hasCreateObjectURL","hasVisibility","hasTiming","hasCSSSupports","CSS","isIE11","supported","apps","FileStatus","OptionTypes","registerPlugin","updateOptionTypes","indexToRemove","newHook","plugins","Keyboard","extendParams","emit","rtl","rtlTranslate","kc","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","allowSlideNext","isHorizontal","isVertical","allowSlidePrev","onlyInViewport","inView","slideClass","slideActiveClass","swiperWidth","clientWidth","swiperHeight","clientHeight","windowWidth","windowHeight","innerHeight","swiperOffset","swiperCoord","slideNext","slidePrev","enable","createElementIfNotDefined","originalParams","checkProps","createElements","auto","Navigation","navigation","nextEl","prevEl","hideOnClick","disabledClass","hiddenClass","lockClass","navigationDisabledClass","makeElementsArray","getEl","isElement","uniqueNavElements","toggleEl","subEl","watchOverflow","isLocked","update","_swiper$navigation","loop","isBeginning","rewind","isEnd","onPrevClick","onNextClick","initButton","_swiper$navigation2","destroyButton","_swiper$navigation3","_s","_swiper$navigation4","targetEl","pagination","classesToSelector","Pagination","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","onBulletClick","slidesPerGroup","realIndex","slideToLoop","slideTo","previousIndex","slidesLength","virtual","slides","snapGrid","previousRealIndex","snapIndex","previousSnapIndex","activeIndex","firstIndex","midIndex","classesToRemove","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","subElIndex","fractionEl","totalEl","progressbarDirection","progressEl","transitionDuration","render","grid","paginationHTML","numberOfBullets","freeMode","Thumb","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","initialized","swiperCreated","onThumbClick","thumbsSwiper","destroyed","clickedIndex","clickedSlide","slideToIndex","thumbsParams","SwiperClass","watchSlidesProgress","slideToClickedSlide","thumbsSwiperParams","slidesPerView","slidesPerViewDynamic","thumbsToActivate","thumbActiveClass","centeredSlides","slidesEl","useOffset","currentThumbsIndex","newThumbsIndex","newThumbsSlide","visibleSlidesIndexes","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","watchForThumbsToAppear","setTransition","loadSectionContent","$targetElement","targetURL","scrollToTop","viewPartial","$viewPartial","initializeBarRating","initializeRatingsFormHandler","initializeRatingsPaginationHandler","$productTabs","$clickedTab","$prevActiveTab","$visibleElement","checkProductFormCompletion","updateFormCircle","productFormPrimaryInfoComplete","productFormCategoriesComplete","productFormPageComplete","productFormGalleryComplete","productFormFilesComplete","productFormVariantsComplete","productFormDocumentationComplete","productFormCollaboratorsComplete","circleSelector","methodToCheck","$circle","slug","price","categoriesCount","tagsValue","versionsCount","licensesCount","contentText","summernote","$imageInputFeatured","$imageInputMulti","FilePond","dataFilesFeatured","dataFilesMulti","$variants","$container","validatedCount","docsText","$editForm","isTouchDevice","maxTouchPoints","msMaxTouchPoints","it","globalThis","$documentAll","documentAll","IS_HTMLDDA","elementSelector","barrating","deselectable","theme","ownKeys","enumerableOnly","symbols","sym","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defineProperties","hint","prim","toPrimitive","Number","_toPrimitive","_toPropertyKey","_slicedToArray","_arrayWithHoles","_e","_x","_r","_arr","_n","_iterableToArrayLimit","minLen","_arrayLikeToArray","_unsupportedIterableToArray","_nonIterableRest","deviceCached","getSupport","smoothScroll","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","screenHeight","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","_ua$split$1$split$0$s2","major","minor","isWebView","calcBrowser","eventsEmitter","eventsListeners","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","processLazyPreloader","imageEl","lazyEl","lazyPreloaderClass","unlazy","preload","lazyPreloadPrevNext","activeColumn","preloadColumns","column","slideIndexLastInView","transitionEmit","runCallbacks","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","onTouchStart","touchEventsData","touchId","simulateTouch","animating","preventInteractionOnTransition","cssMode","loopFix","touchEventsTarget","isTouched","isMoved","swipingClassHasValue","noSwipingClass","composedPath","noSwipingSelector","isTargetShadow","noSwiping","__closestFrom","assignedSlot","found","closestElement","allowClick","swipeHandler","currentX","currentY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","updateSize","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","onTouchMove","targetTouch","preventedByNestedSwiper","touchReleaseOnEdges","maxTranslate","minTranslate","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","touchMoveStopPropagation","nested","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","startTranslate","allowMomentumBounce","grabCursor","setGrabCursor","currentTranslate","loopSwapReset","disableParentSwiper","resistanceRatio","slidesSizesGrid","setTranslate","activeSlideIndex","resistance","followFinger","updateActiveIndex","updateSlidesClasses","updateProgress","onTouchEnd","slidesGrid","touchEndTime","timeDiff","pathTree","updateClickedSlide","lastClickTime","currentPos","stopIndex","groupSize","slidesPerGroupSkip","increment","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","onResize","breakpoints","setBreakpoint","isVirtual","updateSlides","isVirtualLoop","autoplay","running","paused","resizeTimeout","onClick","preventClicks","preventClicksPropagation","onScroll","newProgress","previousTranslate","translatesDiff","onLoad","autoHeight","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","updateOnWindowResize","isGridEnabled","initialSlide","resizeObserver","eventsPrefix","setWrapperSize","virtualTranslate","breakpointsBase","spaceBetween","slidesPerGroupAuto","centeredSlidesBounds","slidesOffsetBefore","slidesOffsetAfter","normalizeSlideIndex","centerInsufficientSlides","roundLengths","loopAddBlankSlides","loopAdditionalSlides","loopPreventsSliding","passiveListeners","maxBackfaceHiddenSlides","containerModifierClass","slideBlankClass","slideVisibleClass","slideFullyVisibleClass","slideNextClass","slidePrevClass","wrapperClass","runCallbacksOnInit","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","prototypes","getDirectionPropertyValue","getDirectionLabel","swiperSize","wrongRTL","previousSlidesLength","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","slidePosition","prevSlideSize","virtualSize","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","paddingLeft","paddingRight","boxSizing","_slide","swiperSlideSize","updateWrapperSize","newSlidesGrid","slidesGridItem","slidesBefore","slidesAfter","slideIndex","allSlidesSize","slideSizeValue","maxSnap","snap","allSlidesOffset","addToSnapGrid","addToSlidesGrid","updateSlidesOffset","backFaceHiddenClass","hasClassBackfaceClassAdded","updateAutoHeight","activeSlides","getSlideByIndex","getSlideIndexByData","visibleSlides","minusOffset","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","originalProgress","multiplier","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","getFilteredSlide","activeSlide","prevSlide","nextSlide","emitSlidesClasses","newActiveIndex","getVirtualRealIndex","aIndex","getActiveIndexByTranslate","firstSlideInColumn","pathEl","slideFound","byController","translateTo","translateBounds","internal","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transition","transitionDelay","transitionStart","transitionEnd","normalizedTranslate","normalizedGrid","normalizedGridNext","_immediateVirtual","_cssModeVirtualInitialSet","onSlideToWrapperTransitionEnd","newIndex","targetSlideIndex","needLoopFix","slideRealIndex","perGroup","_clientLeft","normalize","normalizedSnapGrid","prevSnap","prevSnapIndex","slideReset","slideToClosest","currentSnap","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","recalcSlides","_ref4$slideTo","byMousewheel","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","swiperLoopMoveDOM","currentSlideTranslate","controller","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","moving","__preventObserver__","cursor","unsetGrabCursor","attachEvents","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","points","minRatio","_points$i","wasLocked","lastSlideRightEdge","addClasses","suffixes","resultClasses","prepareClasses","removeClasses","extendedDefaults","swipers","newParams","__modules__","swiperParams","passedParams","eventName","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","setProgress","cls","getSlideClasses","updates","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","deleteInstance","cleanStyles","static","newDefaults","installModule","prototypeGroup","protoMethod","use","animationFrame","orientationChangeHandler","ResizeObserver","newWidth","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","parsedData","$ratingsSection","swal","confirm","closeModal","$pagyLinks","$this","paginatedRatingsURL","NATIVE_BIND","FunctionPrototype","uncurryThisWithBind","_objectSpread2","_typeof","_extends","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","getParentOrHost","ctx","includeCTX","_throttleTimeout","R_SPACE","selfOnly","appliedTransforms","matrixFn","DOMMatrix","CSSMatrix","MSCSSMatrix","getWindowScrollingElement","scrollingElement","relativeToContainingBlock","relativeToNonStaticParent","undoScale","elRect","containerRect","elMatrix","isScrolledPast","elSide","parentSide","getParentAutoScrollElement","elSideVal","parentSideVal","getChild","childNum","includeDragEl","currentChild","Sortable","ghost","dragged","draggable","lastElementChild","getRelativeScrollOffset","winScroller","includeSelf","gotSelf","scrollWidth","scrollHeight","elemCSS","isRectEqual","rect1","rect2","throttle","scrollBy","Polymer","Zepto","dom","AnimationStateManager","animationCallbackId","animationStates","captureAnimationState","fromRect","thisAnimationDuration","childMatrix","addAnimationState","removeAnimationState","indexOfObject","animateAll","_this","animationTime","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","calculateRealTime","animationResetTimer","currentRect","animatingX","animatingY","forRepaintDummy","repaint","initializeByDefault","PluginManager","pluginName","pluginEvent","sortable","eventCanceled","cancel","eventNameGlobal","initializePlugins","modifyOption","getEventProperties","eventProperties","modifiedValue","optionListeners","rootEl","cloneEl","toEl","fromEl","oldDraggableIndex","newDraggableIndex","putSortable","extraEventProperties","onName","pullMode","lastPutMode","allEventProperties","_excluded","dragEl","parentEl","ghostEl","lastDownEl","cloneHidden","dragStarted","moved","activeSortable","hideGhostForTarget","_hideGhostForTarget","unhideGhostForTarget","_unhideGhostForTarget","cloneNowHidden","cloneNowShown","dispatchSortableEvent","_dispatchEvent","activeGroup","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","lastTarget","lastDirection","targetMoveDistance","ghostRelativeParent","awaitingDragStarted","ignoreNextClick","sortables","pastFirstInvertThresh","isCircumstantialInvert","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","supportCssPointerEvents","pointerEvents","_detectDirection","elCSS","elWidth","borderLeftWidth","borderRightWidth","child1","child2","firstChildCSS","secondChildCSS","firstChildWidth","secondChildWidth","flexDirection","gridTemplateColumns","touchingSideChild2","_prepareGroup","toFn","pull","sameGroup","otherGroup","originalGroup","checkPull","checkPut","put","revertClone","nearestEmptyInsertDetectEvent","nearest","emptyInsertThreshold","insideHorizontally","insideVertically","_onDragOver","_checkOutsideTargetEl","_isOutsideThisEl","swapThreshold","invertSwap","invertedSwapThreshold","removeCloneOnHide","ghostClass","chosenClass","dragClass","ignore","preventOnFilter","setData","dropBubble","dragoverBubble","dataIdAttr","delayOnTouchOnly","touchStartThreshold","devicePixelRatio","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","nativeDraggable","_onTapStart","_onMove","dragRect","targetRect","willInsertAfter","retVal","onMoveFn","onMove","draggedRect","relatedRect","_disableDraggable","_unsilent","_generateId","sum","_nextTick","_cancelNextTick","_getDirection","originalTarget","inputs","_saveInputCheckedState","criteria","_prepareDragStart","dragStartFn","_lastX","_lastY","_onDrop","_disableDelayedDragEvents","_triggerDragStart","_disableDelayedDrag","_delayedDragTouchMoveHandler","_dragStartTimer","_onTouchMove","_onDragStart","getSelection","removeAllRanges","_dragStarted","fallback","_appendGhost","_nulling","_emulateDragOver","ghostMatrix","relativeScrollOffset","dx","dy","cssMatrix","_hideClone","cloneId","_loopId","setInterval","effectAllowed","_dragStartId","vertical","isOwner","canSort","fromSortable","completedFired","dragOverEvent","_ignoreWhileAnimating","elLastChild","spacer","_ghostIsLast","changed","_ghostIsFirst","targetBeforeFirstSwap","differentLevel","differentRowCol","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_dragElInRowColumn","side1","scrolledPastTop","scrollBefore","isLastTarget","mouseOnAxis","targetS1","targetS2","_getInsertDirection","_getSwapDirection","moveVector","insertion","_showClone","_offMoveEvents","_offUpEvents","clearInterval","save","handleEvent","_globalDragOver","useAnimation","dst","cancelNextTick","detectDirection","scrollEl","scrollRootEl","lastAutoScrollX","lastAutoScrollY","touchEvt$1","pointerElemChangedInterval","autoScrolls","scrolling","clearAutoScrolls","autoScroll","pid","clearPointerElemChangedInterval","isFallback","scroll","scrollCustomFn","sens","scrollSensitivity","scrollSpeed","scrollThisInstance","scrollFn","layersOut","currentParent","canScrollX","canScrollY","scrollPosX","scrollPosY","layer","scrollOffsetY","scrollOffsetX","bubbleScroll","toSortable","onSpill","Revert","Remove","startIndex","dragStart","parentSortable","AutoScroll","forceAutoScrollFallback","_handleAutoScroll","_handleFallbackAutoScroll","dragOverCompleted","dragOverBubble","nulling","ogElemScroller","newElem","uncurryThis","productImageSwiper","categorySwiper","productImageSwiperThumb","updateNavigationButtons","swiperInstance","$swiperPrevButton","Swiper","lazy","watchSlidesVisibility","Thumbs","afterInit","slideChange","fails","OldCookies","Cookies","decode","converter","expires","toUTCString","stringifiedAttributes","cookie","jar","cookies","withConverter","addFolderElementListeners","folderElement","nestedFileIDs","filesToAdd","$folder","$collapsibleDownloadsContainer","$folderToggler","$folderIcon","$deleteFolderBtn","folderName","addCollapsibleListener","addCheckBoxListeners","addElementRemover","$downloadItemsContainer","$addFilesBtn","$folderCheckBox","$checkbox","downloadID","$folderDownloadItemsContainer","$downloadCheckboxes","addFolderCheckBoxListener","$deleteBtn","$parentElement","elementName","$fileElement","$versionFiles","cleanUpFileReferences","transferFileElementOutOfPond","downloadHTML","$downloadsContainer","$downloadElement","$newVersionForm","$versionEditForm","$versionFilesContainer","$downloadFolders","$downloadFolderForm","$downloadFoldersContainer","$noFolderDownloadsContainer","$addFolderBtn","$hideFolderFormBtn","$downloadFormContainer","$folderFormContainer","$downloadsModal","Map","itemToInsert","$itemToInsert","firstEntry","fileID","insertedItem","modal","select2","variable","obj1","obj2","DATE_PATTERN","ISO8601_PATTERN","DECIMAL_SEPARATOR","parseISO8601","negativeValues","series","toStr","toArr","jsOptionsFunc","hideLegend","setTitle","setMin","setMax","setStacked","setXtitle","setYtitle","chart","chartOptions","legend","stacked","colors","xtitle","ytitle","library","sortByTime","sortByNumberSeries","sortByNumber","isMinute","getMilliseconds","isHour","isDay","isWeek","dayOfWeek","isMonth","isYear","byteSuffixes","formatValue","pre","precision","byteScale","suffixIdx","baseValue","toPrecision","zeros","thousands","decimal","seriesOption","allZeros","baseOptions","maintainAspectRatio","tooltips","displayColors","callbacks","fontSize","fontColor","scales","yAxes","ticks","maxTicksLimit","scaleLabel","xAxes","gridLines","drawOnChartArea","defaultColors","setBarMin","setBarMax","labelString","addOpacity","hex","notnull","setLabelSize","maxLabelSize","labels","setFormatOptions","chartType","formatOptions","myAxes","stepSize","datasets","datasetIndex","xLabel","yLabel","dataPoint","tooltipItem","dataLabel","valueLabel","jsOptions","createDataTable","i$1","s$1","j$1","rows2","xtype","sortedLabels","i$2","s$2","d$1","j$2","color","backgroundColor","borderColor","pointBackgroundColor","borderWidth","pointHoverBackgroundColor","lineTension","pointRadius","pointHitRadius","xmin","xmax","ticksKey","helpers","minTime","maxTime","value$1","displayFormats","unitStepSize","tooltipFormat","defaultExport","renderLineChart","drawChart","renderPieChart","donut","cutoutPercentage","renderColumnChart","barOptions","renderAreaChart","renderBarChart","renderScatterChart","showLines","renderBubbleChart","log","defaultOptions$1","xAxis","yAxis","tooltip","plotOptions","areaspline","area","marker","hideLegend$1","verticalAlign","layout","setTitle$1","jsOptions$1","stackedValue","stacking","setFormatOptions$1","formatter","pointFormatter","defaultExport$1","curve","symbol","pie","innerSize","categories","d2","newSeries","renderTo","Chart","defaultOptions$2","chartArea","fontName","pointSize","textStyle","alignment","curveType","hAxis","titleTextStyle","gridlines","baselineColor","viewWindow","vAxis","hideLegend$2","setTitle$2","setBarMin$1","setBarMax$1","setStacked$2","isStacked","setXtitle$2","italic","setYtitle$2","jsOptions$2","resize","attachEvent","defaultExport$2","this$1","waitForLoaded","pieHole","visualization","DataTable","addColumn","addRows","areaOpacity","renderGeoChart","colorAxis","row","renderTimeline","clearChart","draw","pack","loadOptions","packages","__config","language","mapsApiKey","charts","LineChart","Timeline","GeoChart","columnType","pendingRequests","runningRequests","maxRequests","pushRequest","runNext","requestComplete","ajaxCall","textStatus","errorThrown","adapters","setText","innerText","chartError","noPrefix","errorCatcher","__render","fetchDataSource","dataSource","rawData","addDownloadButton","link","download","alt","__downloadAttached","__enterEvent","childOf","toImage","__leaveEvent","fn2","detachEvent","getAdapterType","product","addAdapter","adapter","loadAdapters","Highcharts","google","dataEmpty","renderChart","messages","callAdapter","fnName","adapterName","__adapterObject","toFormattedKey","keyType","formatSeriesData","detectXType","noDatetime","detectXTypeWithFunction","copySeries","processSeries","discrete","processSimple","perfectData","elementId","Chartkick","refresh","startRefresh","getDataSource","getChartObject","getAdapter","updateData","__updateOptions","redraw","refreshData","sep","intervalId","stopRefresh","background","canvas","tmpCanvas","tmpCtx","getContext","fillStyle","fillRect","drawImage","toDataURL","toBase64Image","updateRefresh","__processData","__chartName","__proto__","PieChart","ColumnChart","BarChart","AreaChart","ScatterChart","BubbleChart","configure","setDefaultOptions","eachChart","chartId","default","P","F","G","I","createSVGRect","z","opera","B","deg2rad","hasBidiBug","hasTouch","TouchEvent","isMS","isWebKit","isFirefox","isChrome","SVG_NS","chartCount","seriesTypes","symbolSizes","marginNames","dateFormats","Infinity","C","H","g","objectEach","fireEvent","Fx","dSetter","paths","toD","curAnim","initPath","A","endX","isArea","K","J","fillSetter","strokeSetter","tweenTo","extendClass","pad","relativeLength","proceed","datePropsToTimestamps","formatSingle","numberFormat","decimalPoint","thousandsSep","getMagnitude","LN10","normalizeTickInterval","correctFloat","stableSort","safeI","animObject","timeUnits","toExponential","easeInOutSine","getStyle","addEventListenerPolyfill","protoEvents","hcEvents","Point","runTrackerClick","removeEventListenerPolyfill","seriesType","pointClass","uniqueKey","highcharts","arrayMax","arrayMin","defined","destroyObjectProperties","discardElement","garbageBin","erase","isClass","isDOMElement","pick","pInt","setAnimation","renderer","globalAnimation","splat","syncTimeout","Color","parsers","white","black","stops","rgba","brighten","setOpacity","U","S","Q","O","SVGElement","textProps","D","msHidden","webkitHidden","complexColor","N","T","radialGradient","linearGradient","gradients","radialReference","x1","y1","x2","y2","gradientUnits","getRadialAttr","defs","radAttr","gradient","applyTextOutline","getContrast","fakeTS","ySetter","xSetter","removeTextOutline","stroke","symbolCustomAttribs","_defaultGetter","symbolName","symbolAttr","rotation","doTransform","_defaultSetter","styledMode","shadows","updateShadows","afterSetters","updateTransform","cutHeight","clip","crisp","strokeWidth","textWidth","forExport","added","buildText","textOutline","getBBox","ontouchstart","touchEventFired","onclick","setRadialReference","inverted","rotationOriginX","rotationOriginY","toFront","alignedObjects","alignOptions","alignByTranslate","alignTo","placed","alignAttr","textStr","cacheKeys","textOverflow","aa","htmlGetBBox","isSVG","parentGroup","parentInverted","handleZ","zIndexSetter","onAdd","safeRemoveChild","ownerSVGElement","clipPath","onmouseout","onmouseover","onmousemove","destroyShadows","shadow","xGetter","dashstyleSetter","alignSetter","alignValue","opacitySetter","titleSetter","textSetter","bBox","textPxLength","setTextPath","textAnchor","textPathWrapper","startOffset","setAttributeNS","destroyTextPath","visibilitySetter","yGetter","translateXSetter","translateYSetter","rotationSetter","verticalAlignSetter","rotationOriginXSetter","rotationOriginYSetter","scaleXSetter","scaleYSetter","matrixSetter","hasStroke","SVGRenderer","Element","boxWrapper","allowHTML","imgCount","setSize","unSubPixelFix","fontFamily","setStyle","cx","cy","getSubStringLength","ba","getSpanWidth","actualWidth","escapes","whiteSpace","fontMetrics","textCache","setState","crispLine","circle","arc","innerR","rSetter","rx","ry","rGetter","viewBox","preserveAspectRatio","imgwidth","imgheight","backgroundSize","isImg","chartIndex","square","triangle","diamond","clockwise","callout","anchorX","anchorY","clipRect","rotCorr","R","hasBoxWidthChanged","V","widthSetter","heightSetter","paddingSetter","paddingLeftSetter","anchorXSetter","anchorYSetter","Renderer","htmlCss","htmlUpdateTransform","textAlign","invertChild","oldTextWidth","cTT","oldRotation","oldAlign","setSpanRotation","getSpanCorrection","xCorr","yCorr","alignOnAdd","getTransformKey","transformOrigin","addedSetters","classSetter","Time","timezone","timezoneOffset","useUTC","timezoneOffsetFunction","variableTimezone","makeTime","moment","tz","shortWeekdays","shortMonths","Y","resolveDTLFormat","getTimeTicks","unitRange","higherRanks","totalRange","loading","numericSymbols","resetZoom","resetZoomTitle","borderRadius","colorCount","defaultSeriesType","ignoreHiddenSeries","spacing","resetZoomButton","plotBorderColor","widthAdjust","subtitle","alignColumns","labelFormatter","activeColor","inactiveColor","itemStyle","itemHoverStyle","itemHiddenStyle","itemCheckboxStyle","squareSymbol","symbolPadding","labelStyle","dateTimeLabelFormats","footerFormat","headerFormat","pointFormat","defaultPlotOptions","Tick","isNewLabel","isNew","tickmarkOffset","addLabel","tickPositions","isDatetimeAxis","unitName","isFirst","isLast","formatCtx","dateTimeLabelFormat","tickPositionInfo","isLog","lin2log","shortenLabel","getSlotWidth","useHTML","labelGroup","getLabelSize","horiz","handleOverflow","chartWidth","labelLeft","labelRight","isRadial","labelAlign","autoRotation","getPosition","oldChartHeight","chartHeight","transB","opposite","oldChartWidth","getLabelPosition","transA","isLinked","linkedParent","reversed","staggerLines","tickRotCorr","reserveSpaceDefault","labelOffset","getMarkPath","renderGridLine","gridLine","dashstyle","gridGroup","getPlotLinePath","lineWidth","force","renderMark","tickSize","mark","isXAxis","axisGroup","renderLabel","xy","showFirstLabel","showLastLabel","isActive","range","endOnTick","indentation","maxPadding","minorTickLength","minorTickPosition","minPadding","showEmpty","startOfWeek","startOnTick","tickLength","tickPixelInterval","tickmarkPlacement","tickPosition","minorGridLineColor","minorGridLineWidth","minorTickColor","lineColor","gridLineColor","tickColor","defaultYAxisOptions","stackLabels","allowOverlap","crop","gridLineWidth","defaultLeftAxisOptions","defaultRightAxisOptions","defaultBottomAxisOptions","defaultTopAxisOptions","isX","isZAxis","coll","userOptions","defaultLabelFormatter","minPixelPadding","zoomEnabled","hasNames","plotLinesAndBandsGroups","positiveValuesOnly","allowNegativeLog","linkedTo","labelEdge","minorTicks","plotLinesAndBands","alternateBands","minRange","userMinRange","maxZoom","stacks","oldStacks","stacksTouched","crosshair","crosshairs","axes","linearToLogConverter","val2lin","log2lin","lin2val","numericSymbolMagnitude","tickInterval","getSeriesExtremes","hasVisibleSeries","dataMin","dataMax","softThreshold","buildStacks","xData","getXExtremes","getExtremes","oldTransA","oldMin","isOrdinal","isBroken","sector","toPixels","toValue","translatedValue","acrossPanes","getLinearTickPositions","single","getMinorTickInterval","minorTickInterval","getMinorTickPositions","pointRangePadding","paddedTicks","getLogTickPositions","normalizeTimeTickInterval","trimTicks","adjustForMinRange","xIncrement","getClosest","closestPointRange","noSharedTooltip","nameToX","requireSorting","uniqueNames","autoIncrement","updateNames","isDirtyData","generatePoints","setAxisTranslation","axisPointRange","minPointOffset","pointRange","pointPlacement","xrange","ordinalSlope","translationSlope","staticScale","minFromRange","setTickInterval","getTickAmount","userMin","userMax","beforePadding","usePercentage","softMin","softMax","MAX_VALUE","ceiling","tickAmount","oldMax","beforeSetTickPositions","postProcessTickInterval","minTickInterval","allowDecimals","unsquish","setTickPositions","tickPositioner","ordinalPositions","adjustTickAmount","alignToOthers","alignTicks","pane","finalTickAmt","setScale","isDirty","oldAxisLength","setAxisSize","forceRedraw","oldUserMin","oldUserMax","resetStacks","cleanStacks","setExtremes","kdTree","eventArgs","newMin","newMax","allowZoomOutside","displayBtn","zoomed","offsets","plotWidth","plotHeight","plotTop","plotLeft","getThreshold","autoLabelAlign","labelMetrics","autoRotationLimit","labelRotation","slotWidth","renderUnsquish","maxLabelLength","specificTextOverflow","addTitle","axisTitle","low","middle","generateTick","axisOffset","clipOffset","axisParent","showAxis","gridZIndex","reserveSpace","titleOffset","renderLine","axisTitleMargin","getMaxLabelDimensions","maxLabelDimensions","axisLine","getLinePath","getTitlePosition","titlePosition","renderMinorTick","hasRendered","renderTick","alternateGridColor","overlap","polar","PlotLineOrBand","_addedPlotLB","plotLines","plotBands","addPlotBandOrLine","isPlaced","renderStackTotals","keepProps","keepEvents","drawCrosshair","cross","crosshairPos","plotX","plotY","chartX","chartY","stackY","hideCrosshair","dashStyle","Axis","_minorAutoInterval","svgElem","getPlotBandPath","isFlat","getLabelText","xBounds","yBounds","addPlotBand","addPlotLine","removePlotBandOrLine","removePlotBand","removePlotLine","Tooltip","shared","outside","scrollablePixelsX","scrollablePixelsY","cleanSplit","tt","applyFilter","stdDeviation","slope","getLabel","shape","distance","hideTimer","tooltipTimeout","move","followPointer","hideDelay","getAnchor","pointer","tooltipPos","plotLow","plotHigh","getChartPosition","containerScaling","ttBelow","negative","defaultFormatter","tooltipFooterHeaderFormatter","bodyFormatter","tooltipOptions","getLabelConfig","applyInactiveState","renderSplit","spacingBox","colorIndex","updatePosition","isHeader","headerShape","rank","positioner","distribute","getDateFormat","getXDateFormat","xDateFormat","isFooter","labelConfig","tooltipDateKeys","styledModeFormat","formatPrefix","tooltipFormatter","Pointer","runChartClick","pinchDown","lastValidTouch","followTouchMove","setDOMEvents","zoomOption","zoomType","pinchType","zoomX","zoomY","zoomHor","zoomVert","hasZoom","chartPosition","getCoordinates","findNearestKDPoint","findNearestPointBy","searchPoint","distX","getPointFromEvent","getChartCoordinatesFromPoint","shapeArgs","getHoverData","stickyTracking","directTouch","enableMouseTracking","isBoosting","getPoint","hoverPoint","hoverSeries","hoverPoints","runPointActions","isDirectTouch","onMouseOver","firePointEvent","unDocMouseMove","hoverChartIndex","onDocumentMouseMove","linkedSeries","navigatorSeries","inactiveOtherPoints","setAllPointsToState","isCartesian","onMouseOut","hoverX","scaleGroups","getPlotBox","markerGroup","dataLabelsGroup","clipBox","mouseIsDown","cancelClick","mouseDownX","mouseDownY","selectionMarker","panKey","hasDragged","isInsidePlot","hasCartesianSeries","selectionMarkerFill","panning","pan","hasPinched","_cursor","onContainerMouseDown","onDocumentMouseUp","inClass","onContainerMouseLeave","onContainerMouseMove","openMenu","onTrackerMouseOut","onContainerClick","onmousedown","unbindContainerMouseLeave","unbindDocumentMouseUp","onContainerTouchStart","onContainerTouchMove","unbindDocumentTouchEnd","onDocumentTouchEnd","pinchTranslate","pinchTranslateDirection","pinch","initiated","plotBox","PointerEvent","MSPointerEvent","MSPOINTER_TYPE_TOUCH","onContainerPointerDown","onContainerPointerMove","onDocumentPointerUp","batchMSEvents","Legend","positionCheckboxes","proximate","unchartrender","proximatePositions","positionItems","itemMarginTop","itemMarginBottom","initialItemY","symbolWidth","pages","isDirtyLegend","isDirtyBox","colorizeItem","legendGroup","legendItem","legendLine","legendSymbol","isMarker","pointAttribs","allItems","positionItem","_legendItemPos","legendWidth","destroyItem","getAllItems","clipHeight","legendHeight","titleHeight","scrollOffset","checkboxOffset","renderTitle","maxLegendWidth","contentGroup","labelFormat","renderItem","itemDistance","drawLegendSymbol","createCheckboxForItem","showCheckbox","scrollGroup","baseline","symbolHeight","setItemEvents","widthOption","legendItemWidth","maxItemWidth","totalItemWidth","legendItemHeight","layoutItem","itemX","lastLineHeight","itemY","lastItemY","showInLegend","legendItems","legendType","getAlignment","floating","adjustMargins","legendIndex","arrowSize","nav","currentPage","fullHeight","pageIx","up","pager","down","upTracker","downTracker","LegendSymbolMixin","drawRectangle","symbolRadius","drawLineMarker","bubbleLegend","getArgs","labelCollectors","showAxes","pointCount","colorCounter","symbolCounter","firstRender","initSeries","missingModuleFor","orderSeries","getName","setResponsive","temporaryDisplay","layOutTitles","updateTotals","getStacks","getMargins","extKey","drawChartBox","getAxes","getSelectedPoints","hasGroupedData","selectedStaging","getSelectedSeries","applyDescription","isStock","getChartSize","containerWidth","containerHeight","hcOrigStyle","hcOrigDetached","hcOricDetached","setClassName","getContainer","skipClone","exporting","resetMargins","getAxisMargins","setChartSize","reflow","isPrinting","reflowTimeout","setReflow","unbindReflow","plotSizeX","plotSizeY","plotBorderWidth","skipAxes","chartBackground","plotBackground","plotBorder","plotBGImage","plotBackgroundColor","plotBackgroundImage","plotShadow","propFromSeries","linkSeries","renderSeries","renderLabels","seriesGroup","addCredits","updateContainerScaling","mapCredits","scroller","isReadyToRender","scrollablePlotArea","minHeight","setUpScrolling","applyFixed","fixedDiv","WebkitOverflowScrolling","scrollingContainer","innerContainer","moveFixedElements","fixedRenderer","scrollableMask","scrollPositionX","scrollPositionY","redrawTrigger","applyOptions","resolveColor","colorByPoint","pointValKey","optionsToObject","dataLabels","setNestedProperty","pointArrayMap","_hasPointLabels","_hasPointMarkers","getClassName","getZone","zones","zoneAxis","nonZonedColor","hasNewShapeType","graphic","shapeType","destroyElements","percentage","stackTotal","valueDecimals","valuePrefix","valueSuffix","importEvents","allowPointSelect","Series","enabledThreshold","states","normal","radiusPlus","lineWidthPlus","fillColor","cropThreshold","halo","inactive","turboThreshold","axisTypes","cropShoulder","parallelArrays","sorted","eventOptions","bindAxes","getColor","getSymbol","optionalAxis","updateParallelArrays","toYData","yData","pointIntervalUnit","pointStart","pointInterval","negativeColor","negativeFillColor","getCyclic","findPointIndex","cropped","cropStart","touched","hasDerivedData","addPoint","isSeriesBoosting","getFirstValidPoint","getExtremesFromAll","forceCrop","cropData","processedXData","processedYData","basePointRange","dataGroup","groupMap","stackedYData","modifyValue","pointPlacementToXValue","startFromThreshold","negStacks","stackKey","X","getStackIndicator","irregularWidths","pointXOffset","barW","yBottom","isInside","Z","closestPointRangePx","getValidPoints","getClipBox","setClip","sharedClipKey","afterAnimate","finishedAnimating","drawPoints","specialGroup","markerAttribs","hasImage","animationTimeout","survive","getGraphPath","connectNulls","leftCliff","rightCliff","getPointSpline","xMap","graphPath","drawGraph","gappedPath","getZonesGraphs","preventGraphAnimation","fillGraph","linecap","applyZones","clips","graph","showLine","isVML","resetZones","invertGroups","plotGroup","invertable","drawDataLabels","redrawPoints","drawTracker","kdAxisArray","searchKDTree","buildKDTree","buildingKdTree","kdNow","StackItem","isNegative","labelrank","getStackBox","justifyDataLabel","reversedStacks","setStackedPoints","modifyStacks","stackTotalGroup","cumulative","singleStacks","percentStacker","cleanRecursively","addSeries","addAxis","createAxis","addColorAxis","ColorAxis","showLoading","loadingDiv","loadingSpan","loadingShown","showDuration","hideLoading","hideDuration","propsRequireDirtyBox","propsRequireReflow","propsRequireUpdateSeries","collectionsWithUpdate","isResponsiveOptions","isInternal","collectionsWithInit","setSubtitle","setCaption","connector","fixedBox","removePoint","initialType","dataGrouping","setName","setCategories","getStackPoints","leftNull","rightNull","isCliff","doCurve","rectPlotX","areaPath","shiftUnit","rightContX","rightContY","groupPadding","pointPadding","minPointLength","brightness","trackerGroups","getColumnMetrics","grouping","columnIndex","maxPointWidth","pointWidth","columnMetrics","crispCol","dense","translatedThreshold","barX","pointAttrToOptions","animationLimit","allowShadow","jitter","takeOrdinalPosition","applyJitter","CenteredSeriesMixin","getCenter","slicedOffset","getStartAndEndRadians","connectorPadding","softConnector","connectorShape","crookDistance","ignoreHiddenPoint","startAngleRad","startR","getX","radii","asin","labelDistance","endAngleRad","maxLabelDistance","slicedTranslation","half","angle","labelPosition","natural","connectorPosition","breakAt","touchingSliceAt","drawEmpty","shadowGroup","delayedRendering","sortByAngle","setVisible","sliced","haloPath","connectorShapes","fixedOffset","straight","crookedLine","getConnectorPath","reducedLen","dlOptions","dataLabelOnNull","connectors","contrastColor","inside","textPath","getDataLabelPath","alignDataLabel","dlBox","forceDL","dataLabelPositioners","radialDistributionY","distributeBox","radialDistributionX","justify","alignToPlotEdges","alignToConnectors","shortened","_pos","positionIndex","_attr","sideOverflow","verifyDataLabelOverflow","placeDataLabels","connectorWidth","connectorColor","minSize","below","hideOverlappingLabels","oldOpacity","newOpacity","absoluteBox","isOld","TrackerMixin","drawTrackerPoint","_hasTracking","drawTrackerGraph","trackByArea","tracker","scatter","browserEvent","defaultChecked","showResetZoom","zoomOut","relativeTo","resetSelection","accumulate","hasImportedEvents","stateMarkerGraphic","currentSymbol","mouseOver","mouseOut","labelBySeries","responsive","currentResponsive","rules","_id","matchResponsiveRule","ruleIds","undoOptions","currentOptions","condition","_modules","isCallable","symbolMap","numberMap","pluralForm","plurals","pluralize","weekdaysParseExact","plural","word","forms","relativeTimeWithPlural","standalone","lastDigit","last2Digits","monthsParseExact","relativeTimeWithMutation","mutation","specialMutationForYears","lastNumber","softMutation","mutationTable","monthsStrictRegex","monthsShortStrictRegex","fullWeekdaysParse","shortWeekdaysParse","minWeekdaysParse","longMonthsParse","shortMonthsParse","ll","lll","llll","processRelativeTime","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","_calendarEl","monthsShortDot","numbersPast","numbersFuture","verbalNumber","monthsShortWithDots","monthsShortWithoutDots","weekEndings","eraYearOrdinalRegex","$0","$1","$2","isUpper","processFutureTime","eifelerRegelAppliesToNumber","processPastTime","translateSeconds","translateSingular","relativeTimeWithSingular","relativeSeconds","translator","words","correctGrammaticalCase","wordKey","relativeTimeMr","monthsNominative","monthsSubjective","numbersNouns","translateFuture","translatePast","numberNoun","numberAsNoun","hundred","ten","weekdaysCaseReplace","nominative","accusative","genitive","processHoursFunction","createCommonjsModule","getCjsExportFromNamespace","colorName","conversions","reverseKeywords","convert","rgb","channels","hsl","hsv","hwb","cmyk","xyz","lab","lch","keyword","ansi16","ansi256","hcg","apple","gray","comparativeDistance","rdif","gdif","bdif","diffc","currentClosestKeyword","currentClosestDistance","t1","t2","t3","smin","lmin","hi","sl","vmin","wh","bl","z2","hr","ansi","mult","rem","colorString","char","integer","hue","chroma","pure","mg","buildGraph","models","deriveBFS","fromModel","adjacents","adjacent","wrapConversion","toModel","conversion","wrapRaw","wrappedFn","wrapRounded","colorConvert","colorName$1","getRgba","getHsla","getRgb","getHsl","getHwb","getAlpha","hexString","rgbString","rgbaString","percentString","percentaString","hslString","hslaString","hwbString","per","hexAlpha","alpha","hsla","vals","hexDouble","reverseNames","valid","setValues","red","lightness","whiteness","cyan","setSpace","rgbArray","hslArray","hsvArray","hwbArray","cmykArray","rgbaArray","hslaArray","setChannel","green","blue","saturation","saturationv","blackness","magenta","yellow","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","contrastRatio","dark","light","negate","lighten","darken","saturate","desaturate","whiten","blacken","greyscale","clearer","opaquer","rotate","degrees","mix","mixinColor","weight","color1","w1","w2","spaces","maxes","getValues","space","capped","chans","sname","svalues","chartjsColor","isValidKey","isNullOrUndef","valueOrDefault","valueAtIndexOrDefault","thisArg","loopable","arrayEquals","a0","a1","ilen","v0","v1","klen","_merger","tval","sval","_mergerIf","mergeIf","merger","inherits","extensions","me","ChartElement","Surrogate","__super__","_deprecated","previous","helpers_core","callCallback","fromIndex","getValueOrDefault","getValueAtIndexOrDefault","effects","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","helpers_easing","easingEffects","RAD_PER_DEG","DOUBLE_PI","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","exports$1","clearRect","roundedRect","moveTo","closePath","drawPoint","xOffset","yOffset","cornerRadius","rad","beginPath","lineTo","SQRT1_2","_isPointInArea","epsilon","clipArea","unclipArea","flip","stepped","steppedLine","midpoint","tension","bezierCurveTo","controlPointPreviousX","controlPointNextX","controlPointPreviousY","controlPointNextY","helpers_canvas","drawRoundedRectangle","_set","defaultColor","defaultFontColor","defaultFontFamily","defaultFontSize","defaultFontStyle","defaultLineHeight","core_defaults","toFontString","font","family","helpers_options","toLineHeight","toPadding","_parseFont","globalDefaults","fontStyle","cacheable","exports$2","_factorize","log10","exponent","LOG10E","powerOf10","helpers_math","getRtlAdapter","rectX","xPlus","leftForLtr","getLtrAdapter","_itemWidth","helpers$1","math","overrideTextDirection","getPropertyPriority","prevTextDirection","restoreTextDirection","ease","actual","c0","c1","configuration","initialize","_type","pivot","_view","_model","_start","tooltipPosition","hasValue","core_element","exports$3","currentStep","numSteps","onAnimationProgress","onAnimationComplete","core_animation","onComplete","core_animations","addAnimation","cancelAnimation","requestAnimFrame","startDigest","advance","nextStep","arrayEvents","listenArrayEvents","_chartjs","unlistenArrayEvents","stub","DatasetController","datasetElementType","dataElementType","_datasetElementOptions","_dataElementOptions","linkScales","addElements","getMeta","updateIndex","getDataset","scalesOpts","xAxisID","yAxisID","getDatasetMeta","getScaleForId","scaleID","_getValueScaleId","_getIndexScaleId","_getValueScale","_getIndexScale","_update","createMetaDataset","_chart","_datasetIndex","createMetaData","metaData","addElementAndReset","updateElement","buildOrUpdateElements","isExtensible","resyncElements","_configure","_cachedDataOpts","easingValue","_resolveDatasetElementOptions","_resolveDataElementOptions","readKey","datasetOpts","custom","elementOptions","dataIndex","removeHoverStyle","$previousStyle","setHoverStyle","getHoverColor","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","_removeDatasetHoverStyle","_setDatasetHoverStyle","hoverOptions","numMeta","numData","insertElements","onDataPush","onDataPop","onDataShift","onDataSplice","onDataUnshift","core_datasetController","TAU","clipArc","pixelMargin","angleMargin","outerRadius","innerRadius","drawFullCircleBorders","vm","fullCircles","drawBorder","borderAlign","lineJoin","element_arc","inLabelRange","mouseX","hoverRadius","inRange","pointRelativePosition","getAngleFromPoint","betweenAngles","withinRadius","getCenterPoint","halfAngle","halfRadius","getArea","centreAngle","rangeFromCentre","circumference","strokeStyle","valueOrDefault$1","line","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","capBezierPoints","element_line","currentVM","spanGaps","_children","globalOptionLineElements","lastDrawnIndex","_loop","previousItem","lineCap","setLineDash","lineDashOffset","valueOrDefault$2","defaultColor$1","xRange","hitRadius","yRange","mouseY","pointStyle","element_point","inXRange","inYRange","defaultColor$2","getBarBounds","v2","parseBorderSkipped","edge","borderSkipped","horizontal","parseBorderWidth","maxW","maxH","boundingRects","skipX","skipY","rectangle","element_rectangle","rects","Arc","Line","Rectangle","deprecated","valueOrDefault$3","computeMinSampleSize","pixels","_length","getTicks","getPixelForTick","computeFitCategoryTraits","ruler","thickness","barThickness","stackCount","categoryPercentage","barPercentage","computeFlexCategoryTraits","offsetGridLines","bar","controller_bar","scaleOpts","minBarLength","maxBarThickness","_ruler","getRuler","_xScale","_yScale","datasetLabel","_updateElementGeometry","vscale","getBasePixel","vpixels","calculateBarValuePixels","ipixels","calculateBarIndexPixels","_getStacks","metasets","_getMatchingVisibleMetas","getStackCount","getStackIndex","getPixelForValue","_startPixel","_endPixel","imeta","ivalue","stackLength","_parseValue","stackIndex","indexOpts","valueOpts","valueOrDefault$4","resolve$1","controller_bubble","xScale","yScale","dsIndex","getPixelForDecimal","_options","valueOrDefault$5","PI$1","DOUBLE_PI$1","HALF_PI$1","animateRotate","animateScale","legendCallback","listItem","outerHTML","generateLabels","controller_doughnut","getRingIndex","ringIndex","isDatasetVisible","ratioX","ratioY","arcs","cutout","chartWeight","_getRingWeight","endY","contains0","contains90","contains270","minX","minY","maxX","maxY","getMaxBorderWidth","radiusLength","_getVisibleDatasetWeightTotal","calculateTotal","_getRingWeightOffset","animationOpts","calculateCircumference","hoverWidth","ringWeightOffset","dataSetIndex","horizontalBar","controller_horizontalBar","valueOrDefault$6","resolve$2","isPointInArea","scaleClip","halfBorderWidth","tickOpts","defaultClip","toClip","controller_line","_showLine","_scale","updateBezierControlPoints","lineModel","calculatePointY","lineOptions","ds","dsMeta","stackedRightValue","rightValue","sumPos","sumNeg","getRightValue","_getSortedVisibleDatasetMetas","controlPoints","capControlPoint","pt","cubicInterpolationMode","splineCurveMonotone","splineCurve","nextItem","resolve$3","angleLines","circular","pointLabels","beginAtZero","controller_polarArea","starts","_starts","angles","_angles","_updateRadius","countVisibleElements","_computeAngle","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getDistanceFromCenterForValue","resetRadius","doughnut","controller_pie","valueOrDefault$7","controller_radar","pointPosition","getPointPositionForValue","controllers","polarArea","radar","getRelativePosition","native","parseVisibleItems","jlen","getIntersectItems","getNearestItems","intersect","distanceMetric","minDistance","POSITIVE_INFINITY","nearestItems","getDistanceMetricForAxis","useX","useY","pt1","pt2","deltaX","deltaY","indexMode","core_interaction","modes","intersectsItem","filterByPosition","where","sortByWeight","wrapBoxes","boxes","layoutBoxes","setLayoutDims","layouts","fullWidth","availableWidth","vBoxMaxWidth","hBoxMaxHeight","buildLayoutBoxes","leftAndTop","rightAndBottom","getCombinedMax","updateDims","getPadding","boxPadding","outerWidth","outerHeight","sizes","handleMaxPadding","updatePos","marginForPositions","positions","fitBoxes","refit","refitBoxes","placeBoxes","userPadding","core_layouts","addBox","_layers","removeBox","layoutOptions","availableHeight","verticalBoxes","horizontalBoxes","platform_basic","acquireContext","platform_dom","stylesheet","EXPANDO_KEY","CSS_PREFIX","CSS_SIZE_MONITOR","CSS_RENDER_MONITOR","CSS_RENDER_ANIMATION","ANIMATION_START_EVENTS","EVENT_TYPES","touchstart","touchmove","touchend","pointerdown","pointermove","pointerup","pointerout","readUsedSize","initCanvas","renderHeight","renderWidth","displayWidth","displayHeight","eventListenerOptions","supports","removeListener","fromNativeEvent","throttled","ticking","createDiv","createResizer","maxSize","resizer","shrink","_reset","watchForRender","renderProxy","animationName","unwatchForRender","addResizeListener","removeResizeListener","injectCSS","rootNode","containsStyles","platform_dom$2","disableCSSInjection","_enabled","_ensureLoaded","releaseContext","proxies","core_plugins","_plugins","_cacheId","register","unregister","descriptor","descriptors","$plugins","_invalidate","core_scaleService","constructors","registerScaleType","scaleConstructor","scaleDefaults","getScaleConstructor","getScaleDefaults","updateScaleDefaults","additions","addScalesToLayout","valueOrDefault$8","getRtlHelper","titleFontStyle","titleSpacing","titleMarginBottom","titleFontColor","titleAlign","bodySpacing","bodyFontColor","bodyAlign","footerFontStyle","footerSpacing","footerMarginTop","footerFontColor","footerAlign","yPadding","xPadding","caretPadding","caretSize","multiKeyBackground","beforeTitle","tooltipItems","labelCount","afterTitle","beforeBody","beforeLabel","labelColor","labelTextColor","afterLabel","afterBody","beforeFooter","footer","afterFooter","positioners","average","nearestElement","distanceBetweenPoints","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","indexScale","valueScale","getLabelForIndex","getBaseModel","tooltipOpts","xAlign","yAlign","textDirection","_bodyFontFamily","bodyFontFamily","_bodyFontStyle","bodyFontStyle","_bodyAlign","bodyFontSize","_titleFontFamily","titleFontFamily","_titleFontStyle","titleFontSize","_titleAlign","_footerFontFamily","footerFontFamily","_footerFontStyle","footerFontSize","_footerAlign","legendColorBackground","getTooltipSize","combinedBodyLength","bodyItem","lines","titleLineCount","footerLineCount","widthPadding","maxLineWidth","measureText","fontString","determineAlignment","lf","rf","olf","orf","yf","midX","midY","getBackgroundPoint","paddingAndSize","radiusAndPadding","getAlignedX","getBeforeAfterBodyLines","exports$4","_lastActive","getTitle","getBeforeBody","getBody","bodyItems","getAfterBody","getFooter","existingModel","_active","backgroundPoint","tooltipSize","caretX","caretY","labelColors","labelTextColors","_eventPosition","itemSort","dataPoints","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","drawTitle","rtlHelper","textBaseline","fillText","drawBody","textColor","drawColorBoxes","xLinePadding","colorX","fillLineOfText","bodyAlignForCalculation","rtlColorX","strokeRect","drawFooter","drawBackground","quadraticCurveTo","hasTooltipContent","globalAlpha","getElementsAtEventForMode","positioners_1","core_tooltip","valueOrDefault$9","mergeScaleConfig","slen","mergeConfig","initConfig","updateConfig","newOptions","ensureScalesHaveIDs","buildOrUpdateScales","nextAvailableScaleId","axesOpts","hasId","positionIsHorizontal","compare2Level","l1","l2","onHover","animationDuration","responsiveAnimationDuration","construct","_bufferedRender","instances","retinaScale","bindEvents","initToolTip","getMaximumWidth","getMaximumHeight","newSize","scalesOptions","scaleOptions","xAxisOptions","yAxisOptions","updated","dtype","dposition","isDefault","scaleType","scaleClass","mergeTicksOptions","hasUpdated","buildOrUpdateControllers","newControllers","destroyDatasetMeta","ControllerClass","resetElements","updateLayout","updateDatasets","lastActive","_bufferedRequest","_idx","updateDataset","animationOptions","animationObject","easingFunction","stepDecimal","layers","drawDatasets","_drawTooltip","_getSortedDatasetMetas","filterVisible","drawDataset","getElementAtEvent","getElementsAtEvent","getElementsAtXAxis","getDatasetAtEvent","_meta","generateLegend","unbindEvents","_chartInstance","_listeners","updateHoverStyle","bufferedRequest","core_controller","Controller","configMerge","scaleMerge","core_helpers","parseMaxStyle","styleValue","parentProperty","valueInPixels","isConstrainedValue","getConstraintDimension","domNode","maxStyle","percentageProperty","_getParentNode","constrainedNode","constrainedContainer","hasCNode","hasCContainer","infinity","filterCallback","findNextWhere","arrayToSearch","currentItem","findPreviousWhere","almostEquals","almostWhole","rounded","NEGATIVE_INFINITY","toRadians","toDegrees","radians","_decimalPlaces","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","aliasPixel","pixelWidth","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","EPSILON","pointBefore","pointCurrent","pointAfter","alphaK","betaK","tauK","squaredMagnitude","pointsWithTangents","deltaK","mK","pointsLen","slopeDeltaX","niceNum","fraction","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","srcElement","boundingRect","paddingBottom","getConstraintWidth","getConstraintHeight","_calculatePadding","parentDimension","cw","forceRatio","pixelRatio","pixelSize","longestText","arrayOfThings","gc","garbageCollect","thing","nestedThing","longest","gcLen","numberOfLabelLines","numberOfLines","CanvasGradient","colorValue","CanvasPattern","abstract","DateAdapter","_create","override","members","core_adapters","_date","core_ticks","formatters","tickValue","logDelta","tickString","logTick","numExponential","numDecimal","logarithmic","remain","valueOrDefault$a","sample","getPixelForGridLine","validIndex","lineValue","caches","computeLabelSizes","tickFonts","tickFont","nestedLabel","widest","highest","widths","heights","widestLabelSize","highestLabelSize","valueAt","getTickMarkLength","drawTicks","tickMarkLength","getScaleLabelHeight","parseFontOptions","nestedOpts","parseTickFontOptions","nonSkipped","ticksToFilter","getEvenSpacing","calculateSpacing","majorIndices","axisLength","ticksLimit","factors","factor","evenMajorSpacing","getMajorIndices","skipMajors","majorStart","majorEnd","zeroLineWidth","zeroLineColor","zeroLineBorderDash","zeroLineBorderDashOffset","minRotation","maxRotation","mirror","autoSkip","autoSkipPadding","Scale","zeroLineIndex","_ticks","_getLabels","xLabels","yLabels","beforeUpdate","margins","samplingEnabled","sampleSize","_labelSizes","_maxLabelLines","longestLabelWidth","longestTextCache","_gridLineItems","_labelItems","beforeSetDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","_convertTicksToLabels","beforeCalculateTickRotation","calculateTickRotation","afterCalculateTickRotation","beforeFit","fit","afterFit","_ticksToDraw","_autoSkip","afterUpdate","startPixel","endPixel","reversePixels","_reversePixels","beforeTickToLabelConversion","convertTicksToLabels","userCallback","afterTickToLabelConversion","labelSizes","maxLabelWidth","maxLabelHeight","tickWidth","maxLabelDiagonal","numTicks","_isVisible","_getLabelSizes","scaleLabelOpts","gridLineOpts","isBottom","firstLabelSize","lastLabelSize","lineSpace","tickPadding","isRotated","angleRadians","cosRotation","sinRotation","offsetRight","labelWidth","handleMargins","isFullWidth","rawValue","_getScaleLabel","getValueForPixel","getDecimalForPixel","getBaseValue","avgMajorSpacing","_tickSize","numMajorIndices","optionTicks","rot","_computeGridLineItems","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","ticksLength","tl","axisWidth","axisHalfWidth","alignPixel","alignBorderValue","_computeLabelItems","lineCount","textOffset","isMirrored","fonts","_drawGrid","firstLineWidth","lastLineWidth","_drawLabels","_drawTitle","scaleLabelX","scaleLabelY","scaleLabelFontColor","scaleLabelFont","scaleLabelPadding","halfLineHeight","isLeft","gz","_draw","core_scale","isNullOrUndef$1","defaultConfig","scale_category","ticksOpts","minIndex","maxIndex","_startValue","_valueRange","valueCategory","_defaults","isNullOrUndef$2","generateTicks","generationOptions","dataRange","niceMin","niceMax","numSpaces","MIN_SPACING","maxNumSpaces","maxTicks","rmin","rmax","scale_linearbase","handleTickRangeOptions","minSign","maxSign","suggestedMin","suggestedMax","getTickLimit","_computeTickLimit","handleDirectionalChanges","numericGeneratorOptions","fixedStepSize","ticksAsNumbers","_endValue","defaultConfig$1","DEFAULT_MIN","DEFAULT_MAX","getOrCreateStack","neg","stackData","relativePoints","updateMinMax","scale_linear","hasStacks","stackValues","_defaults$1","valueOrDefault$b","generateTicks$1","exp","significand","tickVal","endExp","endSignificand","minNotZero","lastTick","defaultConfig$2","nonNegativeOrDefault","scale_logarithmic","IDMatches","valuesPerStack","valuesForType","minVal","maxVal","tickValues","_getFirstTickValue","_valueOffset","_defaults$2","valueOrDefault$c","valueAtIndexOrDefault$1","resolve$4","defaultConfig$3","showLabelBackdrop","backdropColor","backdropPaddingY","backdropPaddingX","getTickBackdropHeight","measureLabelSize","determineLimits","fitWithPointLabels","textSize","plFont","furthestLimits","furthestAngles","_pointLabelSizes","valueCount","getPointPosition","drawingArea","getIndexAngle","hLimits","vLimits","setReductions","getTextAlignForAngle","adjustPointPositionForLabelHeight","drawPointLabels","pointLabelOpts","tickBackdropHeight","outerDistance","pointLabelPosition","pointLabelFontColor","drawRadiusLine","numberOrZero","scale_radialLinear","setCenterPoint","largestPossibleRadius","radiusReductionLeft","radiusReductionRight","radiusReductionTop","radiusReductionBottom","leftMovement","rightMovement","topMovement","bottomMovement","maxRight","maxLeft","maxTop","maxBottom","scalingFactor","distanceFromCenter","thisAngle","getBasePosition","angleLineOpts","tickFontColor","_defaults$3","deprecated$1","resolve$5","valueOrDefault$d","MIN_INTEGER","MIN_SAFE_INTEGER","MAX_INTEGER","MAX_SAFE_INTEGER","INTERVALS","common","steps","UNITS","sorter","arrayUnique","getMin","getMax","buildLookupTable","timestamps","distribution","lookup","mid","i0","i1","lo","interpolate$1","skey","tkey","span","toTimestamp","_adapter","determineUnitForAutoTicks","minUnit","capacity","determineUnitForFormatting","determineMajorUnit","generate","timeOpts","computeOffsets","setMajorTicks","majorUnit","ticksFromTimestamps","defaultConfig$4","displayFormat","scale_time","labelsAdded","_table","_timestamps","getLabelCapacity","_unit","_majorUnit","_offsets","tickFormatFunction","minorFormat","majorFormat","nestedTickOpts","getPixelForOffset","_getLabelSize","tickLabelWidth","tickFontSize","getLabelWidth","exampleTime","exampleLabel","_defaults$4","radialLinear","FORMATS","filler","propagate","mappers","boundary","decodeFill","computeLinearBoundary","scaleBottom","scaleTop","scaleZero","computeCircularBoundary","computeBoundary","resolveTarget","visited","createMapper","isDrawable","drawArea","curve0","curve1","len0","len1","doFill","mapper","p0","d0","d1","loopOffset","plugin_filler","afterDatasetsUpdate","$filler","beforeDatasetsDraw","getRtlHelper$1","noop$1","valueOrDefault$e","getBoxWidth","labelOpts","usePointStyle","boxWidth","ci","onLeave","lineDash","legendHitBoxes","_hoveredItem","doughnutMode","beforeBuildLabels","buildLabels","afterBuildLabels","labelFont","hitboxes","lineWidths","totalHeight","vPadding","columnWidths","columnHeights","totalWidth","currentColWidth","currentColHeight","lineDefault","drawLegendBox","SQRT2","halfFontSize","xLeft","yMiddle","alignmentOffset","realX","_getLegendItemAt","hitBox","lh","hoveredItem","createNewLegendAndAttach","legendOpts","plugin_legend","_element","beforeInit","afterEvent","noop$2","Title","titleX","titleY","fontOpts","createNewTitleBlockAndAttach","titleOpts","titleBlock","_adapters","animationService","Interaction","scaleService","Ticks","pluginService","PluginBase","canvasHelpers","layoutService","LinearScaleBase","klass","cfg","isPreviewableImage","vectorMultiply","createVector","vectorAdd","vectorNormalize","vectorRotate","getMarkupValue","scalar","getMarkupStyles","markup","lineStyle","borderStyle","getMarkupRect","pointsToPathShape","setAttributes","updateEllipse","IMAGE_FIT_STYLE","contain","cover","updateImage","TEXT_ANCHOR","updateText","updateLine","begin","lineDecoration","arrowBeginRotationPoint","arrowBeginCenter","arrowBeginA","arrowBeginB","arrowEndRotationPoint","arrowEndCenter","arrowEndA","arrowEndB","updatePath","createShape","createLine","CREATE_TYPE_ROUTES","ellipse","UPDATE_TYPE_ROUTES","createMarkupByType","updateMarkupByType","MARKUP_RECT","toOptionalFraction","prepareMarkup","_markup","sortMarkupByZIndex","createMarkupView","dirty","viewWidth","viewHeight","cropWidth","cropHeight","_size","outputWidth","outputHeight","outputFit","outputUpscale","upscale","shouldUpscale","scalarWidth","scalarHeight","markupFilter","createVector$1","vectorDot","vectorSubtract","vectorDistanceSquared","vectorDistance","getOffsetPointOnEdge","sinA","sinB","sinC","cosC","getRotatedRectSize","hor","ver","calculateCanvasSize","canvasAspectRatio","imageAspectRatio","canvasWidth","canvasHeight","imgWidth","imgHeight","getImageRectZoomFactor","imageRect","cropRect","imageWidth","imageHeight","rotatedCropSize","getCenteredCropRect","getCurrentCropSize","imageSize","canvasSize","canvasCenter","stage","shouldLimit","scaleToFit","widthFloat","heightFloat","IMAGE_SCALE_SPRING_PROPS","createBitmapView","createImageCanvasWrapper","bitmap","createClipView","createMarkup","destroyMarkup","transparencyIndicator","translation","cropAspectRatio","stageZoomFactor","imageView","createImageView","fixedPreviewHeight","minPreviewHeight","maxPreviewHeight","panelAspectRatio","clipWidth","SVG_MASK","SVGMaskUniqueId","createImageOverlayView","fpAPI","mask","BitmapWorker","createImageBitmap","ColorMatrixWorker","imageData","colorMatrix","m11","m12","m13","m14","m15","m21","m22","m23","m24","m25","m31","m32","m33","m34","m35","m43","m44","m45","buffer","getImageSize","naturalWidth","naturalHeight","fixImageOrientation","orientation","createPreviewImage","isBitmap","MAX_WIDTH","MAX_HEIGHT","calculateAverageColor","getImageData","averageColor","cloneCanvas","cloneImageData","ImageData","createImageData","Uint8ClampedArray","crossOrigin","createImageWrapperView","OverlayView","ImageView","putImageData","removeImageView","shiftImage","imageViewBin","pushImage","didUpdateItemMetadata","_imageView","canCreateImageBitmap","didCreatePreviewContainer","fileURL","drawPreview","loadPreviewFallback","previewImageLoaded","pixelDensityFactor","scaleFactor","previewImageRatio","previewContainerWidth","previewContainerHeight","previewImage","close","overlayShadow","imageBitmap","didDrawPreview","restoreOverlay","overlayError","overlaySuccess","didThrowError","didCompleteProcessing","_ref13","_ref14","DID_IMAGE_PREVIEW_DRAW","DID_IMAGE_PREVIEW_CONTAINER_CREATE","DID_FINISH_CALCULATE_PREVIEWSIZE","_ref15","viewsToRemove","imagePreviewView","viewAPI","didLoadItem","supportsCreateImageBitmap","maxPreviewFileSize","imagePreview","rescaleItem","itemPanelAspectRatio","previewAspectRatio","previewHeightMax","previewHeight","didResizeView","shouldRescale","didCalculatePreviewSize","shouldDrawPreview","DID_RESIZE_ROOT","DID_STOP_RESIZE","DID_IMAGE_PREVIEW_CALCULATE_SIZE","allowImagePreview","imagePreviewFilterItem","imagePreviewHeight","imagePreviewMinHeight","imagePreviewMaxHeight","imagePreviewMaxFileSize","imagePreviewZoomFactor","imagePreviewUpscale","imagePreviewMaxInstantPreviewFileSize","imagePreviewTransparencyIndicator","imagePreviewCalculateAverageImageColor","imagePreviewMarkupShow","imagePreviewMarkupFilter","allowFileMetadata","fileMetadataObject","mimeTypeMatchesWildCard","wildcard","isValidMimeType","acceptedTypes","userInputType","acceptedType","getItemType","validateFile","acceptedFileTypes","typeDetector","detectedType","applyMimeTypeMap","acceptedFileType","accept","validationResult","handleRejection","acceptedFileTypesMapped","acceptedFileTypesMapped_unique","allButLastType","lastType","allowFileTypeValidation","labelFileTypeNotAllowed","fileValidateTypeLabelExpectedTypes","fileValidateTypeLabelExpectedTypesMap","fileValidateTypeDetectType","sizeMax","sizeMin","fileFilter","filesize","totalSizeMax","allowFileSizeValidation","maxFileSize","minFileSize","maxTotalFileSize","fileValidateSizeFilter","labelMinFileSizeExceeded","labelMinFileSize","labelMaxFileSizeExceeded","labelMaxFileSize","labelMaxTotalFileSizeExceeded","labelMaxTotalFileSize","DESCRIPTORS","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","anObject","toPropertyKey","$TypeError","$defineProperty","$getOwnPropertyDescriptor","ENUMERABLE","CONFIGURABLE","WRITABLE","Attributes","$String","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","stringSlice","requireObjectCoercible","$Object","defineGlobalProperty","SHARED","definePropertyModule","createPropertyDescriptor","tryToString","postfix","IndexedObject","errorHandled","lastSetting","mq","menuWidthChange","$spinner","valEqual","notEmpty","searchPath","basePath","blacklistedKeys","webpackPolyfill","webpackContext","req","webpackContextResolve","$el","errorMessage","$error","class","$icon","pastedText","setRangeText","selectionStart","selectionEnd","$body","$cart_total","paypal","fundingSource","FUNDING","PAYPAL","createOrder","purchase_units","currency_code","breakdown","item_total","tax_total","description","$item","quantity","unit_amount","onApprove","authorize","authorization","gateway","coupon_id","paypal_payment","subtotal_amount","flatpickr","enableTime","startDate","endDate","minDate","maxDate","onChange","selectedDates","dateStr","instance","alert","Turbolinks","visit","initializeFlatpickr","temporaryImageReorderTimeout","loadFile","processImageFile","fieldName","getPresignParams","createProductImage","processFeaturedImage","updateProductFeaturedImage","processDownloadFile","createProductDownload","processVersionDownloadFile","createProductVersionDownload","processAvatarImage","updateUserAvatarImage","processMessageFile","assignMessageFiles","processPostImage","updatePostImage","processBannerImage","updateShopBannerImage","callbackMethod","presignResponse","awsResponse","presignFileData","sendFileToS3","formatCachedUpload","storage","mime_type","ajaxUpdateForm","formSelector","requestMethod","successCallback","$form","_method","authenticity_token","uploadedFileData","images_attributes","downloads_attributes","user","avatar","shop","settings_attributes","banner","reorderProductImages","filesArray","formattedData","updateProductImageOrdinals","removeFeaturedImage","remove_image","removeImage","destroy_product_images","removeAvatarImage","remove_avatar","removePostImage","removeBannerImage","remove_banner","FilePondPluginImagePreview","FilePondPluginFileMetadata","FilePondPluginFileValidateType","FilePondPluginFileValidateSize","$multiImageInputs","$addToTop","imageInsertLocation","$input","$rep","placeholderText","initializeSelect2","selectElement","$selectElement","term","processResults","minimumInputLength","placeholder","$selects","$sel","$multiSelects","cleanupLastLoad","multiple","$userSelect","$selectSpinner","$variantFormsContainer","productId","initializeVariantFileSelect","fileSelect","$fileSelect","Option","$variantNestedFields","$variantFileSelect","$insertedItem","preventInvalidSlugInput","preventPasteSlugInput","lowercaseSlugValue","checkSlug","slugTimer","clearSlugFeedback","$target","slugSuccess","$slugInputs","checkApiToUse","$couponCodeInput","summernoteImageUpload","$summernote","insertDefaultWidthImage","cdnImageUrl","sendSummernoteFileToS3","$img","basicEditors","$basicNote","toolbar","onImageUpload","onImageLinkInsert","onBlurCodeview","codeviewHtml","prettifyHtml","codemirror","htmlMode","lineWrapping","lineNumbers","codeviewFilter","codeviewIframeFilter","expandedEditors","$expandedNote","nativeVideoNodeBuilderFunc","createVideoNode","$embed","$iframeWrapper","slimEditors","$slimNote","simpleEditors","strip_html_tags","updateCounterInput","$textarea","$counter","$noteTextarea","minLength","noteTextLength","strippedInputCountedContainerLength","currentLength","$counterContainer","$createBtn","$loginForm","$loginLink","$signUpForm","$supportModal","$modal","videoSrc","$productContent","$noneResponsiveIframes","$wrapper","$span","$priceCart","$addToCartForm","$variantContainer","$variantPrices","queryStr","varId","variantId","baseAction","removeSortParams","removeOrderParams","supportedFilters","sort_val","sort_type","savedGridRowAmount","localStorage","getItem","$gridImgButton","$productWrapper","$gridAmount","setItem","isTrackedPage","isTrackingSetUp","dataLayer","gtmId","gaId","logAnalytics","eventData","updatedProductViewInfo","gtmData","user_id","currentUser","gtm","pageTitle","pagePath","elementTarget","productSlug","productViewInfo","gtag","send_to","updateProductData","productData","image_data","getEcommerceStep","clickedElement","pageViewInfo","copyText","$btn","textToCopyId","$textToCopyElement","textToCopy","clipboard","writeText","reportValidity","$selected","$paypalEmailInput","$stripeConnect","$couponForm","toggleCouponType","$productSelects","inputNumber","$productsToggle","$productsTarget","updateProductsTarget","$affiliateToogle","$affiliateTarget","$affiliateCardHeader","updateAffiliateTarget","$nestedAffiliateCoupon","$destroyAffiliateCoupon","$adminOrderForm","calcSubTotal","$orderSubTotal","$nestedItems","$totalPrice","$price","calcOrderTotal","subTotal","taxAmount","$taxAmount","$orderTotal","fieldsInit","$variantSelect","$itemPrice","$itemName","$itemVendorId","$itemSaleId","getProductVariants","getProductDetails","getVariantPrice","$nameField","$priceField","$vendorIdField","$saleIdField","updateItemDetails","productObj","$orderItems","$payoutConfirm","$payoutBtn","$detailsToggle","$detailsForm","$detailsDisplay","postUrl","$status","updateReviewMessage","flagChecked","$reviewMessage","addHeaderToReviewMessage","escapedHeader","headerRegex","newText","removeHeaderFromReviewMessage","flagSelectorDataAttr","$flag","$isFlagged","isFlagged","$navFlag","$flagClassAry","findFlag","startsWith","findNavFlag","updateFlag","$reviewEditProductForm","errors","$refundForm","$checkboxes","$heroTrigger","$heroFields","$popularTrigger","$popularFields","$submit","$sendToAllCustomers","$hintText","$productNestedFields","$productSelect","originalEmailSendText","$sendInput","setupVariantSelectDropdown","variants","variant","hideEmailProductNestedFields","showEmailProductNestedFields","disableUnselectedCheckboxes","checkboxList","enableCheckboxes","$categories","mainCategoryCount","$subcategories","subcategoryCount","calculateCollaboratorAmounts","totalPriceRounded","$wrap","max_rate","dev_fund","max_rate_dollars","dev_fund_dollars","rate","total_rate","total_dollars","commissionTotal","commission_value","totalPrice","setPrice","$devFundSlider","$percentText","$amountText","$dataBoxText","toggle_conditional_field","$parent","minuteIncrement","action_id","loadingMessages","trusted","newVal","review_text","isConfirm","updatePositions","$object","onSort","$collapsible","$collapseToggler","$id","setUpCollapsibleForm","maskMoney","allowZero","$removedItem","createAppendObserver","mutationsList","_createForOfIteratorHelper","$addedElement","addedNodes","$sortableHandle","createSortable","sortableContainer","draggableElementClassName","sortableHandleClassName","groupName","onEnd","$draggedItem","newFolderID","destroySortable","$downloadsMainContainer","newFolderObserver","newDownloadObserver","disableSorting","$saveSortedFilesBtn","$sortFilesBtn","observerConfig","sortableFolderClassName","sortableDownloadClassName","sortingActive","$sortableFoldersContainer","$sortableDownloadsContainers","sortableFolders","noFolderSortableDownloads","$folders","$noFolderDownloads","download_folders_attributes","$downloads","folderAttributes","downloadAttributes","download_folder_id","$checkBoxWrapper","$checkBox","$info","$resend_form","hideDropdownTimeout","$mainMenuDropdownBtn","$mainMenuToggle","$offCanvasElement","removeMainMenuHoverEvents","updatePageResponsiveness","getOffCanvasBackdrop","dropdown","$offCanvasBackdrop","sale_campaign_params","fullURL","$userDropdownToggle","$userDropdownMenu","$creatorDropdownToggle","$creatorDropdownMenu","$readAllSwitch","sortAboutVal","$versionSelects","minimumResultsForSearch","version_id","$downLoadsList","consent","policy_id","accepted","DOM","parseTemplate","dropdownWrapper","enforceWhitelist","whitelist","inputText","templates","dropdownItemNoMatch","isLoading","dropdownHide__bindEventsTimeout","suggestedListItems","filterListItems","editing","autocomplete","suggest","autoComplete","highlightFirst","highlightOption","binding","anchorOffset","anchorNode","ddItemData","ddItemElm","flaggedTags","baseOffset","dropdownInital","appendTarget","createListHTML","refilter","getCaretGlobalPosition","onKeyDown","onMouseLeave","dropdownItemActive","ArrowLeft","rightKey","selectOption","backspace","removeTags","editTag","dropdownItem","suggestionClick","tagify","suggestionElm","getNodeIndex","clearOnSelect","closeOnSelect","addTags","elm","onEditTagDone","__isValid","toggleFocusClass","selectAll","searchKeys","isTagDuplicate","caseSensitive","fuzzySearch","accentedSearch","mapValueTo","delimiters","tagTextProp","maxTags","addTagOnBlur","blacklist","keepInvalidTags","mixTagsAllowedAfter","mixTagsInterpolator","skipInvalid","editTags","clicks","keepInvalid","transformTag","mixMode","insertAfterTag","selectMode","tagNoAnimation","tagInvalid","tagNotAllowed","inputInvalid","tagX","tagText","scopeLoading","tagLoading","tagEditing","tagFlash","tagHide","hasMaxTags","hasNoTags","classname","beforeRemoveTag","customBinding","customEventsList","mainEvents","isIE","isJQueryPlugin","originalInput","removeAllTags","onFocusBlur","keydown","onKeydown","onClickScope","dblclick","onDoubleClickScope","paste","onPaste","addNew","postUpdate","triggerChangeEvent","setStateSelection","cloneEvent","getTagElms","placeCaretAfterNode","setRangeAtStartEnd","fixFirefoxLastTagNoCaret","tagData","readonly","inputSuggestion","onInput","onMixTagsInput","inputElm","validateTag","getRangeAt","inputType","createTagElem","insertNode","withoutChangeEvent","rangeCount","cloneRange","collapse","setStart","focusNode","endOffset","matchedPatternCount","onInputIE","injectAtCaret","onEditTagInput","__tagifyTagData","__originalHTML","originalIsValid","onEditTagFocus","onEditTagBlur","__originalData","getWhitelistItem","onEditTagkeydown","InstallTrigger","applySettings","build","getCSSVars","loadOriginalValues","autofocus","TEXTS","exceed","duplicate","notAllowed","wrapper","getAttributes","startContainer","createRange","setEnd","CSSVars","tagHideTransition","integrated","parseMixTags","insertAdjacentHTML","lastOriginalValueReported","loadedOriginalValues","simulated","_valueTracker","setValue","setStartBefore","setEndBefore","addRange","getLastTag","editable","skipValidation","editTagToggleValidity","previousData","replaceTag","reCheckInvalidTags","getInvalidTagAttrs","updateValueByDOMTags","deleteContents","validate","replaceTextWithNode","getTagIdx","getTagIndexByValue","getTagElmByValue","flashTag","isTagBlacklisted","isTagWhitelisted","setReadonly","contentEditable","normalizeTags","splitText","selectTag","appendTag","addEmptyTag","addMixTags","__preInvalidData","prefixedTextToTag","createNodeIterator","NodeFilter","SHOW_TEXT","nextNode","__removed","getMixedTagsAsString","originalInputValueFormat","removeTag","makeBuiltIn","CONFIGURABLE_FUNCTION_NAME","inspectSource","InternalStateModule","enforceInternalState","enforce","getInternalState","CONFIGURABLE_LENGTH","TEMPLATE","arity","isNullOrUndefined","NATIVE_WEAK_MAP","createNonEnumerableProperty","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","WeakMap","facade","STATE","getterFor","TYPE","EXISTS","isSymbol","getBuiltIn","isPrototypeOf","$Symbol","sham","V8_VERSION","IS_PURE","copyright","license","unsafe","nonConfigurable","nonWritable","toLength","defineBuiltIn","copyConstructorProperties","isForced","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","dontCallGetSet","forced","propertyIsEnumerableModule","toIndexedObject","$location","channel","port","arraySlice","validateArgumentsLength","IS_IOS","IS_NODE","setImmediate","clearImmediate","Dispatch","MessageChannel","counter","ONREADYSTATECHANGE","runner","eventListener","globalPostMessageDefer","port2","port1","importScripts","Reflect","passed","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","runClearTimeout","Item","env","argv","versions","removeAllListeners","prependListener","prependOnceListener","cwd","chdir","umask","Timeout","clearFn","_clearFn","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","require","toast","$tagInputs","taglist","Tagify","$orderItemIdInputs","featherlightGallery","previousIcon","nextIcon","galleryFadeIn","openSpeed","switchButton","targetNode","subtree","defineBuiltInAccessor","regExpFlags","RegExpPrototype","INDICES_SUPPORT","calls","expected","addGetter","chr","pairs","dotAll","ignoreCase","multiline","sticky","hasIndices","getDescriptor","PROPER","functionToString","getMethod","ordinaryToPrimitive","wellKnownSymbol","TO_PRIMITIVE","pref","exoticToPrim","Deno","v8","aCallable","unicode","unicodeSets","ArrayBufferViewCore","lengthOfArrayLike","toOffset","RangeError","Int8Array","Int8ArrayPrototype","$set","aTypedArray","exportTypedArrayMethod","WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS","TO_OBJECT_BUG","NATIVE_ARRAY_BUFFER_VIEWS","arrayLike","NAME","Constructor","Prototype","NATIVE_ARRAY_BUFFER","classof","setPrototypeOf","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","ObjectPrototype","TO_STRING_TAG","TYPED_ARRAY_TAG","TYPED_ARRAY_CONSTRUCTOR","TYPED_ARRAY_TAG_REQUIRED","TypedArrayConstructorsList","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigIntArrayConstructorsList","BigInt64Array","BigUint64Array","getTypedArrayConstructor","isTypedArray","aTypedArrayConstructor","KEY","TypedArrayConstructor","error2","exportTypedArrayStaticMethod","isView","DataView","TO_STRING_TAG_SUPPORT","classofRaw","CORRECT_ARGUMENTS","tryGet","callee","CORRECT_PROTOTYPE_GETTER","IE_PROTO","uncurryThisAccessor","aPossiblePrototype","CORRECT_SETTER","toIntegerOrInfinity","toPositiveInteger","$RangeError","BYTES","$propertyIsEnumerable","NASHORN_BUG","getOwnPropertyDescriptorModule","exceptions","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","internalObjectKeys","toAbsoluteIndex","createMethod","IS_INCLUDES","replacement","feature","detection","POLYFILL","NATIVE","setTask","schedulersFix","ENGINE_IS_BUN","USER_AGENT","WRAP","Bun","scheduler","hasTimeArg","firstParamIndex","boundArgs","Op","iteratorSymbol","asyncIteratorSymbol","toStringTagSymbol","define","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","makeInvokeMethod","tryCatch","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","record","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","doneResult","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","methodName","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","displayName","isGeneratorFunction","genFun","ctor","awrap","skipTempReset","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","clearCache","setProgressBarDelay","copyObject","Node","ELEMENT_NODE","mozMatchesSelector","uuid","Location","absoluteURL","requestURL","getOrigin","getPath","getPathComponents","getLastPathComponent","getExtension","isHTML","isPrefixedBy","isEqualTo","toCacheKey","HttpRequest","requestCanceled","requestTimedOut","requestFailed","requestLoaded","requestProgressed","referrer","createXHR","NETWORK_FAILURE","TIMEOUT_FAILURE","notifyApplicationBeforeRequestStart","requestStarted","endRequest","requestCompletedWithResponse","failed","requestFailedWithStatusCode","notifyApplicationAfterRequestEnd","requestFinished","ProgressBar","trickle","stylesheetElement","createStylesheetElement","progressElement","createProgressElement","defaultCSS","installStylesheetElement","installProgressElement","startTrickling","hiding","fadeProgressElement","uninstallProgressElement","stopTrickling","trickleInterval","BrowserAdapter","showProgressBar","progressBar","visitProposedToLocationWithAction","startVisitToLocationWithAction","visitStarted","issueRequest","changeHistory","loadCachedSnapshot","visitRequestStarted","hasCachedSnapshot","showProgressBarAfterDelay","visitRequestProgressed","visitRequestCompleted","loadResponse","visitRequestFailedWithStatusCode","reload","visitRequestFinished","hideProgressBar","visitCompleted","followRedirect","pageInvalidated","progressBarTimeout","progressBarDelay","History","onPageLoad","onPopState","started","shouldHandlePopState","turbolinks","restorationIdentifier","historyPoppedToLocationWithRestorationIdentifier","pageLoaded","pageIsLoaded","HeadDetails","tracked","fromHeadElement","hasElementWithKey","getTrackedElementSignature","getScriptElementsNotInDetails","getElementsMatchingTypeNotInDetails","getStylesheetElementsNotInDetails","getProvisionalElements","getMetaValue","findMetaElementByName","Snapshot","headDetails","bodyElement","fromHTMLString","fromHTMLElement","getRootLocation","getSetting","getCacheControlValue","getElementForAnchor","getPermanentElements","getPermanentElementById","getPermanentElementsPresentInSnapshot","findFirstAutofocusableElement","hasAnchor","isPreviewable","isCacheable","isVisitable","renderView","viewWillRender","newBody","viewRendered","invalidateView","viewInvalidated","createScriptElement","SnapshotRenderer","currentSnapshot","newSnapshot","isPreview","currentHeadDetails","newHeadDetails","currentBody","shouldRender","mergeHead","replaceBody","focusFirstAutofocusableElement","copyNewHeadStylesheetElements","copyNewHeadScriptElements","removeCurrentHeadProvisionalElements","copyNewHeadProvisionalElements","relocateCurrentBodyPermanentElements","activateNewBodyScriptElements","assignNewBody","replacePlaceholderElementsWithClonedPermanentElements","trackedElementsAreIdentical","getNewHeadStylesheetElements","getNewHeadScriptElements","getCurrentHeadProvisionalElements","getNewHeadProvisionalElements","getCurrentBodyPermanentElements","permanentElement","getNewBodyScriptElements","ErrorRenderer","newHead","replaceHeadAndBody","activateBodyScriptElements","getScriptElements","View","htmlElement","getSnapshot","snapshot","markAsPreview","renderSnapshot","renderError","ScrollManager","scrollToElement","scrollIntoView","scrollToPosition","scrollPositionChanged","SnapshotCache","snapshots","Visit","performScroll","timingMetrics","recordTimingMetric","cancelRender","visitFailed","historyChanged","shouldIssueRequest","getCachedSnapshot","getCachedSnapshotForLocation","cacheSnapshot","visitRendered","redirectedToLocation","followedRedirect","replaceHistoryWithLocationAndRestorationIdentifier","scrolled","scrollToRestoredPosition","scrollToAnchor","restorationData","scrollPosition","getTimingMetrics","snapshotCached","frame","clickBubbled","clickCaptured","scrollManager","startHistory","stopHistory","applicationAllowsVisitingLocation","locationIsVisitable","getRestorationDataForIdentifier","startVisit","pushHistoryWithLocationAndRestorationIdentifier","shouldCacheSnapshot","notifyApplicationBeforeCachingSnapshot","lastRenderedLocation","getCurrentRestorationData","notifyApplicationBeforeRender","currentVisit","notifyApplicationAfterRender","notifyApplicationAfterPageLoad","clickEventIsSignificant","getVisitableLinkForNode","getVisitableLocationForLink","applicationAllowsFollowingLinkToLocation","getActionForLink","notifyApplicationAfterClickingLinkToLocation","notifyApplicationBeforeVisitingLocation","notifyApplicationAfterVisitingLocation","timing","createVisit","nodeIsVisitable","currentScript","rails","$document","linkClickSelector","buttonClickSelector","inputChangeSelector","formSubmitSelector","formInputClickSelector","disableSelector","enableSelector","requiredInputSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","csrfToken","csrfParam","CSRFProtection","refreshCSRFTokens","isRemote","handleRemote","isCrossDomain","handleMethod","metadataInput","formElements","disableFormElements","disableFormElement","enableFormElements","enableFormElement","allowAction","answer","blankInputs","specifiedSelector","nonBlank","radiosForNameWithNoneSelected","radioName","foundInputs","requiredInputs","checkedRadioButtonNames","nonBlankInputs","stopEverything","disableElement","enableElement","metaClick","blankRequiredInputs","nonBlankFileInputs","remote","delete","attachShadow","ShadowRoot","jQueryInterface","_window$getComputedSt","Set","uidEvent","callable","delegationSelector","_L2","oneOff","Boolean","_L4","setDataAttribute","removeDataAttribute","getDataAttributes","getDataAttribute","Default","DefaultType","_getConfig","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","super","DATA_KEY","dispose","EVENT_KEY","_queueCallback","getInstance","VERSION","findOne","focusableChildren","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector","getOrCreateInstance","_destroyElement","et","endCallback","leftCallback","rightCallback","nt","st","_deltaX","_supportPointerEvents","_initEvents","_eventIsPointerPenTouch","_end","_handleSwipe","_move","ot","rt","at","ht","dt","ut","ft","mt","_t","bt","vt","yt","wt","At","Et","Tt","ArrowRight","Ct","ride","Ot","xt","_interval","_activeElement","_isSliding","touchTimeout","_swipeHelper","_indicatorsElement","_addEventListeners","cycle","nextWhenVisible","_clearInterval","_updateInterval","_maybeEnableCycle","_getItems","_getItemIndex","_getActive","defaultInterval","_keydown","_addTouchEventListeners","_directionToOrder","_setActiveIndicatorElement","_orderToDirection","_isAnimated","kt","Lt","St","Dt","$t","It","Nt","Pt","jt","Mt","Ft","Ht","Wt","Bt","_isTransitioning","_triggerArray","_initializeChildren","_addAriaAndCollapsedClass","_isShown","_getFirstLevelChildren","_getDimension","zt","Rt","qt","Vt","Kt","Qt","Xt","Yt","Ut","Gt","Jt","Zt","te","ee","ie","ne","se","oe","re","ae","le","ce","he","de","ue","fe","pe","ge","phase","popper","strategy","arrow","reference","requires","be","ve","ye","we","Ae","userAgentData","brands","brand","Ee","Te","visualViewport","Ce","Oe","isSameNode","xe","ke","Le","Se","De","$e","willChange","Ie","Ne","Pe","je","Me","modifiersData","popperOffsets","placement","centerOffset","requiresIfExists","Fe","He","We","popperRect","variation","gpuAcceleration","adaptive","roundOffsets","isFixed","Be","ze","Re","scrollParents","qe","Ve","Ke","Qe","Xe","Ye","Ue","Ge","Je","Ze","ti","ei","rootBoundary","elementContext","altBoundary","contextElement","ni","flipVariations","allowedAutoPlacements","si","_skip","mainAxis","altAxis","fallbackPlacements","oi","ri","ai","preventOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","li","tether","tetherOffset","di","ui","fi","modifiers","pi","mi","defaultModifiers","orderedModifiers","forceUpdate","onFirstUpdate","gi","bi","vi","afterMain","afterRead","afterWrite","basePlacements","beforeMain","beforeRead","beforeWrite","clippingParents","computeStyles","createPopper","createPopperBase","createPopperLite","detectOverflow","eventListeners","modifierPhases","placements","popperGenerator","variationPlacements","viewport","yi","wi","Ai","Ei","Ti","Ci","Oi","xi","ki","Li","Si","Di","$i","Ii","Ni","Pi","ji","Mi","Fi","Hi","Wi","Bi","zi","autoClose","popperConfig","Ri","qi","_popper","_parent","_menu","_inNavbar","_detectNavbar","_createPopper","_completeHide","_getPopperConfig","_getPlacement","_getOffset","_selectMenuItem","clickEvent","dataApiKeydownHandler","clearMenus","Vi","Ki","Qi","Xi","clickCallback","isAnimated","isVisible","rootElement","Yi","Ui","_isAppended","_append","_getElement","_emulateAnimation","Gi","Ji","Zi","tn","en","trapElement","nn","sn","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","rn","an","ln","cn","_disableOverFlow","_setElementAttributes","_resetElementAttributes","isOverflowing","_saveInitialAttribute","_applyManipulationCallback","removeProperty","hn","dn","un","pn","mn","gn","bn","vn","yn","wn","An","En","Tn","backdrop","Cn","On","_dialog","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","_scrollBar","_adjustDialog","_showElement","_hideModal","handleUpdate","_triggerBackdropTransition","_resetAdjustments","xn","kn","Ln","Sn","Dn","$n","In","Nn","Pn","jn","Mn","Fn","Hn","Wn","Bn","zn","Rn","qn","Vn","br","dl","em","h1","h2","h3","h4","h5","h6","ol","small","sup","strong","ul","Kn","Qn","Xn","Yn","allowList","extraClass","sanitize","sanitizeFn","template","Un","Gn","Jn","getContent","_resolvePossibleFunction","changeContent","_checkContent","toHtml","_maybeSanitize","_setContent","_putElementInTemplate","Zn","es","rs","AUTO","TOP","RIGHT","BOTTOM","LEFT","customClass","ls","cs","_isEnabled","_timeout","_isHovered","_activeTrigger","_templateFactory","_newContent","tip","_setListeners","_fixTitle","toggleEnabled","_leave","_enter","_hideModalHandler","_disposePopper","_isWithContent","_getTipElement","_isWithActiveTrigger","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","_setTimeout","_ref16","hs","us","_getContent","fs","ps","gs","bs","vs","ys","rootMargin","As","Es","_targetLinks","_observableSections","_rootElement","_activeTarget","_observer","_previousScrollData","visibleEntryTop","parentScrollTop","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","_getNewObserver","IntersectionObserver","_observerCallback","_process","isIntersecting","_clearActiveClass","_activateParents","Ts","Cs","Os","xs","ks","Ls","Ss","Ds","$s","Is","Ns","Ps","js","Ms","Fs","Hs","Ws","Bs","zs","Rs","qs","Vs","Ks","_setInitialAttributes","_getChildren","_elemIsActive","_getActiveElem","_deactivate","_activate","_toggleDropDown","preventScroll","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","_getOuterElement","_setInitialAttributesOnTargetPanel","Qs","Xs","Ys","Us","Gs","Js","Zs","eo","io","no","so","oo","autohide","ro","ao","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","Alert","Button","Carousel","Collapse","Dropdown","Modal","Offcanvas","Popover","ScrollSpy","Tab","Toast","onlabel","onstyle","offlabel","offstyle","switch","switchBtn","bold","underline","strikethrough","subscript","superscript","sizeunit","resizeFull","resizeHalf","resizeQuarter","resizeNone","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","video","videoLink","providers","unlink","edit","textToDisplay","openInNewWindow","useProtocol","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","blockquote","lists","unordered","ordered","help","fullscreen","codeview","paragraph","outdent","indent","recent","more","foreground","transparent","setTransparent","resetToDefault","cpSelect","shortcut","shortcuts","textFormatting","paragraphFormatting","documentStyle","extraKeys","insertParagraph","undo","redo","tab","untab","removeFormat","justifyLeft","justifyCenter","justifyRight","justifyFull","insertUnorderedList","insertOrderedList","formatPara","formatH1","formatH2","formatH3","formatH4","formatH5","formatH6","insertHorizontalRule","specialChar","noSelection","MaxTouchPoints","isMac","appVersion","isMSIE","isEdge","isFF","isPhantom","isWebkit","browserVersion","isSupportTouch","isFontInstalled","isW3CRangeSupport","inputEventName","genericFontFamilies","validFontName","eq2","peq2","ok","and","resetUniqueId","uniqueId","rect2bnd","invertObject","namespaceToCamel","isValidUrl","tail","clusterBy","compact","isSkipPaddingBlankHTML","isNotSplitEdgePoint","isDiscardEmptySplits","removeNode","NBSP_CHAR","ZERO_WIDTH_NBSP_CHAR","blank","emptyPara","makePredByNodeName","isEditable","isControlSizing","isText","isVoid","isPara","isPurePara","isHeading","isInline","isBlock","isBodyInline","isBody","isParaInline","isPre","isList","isTable","isData","isCell","isBlockquote","isBodyContainer","isAnchor","isDiv","isLi","isBR","isSpan","isB","isU","isS","isI","isTextarea","deepestChildIsEmpty","isEmptyAnchor","isClosestSibling","withClosestSiblings","nodeLength","isLeftEdgePoint","isRightEdgePoint","isEdgePoint","isLeftEdgeOf","isRightEdgeOf","isLeftEdgePointOf","isRightEdgePointOf","prevPoint","nextPoint","nextPointWithEmptyNode","isSamePoint","isVisiblePoint","prevPointUntil","nextPointUntil","isCharPoint","isSpacePoint","walkPoint","ancestor","singleChildAncestor","listAncestor","lastAncestor","listNext","listPrev","listDescendant","commonAncestor","appendChildNodes","hasChildren","makeOffsetPath","fromOffsetPath","splitTree","splitPoint","rightNode","createText","removeWhile","posFromPlaceholder","isCustomStyleTag","$note","memos","layoutInfo","ui_template","createLayout","_initialize","removeLayout","editor","memo","initializeModule","removeModule","removeMemo","triggerEvent","codable","shouldInitialize","createInvokeHandler","createTextRange","moveToElementText","compareEndPoints","setEndPoint","cont","collapseToStart","moveStart","langInfo","icons","sc","ec","isOnEditable","makeIsOn","isOnList","isOnAnchor","isOnCell","isOnData","nativeRange","getEndPoint","isCollapsed","getStartPoint","includeAncestor","fullyContains","getPoints","wrapBodyInlineWithPara","createFromSelection","createFromBodyElement","createFromNode","endContainer","isTextNode","createFromNodeBefore","createFromNodeAfter","createFromBookmark","createFromParaBookmark","BACKSPACE","TAB","ESCAPE","DELETE","UP","DOWN","NUM0","NUM1","NUM2","NUM3","NUM4","NUM5","NUM6","NUM7","NUM8","SLASH","LEFTBRACKET","BACKSLASH","RIGHTBRACKET","HOME","END","PAGEUP","PAGEDOWN","isEdit","isMove","isNavigation","nameFromCode","stackOffset","$editable","bookmark","recordUndo","applySnapshot","makeSnapshot","historyLimit","jQueryCSS","expandClosestSibling","onlyPartialContains","fromNode","queryCommandState","queryCommandValue","ancestors","toggleList","findList","wrapList","appendToPrevious","releaseList","paraBookmark","findNextSiblings","blockquoteBreakingLevel","colPos","rowPos","baseRow","baseCell","isRowSpan","isColSpan","virtualTable","rowIndex","cellIndex","colSpan","rowSpan","Column","resultAction","SubtractSpanCount","Row","AddCell","RemoveCell","SumSpanCount","Ignore","getActionList","requestAction","Add","Delete","cells","recoverAttributes","specified","tableClassName","note","$editor","lastRange","typing","beforeCommand","execCommand","afterCommand","wrapCommand","fontStyling","fontSizeUnit","formatBlock","isLimited","getLastRange","setLastRange","insertText","pasteHTML","onApplyCustomStyle","onFormatBlock","stylePara","createLink","isNewWindow","checkProtocol","onCreateLink","defaultProtocol","styleNodes","createRangeFromList","foreColor","backColor","insertTable","createTable","removeMedia","restoreTarget","floatMe","hasKeyShortCut","handleKeyMap","preventDefaultEditableShortCuts","recordEveryKeystroke","spellCheck","disableGrammar","airMode","overrideContextMenu","keyMap","tabDisable","maxTextLength","commit","styleWithCSS","normalizeContent","tabSize","insertTab","maximumImageFileSize","FileReader","readAsDataURL","insertImage","insertImagesAsDataURL","addRow","addCol","deleteRow","deleteCol","deleteTable","pasteByEvent","$eventListener","documentEventHandlers","$dropzone","disableDragAndDrop","onDrop","attachDragAndDropEvent","onDragenter","onDragleave","$codable","CodeMirrorConstructor","CodeMirror","isActivated","getDoc","codeviewFilterRegex","codeviewIframeWhitelistSrc","codeviewIframeWhitelistSrcBase","fromTextArea","tern","TernServer","ternServer","updateArgHints","getValue","toTextArea","purify","$statusbar","statusbar","disableResizeEditor","minheight","$toolbar","$window","$scrollbar","scrollbarClassName","resizeTo","setsize","isFullscreen","$editingArea","editingArea","$handle","disableResizeImage","handleKeyup","handleKeydown","lastWordRange","showDomainOnlyForAutolink","linkTargetBlank","getWordRange","PERIOD","COMMA","SEMICOLON","previousKeydownCode","lastWord","inheritPlaceholder","$placeholder","invertedKeyMap","addToolbarButtons","addImagePopoverButtons","addLinkPopoverButtons","addTablePopoverButtons","fontInstalledMap","fontNamesIgnoreCheck","buttonGroup","colorButton","dropdownButtonContents","palette","colorsName","magic","styleTags","representShortcut","createInvokeHandlerAndUpdateState","eraser","addDefaultFonts","isFontDeservedToAdd","fontNames","dropdownCheck","checkClassName","menuCheck","fontSizes","fontSizeUnits","colorPalette","unorderedlist","orderedlist","alignLeft","alignCenter","alignRight","alignJustify","textHeight","lineHeights","insertTableMaxSize","mouseup","tableMoveHandler","picture","minus","arrowsAlt","question","rollback","trash","rowAbove","rowBelow","colBefore","colAfter","rowRemove","colRemove","updateBtnStates","toggleBtnActive","isFollowing","followScroll","toolbarContainer","changeContainer","followingToolbar","otherStaticBar","toggleBtn","dialogsInBody","disableLinkTarget","$dialog","dialog","fade","dialogsFade","hideDialog","onDialogShown","toggleLinkBtn","bindEnterKey","onDialogHidden","showDialog","showLinkDialog","$popover","popover","acceptImageFileTypes","showImageDialog","popatmouse","showVideoDialog","createShortcutList","showHelpDialog","hidable","onContextmenu","air","hintDirection","hints","matchingWord","hideArrow","$content","selectItem","nodeFromItem","hintSelect","moveUp","moveDown","searchKeyword","createItemTemplates","hintMode","getWordsRange","getWordsMatchRange","createGroup","dropzone","hintPopover","autoLink","autoSync","autoReplace","linkDialog","linkPopover","imageDialog","imagePopover","tablePopover","videoDialog","helpDialog","airPopover","toolbarPosition","codeviewKeepButton","tabDisabled","textareaAutoSync","onBeforeCommand","onBlur","onChangeCodeview","onEnter","onFocus","onImageUploadError","onInit","onKeyup","onMousedown","onMouseup","pc","ESC","mac","caret","pencil","$node","$tooltip","$button","setEvent","$backdrop","itemClick","mousemove","currentClick","imageLimitation","airEditor","airEditable","dropdownButton","dropdownCheckButton","paragraphDropdownButton","tableDropdownButton","colorDropdownButton","getPopoverContent","getDialogBody","interface","cocoon_element_counter","create_new_id","newcontent_braced","newcontent_underscord","cocoon","assoc","assocs","insertionMethod","insertionNode","insertionTraversal","regexp_braced","regexp_underscord","new_id","new_content","new_contents","insertionNodeElem","getInsertionNodeElem","contentNode","before_insert","wrapper_class","node_to_delete","trigger_node","before_remove","__assign","__spreadArrays","il","jl","HOOKS","_disable","_enable","allowInput","allowInvalidPreload","altFormat","altInput","altInputClass","ariaDateFormat","autoFillDefaultTime","clickOpens","conjunction","defaultHour","defaultMinute","defaultSeconds","disableMobile","enableSeconds","errorHandler","getWeek","givenDate","setHours","setDate","week1","hourIncrement","ignoredFocusElements","inline","monthSelectorType","nextArrow","noCalendar","onClose","onDayCreate","onDestroy","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition","positionElement","prevArrow","shorthandCurrentMonth","showMonths","time_24hr","weekNumbers","english","longhand","rangeSeparator","weekAbbreviation","scrollTitle","toggleTitle","amPM","yearAriaLabel","monthAriaLabel","hourAriaLabel","minuteAriaLabel","immediate","arrayify","clearNode","findParent","createNumberInput","inputClassName","numInput","arrowUp","arrowDown","getEventTarget","doNothing","monthToStr","monthNumber","revFormat","dateObj","shortMonth","setSeconds","unixSeconds","weekNum","weekNumber","ISODate","setMinutes","unixMillSeconds","tokenRegex","createDateFormatter","_b","_c","l10n","isMobile","frmt","overrideLocale","formatDate","createDateParser","givenFormat","timeless","customLocale","parsedDate","dateOrig","datestr","parseDate","ops","matchIndex","regexStr","token_1","isBackSlash","escaped","compareDates","date1","date2","ts1","ts2","DAY","_loop_1","args_1","DEBOUNCED_CHANGE_MS","FlatpickrInstance","instanceConfig","setupHelperFunctions","yr","currentMonth","currentYear","isOpen","parseConfig","setupLocale","setupInputs","setupDates","setHoursFromDate","latestSelectedDateObj","updateValue","setCalendarWidth","positionCalendar","bindToInstance","calendarContainer","daysContainer","daysWidth","weekWrapper","updateTime","defaultDate","getDefaultHours","timeWrapper","prevValue","_input","setHoursFromInputs","_debouncedChange","ampm2military","military2ampm","hourElement","minuteElement","secondElement","limitMinHours","minDateHasTime","maxDateHasTime","minHr","minMinutes","maxHr","maxMinutes","onYearInput","eventTarget","changeYear","ev","_handlers","triggerChange","setupMobile","debouncedResize","documentClick","monthNav","onMonthNavClick","selectDate","timeContainer","selText","timeIncrement","jumpToDate","jumpDate","jumpTo","oldYear","oldMonth","buildMonthSwitch","incrementNumInput","inputElem","buildMonthNav","buildWeeks","rContainer","buildWeekdays","buildDays","buildTime","customAppend","createDay","dayNumber","dateIsEnabled","dayElement","todayDateElem","isDateSelected","selectedDateElem","isDateInRange","focusOnDayElem","getFirstAvailableDay","startMonth","endMonth","endIndex","getNextAvailableDay","givenMonth","loopDelta","numMonthDays","changeMonth","focusOnDay","dayFocused","isInView","startElem","buildMonthDays","firstOfMonth","prevMonthDays","isMultiMonth","prevMonthDayClass","nextMonthDayClass","dayIndex","dayNum","dayContainer","shouldBuildMonth","monthsDropdownContainer","buildMonth","monthElement","monthNavFragment","selectedMonth","yearInput","yearElement","buildMonths","prevMonthNav","yearElements","monthElements","nextMonthNav","__hidePrevMonthArrow","__hideNextMonthArrow","currentYearElement","updateNavigationCurrentMonth","hourInput","minuteInput","secondInput","weekdayContainer","updateWeekdays","isOffset","_hidePrevMonthArrow","_hideNextMonthArrow","toInitial","mobileInput","_initialDate","isCalendarElem","eventTarget_1","isCalendarElement","isInput","lostFocus","isIgnored","newYear","newYearNum","isNewYear","dateToCheck","allowKeydown","allowInlineKeydown","isTimeObj","focusAndClose","delta_1","pluginElements","hoverDate","initialDate","rangeStartDate","rangeEndDate","containsDisabled","maxRange","dayElem","outOfRange","_positionElement","wasOpen","minMaxDateSetter","inverseDateObj","boolOpts","userConfig","parseDateRules","timeMode","defaultDateFormat","defaultAltFormat","_minDate","_maxDate","minMaxTimeSetter","_minTime","_maxTime","pluginConf","getInputElem","l10ns","customPositionElement","calendarHeight","acc","calendarWidth","configPos","configPosVertical","configPosHorizontal","inputBounds","distanceFromBottom","showOnTop","isCenter","isRight","rightMost","centerMost","getDocumentStyleSheet","bodyWidth","centerLeft","centerBefore","centerAfter","centerIndex","cssRules","centerStyle","insertRule","editableSheet","styleSheets","sheet","createStyleSheet","isSelectable","selectedDate","shouldChangeMonth","loadedPlugins","_bind","_setHoursFromDate","_positionCalendar","_createElement","CALLBACKS","setSelectedDate","inputDate","rule","preloadedDate","mobileFormatStr","getDateStr","dObj","isPrevMonth","isNextMonth","isKeyDown","isHourElem","isMinuteElem","_flatpickr","nodeList","HTMLCollection","NodeList","localize","setDefaults","fp_incr","S2","amd","requirejs","undef","makeMap","waiting","defining","aps","jsSuffixRegExp","hasProp","baseName","nameParts","nameSegment","mapValue","foundMap","foundI","foundStarMap","starI","baseParts","starMap","nodeIdCompat","makeRequire","relName","forceSync","makeNormalize","makeLoad","depName","callDep","splitPrefix","makeRelParts","makeConfig","relParts","relResourceName","pr","uri","deps","cjsModule","usingExports","callbackType","_defined","Utils","getMethods","theClass","Extend","ChildClass","SuperClass","__hasProp","BaseConstructor","Decorate","DecoratorClass","decoratedMethods","superMethods","DecoratedClass","argCount","calledConstructor","ctr","superMethod","calledMethod","originalMethod","decoratedMethod","Observable","generateChars","chars","_convertData","originalKey","dataLevel","hasScroll","escapeMarkup","replaceMap","__cache","GetUniqueElementId","select2Id","StoreData","GetData","RemoveData","copyNonInternalCssClasses","destinationClasses","clazz","sourceClasses","Results","$element","dataAdapter","$results","displayMessage","$message","hideMessages","$options","$option","$dropdown","highlightFirstItem","ensureHighlightVisible","setClasses","selectedIds","loadingMore","$loading","_resultId","role","$children","$child","$childrenContainer","$highlighted","getHighlightedResults","$next","currentOffset","nextTop","nextOffset","nextBottom","mousewheel","isAtTop","isAtBottom","offsetDelta","SHIFT","CTRL","ALT","PAGE_UP","PAGE_DOWN","KEYS","BaseSelection","$selection","_tabindex","resultsId","_handleBlur","_attachCloseHandler","_detachCloseHandler","$select","SingleSelection","$rendered","selectionContainer","formatted","MultipleSelection","$selections","selectionIdPrefix","selectionId","removeItem","$remove","Placeholder","decorated","normalizePlaceholder","createPlaceholder","placeholderTitle","singlePlaceholder","AllowClear","_handleClear","_handleKeyboardClear","$clear","previousVal","unselectData","prevented","removeAll","Search","searchLabel","$search","$searchContainer","_transferTabIndex","resizeSearch","_keyUpPrevented","$previousChoice","searchRemoveChoice","msie","disableInputEvents","handleSearch","searchHadFocus","SelectionCSS","selectionCssClass","EventRelay","relayEvents","preventableEvents","Translation","dict","_cache","loadPath","translations","BaseAdapter","generateResultId","SelectAdapter","selectedElement","currentData","unselect","addOptions","normalizedData","_normalizeItem","ArrayAdapter","_dataToConvert","convertToOptions","$existing","existingIds","onlyItem","$existingOption","existingData","newData","$newOption","AjaxAdapter","ajaxOptions","_applyDefaults","$request","_request","_queryTimeout","Tags","tags","createTag","insertTag","checkChildren","_removeOldTags","page","Tokenizer","tokenizer","createAndSelect","tokenData","separators","termChar","MinimumInputLength","minimum","MaximumInputLength","maximumInputLength","maximum","MaximumSelectionLength","maximumSelectionLength","_checkIfMaximumSelected","showSearch","HidePlaceholder","removePlaceholder","modifiedData","InfiniteScroll","lastParams","$loadingMore","createLoadingMore","showLoadingMore","loadMoreIfNeeded","isLoadMoreVisible","loadMore","AttachBody","$dropdownParent","_showDropdown","_attachPositioningHandler","_bindContainerResultHandlers","_hideDropdown","_detachPositioningHandler","$dropdownContainer","_containerResultsHandlersBound","_positionDropdown","_resizeDropdown","scrollEvent","resizeEvent","orientationEvent","$watchers","isCurrentlyAbove","isCurrentlyBelow","enoughRoomAbove","enoughRoomBelow","$offsetParent","isConnected","countResults","MinimumResultsForSearch","SelectOnClose","_handleSelectOnClose","originalSelect2Event","$highlightedResults","CloseOnSelect","_selectTriggered","DropdownCSS","dropdownCssClass","TagsSearchHighlight","$firstOption","firstElement","errorLoading","inputTooLong","overChars","inputTooShort","maximumSelected","noResults","searching","removeAllItems","ResultsList","SelectionSearch","DIACRITICS","SelectData","ArrayData","AjaxData","DropdownSearch","EnglishTranslation","Defaults","tokenSeparators","resultsAdapter","selectOnClose","dropdownAdapter","SearchableDropdown","selectionAdapter","allowClear","_resolveLanguage","uniqueLanguages","_processTranslations","debug","stripDiacritics","amdLanguageBase","dropdownAutoWidth","scrollAfterSelect","templateResult","templateSelection","applyFromElement","optionLanguage","defaultLanguage","elementLanguage","parentLanguage","languages","resolvedLanguages","baseLanguage","languageData","convertedData","Options","fromElement","excludedData","upperCaseLetter","dataName","dataValue","Select2","DataAdapter","_placeContainer","SelectionAdapter","DropdownAdapter","ResultsAdapter","_bindAdapters","_registerDomEvents","_registerDataEvents","_registerSelectionEvents","_registerDropdownEvents","_registerResultsEvents","_registerEvents","initialData","_syncAttributes","_resolveWidth","WIDTH","styleWidth","elementWidth","_syncA","_syncS","_syncSubtree","nonRelayEvents","toggleDropdown","_isChangeMutation","removedNodes","actualTrigger","preTriggerMap","preTriggerName","preTriggerArgs","thisMethods","instanceOptions","CLASS_NAMES","MODAL","OVERLAY","SHOW_MODAL","MODAL_TITLE","MODAL_TEXT","ICON","ICON_CUSTOM","CONTENT","FOOTER","BUTTON_CONTAINER","BUTTON","CONFIRM_BUTTON","CANCEL_BUTTON","DANGER_BUTTON","BUTTON_LOADING","BUTTON_LOADER","getNode","stringToNode","throwErr","ordinalSuffixOf","overlayMarkup","iconMarkup","titleMarkup","textMarkup","footerMarkup","CONFIRM_KEY","CANCEL_KEY","defaultButtonList","getButtonListOpts","injectElIntoModal","initModalContent","initTitle","initText","dangerMode","modalMarkup","resetState","setActionValue","setActionOptionsFor","openModal","onAction","stopLoading","eval","sweetAlert","insertAt","locals","btoa","sourceRoot","refs","media","sourceMap","insertInto","singleton","styleSheet","convertToAbsoluteUrls","DEBUG","CharacterData","DocumentType","_state","_handled","_value","_deferreds","_immediateFn","_unhandledRejectionFn","race","_setImmediateFn","_setUnhandledRejectionFn","polyfill","getOpts","errorIconMarkup","warningIconMarkup","successIconMarkup","contentMarkup","buttonMarkup","warning","closeOnEsc","closeOnClickOutside","getContentOpts","DEPRECATED_OPTS","logDeprecation","onlyRename","subOption","imageUrl","showCancelButton","showConfirmButton","confirmButtonText","confirmButtonColor","cancelButtonText","closeOnConfirm","closeOnCancel","showLoaderOnConfirm","inputValue","inputPlaceholder","allowEscapeKey","allowClickOutside","registerImmediate","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","runIfPresent","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","task","detectSwipe","isMoving","swipe","chainCallbacks","_callbackChain","$instance","allow","allowfullscreen","frameborder","longdesc","marginheight","marginwidth","mozallowfullscreen","referrerpolicy","sandbox","srcdoc","webkitallowfullscreen","keyup","opened","_globalHandlerInstalled","targetAttr","resetCss","openTrigger","closeTrigger","closeSpeed","closeOnClick","closeIcon","persist","otherClose","beforeOpen","beforeContent","beforeClose","afterOpen","afterContent","afterClose","onKeyUp","contentFilters","$currentTarget","autoBind","iframe","functionAttributes","readElementConfig","$source","_onReady","featherlight","_previouslyActive","_$previouslyTabbable","_$previouslyWithTabIndex","_previousWithTabIndices","swipeleft","Hammer","Manager","Swipe","_swiper","_swipeleft","_swiperight","navigateTo","currentNavigation","createNavigation","galleryFadeOut","BarRating","wrapElement","$elem","unwrapElement","findOption","findInitialOption","initialRating","saveDataOnElement","$opt","ratingValue","ratingText","originalRatingValue","originalRatingText","readOnly","ratingMade","removeDataOnElement","buildWidget","$w","$a","showValues","showSelectedRating","nextAllorPreviousAll","setSelectFieldValue","resetSelectField","defaultSelected","resetStyle","$widget","applyStyle","$all","$fractional","isDeselectable","attachClickHandler","$elements","onSelect","attachMouseEnterHandler","attachMouseLeaveHandler","fastClicks","disableClicks","attachHandlers","hoverState","detachHandlers","setupHandlers","onClear"],"mappings":"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,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,OAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,OAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU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","file":"js/application-09edd314386b920e21ac.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 = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 269);\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nfunction classesToTokens(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return classes.trim().split(' ').filter(c => !!c.trim());\n}\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let swiper = _ref.swiper,\n targetPosition = _ref.targetPosition,\n side = _ref.side;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n return [...element.children].filter(el => el.matches(selector));\n}\nfunction showWarning(text) {\n try {\n console.warn(text);\n return;\n } catch (err) {\n // err\n }\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, elementIndex as g, classesToTokens as h, getTranslate as i, elementTransitionEnd as j, isObject as k, getSlideTransformEl as l, elementStyle as m, nextTick as n, elementNextAll as o, elementPrevAll as p, animateCSSModeScroll as q, showWarning as r, setCSSProperty as s, extend as t, deleteProps as u };","//! moment.js\n//! version : 2.29.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.moment = factory();\n})(this, function () {\n 'use strict';\n\n var hookCallback;\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n function isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n }\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n }\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n function isUndefined(input) {\n return input === void 0;\n }\n function isNumber(input) {\n return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n }\n function isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n }\n function map(arr, fn) {\n var res = [],\n i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n return a;\n }\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false\n };\n }\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n return false;\n };\n }\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid = !isNaN(m._d.getTime()) && flags.overflow < 0 && !flags.empty && !flags.invalidEra && !flags.invalidMonth && !flags.invalidWeekday && !flags.weekdayMismatch && !flags.nullInput && !flags.invalidFormat && !flags.userInvalidated && (!flags.meridiem || flags.meridiem && parsedParts);\n if (m._strict) {\n isNowValid = isNowValid && flags.charsLeftOver === 0 && flags.unusedTokens.length === 0 && flags.bigHour === undefined;\n }\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = hooks.momentProperties = [],\n updateInProgress = false;\n function copyConfig(to, from) {\n var i, prop, val;\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n function isMoment(obj) {\n return obj instanceof Moment || obj != null && obj._isAMomentObject != null;\n }\n function warn(msg) {\n if (hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n function deprecate(msg, fn) {\n var firstTime = true;\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key;\n for (i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + new Error().stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n var deprecations = {};\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n function isFunction(input) {\n return typeof Function !== 'undefined' && input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp((this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + '|' + /\\d{1,2}/.source);\n }\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) && !hasOwnProp(childConfig, prop) && isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n var keys;\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n };\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? forceSign ? '+' : '' : '-') + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n }\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n }\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n return formatFunctions[format](m);\n }\n function expandFormat(format, locale) {\n var i = 5;\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n return format;\n }\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A'\n };\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n if (format || !formatUpper) {\n return format;\n }\n this._longDateFormat[key] = formatUpper.match(formattingTokens).map(function (tok) {\n if (tok === 'MMMM' || tok === 'MM' || tok === 'DD' || tok === 'dddd') {\n return tok.slice(1);\n }\n return tok;\n }).join('');\n return this._longDateFormat[key];\n }\n var defaultInvalidDate = 'Invalid date';\n function invalidDate() {\n return this._invalidDate;\n }\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n };\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output) ? output(number, withoutSuffix, string, isFuture) : output.replace(/%d/i, number);\n }\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n var aliases = {};\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n function normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n }\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n return normalizedInput;\n }\n var priorities = {};\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({\n unit: u,\n priority: priorities[u]\n });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n function isLeapYear(year) {\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n }\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n return value;\n }\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n function get(mom, unit) {\n return mom.isValid() ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n }\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i;\n for (i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n var match1 = /\\d/,\n // 0 - 9\n match2 = /\\d\\d/,\n // 00 - 99\n match3 = /\\d{3}/,\n // 000 - 999\n match4 = /\\d{4}/,\n // 0000 - 9999\n match6 = /[+-]?\\d{6}/,\n // -999999 - 999999\n match1to2 = /\\d\\d?/,\n // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/,\n // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/,\n // 99999 - 999999\n match1to3 = /\\d{1,3}/,\n // 0 - 999\n match1to4 = /\\d{1,4}/,\n // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/,\n // -999999 - 999999\n matchUnsigned = /\\d+/,\n // 0 - inf\n matchSigned = /[+-]?\\d+/,\n // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi,\n // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi,\n // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/,\n // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n regexes = {};\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n }\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n var tokens = {};\n function addParseToken(token, callback) {\n var i,\n func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n function mod(n, x) {\n return (n % x + x) % x;\n }\n var indexOf;\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1 ? isLeapYear(year) ? 29 : 28 : 31 - modMonth % 7 % 2;\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months) ? this._months : this._months['standalone'];\n }\n return isArray(this._months) ? this._months[m.month()] : this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n }\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort) ? this._monthsShort : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] : this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n }\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ? this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n }\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ? this._monthsStrictRegex : this._monthsRegex;\n }\n }\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n return date;\n }\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var\n // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n }\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n return {\n week: resWeek,\n year: resYear\n };\n }\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n var defaultLocaleWeek = {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n return null;\n }\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays) ? this._weekdays : this._weekdays[m && m !== true && this._weekdays.isFormat.test(format) ? 'format' : 'standalone'];\n return m === true ? shiftWeekdays(weekdays, this._week.dow) : m ? weekdays[m.day()] : weekdays;\n }\n function localeWeekdaysShort(m) {\n return m === true ? shiftWeekdays(this._weekdaysShort, this._week.dow) : m ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n }\n function localeWeekdaysMin(m) {\n return m === true ? shiftWeekdays(this._weekdaysMin, this._week.dow) : m ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n }\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict ? this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n }\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n }\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n }\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n function kFormat() {\n return this.hours() || 24;\n }\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n addFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2);\n });\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n addFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2);\n });\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n }\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n week: defaultLocaleWeek,\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n meridiemParse: defaultLocaleMeridiemParse\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && commonPrefix(split, next) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (locales[name] === undefined && typeof module !== 'undefined' && module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn('Locale ' + key + ' not found. Did you forget to load it?');\n }\n }\n }\n return globalLocale._abbr;\n }\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride', 'use moment.updateLocale(localeName, config) to change ' + 'an existing locale. moment.defineLocale(localeName, ' + 'config) should only be used for creating a new locale ' + 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n if (!key) {\n return globalLocale;\n }\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n return chooseLocale(key);\n }\n function listLocales() {\n return keys(locales);\n }\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n if (a && getParsingFlags(m).overflow === -2) {\n overflow = a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : a[HOUR] < 0 || a[HOUR] > 24 || a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0) ? HOUR : a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : -1;\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n getParsingFlags(m).overflow = overflow;\n }\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/], ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/], ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/], ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false], ['YYYY-DDD', /\\d{4}-\\d{3}/], ['YYYY-MM', /\\d{4}-\\d\\d/, false], ['YYYYYYMMDD', /[+-]\\d{10}/], ['YYYYMMDD', /\\d{8}/], ['GGGG[W]WWE', /\\d{4}W\\d{3}/], ['GGGG[W]WW', /\\d{4}W\\d{2}/, false], ['YYYYDDD', /\\d{7}/], ['YYYYMM', /\\d{6}/, false], ['YYYY', /\\d{4}/, false]],\n // iso time formats and regexes\n isoTimes = [['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/], ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/], ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/], ['HH:mm', /\\d\\d:\\d\\d/], ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/], ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/], ['HHmmss', /\\d\\d\\d\\d\\d\\d/], ['HHmm', /\\d\\d\\d\\d/], ['HH', /\\d\\d/]],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat;\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n var result = [untruncateYear(yearStr), defaultLocaleMonthsShort.indexOf(monthStr), parseInt(dayStr, 10), parseInt(hourStr, 10), parseInt(minuteStr, 10)];\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n return result;\n }\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s.replace(/\\([^)]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n }\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n hooks.createFromInputFallback = deprecate('value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.', function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n });\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n if (config._d) {\n return;\n }\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = config._a[i] == null ? i === 2 ? 1 : 0 : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 && config._a[MINUTE] === 0 && config._a[SECOND] === 0 && config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n curWeek = weekOfYear(createLocal(), dow, doy);\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era;\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 && getParsingFlags(config).bigHour === true && config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n configFromArray(config);\n checkOverflow(config);\n }\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false;\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n getParsingFlags(tempConfig).score = currentScore;\n if (!bestFormatIsValid) {\n if (scoreToBeat == null || currentScore < scoreToBeat || validFormatFound) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n extend(config, bestMoment || tempConfig);\n }\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map([i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n configFromArray(config);\n }\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n return res;\n }\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n config._locale = config._locale || getLocale(config._l);\n if (input === null || format === undefined && input === '') {\n return createInvalid({\n nullInput: true\n });\n }\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n if (!isValid(config)) {\n config._d = null;\n }\n return config;\n }\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n if (isObject(input) && isObjectEmpty(input) || isArray(input) && input.length === 0) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n return createFromConfig(c);\n }\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n var prototypeMin = deprecate('moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }),\n prototypeMax = deprecate('moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n });\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n return pickBy('isBefore', args);\n }\n function max() {\n var args = [].slice.call(arguments, 0);\n return pickBy('isAfter', args);\n }\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i;\n for (key in m) {\n if (hasOwnProp(m, key) && !(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n return false;\n }\n }\n for (i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n return true;\n }\n function isValid$1() {\n return this._isValid;\n }\n function createInvalid$1() {\n return createDuration(NaN);\n }\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds + seconds * 1e3 +\n // 1000\n minutes * 6e4 +\n // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n this._data = {};\n this._locale = getLocale();\n this._bubble();\n }\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (dontConvert && array1[i] !== array2[i] || !dontConvert && toInt(array1[i]) !== toInt(array2[i])) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~offset % 60, 2);\n });\n }\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n if (matches === null) {\n return null;\n }\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n this.utcOffset(input, keepLocalTime);\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n return (this.utcOffset() - input) % 60 === 0;\n }\n function isDaylightSavingTime() {\n return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset();\n }\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n var c = {},\n other;\n copyConfig(c, this);\n c = prepareConfig(c);\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n return this._isDSTShifted;\n }\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if (match = aspNetRegex.exec(input)) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n };\n } else if (match = isoRegex.exec(input)) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign)\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n ret = new Duration(duration);\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n return ret;\n }\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n function positiveMomentsDifference(base, other) {\n var res = {};\n res.months = other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n return res;\n }\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return {\n milliseconds: 0,\n months: 0\n };\n }\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val;\n val = period;\n period = tmp;\n }\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n if (!mom.isValid()) {\n // No op\n return;\n }\n updateOffset = updateOffset == null ? true : updateOffset;\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return isMoment(input) || isDate(input) || isString(input) || isNumber(input) || isNumberOrStringArray(input) || isMomentInputObject(input) || input === null || input === undefined;\n }\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = ['years', 'year', 'y', 'months', 'month', 'M', 'days', 'day', 'd', 'dates', 'date', 'D', 'hours', 'hour', 'h', 'minutes', 'minute', 'm', 'seconds', 'second', 's', 'milliseconds', 'millisecond', 'ms'],\n i,\n property;\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n return objectTest && propertyTest;\n }\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest = input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = ['sameDay', 'nextDay', 'lastDay', 'nextWeek', 'lastWeek', 'sameElse'],\n i,\n property;\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n return objectTest && propertyTest;\n }\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' : diff < -1 ? 'lastWeek' : diff < 0 ? 'lastDay' : diff < 1 ? 'sameDay' : diff < 2 ? 'nextDay' : diff < 7 ? 'nextWeek' : 'sameElse';\n }\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n }\n function clone() {\n return new Moment(this);\n }\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) && (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));\n }\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n }\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n if (!this.isValid()) {\n return NaN;\n }\n that = cloneWithOffset(input, this);\n if (!that.isValid()) {\n return NaN;\n }\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n units = normalizeUnits(units);\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break;\n // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break;\n // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break;\n // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break;\n // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break;\n // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n return asFloat ? output : absFloor(output);\n }\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n return this.format(prefix + year + datetime + suffix);\n }\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n function from(time, withoutSuffix) {\n if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) {\n return createDuration({\n to: this,\n from: time\n }).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n function to(time, withoutSuffix) {\n if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) {\n return createDuration({\n from: this,\n to: time\n }).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n var lang = deprecate('moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n });\n function localeData() {\n return this._locale;\n }\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return (dividend % divisor + divisor) % divisor;\n }\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3, 1);\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday());\n break;\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1));\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR);\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1;\n break;\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n function toDate() {\n return new Date(this.valueOf());\n }\n function toArray() {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n }\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n }\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n function isValid$2() {\n return isValid(this);\n }\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n }\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n });\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n return '';\n }\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n return '';\n }\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n return '';\n }\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n if (eras[i].since <= val && val <= eras[i].until || eras[i].until <= val && val <= eras[i].since) {\n return (this.year() - hooks(eras[i].since).year()) * dir + eras[i].offset;\n }\n }\n return this.year();\n }\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp('^(' + narrowPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n });\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(this, input, this.week(), this.weekday(), this.localeData()._week.dow, this.localeData()._week.doy);\n }\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(this, input, this.isoWeek(), this.isoWeekday(), 1, 4);\n }\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict ? locale._dayOfMonthOrdinalParse || locale._ordinalParse : locale._dayOfMonthOrdinalParseLenient;\n });\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n var proto = Moment.prototype;\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n function preParsePostFormat(string) {\n return string;\n }\n var proto$1 = Locale.prototype;\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n format = format || '';\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n format = format || '';\n }\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n getSetGlobalLocale('en', {\n eras: [{\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD'\n }, {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC'\n }],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output = toInt(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n }\n });\n\n // Side effect imports\n\n hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n var mathAbs = Math.abs;\n function abs() {\n var data = this._data;\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n return this;\n }\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!(milliseconds >= 0 && days >= 0 && months >= 0 || milliseconds <= 0 && days <= 0 && months <= 0)) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n data.days = days;\n data.months = months;\n data.years = years;\n return this;\n }\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n }\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n }\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n units = normalizeUnits(units);\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return this._milliseconds + this._days * 864e5 + this._months % 12 * 2592e6 + toInt(this._months / 12) * 31536e6;\n }\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n function clone$1() {\n return createDuration(this);\n }\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n function weeks() {\n return absFloor(this.days() / 7);\n }\n var round = Math.round,\n thresholds = {\n ss: 44,\n // a few seconds to seconds\n s: 45,\n // seconds to minute\n m: 45,\n // minutes to hour\n h: 22,\n // hours to day\n d: 26,\n // days to month/week\n w: null,\n // weeks to month\n M: 11 // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a = seconds <= thresholds.ss && ['s', seconds] || seconds < thresholds.s && ['ss', seconds] || minutes <= 1 && ['m'] || minutes < thresholds.m && ['mm', minutes] || hours <= 1 && ['h'] || hours < thresholds.h && ['hh', hours] || days <= 1 && ['d'] || days < thresholds.d && ['dd', days];\n if (thresholds.w != null) {\n a = a || weeks <= 1 && ['w'] || weeks < thresholds.w && ['ww', weeks];\n }\n a = a || months <= 1 && ['M'] || months < thresholds.M && ['MM', months] || years <= 1 && ['y'] || ['yy', years];\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n return locale.postformat(output);\n }\n var abs$1 = Math.abs;\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n return totalSign + 'P' + (years ? ymSign + years + 'Y' : '') + (months ? ymSign + months + 'M' : '') + (days ? daysSign + days + 'D' : '') + (hours || minutes || seconds ? 'T' : '') + (hours ? hmsSign + hours + 'H' : '') + (minutes ? hmsSign + minutes + 'M' : '') + (seconds ? hmsSign + s + 'S' : '');\n }\n var proto$2 = Duration.prototype;\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.1';\n setHookCallback(createLocal);\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm',\n // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss',\n // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS',\n // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD',\n // <input type=\"date\" />\n TIME: 'HH:mm',\n // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss',\n // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS',\n // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW',\n // <input type=\"week\" />\n MONTH: 'YYYY-MM' // <input type=\"month\" />\n };\n\n return hooks;\n});","/*\n*\tReturns a list of params used for sorting/filtering\n*/\nexport function url_add_param(url, param, value){\n\n\tvar hash = {};\n\tvar parser = document.createElement('a');\n\n\tparser.href = url;\n\n\tvar parameters = parser.search.split(/\\?|&/);\n\n\tfor(var i=0; i < parameters.length; i++) {\n\t\tif(!parameters[i])\n\t\t\tcontinue;\n\n\t\t\tvar ary = parameters[i].split('=');\n\t\t\thash[ary[0]] = ary[1];\n\t}\n\n\thash[param] = value;\n\n\tvar list = [];\n\tObject.keys(hash).forEach(function (key) {\n\t\tlist.push(key + '=' + hash[key]);\n\t});\n\n\tparser.search = '?' + list.join('&');\n\treturn parser.href;\n}\n\n/*\n*\tRemove a specific param/value pair from a url\n*/\nexport function url_remove_param(url, parameter) {\n //prefer to use l.search if you have a location/link object\n var urlparts= url.split('?');\n if (urlparts.length>=2) {\n\n var prefix= encodeURIComponent(parameter)+'=';\n var pars= urlparts[1].split(/[&;]/g);\n\n //reverse iteration as may be destructive\n for (var i= pars.length; i-- > 0;) {\n //idiom for string.startsWith\n if (pars[i].lastIndexOf(prefix, 0) !== -1) {\n pars.splice(i, 1);\n }\n }\n\n url= urlparts[0] + (pars.length > 0 ? '?' + pars.join('&') : \"\");\n return url;\n } else {\n return url;\n }\n}\n\nexport function url_get_param(param) {\n var sPageURL = decodeURIComponent(window.location.search.substring(1)),\n sURLVariables = sPageURL.split('&'),\n sParameterName,\n i;\n\n for (i = 0; i < sURLVariables.length; i++) {\n sParameterName = sURLVariables[i].split('=');\n\n if (sParameterName[0] === param) {\n return sParameterName[1] === undefined ? true : sParameterName[1];\n }\n }\n};\n\nexport function get_base_url() {\n var re = new RegExp(/^.*\\//);\n return re.exec(window.location.href);\n}\n\n/*\n*\tConverts string of text into slug\n*/\nexport function text_to_slug(Text){\n\n return Text\n .toLowerCase()\n .replace(/\\.[^/.]+$/, \"\")\n .replace(/ /g,'-')\n .replace(/[^\\w-]+/g,'')\n ;\n}\n\n/*\n*\tTakes this_string into This String\n*/\nexport function humanize(Text) {\n return Text\n .replace(/^[\\s_]+|[\\s_]+$/g, '')\n .replace(/[_\\s]+/g, ' ')\n .replace(/^[a-z]/, function(m) { return m.toUpperCase(); });\n}\n\n/*\n*\tDollars to cents\n*/\nexport function dollars_to_cents(amount){\n\treturn amount * 100.00\n}\n\n/*\n* Displays loading message on the page\n*/\nexport function showLoadingMessage(message) {\n $('body').addClass('loading').prepend('<div class=\"loading-messages\">' + message + '...</div>');\n return;\n}\n\n/*\n* Removes loading message from the page\n*/\nexport function hideLoadingMessage() {\n $('.loading-messages').remove();\n $('body').removeClass('loading');\n return;\n}\n\n/*\n* Extracts on_sale and sale_campaign params from url\n*/\nexport function get_sale_campaign_params() {\n return { 'on_sale': url_get_param('on_sale'), 'sale_campaign': url_get_param('sale_campaign') }\n}\n\n/*\n* Displays flash notice similar to 'app/views/partials/notices'\n*/\nexport function displayFlashMessage(type, msg) {\n // expects a type string argument that aligns with bootstrap bg colors\n var $notice = $(\n `<div class=\"fixed-bottom p-4\" style=\"z-index: 1999;\">\n <div class=\"toast bg-${type} show\" role=\"alert\">\n <div class=\"toast-body\">\n ${msg}\n </div>\n </div>\n </div>`\n );\n\n $('body').prepend($notice);\n\n setTimeout(function(){\n $notice.remove();\n }, 8000);\n\n return;\n}\n","/*!\n * jQuery JavaScript Library v3.7.1\n * https://jquery.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2023-08-28T13:37Z\n */\n(function (global, factory) {\n \"use strict\";\n\n if (typeof module === \"object\" && typeof module.exports === \"object\") {\n // For CommonJS and CommonJS-like environments where a proper `window`\n // is present, execute the factory and get jQuery.\n // For environments that do not have a `window` with a `document`\n // (such as Node.js), expose a factory as module.exports.\n // This accentuates the need for the creation of a real `window`.\n // e.g. var jQuery = require(\"jquery\")(window);\n // See ticket trac-14549 for more info.\n module.exports = global.document ? factory(global, true) : function (w) {\n if (!w.document) {\n throw new Error(\"jQuery requires a window with a document\");\n }\n return factory(w);\n };\n } else {\n factory(global);\n }\n\n // Pass this if window is not defined yet\n})(typeof window !== \"undefined\" ? window : this, function (window, noGlobal) {\n // Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n // throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n // arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n // enough that all such attempts are guarded in a try block.\n \"use strict\";\n\n var arr = [];\n var getProto = Object.getPrototypeOf;\n var slice = arr.slice;\n var flat = arr.flat ? function (array) {\n return arr.flat.call(array);\n } : function (array) {\n return arr.concat.apply([], array);\n };\n var push = arr.push;\n var indexOf = arr.indexOf;\n var class2type = {};\n var toString = class2type.toString;\n var hasOwn = class2type.hasOwnProperty;\n var fnToString = hasOwn.toString;\n var ObjectFunctionString = fnToString.call(Object);\n var support = {};\n var isFunction = function isFunction(obj) {\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML <object> elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n // Plus for old WebKit, typeof returns \"function\" for HTML collections\n // (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\" && typeof obj.item !== \"function\";\n };\n var isWindow = function isWindow(obj) {\n return obj != null && obj === obj.window;\n };\n var document = window.document;\n var preservedScriptAttributes = {\n type: true,\n src: true,\n nonce: true,\n noModule: true\n };\n function DOMEval(code, node, doc) {\n doc = doc || document;\n var i,\n val,\n script = doc.createElement(\"script\");\n script.text = code;\n if (node) {\n for (i in preservedScriptAttributes) {\n // Support: Firefox 64+, Edge 18+\n // Some browsers don't support the \"nonce\" property on scripts.\n // On the other hand, just using `getAttribute` is not enough as\n // the `nonce` attribute is reset to an empty string whenever it\n // becomes browsing-context connected.\n // See https://github.com/whatwg/html/issues/2369\n // See https://html.spec.whatwg.org/#nonce-attributes\n // The `node.getAttribute` check was added for the sake of\n // `jQuery.globalEval` so that it can fake a nonce-containing node\n // via an object.\n val = node[i] || node.getAttribute && node.getAttribute(i);\n if (val) {\n script.setAttribute(i, val);\n }\n }\n }\n doc.head.appendChild(script).parentNode.removeChild(script);\n }\n function toType(obj) {\n if (obj == null) {\n return obj + \"\";\n }\n\n // Support: Android <=2.3 only (functionish RegExp)\n return typeof obj === \"object\" || typeof obj === \"function\" ? class2type[toString.call(obj)] || \"object\" : typeof obj;\n }\n /* global Symbol */\n // Defining this global in .eslintrc.json would create a danger of using the global\n // unguarded in another place, it seems safer to define global only for this module\n\n var version = \"3.7.1\",\n rhtmlSuffix = /HTML$/i,\n // Define a local copy of jQuery\n jQuery = function (selector, context) {\n // The jQuery object is actually just the init constructor 'enhanced'\n // Need init if jQuery is called (just allow error to be thrown if not included)\n return new jQuery.fn.init(selector, context);\n };\n jQuery.fn = jQuery.prototype = {\n // The current version of jQuery being used\n jquery: version,\n constructor: jQuery,\n // The default length of a jQuery object is 0\n length: 0,\n toArray: function () {\n return slice.call(this);\n },\n // Get the Nth element in the matched element set OR\n // Get the whole matched element set as a clean array\n get: function (num) {\n // Return all the elements in a clean array\n if (num == null) {\n return slice.call(this);\n }\n\n // Return just the one element from the set\n return num < 0 ? this[num + this.length] : this[num];\n },\n // Take an array of elements and push it onto the stack\n // (returning the new matched element set)\n pushStack: function (elems) {\n // Build a new jQuery matched element set\n var ret = jQuery.merge(this.constructor(), elems);\n\n // Add the old object onto the stack (as a reference)\n ret.prevObject = this;\n\n // Return the newly-formed element set\n return ret;\n },\n // Execute a callback for every element in the matched set.\n each: function (callback) {\n return jQuery.each(this, callback);\n },\n map: function (callback) {\n return this.pushStack(jQuery.map(this, function (elem, i) {\n return callback.call(elem, i, elem);\n }));\n },\n slice: function () {\n return this.pushStack(slice.apply(this, arguments));\n },\n first: function () {\n return this.eq(0);\n },\n last: function () {\n return this.eq(-1);\n },\n even: function () {\n return this.pushStack(jQuery.grep(this, function (_elem, i) {\n return (i + 1) % 2;\n }));\n },\n odd: function () {\n return this.pushStack(jQuery.grep(this, function (_elem, i) {\n return i % 2;\n }));\n },\n eq: function (i) {\n var len = this.length,\n j = +i + (i < 0 ? len : 0);\n return this.pushStack(j >= 0 && j < len ? [this[j]] : []);\n },\n end: function () {\n return this.prevObject || this.constructor();\n },\n // For internal use only.\n // Behaves like an Array's method, not like a jQuery method.\n push: push,\n sort: arr.sort,\n splice: arr.splice\n };\n jQuery.extend = jQuery.fn.extend = function () {\n var options,\n name,\n src,\n copy,\n copyIsArray,\n clone,\n target = arguments[0] || {},\n i = 1,\n length = arguments.length,\n deep = false;\n\n // Handle a deep copy situation\n if (typeof target === \"boolean\") {\n deep = target;\n\n // Skip the boolean and the target\n target = arguments[i] || {};\n i++;\n }\n\n // Handle case when target is a string or something (possible in deep copy)\n if (typeof target !== \"object\" && !isFunction(target)) {\n target = {};\n }\n\n // Extend jQuery itself if only one argument is passed\n if (i === length) {\n target = this;\n i--;\n }\n for (; i < length; i++) {\n // Only deal with non-null/undefined values\n if ((options = arguments[i]) != null) {\n // Extend the base object\n for (name in options) {\n copy = options[name];\n\n // Prevent Object.prototype pollution\n // Prevent never-ending loop\n if (name === \"__proto__\" || target === copy) {\n continue;\n }\n\n // Recurse if we're merging plain objects or arrays\n if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) {\n src = target[name];\n\n // Ensure proper type for the source value\n if (copyIsArray && !Array.isArray(src)) {\n clone = [];\n } else if (!copyIsArray && !jQuery.isPlainObject(src)) {\n clone = {};\n } else {\n clone = src;\n }\n copyIsArray = false;\n\n // Never move original objects, clone them\n target[name] = jQuery.extend(deep, clone, copy);\n\n // Don't bring in undefined values\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n }\n\n // Return the modified object\n return target;\n };\n jQuery.extend({\n // Unique for each copy of jQuery on the page\n expando: \"jQuery\" + (version + Math.random()).replace(/\\D/g, \"\"),\n // Assume jQuery is ready without the ready module\n isReady: true,\n error: function (msg) {\n throw new Error(msg);\n },\n noop: function () {},\n isPlainObject: function (obj) {\n var proto, Ctor;\n\n // Detect obvious negatives\n // Use toString instead of jQuery.type to catch host objects\n if (!obj || toString.call(obj) !== \"[object Object]\") {\n return false;\n }\n proto = getProto(obj);\n\n // Objects with no prototype (e.g., `Object.create( null )`) are plain\n if (!proto) {\n return true;\n }\n\n // Objects with prototype are plain iff they were constructed by a global Object function\n Ctor = hasOwn.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && fnToString.call(Ctor) === ObjectFunctionString;\n },\n isEmptyObject: function (obj) {\n var name;\n for (name in obj) {\n return false;\n }\n return true;\n },\n // Evaluates a script in a provided context; falls back to the global one\n // if not specified.\n globalEval: function (code, options, doc) {\n DOMEval(code, {\n nonce: options && options.nonce\n }, doc);\n },\n each: function (obj, callback) {\n var length,\n i = 0;\n if (isArrayLike(obj)) {\n length = obj.length;\n for (; i < length; i++) {\n if (callback.call(obj[i], i, obj[i]) === false) {\n break;\n }\n }\n } else {\n for (i in obj) {\n if (callback.call(obj[i], i, obj[i]) === false) {\n break;\n }\n }\n }\n return obj;\n },\n // Retrieve the text value of an array of DOM nodes\n text: function (elem) {\n var node,\n ret = \"\",\n i = 0,\n nodeType = elem.nodeType;\n if (!nodeType) {\n // If no nodeType, this is expected to be an array\n while (node = elem[i++]) {\n // Do not traverse comment nodes\n ret += jQuery.text(node);\n }\n }\n if (nodeType === 1 || nodeType === 11) {\n return elem.textContent;\n }\n if (nodeType === 9) {\n return elem.documentElement.textContent;\n }\n if (nodeType === 3 || nodeType === 4) {\n return elem.nodeValue;\n }\n\n // Do not include comment or processing instruction nodes\n\n return ret;\n },\n // results is for internal usage only\n makeArray: function (arr, results) {\n var ret = results || [];\n if (arr != null) {\n if (isArrayLike(Object(arr))) {\n jQuery.merge(ret, typeof arr === \"string\" ? [arr] : arr);\n } else {\n push.call(ret, arr);\n }\n }\n return ret;\n },\n inArray: function (elem, arr, i) {\n return arr == null ? -1 : indexOf.call(arr, elem, i);\n },\n isXMLDoc: function (elem) {\n var namespace = elem && elem.namespaceURI,\n docElem = elem && (elem.ownerDocument || elem).documentElement;\n\n // Assume HTML when documentElement doesn't yet exist, such as inside\n // document fragments.\n return !rhtmlSuffix.test(namespace || docElem && docElem.nodeName || \"HTML\");\n },\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n merge: function (first, second) {\n var len = +second.length,\n j = 0,\n i = first.length;\n for (; j < len; j++) {\n first[i++] = second[j];\n }\n first.length = i;\n return first;\n },\n grep: function (elems, callback, invert) {\n var callbackInverse,\n matches = [],\n i = 0,\n length = elems.length,\n callbackExpect = !invert;\n\n // Go through the array, only saving the items\n // that pass the validator function\n for (; i < length; i++) {\n callbackInverse = !callback(elems[i], i);\n if (callbackInverse !== callbackExpect) {\n matches.push(elems[i]);\n }\n }\n return matches;\n },\n // arg is for internal usage only\n map: function (elems, callback, arg) {\n var length,\n value,\n i = 0,\n ret = [];\n\n // Go through the array, translating each of the items to their new values\n if (isArrayLike(elems)) {\n length = elems.length;\n for (; i < length; i++) {\n value = callback(elems[i], i, arg);\n if (value != null) {\n ret.push(value);\n }\n }\n\n // Go through every key on the object,\n } else {\n for (i in elems) {\n value = callback(elems[i], i, arg);\n if (value != null) {\n ret.push(value);\n }\n }\n }\n\n // Flatten any nested arrays\n return flat(ret);\n },\n // A global GUID counter for objects\n guid: 1,\n // jQuery.support is not used in Core but other projects attach their\n // properties to it so it needs to exist.\n support: support\n });\n if (typeof Symbol === \"function\") {\n jQuery.fn[Symbol.iterator] = arr[Symbol.iterator];\n }\n\n // Populate the class2type map\n jQuery.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"), function (_i, name) {\n class2type[\"[object \" + name + \"]\"] = name.toLowerCase();\n });\n function isArrayLike(obj) {\n // Support: real iOS 8.2 only (not reproducible in simulator)\n // `in` check used to prevent JIT error (gh-2145)\n // hasOwn isn't used here due to false negatives\n // regarding Nodelist length in IE\n var length = !!obj && \"length\" in obj && obj.length,\n type = toType(obj);\n if (isFunction(obj) || isWindow(obj)) {\n return false;\n }\n return type === \"array\" || length === 0 || typeof length === \"number\" && length > 0 && length - 1 in obj;\n }\n function nodeName(elem, name) {\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n }\n var pop = arr.pop;\n var sort = arr.sort;\n var splice = arr.splice;\n var whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n var rtrimCSS = new RegExp(\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\");\n\n // Note: an element does not contain itself\n jQuery.contains = function (a, b) {\n var bup = b && b.parentNode;\n return a === bup || !!(bup && bup.nodeType === 1 && (\n // Support: IE 9 - 11+\n // IE doesn't have `contains` on SVG.\n a.contains ? a.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16));\n };\n\n // CSS string/identifier serialization\n // https://drafts.csswg.org/cssom/#common-serializing-idioms\n var rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n function fcssescape(ch, asCodePoint) {\n if (asCodePoint) {\n // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n if (ch === \"\\0\") {\n return \"\\uFFFD\";\n }\n\n // Control characters and (dependent upon position) numbers get escaped as code points\n return ch.slice(0, -1) + \"\\\\\" + ch.charCodeAt(ch.length - 1).toString(16) + \" \";\n }\n\n // Other potentially-special ASCII characters get backslash-escaped\n return \"\\\\\" + ch;\n }\n jQuery.escapeSelector = function (sel) {\n return (sel + \"\").replace(rcssescape, fcssescape);\n };\n var preferredDoc = document,\n pushNative = push;\n (function () {\n var i,\n Expr,\n outermostContext,\n sortInput,\n hasDuplicate,\n push = pushNative,\n // Local document vars\n document,\n documentElement,\n documentIsHTML,\n rbuggyQSA,\n matches,\n // Instance-specific data\n expando = jQuery.expando,\n dirruns = 0,\n done = 0,\n classCache = createCache(),\n tokenCache = createCache(),\n compilerCache = createCache(),\n nonnativeSelectorCache = createCache(),\n sortOrder = function (a, b) {\n if (a === b) {\n hasDuplicate = true;\n }\n return 0;\n },\n booleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|\" + \"loop|multiple|open|readonly|required|scoped\",\n // Regular expressions\n\n // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n identifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n // Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors\n attributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n // Operator (capture 2)\n \"*([*^$|!~]?=)\" + whitespace +\n // \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n \"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace + \"*\\\\]\",\n pseudos = \":(\" + identifier + \")(?:\\\\((\" +\n // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n // 1. quoted (capture 3; capture 4 or capture 5)\n \"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n // 2. simple (capture 6)\n \"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n // 3. anything else (capture 2)\n \".*\" + \")\\\\)|)\",\n // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n rwhitespace = new RegExp(whitespace + \"+\", \"g\"),\n rcomma = new RegExp(\"^\" + whitespace + \"*,\" + whitespace + \"*\"),\n rleadingCombinator = new RegExp(\"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\"),\n rdescend = new RegExp(whitespace + \"|>\"),\n rpseudo = new RegExp(pseudos),\n ridentifier = new RegExp(\"^\" + identifier + \"$\"),\n matchExpr = {\n ID: new RegExp(\"^#(\" + identifier + \")\"),\n CLASS: new RegExp(\"^\\\\.(\" + identifier + \")\"),\n TAG: new RegExp(\"^(\" + identifier + \"|[*])\"),\n ATTR: new RegExp(\"^\" + attributes),\n PSEUDO: new RegExp(\"^\" + pseudos),\n CHILD: new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\"),\n bool: new RegExp(\"^(?:\" + booleans + \")$\", \"i\"),\n // For use in libraries implementing .is()\n // We use this for POS matching in `select`\n needsContext: new RegExp(\"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\")\n },\n rinputs = /^(?:input|select|textarea|button)$/i,\n rheader = /^h\\d$/i,\n // Easily-parseable/retrievable ID or TAG or CLASS selectors\n rquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n rsibling = /[+~]/,\n // CSS escapes\n // https://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n runescape = new RegExp(\"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\"),\n funescape = function (escape, nonHex) {\n var high = \"0x\" + escape.slice(1) - 0x10000;\n if (nonHex) {\n // Strip the backslash prefix from a non-hex escape sequence\n return nonHex;\n }\n\n // Replace a hexadecimal escape sequence with the encoded Unicode code point\n // Support: IE <=11+\n // For values outside the Basic Multilingual Plane (BMP), manually construct a\n // surrogate pair\n return high < 0 ? String.fromCharCode(high + 0x10000) : String.fromCharCode(high >> 10 | 0xD800, high & 0x3FF | 0xDC00);\n },\n // Used for iframes; see `setDocument`.\n // Support: IE 9 - 11+, Edge 12 - 18+\n // Removing the function wrapper causes a \"Permission Denied\"\n // error in IE/Edge.\n unloadHandler = function () {\n setDocument();\n },\n inDisabledFieldset = addCombinator(function (elem) {\n return elem.disabled === true && nodeName(elem, \"fieldset\");\n }, {\n dir: \"parentNode\",\n next: \"legend\"\n });\n\n // Support: IE <=9 only\n // Accessing document.activeElement can throw unexpectedly\n // https://bugs.jquery.com/ticket/13393\n function safeActiveElement() {\n try {\n return document.activeElement;\n } catch (err) {}\n }\n\n // Optimize for push.apply( _, NodeList )\n try {\n push.apply(arr = slice.call(preferredDoc.childNodes), preferredDoc.childNodes);\n\n // Support: Android <=4.0\n // Detect silently failing push.apply\n // eslint-disable-next-line no-unused-expressions\n arr[preferredDoc.childNodes.length].nodeType;\n } catch (e) {\n push = {\n apply: function (target, els) {\n pushNative.apply(target, slice.call(els));\n },\n call: function (target) {\n pushNative.apply(target, slice.call(arguments, 1));\n }\n };\n }\n function find(selector, context, results, seed) {\n var m,\n i,\n elem,\n nid,\n match,\n groups,\n newSelector,\n newContext = context && context.ownerDocument,\n // nodeType defaults to 9, since context defaults to document\n nodeType = context ? context.nodeType : 9;\n results = results || [];\n\n // Return early from calls with invalid selector or context\n if (typeof selector !== \"string\" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11) {\n return results;\n }\n\n // Try to shortcut find operations (as opposed to filters) in HTML documents\n if (!seed) {\n setDocument(context);\n context = context || document;\n if (documentIsHTML) {\n // If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n // (excepting DocumentFragment context, where the methods don't exist)\n if (nodeType !== 11 && (match = rquickExpr.exec(selector))) {\n // ID selector\n if (m = match[1]) {\n // Document context\n if (nodeType === 9) {\n if (elem = context.getElementById(m)) {\n // Support: IE 9 only\n // getElementById can match elements by name instead of ID\n if (elem.id === m) {\n push.call(results, elem);\n return results;\n }\n } else {\n return results;\n }\n\n // Element context\n } else {\n // Support: IE 9 only\n // getElementById can match elements by name instead of ID\n if (newContext && (elem = newContext.getElementById(m)) && find.contains(context, elem) && elem.id === m) {\n push.call(results, elem);\n return results;\n }\n }\n\n // Type selector\n } else if (match[2]) {\n push.apply(results, context.getElementsByTagName(selector));\n return results;\n\n // Class selector\n } else if ((m = match[3]) && context.getElementsByClassName) {\n push.apply(results, context.getElementsByClassName(m));\n return results;\n }\n }\n\n // Take advantage of querySelectorAll\n if (!nonnativeSelectorCache[selector + \" \"] && (!rbuggyQSA || !rbuggyQSA.test(selector))) {\n newSelector = selector;\n newContext = context;\n\n // qSA considers elements outside a scoping root when evaluating child or\n // descendant combinators, which is not what we want.\n // In such cases, we work around the behavior by prefixing every selector in the\n // list with an ID selector referencing the scope context.\n // The technique has to be used as well when a leading combinator is used\n // as such selectors are not recognized by querySelectorAll.\n // Thanks to Andrew Dupont for this technique.\n if (nodeType === 1 && (rdescend.test(selector) || rleadingCombinator.test(selector))) {\n // Expand context for sibling selectors\n newContext = rsibling.test(selector) && testContext(context.parentNode) || context;\n\n // We can use :scope instead of the ID hack if the browser\n // supports it & if we're not changing the context.\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when\n // strict-comparing two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (newContext != context || !support.scope) {\n // Capture the context ID, setting it first if necessary\n if (nid = context.getAttribute(\"id\")) {\n nid = jQuery.escapeSelector(nid);\n } else {\n context.setAttribute(\"id\", nid = expando);\n }\n }\n\n // Prefix every selector in the list\n groups = tokenize(selector);\n i = groups.length;\n while (i--) {\n groups[i] = (nid ? \"#\" + nid : \":scope\") + \" \" + toSelector(groups[i]);\n }\n newSelector = groups.join(\",\");\n }\n try {\n push.apply(results, newContext.querySelectorAll(newSelector));\n return results;\n } catch (qsaError) {\n nonnativeSelectorCache(selector, true);\n } finally {\n if (nid === expando) {\n context.removeAttribute(\"id\");\n }\n }\n }\n }\n }\n\n // All others\n return select(selector.replace(rtrimCSS, \"$1\"), context, results, seed);\n }\n\n /**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\n function createCache() {\n var keys = [];\n function cache(key, value) {\n // Use (key + \" \") to avoid collision with native prototype properties\n // (see https://github.com/jquery/sizzle/issues/157)\n if (keys.push(key + \" \") > Expr.cacheLength) {\n // Only keep the most recent entries\n delete cache[keys.shift()];\n }\n return cache[key + \" \"] = value;\n }\n return cache;\n }\n\n /**\n * Mark a function for special use by jQuery selector module\n * @param {Function} fn The function to mark\n */\n function markFunction(fn) {\n fn[expando] = true;\n return fn;\n }\n\n /**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\n function assert(fn) {\n var el = document.createElement(\"fieldset\");\n try {\n return !!fn(el);\n } catch (e) {\n return false;\n } finally {\n // Remove from its parent by default\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n\n // release memory in IE\n el = null;\n }\n }\n\n /**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\n function createInputPseudo(type) {\n return function (elem) {\n return nodeName(elem, \"input\") && elem.type === type;\n };\n }\n\n /**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\n function createButtonPseudo(type) {\n return function (elem) {\n return (nodeName(elem, \"input\") || nodeName(elem, \"button\")) && elem.type === type;\n };\n }\n\n /**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\n function createDisabledPseudo(disabled) {\n // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n return function (elem) {\n // Only certain elements can match :enabled or :disabled\n // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n if (\"form\" in elem) {\n // Check for inherited disabledness on relevant non-disabled elements:\n // * listed form-associated elements in a disabled fieldset\n // https://html.spec.whatwg.org/multipage/forms.html#category-listed\n // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n // * option elements in a disabled optgroup\n // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n // All such elements have a \"form\" property.\n if (elem.parentNode && elem.disabled === false) {\n // Option elements defer to a parent optgroup if present\n if (\"label\" in elem) {\n if (\"label\" in elem.parentNode) {\n return elem.parentNode.disabled === disabled;\n } else {\n return elem.disabled === disabled;\n }\n }\n\n // Support: IE 6 - 11+\n // Use the isDisabled shortcut property to check for disabled fieldset ancestors\n return elem.isDisabled === disabled ||\n // Where there is no isDisabled, check manually\n elem.isDisabled !== !disabled && inDisabledFieldset(elem) === disabled;\n }\n return elem.disabled === disabled;\n\n // Try to winnow out elements that can't be disabled before trusting the disabled property.\n // Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n // even exist on them, let alone have a boolean value.\n } else if (\"label\" in elem) {\n return elem.disabled === disabled;\n }\n\n // Remaining elements are neither :enabled nor :disabled\n return false;\n };\n }\n\n /**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\n function createPositionalPseudo(fn) {\n return markFunction(function (argument) {\n argument = +argument;\n return markFunction(function (seed, matches) {\n var j,\n matchIndexes = fn([], seed.length, argument),\n i = matchIndexes.length;\n\n // Match elements found at the specified indexes\n while (i--) {\n if (seed[j = matchIndexes[i]]) {\n seed[j] = !(matches[j] = seed[j]);\n }\n }\n });\n });\n }\n\n /**\n * Checks a node for validity as a jQuery selector context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\n function testContext(context) {\n return context && typeof context.getElementsByTagName !== \"undefined\" && context;\n }\n\n /**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [node] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\n function setDocument(node) {\n var subWindow,\n doc = node ? node.ownerDocument || node : preferredDoc;\n\n // Return early if doc is invalid or already selected\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (doc == document || doc.nodeType !== 9 || !doc.documentElement) {\n return document;\n }\n\n // Update global variables\n document = doc;\n documentElement = document.documentElement;\n documentIsHTML = !jQuery.isXMLDoc(document);\n\n // Support: iOS 7 only, IE 9 - 11+\n // Older browsers didn't support unprefixed `matches`.\n matches = documentElement.matches || documentElement.webkitMatchesSelector || documentElement.msMatchesSelector;\n\n // Support: IE 9 - 11+, Edge 12 - 18+\n // Accessing iframe documents after unload throws \"permission denied\" errors\n // (see trac-13936).\n // Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`,\n // all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well.\n if (documentElement.msMatchesSelector &&\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n preferredDoc != document && (subWindow = document.defaultView) && subWindow.top !== subWindow) {\n // Support: IE 9 - 11+, Edge 12 - 18+\n subWindow.addEventListener(\"unload\", unloadHandler);\n }\n\n // Support: IE <10\n // Check if getElementById returns elements by name\n // The broken getElementById methods don't pick up programmatically-set names,\n // so use a roundabout getElementsByName test\n support.getById = assert(function (el) {\n documentElement.appendChild(el).id = jQuery.expando;\n return !document.getElementsByName || !document.getElementsByName(jQuery.expando).length;\n });\n\n // Support: IE 9 only\n // Check to see if it's possible to do matchesSelector\n // on a disconnected node.\n support.disconnectedMatch = assert(function (el) {\n return matches.call(el, \"*\");\n });\n\n // Support: IE 9 - 11+, Edge 12 - 18+\n // IE/Edge don't support the :scope pseudo-class.\n support.scope = assert(function () {\n return document.querySelectorAll(\":scope\");\n });\n\n // Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only\n // Make sure the `:has()` argument is parsed unforgivingly.\n // We include `*` in the test to detect buggy implementations that are\n // _selectively_ forgiving (specifically when the list includes at least\n // one valid selector).\n // Note that we treat complete lack of support for `:has()` as if it were\n // spec-compliant support, which is fine because use of `:has()` in such\n // environments will fail in the qSA path and fall back to jQuery traversal\n // anyway.\n support.cssHas = assert(function () {\n try {\n document.querySelector(\":has(*,:jqfake)\");\n return false;\n } catch (e) {\n return true;\n }\n });\n\n // ID filter and find\n if (support.getById) {\n Expr.filter.ID = function (id) {\n var attrId = id.replace(runescape, funescape);\n return function (elem) {\n return elem.getAttribute(\"id\") === attrId;\n };\n };\n Expr.find.ID = function (id, context) {\n if (typeof context.getElementById !== \"undefined\" && documentIsHTML) {\n var elem = context.getElementById(id);\n return elem ? [elem] : [];\n }\n };\n } else {\n Expr.filter.ID = function (id) {\n var attrId = id.replace(runescape, funescape);\n return function (elem) {\n var node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n return node && node.value === attrId;\n };\n };\n\n // Support: IE 6 - 7 only\n // getElementById is not reliable as a find shortcut\n Expr.find.ID = function (id, context) {\n if (typeof context.getElementById !== \"undefined\" && documentIsHTML) {\n var node,\n i,\n elems,\n elem = context.getElementById(id);\n if (elem) {\n // Verify the id attribute\n node = elem.getAttributeNode(\"id\");\n if (node && node.value === id) {\n return [elem];\n }\n\n // Fall back on getElementsByName\n elems = context.getElementsByName(id);\n i = 0;\n while (elem = elems[i++]) {\n node = elem.getAttributeNode(\"id\");\n if (node && node.value === id) {\n return [elem];\n }\n }\n }\n return [];\n }\n };\n }\n\n // Tag\n Expr.find.TAG = function (tag, context) {\n if (typeof context.getElementsByTagName !== \"undefined\") {\n return context.getElementsByTagName(tag);\n\n // DocumentFragment nodes don't have gEBTN\n } else {\n return context.querySelectorAll(tag);\n }\n };\n\n // Class\n Expr.find.CLASS = function (className, context) {\n if (typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML) {\n return context.getElementsByClassName(className);\n }\n };\n\n /* QSA/matchesSelector\n ---------------------------------------------------------------------- */\n\n // QSA and matchesSelector support\n\n rbuggyQSA = [];\n\n // Build QSA regex\n // Regex strategy adopted from Diego Perini\n assert(function (el) {\n var input;\n documentElement.appendChild(el).innerHTML = \"<a id='\" + expando + \"' href='' disabled='disabled'></a>\" + \"<select id='\" + expando + \"-\\r\\\\' disabled='disabled'>\" + \"<option selected=''></option></select>\";\n\n // Support: iOS <=7 - 8 only\n // Boolean attributes and \"value\" are not treated correctly in some XML documents\n if (!el.querySelectorAll(\"[selected]\").length) {\n rbuggyQSA.push(\"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\");\n }\n\n // Support: iOS <=7 - 8 only\n if (!el.querySelectorAll(\"[id~=\" + expando + \"-]\").length) {\n rbuggyQSA.push(\"~=\");\n }\n\n // Support: iOS 8 only\n // https://bugs.webkit.org/show_bug.cgi?id=136851\n // In-page `selector#id sibling-combinator selector` fails\n if (!el.querySelectorAll(\"a#\" + expando + \"+*\").length) {\n rbuggyQSA.push(\".#.+[+~]\");\n }\n\n // Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n // In some of the document kinds, these selectors wouldn't work natively.\n // This is probably OK but for backwards compatibility we want to maintain\n // handling them through jQuery traversal in jQuery 3.x.\n if (!el.querySelectorAll(\":checked\").length) {\n rbuggyQSA.push(\":checked\");\n }\n\n // Support: Windows 8 Native Apps\n // The type and name attributes are restricted during .innerHTML assignment\n input = document.createElement(\"input\");\n input.setAttribute(\"type\", \"hidden\");\n el.appendChild(input).setAttribute(\"name\", \"D\");\n\n // Support: IE 9 - 11+\n // IE's :disabled selector does not pick up the children of disabled fieldsets\n // Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n // In some of the document kinds, these selectors wouldn't work natively.\n // This is probably OK but for backwards compatibility we want to maintain\n // handling them through jQuery traversal in jQuery 3.x.\n documentElement.appendChild(el).disabled = true;\n if (el.querySelectorAll(\":disabled\").length !== 2) {\n rbuggyQSA.push(\":enabled\", \":disabled\");\n }\n\n // Support: IE 11+, Edge 15 - 18+\n // IE 11/Edge don't find elements on a `[name='']` query in some cases.\n // Adding a temporary attribute to the document before the selection works\n // around the issue.\n // Interestingly, IE 10 & older don't seem to have the issue.\n input = document.createElement(\"input\");\n input.setAttribute(\"name\", \"\");\n el.appendChild(input);\n if (!el.querySelectorAll(\"[name='']\").length) {\n rbuggyQSA.push(\"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" + whitespace + \"*(?:''|\\\"\\\")\");\n }\n });\n if (!support.cssHas) {\n // Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n // Our regular `try-catch` mechanism fails to detect natively-unsupported\n // pseudo-classes inside `:has()` (such as `:has(:contains(\"Foo\"))`)\n // in browsers that parse the `:has()` argument as a forgiving selector list.\n // https://drafts.csswg.org/selectors/#relational now requires the argument\n // to be parsed unforgivingly, but browsers have not yet fully adjusted.\n rbuggyQSA.push(\":has\");\n }\n rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join(\"|\"));\n\n /* Sorting\n ---------------------------------------------------------------------- */\n\n // Document order sorting\n sortOrder = function (a, b) {\n // Flag for duplicate removal\n if (a === b) {\n hasDuplicate = true;\n return 0;\n }\n\n // Sort on method existence if only one input has compareDocumentPosition\n var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n if (compare) {\n return compare;\n }\n\n // Calculate position if both inputs belong to the same document\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n compare = (a.ownerDocument || a) == (b.ownerDocument || b) ? a.compareDocumentPosition(b) :\n // Otherwise we know they are disconnected\n 1;\n\n // Disconnected nodes\n if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) {\n // Choose the first element that is related to our preferred document\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (a === document || a.ownerDocument == preferredDoc && find.contains(preferredDoc, a)) {\n return -1;\n }\n\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (b === document || b.ownerDocument == preferredDoc && find.contains(preferredDoc, b)) {\n return 1;\n }\n\n // Maintain original order\n return sortInput ? indexOf.call(sortInput, a) - indexOf.call(sortInput, b) : 0;\n }\n return compare & 4 ? -1 : 1;\n };\n return document;\n }\n find.matches = function (expr, elements) {\n return find(expr, null, null, elements);\n };\n find.matchesSelector = function (elem, expr) {\n setDocument(elem);\n if (documentIsHTML && !nonnativeSelectorCache[expr + \" \"] && (!rbuggyQSA || !rbuggyQSA.test(expr))) {\n try {\n var ret = matches.call(elem, expr);\n\n // IE 9's matchesSelector returns false on disconnected nodes\n if (ret || support.disconnectedMatch ||\n // As well, disconnected nodes are said to be in a document\n // fragment in IE 9\n elem.document && elem.document.nodeType !== 11) {\n return ret;\n }\n } catch (e) {\n nonnativeSelectorCache(expr, true);\n }\n }\n return find(expr, document, null, [elem]).length > 0;\n };\n find.contains = function (context, elem) {\n // Set document vars if needed\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if ((context.ownerDocument || context) != document) {\n setDocument(context);\n }\n return jQuery.contains(context, elem);\n };\n find.attr = function (elem, name) {\n // Set document vars if needed\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if ((elem.ownerDocument || elem) != document) {\n setDocument(elem);\n }\n var fn = Expr.attrHandle[name.toLowerCase()],\n // Don't get fooled by Object.prototype properties (see trac-13807)\n val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : undefined;\n if (val !== undefined) {\n return val;\n }\n return elem.getAttribute(name);\n };\n find.error = function (msg) {\n throw new Error(\"Syntax error, unrecognized expression: \" + msg);\n };\n\n /**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\n jQuery.uniqueSort = function (results) {\n var elem,\n duplicates = [],\n j = 0,\n i = 0;\n\n // Unless we *know* we can detect duplicates, assume their presence\n //\n // Support: Android <=4.0+\n // Testing for detecting duplicates is unpredictable so instead assume we can't\n // depend on duplicate detection in all browsers without a stable sort.\n hasDuplicate = !support.sortStable;\n sortInput = !support.sortStable && slice.call(results, 0);\n sort.call(results, sortOrder);\n if (hasDuplicate) {\n while (elem = results[i++]) {\n if (elem === results[i]) {\n j = duplicates.push(i);\n }\n }\n while (j--) {\n splice.call(results, duplicates[j], 1);\n }\n }\n\n // Clear input after sorting to release objects\n // See https://github.com/jquery/sizzle/pull/225\n sortInput = null;\n return results;\n };\n jQuery.fn.uniqueSort = function () {\n return this.pushStack(jQuery.uniqueSort(slice.apply(this)));\n };\n Expr = jQuery.expr = {\n // Can be adjusted by the user\n cacheLength: 50,\n createPseudo: markFunction,\n match: matchExpr,\n attrHandle: {},\n find: {},\n relative: {\n \">\": {\n dir: \"parentNode\",\n first: true\n },\n \" \": {\n dir: \"parentNode\"\n },\n \"+\": {\n dir: \"previousSibling\",\n first: true\n },\n \"~\": {\n dir: \"previousSibling\"\n }\n },\n preFilter: {\n ATTR: function (match) {\n match[1] = match[1].replace(runescape, funescape);\n\n // Move the given value to match[3] whether quoted or unquoted\n match[3] = (match[3] || match[4] || match[5] || \"\").replace(runescape, funescape);\n if (match[2] === \"~=\") {\n match[3] = \" \" + match[3] + \" \";\n }\n return match.slice(0, 4);\n },\n CHILD: function (match) {\n /* matches from matchExpr[\"CHILD\"]\n \t1 type (only|nth|...)\n \t2 what (child|of-type)\n \t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n \t4 xn-component of xn+y argument ([+-]?\\d*n|)\n \t5 sign of xn-component\n \t6 x of xn-component\n \t7 sign of y-component\n \t8 y of y-component\n */\n match[1] = match[1].toLowerCase();\n if (match[1].slice(0, 3) === \"nth\") {\n // nth-* requires argument\n if (!match[3]) {\n find.error(match[0]);\n }\n\n // numeric x and y parameters for Expr.filter.CHILD\n // remember that false/true cast respectively to 0/1\n match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === \"even\" || match[3] === \"odd\"));\n match[5] = +(match[7] + match[8] || match[3] === \"odd\");\n\n // other types prohibit arguments\n } else if (match[3]) {\n find.error(match[0]);\n }\n return match;\n },\n PSEUDO: function (match) {\n var excess,\n unquoted = !match[6] && match[2];\n if (matchExpr.CHILD.test(match[0])) {\n return null;\n }\n\n // Accept quoted arguments as-is\n if (match[3]) {\n match[2] = match[4] || match[5] || \"\";\n\n // Strip excess characters from unquoted arguments\n } else if (unquoted && rpseudo.test(unquoted) && (\n // Get excess from tokenize (recursively)\n excess = tokenize(unquoted, true)) && (\n // advance to the next closing parenthesis\n excess = unquoted.indexOf(\")\", unquoted.length - excess) - unquoted.length)) {\n // excess is a negative index\n match[0] = match[0].slice(0, excess);\n match[2] = unquoted.slice(0, excess);\n }\n\n // Return only captures needed by the pseudo filter method (type and argument)\n return match.slice(0, 3);\n }\n },\n filter: {\n TAG: function (nodeNameSelector) {\n var expectedNodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase();\n return nodeNameSelector === \"*\" ? function () {\n return true;\n } : function (elem) {\n return nodeName(elem, expectedNodeName);\n };\n },\n CLASS: function (className) {\n var pattern = classCache[className + \" \"];\n return pattern || (pattern = new RegExp(\"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\")) && classCache(className, function (elem) {\n return pattern.test(typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\");\n });\n },\n ATTR: function (name, operator, check) {\n return function (elem) {\n var result = find.attr(elem, name);\n if (result == null) {\n return operator === \"!=\";\n }\n if (!operator) {\n return true;\n }\n result += \"\";\n if (operator === \"=\") {\n return result === check;\n }\n if (operator === \"!=\") {\n return result !== check;\n }\n if (operator === \"^=\") {\n return check && result.indexOf(check) === 0;\n }\n if (operator === \"*=\") {\n return check && result.indexOf(check) > -1;\n }\n if (operator === \"$=\") {\n return check && result.slice(-check.length) === check;\n }\n if (operator === \"~=\") {\n return (\" \" + result.replace(rwhitespace, \" \") + \" \").indexOf(check) > -1;\n }\n if (operator === \"|=\") {\n return result === check || result.slice(0, check.length + 1) === check + \"-\";\n }\n return false;\n };\n },\n CHILD: function (type, what, _argument, first, last) {\n var simple = type.slice(0, 3) !== \"nth\",\n forward = type.slice(-4) !== \"last\",\n ofType = what === \"of-type\";\n return first === 1 && last === 0 ?\n // Shortcut for :nth-*(n)\n function (elem) {\n return !!elem.parentNode;\n } : function (elem, _context, xml) {\n var cache,\n outerCache,\n node,\n nodeIndex,\n start,\n dir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n parent = elem.parentNode,\n name = ofType && elem.nodeName.toLowerCase(),\n useCache = !xml && !ofType,\n diff = false;\n if (parent) {\n // :(first|last|only)-(child|of-type)\n if (simple) {\n while (dir) {\n node = elem;\n while (node = node[dir]) {\n if (ofType ? nodeName(node, name) : node.nodeType === 1) {\n return false;\n }\n }\n\n // Reverse direction for :only-* (if we haven't yet done so)\n start = dir = type === \"only\" && !start && \"nextSibling\";\n }\n return true;\n }\n start = [forward ? parent.firstChild : parent.lastChild];\n\n // non-xml :nth-child(...) stores cache data on `parent`\n if (forward && useCache) {\n // Seek `elem` from a previously-cached index\n outerCache = parent[expando] || (parent[expando] = {});\n cache = outerCache[type] || [];\n nodeIndex = cache[0] === dirruns && cache[1];\n diff = nodeIndex && cache[2];\n node = nodeIndex && parent.childNodes[nodeIndex];\n while (node = ++nodeIndex && node && node[dir] || (\n // Fallback to seeking `elem` from the start\n diff = nodeIndex = 0) || start.pop()) {\n // When found, cache indexes on `parent` and break\n if (node.nodeType === 1 && ++diff && node === elem) {\n outerCache[type] = [dirruns, nodeIndex, diff];\n break;\n }\n }\n } else {\n // Use previously-cached element index if available\n if (useCache) {\n outerCache = elem[expando] || (elem[expando] = {});\n cache = outerCache[type] || [];\n nodeIndex = cache[0] === dirruns && cache[1];\n diff = nodeIndex;\n }\n\n // xml :nth-child(...)\n // or :nth-last-child(...) or :nth(-last)?-of-type(...)\n if (diff === false) {\n // Use the same loop as above to seek `elem` from the start\n while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) {\n if ((ofType ? nodeName(node, name) : node.nodeType === 1) && ++diff) {\n // Cache the index of each encountered element\n if (useCache) {\n outerCache = node[expando] || (node[expando] = {});\n outerCache[type] = [dirruns, diff];\n }\n if (node === elem) {\n break;\n }\n }\n }\n }\n }\n\n // Incorporate the offset, then check against cycle size\n diff -= last;\n return diff === first || diff % first === 0 && diff / first >= 0;\n }\n };\n },\n PSEUDO: function (pseudo, argument) {\n // pseudo-class names are case-insensitive\n // https://www.w3.org/TR/selectors/#pseudo-classes\n // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n // Remember that setFilters inherits from pseudos\n var args,\n fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || find.error(\"unsupported pseudo: \" + pseudo);\n\n // The user may use createPseudo to indicate that\n // arguments are needed to create the filter function\n // just as jQuery does\n if (fn[expando]) {\n return fn(argument);\n }\n\n // But maintain support for old signatures\n if (fn.length > 1) {\n args = [pseudo, pseudo, \"\", argument];\n return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function (seed, matches) {\n var idx,\n matched = fn(seed, argument),\n i = matched.length;\n while (i--) {\n idx = indexOf.call(seed, matched[i]);\n seed[idx] = !(matches[idx] = matched[i]);\n }\n }) : function (elem) {\n return fn(elem, 0, args);\n };\n }\n return fn;\n }\n },\n pseudos: {\n // Potentially complex pseudos\n not: markFunction(function (selector) {\n // Trim the selector passed to compile\n // to avoid treating leading and trailing\n // spaces as combinators\n var input = [],\n results = [],\n matcher = compile(selector.replace(rtrimCSS, \"$1\"));\n return matcher[expando] ? markFunction(function (seed, matches, _context, xml) {\n var elem,\n unmatched = matcher(seed, null, xml, []),\n i = seed.length;\n\n // Match elements unmatched by `matcher`\n while (i--) {\n if (elem = unmatched[i]) {\n seed[i] = !(matches[i] = elem);\n }\n }\n }) : function (elem, _context, xml) {\n input[0] = elem;\n matcher(input, null, xml, results);\n\n // Don't keep the element\n // (see https://github.com/jquery/sizzle/issues/299)\n input[0] = null;\n return !results.pop();\n };\n }),\n has: markFunction(function (selector) {\n return function (elem) {\n return find(selector, elem).length > 0;\n };\n }),\n contains: markFunction(function (text) {\n text = text.replace(runescape, funescape);\n return function (elem) {\n return (elem.textContent || jQuery.text(elem)).indexOf(text) > -1;\n };\n }),\n // \"Whether an element is represented by a :lang() selector\n // is based solely on the element's language value\n // being equal to the identifier C,\n // or beginning with the identifier C immediately followed by \"-\".\n // The matching of C against the element's language value is performed case-insensitively.\n // The identifier C does not have to be a valid language name.\"\n // https://www.w3.org/TR/selectors/#lang-pseudo\n lang: markFunction(function (lang) {\n // lang value must be a valid identifier\n if (!ridentifier.test(lang || \"\")) {\n find.error(\"unsupported lang: \" + lang);\n }\n lang = lang.replace(runescape, funescape).toLowerCase();\n return function (elem) {\n var elemLang;\n do {\n if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) {\n elemLang = elemLang.toLowerCase();\n return elemLang === lang || elemLang.indexOf(lang + \"-\") === 0;\n }\n } while ((elem = elem.parentNode) && elem.nodeType === 1);\n return false;\n };\n }),\n // Miscellaneous\n target: function (elem) {\n var hash = window.location && window.location.hash;\n return hash && hash.slice(1) === elem.id;\n },\n root: function (elem) {\n return elem === documentElement;\n },\n focus: function (elem) {\n return elem === safeActiveElement() && document.hasFocus() && !!(elem.type || elem.href || ~elem.tabIndex);\n },\n // Boolean properties\n enabled: createDisabledPseudo(false),\n disabled: createDisabledPseudo(true),\n checked: function (elem) {\n // In CSS3, :checked should return both checked and selected elements\n // https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n return nodeName(elem, \"input\") && !!elem.checked || nodeName(elem, \"option\") && !!elem.selected;\n },\n selected: function (elem) {\n // Support: IE <=11+\n // Accessing the selectedIndex property\n // forces the browser to treat the default option as\n // selected when in an optgroup.\n if (elem.parentNode) {\n // eslint-disable-next-line no-unused-expressions\n elem.parentNode.selectedIndex;\n }\n return elem.selected === true;\n },\n // Contents\n empty: function (elem) {\n // https://www.w3.org/TR/selectors/#empty-pseudo\n // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n // but not by others (comment: 8; processing instruction: 7; etc.)\n // nodeType < 6 works because attributes (2) do not appear as children\n for (elem = elem.firstChild; elem; elem = elem.nextSibling) {\n if (elem.nodeType < 6) {\n return false;\n }\n }\n return true;\n },\n parent: function (elem) {\n return !Expr.pseudos.empty(elem);\n },\n // Element/input types\n header: function (elem) {\n return rheader.test(elem.nodeName);\n },\n input: function (elem) {\n return rinputs.test(elem.nodeName);\n },\n button: function (elem) {\n return nodeName(elem, \"input\") && elem.type === \"button\" || nodeName(elem, \"button\");\n },\n text: function (elem) {\n var attr;\n return nodeName(elem, \"input\") && elem.type === \"text\" && (\n // Support: IE <10 only\n // New HTML5 attribute values (e.g., \"search\") appear\n // with elem.type === \"text\"\n (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\");\n },\n // Position-in-collection\n first: createPositionalPseudo(function () {\n return [0];\n }),\n last: createPositionalPseudo(function (_matchIndexes, length) {\n return [length - 1];\n }),\n eq: createPositionalPseudo(function (_matchIndexes, length, argument) {\n return [argument < 0 ? argument + length : argument];\n }),\n even: createPositionalPseudo(function (matchIndexes, length) {\n var i = 0;\n for (; i < length; i += 2) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n }),\n odd: createPositionalPseudo(function (matchIndexes, length) {\n var i = 1;\n for (; i < length; i += 2) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n }),\n lt: createPositionalPseudo(function (matchIndexes, length, argument) {\n var i;\n if (argument < 0) {\n i = argument + length;\n } else if (argument > length) {\n i = length;\n } else {\n i = argument;\n }\n for (; --i >= 0;) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n }),\n gt: createPositionalPseudo(function (matchIndexes, length, argument) {\n var i = argument < 0 ? argument + length : argument;\n for (; ++i < length;) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n })\n }\n };\n Expr.pseudos.nth = Expr.pseudos.eq;\n\n // Add button/input type pseudos\n for (i in {\n radio: true,\n checkbox: true,\n file: true,\n password: true,\n image: true\n }) {\n Expr.pseudos[i] = createInputPseudo(i);\n }\n for (i in {\n submit: true,\n reset: true\n }) {\n Expr.pseudos[i] = createButtonPseudo(i);\n }\n\n // Easy API for creating new setFilters\n function setFilters() {}\n setFilters.prototype = Expr.filters = Expr.pseudos;\n Expr.setFilters = new setFilters();\n function tokenize(selector, parseOnly) {\n var matched,\n match,\n tokens,\n type,\n soFar,\n groups,\n preFilters,\n cached = tokenCache[selector + \" \"];\n if (cached) {\n return parseOnly ? 0 : cached.slice(0);\n }\n soFar = selector;\n groups = [];\n preFilters = Expr.preFilter;\n while (soFar) {\n // Comma and first run\n if (!matched || (match = rcomma.exec(soFar))) {\n if (match) {\n // Don't consume trailing commas as valid\n soFar = soFar.slice(match[0].length) || soFar;\n }\n groups.push(tokens = []);\n }\n matched = false;\n\n // Combinators\n if (match = rleadingCombinator.exec(soFar)) {\n matched = match.shift();\n tokens.push({\n value: matched,\n // Cast descendant combinators to space\n type: match[0].replace(rtrimCSS, \" \")\n });\n soFar = soFar.slice(matched.length);\n }\n\n // Filters\n for (type in Expr.filter) {\n if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) {\n matched = match.shift();\n tokens.push({\n value: matched,\n type: type,\n matches: match\n });\n soFar = soFar.slice(matched.length);\n }\n }\n if (!matched) {\n break;\n }\n }\n\n // Return the length of the invalid excess\n // if we're just parsing\n // Otherwise, throw an error or return tokens\n if (parseOnly) {\n return soFar.length;\n }\n return soFar ? find.error(selector) :\n // Cache the tokens\n tokenCache(selector, groups).slice(0);\n }\n function toSelector(tokens) {\n var i = 0,\n len = tokens.length,\n selector = \"\";\n for (; i < len; i++) {\n selector += tokens[i].value;\n }\n return selector;\n }\n function addCombinator(matcher, combinator, base) {\n var dir = combinator.dir,\n skip = combinator.next,\n key = skip || dir,\n checkNonElements = base && key === \"parentNode\",\n doneName = done++;\n return combinator.first ?\n // Check against closest ancestor/preceding element\n function (elem, context, xml) {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n return matcher(elem, context, xml);\n }\n }\n return false;\n } :\n // Check against all ancestor/preceding elements\n function (elem, context, xml) {\n var oldCache,\n outerCache,\n newCache = [dirruns, doneName];\n\n // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n if (xml) {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n if (matcher(elem, context, xml)) {\n return true;\n }\n }\n }\n } else {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n outerCache = elem[expando] || (elem[expando] = {});\n if (skip && nodeName(elem, skip)) {\n elem = elem[dir] || elem;\n } else if ((oldCache = outerCache[key]) && oldCache[0] === dirruns && oldCache[1] === doneName) {\n // Assign to newCache so results back-propagate to previous elements\n return newCache[2] = oldCache[2];\n } else {\n // Reuse newcache so results back-propagate to previous elements\n outerCache[key] = newCache;\n\n // A match means we're done; a fail means we have to keep checking\n if (newCache[2] = matcher(elem, context, xml)) {\n return true;\n }\n }\n }\n }\n }\n return false;\n };\n }\n function elementMatcher(matchers) {\n return matchers.length > 1 ? function (elem, context, xml) {\n var i = matchers.length;\n while (i--) {\n if (!matchers[i](elem, context, xml)) {\n return false;\n }\n }\n return true;\n } : matchers[0];\n }\n function multipleContexts(selector, contexts, results) {\n var i = 0,\n len = contexts.length;\n for (; i < len; i++) {\n find(selector, contexts[i], results);\n }\n return results;\n }\n function condense(unmatched, map, filter, context, xml) {\n var elem,\n newUnmatched = [],\n i = 0,\n len = unmatched.length,\n mapped = map != null;\n for (; i < len; i++) {\n if (elem = unmatched[i]) {\n if (!filter || filter(elem, context, xml)) {\n newUnmatched.push(elem);\n if (mapped) {\n map.push(i);\n }\n }\n }\n }\n return newUnmatched;\n }\n function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {\n if (postFilter && !postFilter[expando]) {\n postFilter = setMatcher(postFilter);\n }\n if (postFinder && !postFinder[expando]) {\n postFinder = setMatcher(postFinder, postSelector);\n }\n return markFunction(function (seed, results, context, xml) {\n var temp,\n i,\n elem,\n matcherOut,\n preMap = [],\n postMap = [],\n preexisting = results.length,\n // Get initial elements from seed or context\n elems = seed || multipleContexts(selector || \"*\", context.nodeType ? [context] : context, []),\n // Prefilter to get matcher input, preserving a map for seed-results synchronization\n matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems;\n if (matcher) {\n // If we have a postFinder, or filtered seed, or non-seed postFilter\n // or preexisting results,\n matcherOut = postFinder || (seed ? preFilter : preexisting || postFilter) ?\n // ...intermediate processing is necessary\n [] :\n // ...otherwise use results directly\n results;\n\n // Find primary matches\n matcher(matcherIn, matcherOut, context, xml);\n } else {\n matcherOut = matcherIn;\n }\n\n // Apply postFilter\n if (postFilter) {\n temp = condense(matcherOut, postMap);\n postFilter(temp, [], context, xml);\n\n // Un-match failing elements by moving them back to matcherIn\n i = temp.length;\n while (i--) {\n if (elem = temp[i]) {\n matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem);\n }\n }\n }\n if (seed) {\n if (postFinder || preFilter) {\n if (postFinder) {\n // Get the final matcherOut by condensing this intermediate into postFinder contexts\n temp = [];\n i = matcherOut.length;\n while (i--) {\n if (elem = matcherOut[i]) {\n // Restore matcherIn since elem is not yet a final match\n temp.push(matcherIn[i] = elem);\n }\n }\n postFinder(null, matcherOut = [], temp, xml);\n }\n\n // Move matched elements from seed to results to keep them synchronized\n i = matcherOut.length;\n while (i--) {\n if ((elem = matcherOut[i]) && (temp = postFinder ? indexOf.call(seed, elem) : preMap[i]) > -1) {\n seed[temp] = !(results[temp] = elem);\n }\n }\n }\n\n // Add elements to results, through postFinder if defined\n } else {\n matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut);\n if (postFinder) {\n postFinder(null, results, matcherOut, xml);\n } else {\n push.apply(results, matcherOut);\n }\n }\n });\n }\n function matcherFromTokens(tokens) {\n var checkContext,\n matcher,\n j,\n len = tokens.length,\n leadingRelative = Expr.relative[tokens[0].type],\n implicitRelative = leadingRelative || Expr.relative[\" \"],\n i = leadingRelative ? 1 : 0,\n // The foundational matcher ensures that elements are reachable from top-level context(s)\n matchContext = addCombinator(function (elem) {\n return elem === checkContext;\n }, implicitRelative, true),\n matchAnyContext = addCombinator(function (elem) {\n return indexOf.call(checkContext, elem) > -1;\n }, implicitRelative, true),\n matchers = [function (elem, context, xml) {\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n var ret = !leadingRelative && (xml || context != outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml));\n\n // Avoid hanging onto element\n // (see https://github.com/jquery/sizzle/issues/299)\n checkContext = null;\n return ret;\n }];\n for (; i < len; i++) {\n if (matcher = Expr.relative[tokens[i].type]) {\n matchers = [addCombinator(elementMatcher(matchers), matcher)];\n } else {\n matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches);\n\n // Return special upon seeing a positional matcher\n if (matcher[expando]) {\n // Find the next relative operator (if any) for proper handling\n j = ++i;\n for (; j < len; j++) {\n if (Expr.relative[tokens[j].type]) {\n break;\n }\n }\n return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector(\n // If the preceding token was a descendant combinator, insert an implicit any-element `*`\n tokens.slice(0, i - 1).concat({\n value: tokens[i - 2].type === \" \" ? \"*\" : \"\"\n })).replace(rtrimCSS, \"$1\"), matcher, i < j && matcherFromTokens(tokens.slice(i, j)), j < len && matcherFromTokens(tokens = tokens.slice(j)), j < len && toSelector(tokens));\n }\n matchers.push(matcher);\n }\n }\n return elementMatcher(matchers);\n }\n function matcherFromGroupMatchers(elementMatchers, setMatchers) {\n var bySet = setMatchers.length > 0,\n byElement = elementMatchers.length > 0,\n superMatcher = function (seed, context, xml, results, outermost) {\n var elem,\n j,\n matcher,\n matchedCount = 0,\n i = \"0\",\n unmatched = seed && [],\n setMatched = [],\n contextBackup = outermostContext,\n // We must always have either seed elements or outermost context\n elems = seed || byElement && Expr.find.TAG(\"*\", outermost),\n // Use integer dirruns iff this is the outermost matcher\n dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1,\n len = elems.length;\n if (outermost) {\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n outermostContext = context == document || context || outermost;\n }\n\n // Add elements passing elementMatchers directly to results\n // Support: iOS <=7 - 9 only\n // Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching\n // elements by id. (see trac-14142)\n for (; i !== len && (elem = elems[i]) != null; i++) {\n if (byElement && elem) {\n j = 0;\n\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (!context && elem.ownerDocument != document) {\n setDocument(elem);\n xml = !documentIsHTML;\n }\n while (matcher = elementMatchers[j++]) {\n if (matcher(elem, context || document, xml)) {\n push.call(results, elem);\n break;\n }\n }\n if (outermost) {\n dirruns = dirrunsUnique;\n }\n }\n\n // Track unmatched elements for set filters\n if (bySet) {\n // They will have gone through all possible matchers\n if (elem = !matcher && elem) {\n matchedCount--;\n }\n\n // Lengthen the array for every element, matched or not\n if (seed) {\n unmatched.push(elem);\n }\n }\n }\n\n // `i` is now the count of elements visited above, and adding it to `matchedCount`\n // makes the latter nonnegative.\n matchedCount += i;\n\n // Apply set filters to unmatched elements\n // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n // equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n // no element matchers and no seed.\n // Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n // case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n // numerically zero.\n if (bySet && i !== matchedCount) {\n j = 0;\n while (matcher = setMatchers[j++]) {\n matcher(unmatched, setMatched, context, xml);\n }\n if (seed) {\n // Reintegrate element matches to eliminate the need for sorting\n if (matchedCount > 0) {\n while (i--) {\n if (!(unmatched[i] || setMatched[i])) {\n setMatched[i] = pop.call(results);\n }\n }\n }\n\n // Discard index placeholder values to get only actual matches\n setMatched = condense(setMatched);\n }\n\n // Add matches to results\n push.apply(results, setMatched);\n\n // Seedless set matches succeeding multiple successful matchers stipulate sorting\n if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) {\n jQuery.uniqueSort(results);\n }\n }\n\n // Override manipulation of globals by nested matchers\n if (outermost) {\n dirruns = dirrunsUnique;\n outermostContext = contextBackup;\n }\n return unmatched;\n };\n return bySet ? markFunction(superMatcher) : superMatcher;\n }\n function compile(selector, match /* Internal Use Only */) {\n var i,\n setMatchers = [],\n elementMatchers = [],\n cached = compilerCache[selector + \" \"];\n if (!cached) {\n // Generate a function of recursive functions that can be used to check each element\n if (!match) {\n match = tokenize(selector);\n }\n i = match.length;\n while (i--) {\n cached = matcherFromTokens(match[i]);\n if (cached[expando]) {\n setMatchers.push(cached);\n } else {\n elementMatchers.push(cached);\n }\n }\n\n // Cache the compiled function\n cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers));\n\n // Save selector and tokenization\n cached.selector = selector;\n }\n return cached;\n }\n\n /**\n * A low-level selection function that works with jQuery's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with jQuery selector compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\n function select(selector, context, results, seed) {\n var i,\n tokens,\n token,\n type,\n find,\n compiled = typeof selector === \"function\" && selector,\n match = !seed && tokenize(selector = compiled.selector || selector);\n results = results || [];\n\n // Try to minimize operations if there is only one selector in the list and no seed\n // (the latter of which guarantees us context)\n if (match.length === 1) {\n // Reduce context if the leading compound selector is an ID\n tokens = match[0] = match[0].slice(0);\n if (tokens.length > 2 && (token = tokens[0]).type === \"ID\" && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) {\n context = (Expr.find.ID(token.matches[0].replace(runescape, funescape), context) || [])[0];\n if (!context) {\n return results;\n\n // Precompiled matchers will still verify ancestry, so step up a level\n } else if (compiled) {\n context = context.parentNode;\n }\n selector = selector.slice(tokens.shift().value.length);\n }\n\n // Fetch a seed set for right-to-left matching\n i = matchExpr.needsContext.test(selector) ? 0 : tokens.length;\n while (i--) {\n token = tokens[i];\n\n // Abort if we hit a combinator\n if (Expr.relative[type = token.type]) {\n break;\n }\n if (find = Expr.find[type]) {\n // Search, expanding context for leading sibling combinators\n if (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context)) {\n // If seed is empty or no tokens remain, we can return early\n tokens.splice(i, 1);\n selector = seed.length && toSelector(tokens);\n if (!selector) {\n push.apply(results, seed);\n return results;\n }\n break;\n }\n }\n }\n }\n\n // Compile and execute a filtering function if one is not provided\n // Provide `match` to avoid retokenization if we modified the selector above\n (compiled || compile(selector, match))(seed, context, !documentIsHTML, results, !context || rsibling.test(selector) && testContext(context.parentNode) || context);\n return results;\n }\n\n // One-time assignments\n\n // Support: Android <=4.0 - 4.1+\n // Sort stability\n support.sortStable = expando.split(\"\").sort(sortOrder).join(\"\") === expando;\n\n // Initialize against the default document\n setDocument();\n\n // Support: Android <=4.0 - 4.1+\n // Detached nodes confoundingly follow *each other*\n support.sortDetached = assert(function (el) {\n // Should return 1, but returns 4 (following)\n return el.compareDocumentPosition(document.createElement(\"fieldset\")) & 1;\n });\n jQuery.find = find;\n\n // Deprecated\n jQuery.expr[\":\"] = jQuery.expr.pseudos;\n jQuery.unique = jQuery.uniqueSort;\n\n // These have always been private, but they used to be documented as part of\n // Sizzle so let's maintain them for now for backwards compatibility purposes.\n find.compile = compile;\n find.select = select;\n find.setDocument = setDocument;\n find.tokenize = tokenize;\n find.escape = jQuery.escapeSelector;\n find.getText = jQuery.text;\n find.isXML = jQuery.isXMLDoc;\n find.selectors = jQuery.expr;\n find.support = jQuery.support;\n find.uniqueSort = jQuery.uniqueSort;\n\n /* eslint-enable */\n })();\n\n var dir = function (elem, dir, until) {\n var matched = [],\n truncate = until !== undefined;\n while ((elem = elem[dir]) && elem.nodeType !== 9) {\n if (elem.nodeType === 1) {\n if (truncate && jQuery(elem).is(until)) {\n break;\n }\n matched.push(elem);\n }\n }\n return matched;\n };\n var siblings = function (n, elem) {\n var matched = [];\n for (; n; n = n.nextSibling) {\n if (n.nodeType === 1 && n !== elem) {\n matched.push(n);\n }\n }\n return matched;\n };\n var rneedsContext = jQuery.expr.match.needsContext;\n var rsingleTag = /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i;\n\n // Implement the identical functionality for filter and not\n function winnow(elements, qualifier, not) {\n if (isFunction(qualifier)) {\n return jQuery.grep(elements, function (elem, i) {\n return !!qualifier.call(elem, i, elem) !== not;\n });\n }\n\n // Single element\n if (qualifier.nodeType) {\n return jQuery.grep(elements, function (elem) {\n return elem === qualifier !== not;\n });\n }\n\n // Arraylike of elements (jQuery, arguments, Array)\n if (typeof qualifier !== \"string\") {\n return jQuery.grep(elements, function (elem) {\n return indexOf.call(qualifier, elem) > -1 !== not;\n });\n }\n\n // Filtered directly for both simple and complex selectors\n return jQuery.filter(qualifier, elements, not);\n }\n jQuery.filter = function (expr, elems, not) {\n var elem = elems[0];\n if (not) {\n expr = \":not(\" + expr + \")\";\n }\n if (elems.length === 1 && elem.nodeType === 1) {\n return jQuery.find.matchesSelector(elem, expr) ? [elem] : [];\n }\n return jQuery.find.matches(expr, jQuery.grep(elems, function (elem) {\n return elem.nodeType === 1;\n }));\n };\n jQuery.fn.extend({\n find: function (selector) {\n var i,\n ret,\n len = this.length,\n self = this;\n if (typeof selector !== \"string\") {\n return this.pushStack(jQuery(selector).filter(function () {\n for (i = 0; i < len; i++) {\n if (jQuery.contains(self[i], this)) {\n return true;\n }\n }\n }));\n }\n ret = this.pushStack([]);\n for (i = 0; i < len; i++) {\n jQuery.find(selector, self[i], ret);\n }\n return len > 1 ? jQuery.uniqueSort(ret) : ret;\n },\n filter: function (selector) {\n return this.pushStack(winnow(this, selector || [], false));\n },\n not: function (selector) {\n return this.pushStack(winnow(this, selector || [], true));\n },\n is: function (selector) {\n return !!winnow(this,\n // If this is a positional/relative selector, check membership in the returned set\n // so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n typeof selector === \"string\" && rneedsContext.test(selector) ? jQuery(selector) : selector || [], false).length;\n }\n });\n\n // Initialize a jQuery object\n\n // A central reference to the root jQuery(document)\n var rootjQuery,\n // A simple way to check for HTML strings\n // Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)\n // Strict HTML recognition (trac-11290: must start with <)\n // Shortcut simple #id case for speed\n rquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n init = jQuery.fn.init = function (selector, context, root) {\n var match, elem;\n\n // HANDLE: $(\"\"), $(null), $(undefined), $(false)\n if (!selector) {\n return this;\n }\n\n // Method init() accepts an alternate rootjQuery\n // so migrate can support jQuery.sub (gh-2101)\n root = root || rootjQuery;\n\n // Handle HTML strings\n if (typeof selector === \"string\") {\n if (selector[0] === \"<\" && selector[selector.length - 1] === \">\" && selector.length >= 3) {\n // Assume that strings that start and end with <> are HTML and skip the regex check\n match = [null, selector, null];\n } else {\n match = rquickExpr.exec(selector);\n }\n\n // Match html or make sure no context is specified for #id\n if (match && (match[1] || !context)) {\n // HANDLE: $(html) -> $(array)\n if (match[1]) {\n context = context instanceof jQuery ? context[0] : context;\n\n // Option to run scripts is true for back-compat\n // Intentionally let the error be thrown if parseHTML is not present\n jQuery.merge(this, jQuery.parseHTML(match[1], context && context.nodeType ? context.ownerDocument || context : document, true));\n\n // HANDLE: $(html, props)\n if (rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) {\n for (match in context) {\n // Properties of context are called as methods if possible\n if (isFunction(this[match])) {\n this[match](context[match]);\n\n // ...and otherwise set as attributes\n } else {\n this.attr(match, context[match]);\n }\n }\n }\n return this;\n\n // HANDLE: $(#id)\n } else {\n elem = document.getElementById(match[2]);\n if (elem) {\n // Inject the element directly into the jQuery object\n this[0] = elem;\n this.length = 1;\n }\n return this;\n }\n\n // HANDLE: $(expr, $(...))\n } else if (!context || context.jquery) {\n return (context || root).find(selector);\n\n // HANDLE: $(expr, context)\n // (which is just equivalent to: $(context).find(expr)\n } else {\n return this.constructor(context).find(selector);\n }\n\n // HANDLE: $(DOMElement)\n } else if (selector.nodeType) {\n this[0] = selector;\n this.length = 1;\n return this;\n\n // HANDLE: $(function)\n // Shortcut for document ready\n } else if (isFunction(selector)) {\n return root.ready !== undefined ? root.ready(selector) :\n // Execute immediately if ready is not present\n selector(jQuery);\n }\n return jQuery.makeArray(selector, this);\n };\n\n // Give the init function the jQuery prototype for later instantiation\n init.prototype = jQuery.fn;\n\n // Initialize central reference\n rootjQuery = jQuery(document);\n var rparentsprev = /^(?:parents|prev(?:Until|All))/,\n // Methods guaranteed to produce a unique set when starting from a unique set\n guaranteedUnique = {\n children: true,\n contents: true,\n next: true,\n prev: true\n };\n jQuery.fn.extend({\n has: function (target) {\n var targets = jQuery(target, this),\n l = targets.length;\n return this.filter(function () {\n var i = 0;\n for (; i < l; i++) {\n if (jQuery.contains(this, targets[i])) {\n return true;\n }\n }\n });\n },\n closest: function (selectors, context) {\n var cur,\n i = 0,\n l = this.length,\n matched = [],\n targets = typeof selectors !== \"string\" && jQuery(selectors);\n\n // Positional selectors never match, since there's no _selection_ context\n if (!rneedsContext.test(selectors)) {\n for (; i < l; i++) {\n for (cur = this[i]; cur && cur !== context; cur = cur.parentNode) {\n // Always skip document fragments\n if (cur.nodeType < 11 && (targets ? targets.index(cur) > -1 :\n // Don't pass non-elements to jQuery#find\n cur.nodeType === 1 && jQuery.find.matchesSelector(cur, selectors))) {\n matched.push(cur);\n break;\n }\n }\n }\n }\n return this.pushStack(matched.length > 1 ? jQuery.uniqueSort(matched) : matched);\n },\n // Determine the position of an element within the set\n index: function (elem) {\n // No argument, return index in parent\n if (!elem) {\n return this[0] && this[0].parentNode ? this.first().prevAll().length : -1;\n }\n\n // Index in selector\n if (typeof elem === \"string\") {\n return indexOf.call(jQuery(elem), this[0]);\n }\n\n // Locate the position of the desired element\n return indexOf.call(this,\n // If it receives a jQuery object, the first element is used\n elem.jquery ? elem[0] : elem);\n },\n add: function (selector, context) {\n return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(), jQuery(selector, context))));\n },\n addBack: function (selector) {\n return this.add(selector == null ? this.prevObject : this.prevObject.filter(selector));\n }\n });\n function sibling(cur, dir) {\n while ((cur = cur[dir]) && cur.nodeType !== 1) {}\n return cur;\n }\n jQuery.each({\n parent: function (elem) {\n var parent = elem.parentNode;\n return parent && parent.nodeType !== 11 ? parent : null;\n },\n parents: function (elem) {\n return dir(elem, \"parentNode\");\n },\n parentsUntil: function (elem, _i, until) {\n return dir(elem, \"parentNode\", until);\n },\n next: function (elem) {\n return sibling(elem, \"nextSibling\");\n },\n prev: function (elem) {\n return sibling(elem, \"previousSibling\");\n },\n nextAll: function (elem) {\n return dir(elem, \"nextSibling\");\n },\n prevAll: function (elem) {\n return dir(elem, \"previousSibling\");\n },\n nextUntil: function (elem, _i, until) {\n return dir(elem, \"nextSibling\", until);\n },\n prevUntil: function (elem, _i, until) {\n return dir(elem, \"previousSibling\", until);\n },\n siblings: function (elem) {\n return siblings((elem.parentNode || {}).firstChild, elem);\n },\n children: function (elem) {\n return siblings(elem.firstChild);\n },\n contents: function (elem) {\n if (elem.contentDocument != null &&\n // Support: IE 11+\n // <object> elements with no `data` attribute has an object\n // `contentDocument` with a `null` prototype.\n getProto(elem.contentDocument)) {\n return elem.contentDocument;\n }\n\n // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n // Treat the template element as a regular one in browsers that\n // don't support it.\n if (nodeName(elem, \"template\")) {\n elem = elem.content || elem;\n }\n return jQuery.merge([], elem.childNodes);\n }\n }, function (name, fn) {\n jQuery.fn[name] = function (until, selector) {\n var matched = jQuery.map(this, fn, until);\n if (name.slice(-5) !== \"Until\") {\n selector = until;\n }\n if (selector && typeof selector === \"string\") {\n matched = jQuery.filter(selector, matched);\n }\n if (this.length > 1) {\n // Remove duplicates\n if (!guaranteedUnique[name]) {\n jQuery.uniqueSort(matched);\n }\n\n // Reverse order for parents* and prev-derivatives\n if (rparentsprev.test(name)) {\n matched.reverse();\n }\n }\n return this.pushStack(matched);\n };\n });\n var rnothtmlwhite = /[^\\x20\\t\\r\\n\\f]+/g;\n\n // Convert String-formatted options into Object-formatted ones\n function createOptions(options) {\n var object = {};\n jQuery.each(options.match(rnothtmlwhite) || [], function (_, flag) {\n object[flag] = true;\n });\n return object;\n }\n\n /*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\n jQuery.Callbacks = function (options) {\n // Convert options from String-formatted to Object-formatted if needed\n // (we check in cache first)\n options = typeof options === \"string\" ? createOptions(options) : jQuery.extend({}, options);\n var\n // Flag to know if list is currently firing\n firing,\n // Last fire value for non-forgettable lists\n memory,\n // Flag to know if list was already fired\n fired,\n // Flag to prevent firing\n locked,\n // Actual callback list\n list = [],\n // Queue of execution data for repeatable lists\n queue = [],\n // Index of currently firing callback (modified by add/remove as needed)\n firingIndex = -1,\n // Fire callbacks\n fire = function () {\n // Enforce single-firing\n locked = locked || options.once;\n\n // Execute callbacks for all pending executions,\n // respecting firingIndex overrides and runtime changes\n fired = firing = true;\n for (; queue.length; firingIndex = -1) {\n memory = queue.shift();\n while (++firingIndex < list.length) {\n // Run callback and check for early termination\n if (list[firingIndex].apply(memory[0], memory[1]) === false && options.stopOnFalse) {\n // Jump to end and forget the data so .add doesn't re-fire\n firingIndex = list.length;\n memory = false;\n }\n }\n }\n\n // Forget the data if we're done with it\n if (!options.memory) {\n memory = false;\n }\n firing = false;\n\n // Clean up if we're done firing for good\n if (locked) {\n // Keep an empty list if we have data for future add calls\n if (memory) {\n list = [];\n\n // Otherwise, this object is spent\n } else {\n list = \"\";\n }\n }\n },\n // Actual Callbacks object\n self = {\n // Add a callback or a collection of callbacks to the list\n add: function () {\n if (list) {\n // If we have memory from a past run, we should fire after adding\n if (memory && !firing) {\n firingIndex = list.length - 1;\n queue.push(memory);\n }\n (function add(args) {\n jQuery.each(args, function (_, arg) {\n if (isFunction(arg)) {\n if (!options.unique || !self.has(arg)) {\n list.push(arg);\n }\n } else if (arg && arg.length && toType(arg) !== \"string\") {\n // Inspect recursively\n add(arg);\n }\n });\n })(arguments);\n if (memory && !firing) {\n fire();\n }\n }\n return this;\n },\n // Remove a callback from the list\n remove: function () {\n jQuery.each(arguments, function (_, arg) {\n var index;\n while ((index = jQuery.inArray(arg, list, index)) > -1) {\n list.splice(index, 1);\n\n // Handle firing indexes\n if (index <= firingIndex) {\n firingIndex--;\n }\n }\n });\n return this;\n },\n // Check if a given callback is in the list.\n // If no argument is given, return whether or not list has callbacks attached.\n has: function (fn) {\n return fn ? jQuery.inArray(fn, list) > -1 : list.length > 0;\n },\n // Remove all callbacks from the list\n empty: function () {\n if (list) {\n list = [];\n }\n return this;\n },\n // Disable .fire and .add\n // Abort any current/pending executions\n // Clear all callbacks and values\n disable: function () {\n locked = queue = [];\n list = memory = \"\";\n return this;\n },\n disabled: function () {\n return !list;\n },\n // Disable .fire\n // Also disable .add unless we have memory (since it would have no effect)\n // Abort any pending executions\n lock: function () {\n locked = queue = [];\n if (!memory && !firing) {\n list = memory = \"\";\n }\n return this;\n },\n locked: function () {\n return !!locked;\n },\n // Call all callbacks with the given context and arguments\n fireWith: function (context, args) {\n if (!locked) {\n args = args || [];\n args = [context, args.slice ? args.slice() : args];\n queue.push(args);\n if (!firing) {\n fire();\n }\n }\n return this;\n },\n // Call all the callbacks with the given arguments\n fire: function () {\n self.fireWith(this, arguments);\n return this;\n },\n // To know if the callbacks have already been called at least once\n fired: function () {\n return !!fired;\n }\n };\n return self;\n };\n function Identity(v) {\n return v;\n }\n function Thrower(ex) {\n throw ex;\n }\n function adoptValue(value, resolve, reject, noValue) {\n var method;\n try {\n // Check for promise aspect first to privilege synchronous behavior\n if (value && isFunction(method = value.promise)) {\n method.call(value).done(resolve).fail(reject);\n\n // Other thenables\n } else if (value && isFunction(method = value.then)) {\n method.call(value, resolve, reject);\n\n // Other non-thenables\n } else {\n // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n // * false: [ value ].slice( 0 ) => resolve( value )\n // * true: [ value ].slice( 1 ) => resolve()\n resolve.apply(undefined, [value].slice(noValue));\n }\n\n // For Promises/A+, convert exceptions into rejections\n // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n // Deferred#then to conditionally suppress rejection.\n } catch (value) {\n // Support: Android 4.0 only\n // Strict mode functions invoked without .call/.apply get global-object context\n reject.apply(undefined, [value]);\n }\n }\n jQuery.extend({\n Deferred: function (func) {\n var tuples = [\n // action, add listener, callbacks,\n // ... .then handlers, argument index, [final state]\n [\"notify\", \"progress\", jQuery.Callbacks(\"memory\"), jQuery.Callbacks(\"memory\"), 2], [\"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), jQuery.Callbacks(\"once memory\"), 0, \"resolved\"], [\"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), jQuery.Callbacks(\"once memory\"), 1, \"rejected\"]],\n state = \"pending\",\n promise = {\n state: function () {\n return state;\n },\n always: function () {\n deferred.done(arguments).fail(arguments);\n return this;\n },\n \"catch\": function (fn) {\n return promise.then(null, fn);\n },\n // Keep pipe for back-compat\n pipe: function /* fnDone, fnFail, fnProgress */\n () {\n var fns = arguments;\n return jQuery.Deferred(function (newDefer) {\n jQuery.each(tuples, function (_i, tuple) {\n // Map tuples (progress, done, fail) to arguments (done, fail, progress)\n var fn = isFunction(fns[tuple[4]]) && fns[tuple[4]];\n\n // deferred.progress(function() { bind to newDefer or newDefer.notify })\n // deferred.done(function() { bind to newDefer or newDefer.resolve })\n // deferred.fail(function() { bind to newDefer or newDefer.reject })\n deferred[tuple[1]](function () {\n var returned = fn && fn.apply(this, arguments);\n if (returned && isFunction(returned.promise)) {\n returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject);\n } else {\n newDefer[tuple[0] + \"With\"](this, fn ? [returned] : arguments);\n }\n });\n });\n fns = null;\n }).promise();\n },\n then: function (onFulfilled, onRejected, onProgress) {\n var maxDepth = 0;\n function resolve(depth, deferred, handler, special) {\n return function () {\n var that = this,\n args = arguments,\n mightThrow = function () {\n var returned, then;\n\n // Support: Promises/A+ section 2.3.3.3.3\n // https://promisesaplus.com/#point-59\n // Ignore double-resolution attempts\n if (depth < maxDepth) {\n return;\n }\n returned = handler.apply(that, args);\n\n // Support: Promises/A+ section 2.3.1\n // https://promisesaplus.com/#point-48\n if (returned === deferred.promise()) {\n throw new TypeError(\"Thenable self-resolution\");\n }\n\n // Support: Promises/A+ sections 2.3.3.1, 3.5\n // https://promisesaplus.com/#point-54\n // https://promisesaplus.com/#point-75\n // Retrieve `then` only once\n then = returned && (\n // Support: Promises/A+ section 2.3.4\n // https://promisesaplus.com/#point-64\n // Only check objects and functions for thenability\n typeof returned === \"object\" || typeof returned === \"function\") && returned.then;\n\n // Handle a returned thenable\n if (isFunction(then)) {\n // Special processors (notify) just wait for resolution\n if (special) {\n then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special));\n\n // Normal processors (resolve) also hook into progress\n } else {\n // ...and disregard older resolution values\n maxDepth++;\n then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special), resolve(maxDepth, deferred, Identity, deferred.notifyWith));\n }\n\n // Handle all other returned values\n } else {\n // Only substitute handlers pass on context\n // and multiple values (non-spec behavior)\n if (handler !== Identity) {\n that = undefined;\n args = [returned];\n }\n\n // Process the value(s)\n // Default process is resolve\n (special || deferred.resolveWith)(that, args);\n }\n },\n // Only normal processors (resolve) catch and reject exceptions\n process = special ? mightThrow : function () {\n try {\n mightThrow();\n } catch (e) {\n if (jQuery.Deferred.exceptionHook) {\n jQuery.Deferred.exceptionHook(e, process.error);\n }\n\n // Support: Promises/A+ section 2.3.3.3.4.1\n // https://promisesaplus.com/#point-61\n // Ignore post-resolution exceptions\n if (depth + 1 >= maxDepth) {\n // Only substitute handlers pass on context\n // and multiple values (non-spec behavior)\n if (handler !== Thrower) {\n that = undefined;\n args = [e];\n }\n deferred.rejectWith(that, args);\n }\n }\n };\n\n // Support: Promises/A+ section 2.3.3.3.1\n // https://promisesaplus.com/#point-57\n // Re-resolve promises immediately to dodge false rejection from\n // subsequent errors\n if (depth) {\n process();\n } else {\n // Call an optional hook to record the error, in case of exception\n // since it's otherwise lost when execution goes async\n if (jQuery.Deferred.getErrorHook) {\n process.error = jQuery.Deferred.getErrorHook();\n\n // The deprecated alias of the above. While the name suggests\n // returning the stack, not an error instance, jQuery just passes\n // it directly to `console.warn` so both will work; an instance\n // just better cooperates with source maps.\n } else if (jQuery.Deferred.getStackHook) {\n process.error = jQuery.Deferred.getStackHook();\n }\n window.setTimeout(process);\n }\n };\n }\n return jQuery.Deferred(function (newDefer) {\n // progress_handlers.add( ... )\n tuples[0][3].add(resolve(0, newDefer, isFunction(onProgress) ? onProgress : Identity, newDefer.notifyWith));\n\n // fulfilled_handlers.add( ... )\n tuples[1][3].add(resolve(0, newDefer, isFunction(onFulfilled) ? onFulfilled : Identity));\n\n // rejected_handlers.add( ... )\n tuples[2][3].add(resolve(0, newDefer, isFunction(onRejected) ? onRejected : Thrower));\n }).promise();\n },\n // Get a promise for this deferred\n // If obj is provided, the promise aspect is added to the object\n promise: function (obj) {\n return obj != null ? jQuery.extend(obj, promise) : promise;\n }\n },\n deferred = {};\n\n // Add list-specific methods\n jQuery.each(tuples, function (i, tuple) {\n var list = tuple[2],\n stateString = tuple[5];\n\n // promise.progress = list.add\n // promise.done = list.add\n // promise.fail = list.add\n promise[tuple[1]] = list.add;\n\n // Handle state\n if (stateString) {\n list.add(function () {\n // state = \"resolved\" (i.e., fulfilled)\n // state = \"rejected\"\n state = stateString;\n },\n // rejected_callbacks.disable\n // fulfilled_callbacks.disable\n tuples[3 - i][2].disable,\n // rejected_handlers.disable\n // fulfilled_handlers.disable\n tuples[3 - i][3].disable,\n // progress_callbacks.lock\n tuples[0][2].lock,\n // progress_handlers.lock\n tuples[0][3].lock);\n }\n\n // progress_handlers.fire\n // fulfilled_handlers.fire\n // rejected_handlers.fire\n list.add(tuple[3].fire);\n\n // deferred.notify = function() { deferred.notifyWith(...) }\n // deferred.resolve = function() { deferred.resolveWith(...) }\n // deferred.reject = function() { deferred.rejectWith(...) }\n deferred[tuple[0]] = function () {\n deferred[tuple[0] + \"With\"](this === deferred ? undefined : this, arguments);\n return this;\n };\n\n // deferred.notifyWith = list.fireWith\n // deferred.resolveWith = list.fireWith\n // deferred.rejectWith = list.fireWith\n deferred[tuple[0] + \"With\"] = list.fireWith;\n });\n\n // Make the deferred a promise\n promise.promise(deferred);\n\n // Call given func if any\n if (func) {\n func.call(deferred, deferred);\n }\n\n // All done!\n return deferred;\n },\n // Deferred helper\n when: function (singleValue) {\n var\n // count of uncompleted subordinates\n remaining = arguments.length,\n // count of unprocessed arguments\n i = remaining,\n // subordinate fulfillment data\n resolveContexts = Array(i),\n resolveValues = slice.call(arguments),\n // the primary Deferred\n primary = jQuery.Deferred(),\n // subordinate callback factory\n updateFunc = function (i) {\n return function (value) {\n resolveContexts[i] = this;\n resolveValues[i] = arguments.length > 1 ? slice.call(arguments) : value;\n if (! --remaining) {\n primary.resolveWith(resolveContexts, resolveValues);\n }\n };\n };\n\n // Single- and empty arguments are adopted like Promise.resolve\n if (remaining <= 1) {\n adoptValue(singleValue, primary.done(updateFunc(i)).resolve, primary.reject, !remaining);\n\n // Use .then() to unwrap secondary thenables (cf. gh-3000)\n if (primary.state() === \"pending\" || isFunction(resolveValues[i] && resolveValues[i].then)) {\n return primary.then();\n }\n }\n\n // Multiple arguments are aggregated like Promise.all array elements\n while (i--) {\n adoptValue(resolveValues[i], updateFunc(i), primary.reject);\n }\n return primary.promise();\n }\n });\n\n // These usually indicate a programmer mistake during development,\n // warn about them ASAP rather than swallowing them by default.\n var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n // If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error\n // captured before the async barrier to get the original error cause\n // which may otherwise be hidden.\n jQuery.Deferred.exceptionHook = function (error, asyncError) {\n // Support: IE 8 - 9 only\n // Console exists when dev tools are open, which can happen at any time\n if (window.console && window.console.warn && error && rerrorNames.test(error.name)) {\n window.console.warn(\"jQuery.Deferred exception: \" + error.message, error.stack, asyncError);\n }\n };\n jQuery.readyException = function (error) {\n window.setTimeout(function () {\n throw error;\n });\n };\n\n // The deferred used on DOM ready\n var readyList = jQuery.Deferred();\n jQuery.fn.ready = function (fn) {\n readyList.then(fn)\n\n // Wrap jQuery.readyException in a function so that the lookup\n // happens at the time of error handling instead of callback\n // registration.\n .catch(function (error) {\n jQuery.readyException(error);\n });\n return this;\n };\n jQuery.extend({\n // Is the DOM ready to be used? Set to true once it occurs.\n isReady: false,\n // A counter to track how many items to wait for before\n // the ready event fires. See trac-6781\n readyWait: 1,\n // Handle when the DOM is ready\n ready: function (wait) {\n // Abort if there are pending holds or we're already ready\n if (wait === true ? --jQuery.readyWait : jQuery.isReady) {\n return;\n }\n\n // Remember that the DOM is ready\n jQuery.isReady = true;\n\n // If a normal DOM Ready event fired, decrement, and wait if need be\n if (wait !== true && --jQuery.readyWait > 0) {\n return;\n }\n\n // If there are functions bound, to execute\n readyList.resolveWith(document, [jQuery]);\n }\n });\n jQuery.ready.then = readyList.then;\n\n // The ready event handler and self cleanup method\n function completed() {\n document.removeEventListener(\"DOMContentLoaded\", completed);\n window.removeEventListener(\"load\", completed);\n jQuery.ready();\n }\n\n // Catch cases where $(document).ready() is called\n // after the browser event has already occurred.\n // Support: IE <=9 - 10 only\n // Older IE sometimes signals \"interactive\" too soon\n if (document.readyState === \"complete\" || document.readyState !== \"loading\" && !document.documentElement.doScroll) {\n // Handle it asynchronously to allow scripts the opportunity to delay ready\n window.setTimeout(jQuery.ready);\n } else {\n // Use the handy event callback\n document.addEventListener(\"DOMContentLoaded\", completed);\n\n // A fallback to window.onload, that will always work\n window.addEventListener(\"load\", completed);\n }\n\n // Multifunctional method to get and set values of a collection\n // The value/s can optionally be executed if it's a function\n var access = function (elems, fn, key, value, chainable, emptyGet, raw) {\n var i = 0,\n len = elems.length,\n bulk = key == null;\n\n // Sets many values\n if (toType(key) === \"object\") {\n chainable = true;\n for (i in key) {\n access(elems, fn, i, key[i], true, emptyGet, raw);\n }\n\n // Sets one value\n } else if (value !== undefined) {\n chainable = true;\n if (!isFunction(value)) {\n raw = true;\n }\n if (bulk) {\n // Bulk operations run against the entire set\n if (raw) {\n fn.call(elems, value);\n fn = null;\n\n // ...except when executing function values\n } else {\n bulk = fn;\n fn = function (elem, _key, value) {\n return bulk.call(jQuery(elem), value);\n };\n }\n }\n if (fn) {\n for (; i < len; i++) {\n fn(elems[i], key, raw ? value : value.call(elems[i], i, fn(elems[i], key)));\n }\n }\n }\n if (chainable) {\n return elems;\n }\n\n // Gets\n if (bulk) {\n return fn.call(elems);\n }\n return len ? fn(elems[0], key) : emptyGet;\n };\n\n // Matches dashed string for camelizing\n var rmsPrefix = /^-ms-/,\n rdashAlpha = /-([a-z])/g;\n\n // Used by camelCase as callback to replace()\n function fcamelCase(_all, letter) {\n return letter.toUpperCase();\n }\n\n // Convert dashed to camelCase; used by the css and data modules\n // Support: IE <=9 - 11, Edge 12 - 15\n // Microsoft forgot to hump their vendor prefix (trac-9572)\n function camelCase(string) {\n return string.replace(rmsPrefix, \"ms-\").replace(rdashAlpha, fcamelCase);\n }\n var acceptData = function (owner) {\n // Accepts only:\n // - Node\n // - Node.ELEMENT_NODE\n // - Node.DOCUMENT_NODE\n // - Object\n // - Any\n return owner.nodeType === 1 || owner.nodeType === 9 || !+owner.nodeType;\n };\n function Data() {\n this.expando = jQuery.expando + Data.uid++;\n }\n Data.uid = 1;\n Data.prototype = {\n cache: function (owner) {\n // Check if the owner object already has a cache\n var value = owner[this.expando];\n\n // If not, create one\n if (!value) {\n value = {};\n\n // We can accept data for non-element nodes in modern browsers,\n // but we should not, see trac-8335.\n // Always return an empty object.\n if (acceptData(owner)) {\n // If it is a node unlikely to be stringify-ed or looped over\n // use plain assignment\n if (owner.nodeType) {\n owner[this.expando] = value;\n\n // Otherwise secure it in a non-enumerable property\n // configurable must be true to allow the property to be\n // deleted when data is removed\n } else {\n Object.defineProperty(owner, this.expando, {\n value: value,\n configurable: true\n });\n }\n }\n }\n return value;\n },\n set: function (owner, data, value) {\n var prop,\n cache = this.cache(owner);\n\n // Handle: [ owner, key, value ] args\n // Always use camelCase key (gh-2257)\n if (typeof data === \"string\") {\n cache[camelCase(data)] = value;\n\n // Handle: [ owner, { properties } ] args\n } else {\n // Copy the properties one-by-one to the cache object\n for (prop in data) {\n cache[camelCase(prop)] = data[prop];\n }\n }\n return cache;\n },\n get: function (owner, key) {\n return key === undefined ? this.cache(owner) :\n // Always use camelCase key (gh-2257)\n owner[this.expando] && owner[this.expando][camelCase(key)];\n },\n access: function (owner, key, value) {\n // In cases where either:\n //\n // 1. No key was specified\n // 2. A string key was specified, but no value provided\n //\n // Take the \"read\" path and allow the get method to determine\n // which value to return, respectively either:\n //\n // 1. The entire cache object\n // 2. The data stored at the key\n //\n if (key === undefined || key && typeof key === \"string\" && value === undefined) {\n return this.get(owner, key);\n }\n\n // When the key is not a string, or both a key and value\n // are specified, set or extend (existing objects) with either:\n //\n // 1. An object of properties\n // 2. A key and value\n //\n this.set(owner, key, value);\n\n // Since the \"set\" path can have two possible entry points\n // return the expected data based on which path was taken[*]\n return value !== undefined ? value : key;\n },\n remove: function (owner, key) {\n var i,\n cache = owner[this.expando];\n if (cache === undefined) {\n return;\n }\n if (key !== undefined) {\n // Support array or space separated string of keys\n if (Array.isArray(key)) {\n // If key is an array of keys...\n // We always set camelCase keys, so remove that.\n key = key.map(camelCase);\n } else {\n key = camelCase(key);\n\n // If a key with the spaces exists, use it.\n // Otherwise, create an array by matching non-whitespace\n key = key in cache ? [key] : key.match(rnothtmlwhite) || [];\n }\n i = key.length;\n while (i--) {\n delete cache[key[i]];\n }\n }\n\n // Remove the expando if there's no more data\n if (key === undefined || jQuery.isEmptyObject(cache)) {\n // Support: Chrome <=35 - 45\n // Webkit & Blink performance suffers when deleting properties\n // from DOM nodes, so set to undefined instead\n // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n if (owner.nodeType) {\n owner[this.expando] = undefined;\n } else {\n delete owner[this.expando];\n }\n }\n },\n hasData: function (owner) {\n var cache = owner[this.expando];\n return cache !== undefined && !jQuery.isEmptyObject(cache);\n }\n };\n var dataPriv = new Data();\n var dataUser = new Data();\n\n //\tImplementation Summary\n //\n //\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n //\t2. Improve the module's maintainability by reducing the storage\n //\t\tpaths to a single mechanism.\n //\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n //\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n //\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n //\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\n var rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n rmultiDash = /[A-Z]/g;\n function getData(data) {\n if (data === \"true\") {\n return true;\n }\n if (data === \"false\") {\n return false;\n }\n if (data === \"null\") {\n return null;\n }\n\n // Only convert to a number if it doesn't change the string\n if (data === +data + \"\") {\n return +data;\n }\n if (rbrace.test(data)) {\n return JSON.parse(data);\n }\n return data;\n }\n function dataAttr(elem, key, data) {\n var name;\n\n // If nothing was found internally, try to fetch any\n // data from the HTML5 data-* attribute\n if (data === undefined && elem.nodeType === 1) {\n name = \"data-\" + key.replace(rmultiDash, \"-$&\").toLowerCase();\n data = elem.getAttribute(name);\n if (typeof data === \"string\") {\n try {\n data = getData(data);\n } catch (e) {}\n\n // Make sure we set the data so it isn't changed later\n dataUser.set(elem, key, data);\n } else {\n data = undefined;\n }\n }\n return data;\n }\n jQuery.extend({\n hasData: function (elem) {\n return dataUser.hasData(elem) || dataPriv.hasData(elem);\n },\n data: function (elem, name, data) {\n return dataUser.access(elem, name, data);\n },\n removeData: function (elem, name) {\n dataUser.remove(elem, name);\n },\n // TODO: Now that all calls to _data and _removeData have been replaced\n // with direct calls to dataPriv methods, these can be deprecated.\n _data: function (elem, name, data) {\n return dataPriv.access(elem, name, data);\n },\n _removeData: function (elem, name) {\n dataPriv.remove(elem, name);\n }\n });\n jQuery.fn.extend({\n data: function (key, value) {\n var i,\n name,\n data,\n elem = this[0],\n attrs = elem && elem.attributes;\n\n // Gets all values\n if (key === undefined) {\n if (this.length) {\n data = dataUser.get(elem);\n if (elem.nodeType === 1 && !dataPriv.get(elem, \"hasDataAttrs\")) {\n i = attrs.length;\n while (i--) {\n // Support: IE 11 only\n // The attrs elements can be null (trac-14894)\n if (attrs[i]) {\n name = attrs[i].name;\n if (name.indexOf(\"data-\") === 0) {\n name = camelCase(name.slice(5));\n dataAttr(elem, name, data[name]);\n }\n }\n }\n dataPriv.set(elem, \"hasDataAttrs\", true);\n }\n }\n return data;\n }\n\n // Sets multiple values\n if (typeof key === \"object\") {\n return this.each(function () {\n dataUser.set(this, key);\n });\n }\n return access(this, function (value) {\n var data;\n\n // The calling jQuery object (element matches) is not empty\n // (and therefore has an element appears at this[ 0 ]) and the\n // `value` parameter was not undefined. An empty jQuery object\n // will result in `undefined` for elem = this[ 0 ] which will\n // throw an exception if an attempt to read a data cache is made.\n if (elem && value === undefined) {\n // Attempt to get data from the cache\n // The key will always be camelCased in Data\n data = dataUser.get(elem, key);\n if (data !== undefined) {\n return data;\n }\n\n // Attempt to \"discover\" the data in\n // HTML5 custom data-* attrs\n data = dataAttr(elem, key);\n if (data !== undefined) {\n return data;\n }\n\n // We tried really hard, but the data doesn't exist.\n return;\n }\n\n // Set the data...\n this.each(function () {\n // We always store the camelCased key\n dataUser.set(this, key, value);\n });\n }, null, value, arguments.length > 1, null, true);\n },\n removeData: function (key) {\n return this.each(function () {\n dataUser.remove(this, key);\n });\n }\n });\n jQuery.extend({\n queue: function (elem, type, data) {\n var queue;\n if (elem) {\n type = (type || \"fx\") + \"queue\";\n queue = dataPriv.get(elem, type);\n\n // Speed up dequeue by getting out quickly if this is just a lookup\n if (data) {\n if (!queue || Array.isArray(data)) {\n queue = dataPriv.access(elem, type, jQuery.makeArray(data));\n } else {\n queue.push(data);\n }\n }\n return queue || [];\n }\n },\n dequeue: function (elem, type) {\n type = type || \"fx\";\n var queue = jQuery.queue(elem, type),\n startLength = queue.length,\n fn = queue.shift(),\n hooks = jQuery._queueHooks(elem, type),\n next = function () {\n jQuery.dequeue(elem, type);\n };\n\n // If the fx queue is dequeued, always remove the progress sentinel\n if (fn === \"inprogress\") {\n fn = queue.shift();\n startLength--;\n }\n if (fn) {\n // Add a progress sentinel to prevent the fx queue from being\n // automatically dequeued\n if (type === \"fx\") {\n queue.unshift(\"inprogress\");\n }\n\n // Clear up the last queue stop function\n delete hooks.stop;\n fn.call(elem, next, hooks);\n }\n if (!startLength && hooks) {\n hooks.empty.fire();\n }\n },\n // Not public - generate a queueHooks object, or return the current one\n _queueHooks: function (elem, type) {\n var key = type + \"queueHooks\";\n return dataPriv.get(elem, key) || dataPriv.access(elem, key, {\n empty: jQuery.Callbacks(\"once memory\").add(function () {\n dataPriv.remove(elem, [type + \"queue\", key]);\n })\n });\n }\n });\n jQuery.fn.extend({\n queue: function (type, data) {\n var setter = 2;\n if (typeof type !== \"string\") {\n data = type;\n type = \"fx\";\n setter--;\n }\n if (arguments.length < setter) {\n return jQuery.queue(this[0], type);\n }\n return data === undefined ? this : this.each(function () {\n var queue = jQuery.queue(this, type, data);\n\n // Ensure a hooks for this queue\n jQuery._queueHooks(this, type);\n if (type === \"fx\" && queue[0] !== \"inprogress\") {\n jQuery.dequeue(this, type);\n }\n });\n },\n dequeue: function (type) {\n return this.each(function () {\n jQuery.dequeue(this, type);\n });\n },\n clearQueue: function (type) {\n return this.queue(type || \"fx\", []);\n },\n // Get a promise resolved when queues of a certain type\n // are emptied (fx is the type by default)\n promise: function (type, obj) {\n var tmp,\n count = 1,\n defer = jQuery.Deferred(),\n elements = this,\n i = this.length,\n resolve = function () {\n if (! --count) {\n defer.resolveWith(elements, [elements]);\n }\n };\n if (typeof type !== \"string\") {\n obj = type;\n type = undefined;\n }\n type = type || \"fx\";\n while (i--) {\n tmp = dataPriv.get(elements[i], type + \"queueHooks\");\n if (tmp && tmp.empty) {\n count++;\n tmp.empty.add(resolve);\n }\n }\n resolve();\n return defer.promise(obj);\n }\n });\n var pnum = /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source;\n var rcssNum = new RegExp(\"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\");\n var cssExpand = [\"Top\", \"Right\", \"Bottom\", \"Left\"];\n var documentElement = document.documentElement;\n var isAttached = function (elem) {\n return jQuery.contains(elem.ownerDocument, elem);\n },\n composed = {\n composed: true\n };\n\n // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n // Check attachment across shadow DOM boundaries when possible (gh-3504)\n // Support: iOS 10.0-10.2 only\n // Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n // leading to errors. We need to check for `getRootNode`.\n if (documentElement.getRootNode) {\n isAttached = function (elem) {\n return jQuery.contains(elem.ownerDocument, elem) || elem.getRootNode(composed) === elem.ownerDocument;\n };\n }\n var isHiddenWithinTree = function (elem, el) {\n // isHiddenWithinTree might be called from jQuery#filter function;\n // in that case, element will be second argument\n elem = el || elem;\n\n // Inline style trumps all\n return elem.style.display === \"none\" || elem.style.display === \"\" &&\n // Otherwise, check computed style\n // Support: Firefox <=43 - 45\n // Disconnected elements can have computed display: none, so first confirm that elem is\n // in the document.\n isAttached(elem) && jQuery.css(elem, \"display\") === \"none\";\n };\n function adjustCSS(elem, prop, valueParts, tween) {\n var adjusted,\n scale,\n maxIterations = 20,\n currentValue = tween ? function () {\n return tween.cur();\n } : function () {\n return jQuery.css(elem, prop, \"\");\n },\n initial = currentValue(),\n unit = valueParts && valueParts[3] || (jQuery.cssNumber[prop] ? \"\" : \"px\"),\n // Starting value computation is required for potential unit mismatches\n initialInUnit = elem.nodeType && (jQuery.cssNumber[prop] || unit !== \"px\" && +initial) && rcssNum.exec(jQuery.css(elem, prop));\n if (initialInUnit && initialInUnit[3] !== unit) {\n // Support: Firefox <=54\n // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n initial = initial / 2;\n\n // Trust units reported by jQuery.css\n unit = unit || initialInUnit[3];\n\n // Iteratively approximate from a nonzero starting point\n initialInUnit = +initial || 1;\n while (maxIterations--) {\n // Evaluate and update our best guess (doubling guesses that zero out).\n // Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n jQuery.style(elem, prop, initialInUnit + unit);\n if ((1 - scale) * (1 - (scale = currentValue() / initial || 0.5)) <= 0) {\n maxIterations = 0;\n }\n initialInUnit = initialInUnit / scale;\n }\n initialInUnit = initialInUnit * 2;\n jQuery.style(elem, prop, initialInUnit + unit);\n\n // Make sure we update the tween properties later on\n valueParts = valueParts || [];\n }\n if (valueParts) {\n initialInUnit = +initialInUnit || +initial || 0;\n\n // Apply relative offset (+=/-=) if specified\n adjusted = valueParts[1] ? initialInUnit + (valueParts[1] + 1) * valueParts[2] : +valueParts[2];\n if (tween) {\n tween.unit = unit;\n tween.start = initialInUnit;\n tween.end = adjusted;\n }\n }\n return adjusted;\n }\n var defaultDisplayMap = {};\n function getDefaultDisplay(elem) {\n var temp,\n doc = elem.ownerDocument,\n nodeName = elem.nodeName,\n display = defaultDisplayMap[nodeName];\n if (display) {\n return display;\n }\n temp = doc.body.appendChild(doc.createElement(nodeName));\n display = jQuery.css(temp, \"display\");\n temp.parentNode.removeChild(temp);\n if (display === \"none\") {\n display = \"block\";\n }\n defaultDisplayMap[nodeName] = display;\n return display;\n }\n function showHide(elements, show) {\n var display,\n elem,\n values = [],\n index = 0,\n length = elements.length;\n\n // Determine new display value for elements that need to change\n for (; index < length; index++) {\n elem = elements[index];\n if (!elem.style) {\n continue;\n }\n display = elem.style.display;\n if (show) {\n // Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n // check is required in this first loop unless we have a nonempty display value (either\n // inline or about-to-be-restored)\n if (display === \"none\") {\n values[index] = dataPriv.get(elem, \"display\") || null;\n if (!values[index]) {\n elem.style.display = \"\";\n }\n }\n if (elem.style.display === \"\" && isHiddenWithinTree(elem)) {\n values[index] = getDefaultDisplay(elem);\n }\n } else {\n if (display !== \"none\") {\n values[index] = \"none\";\n\n // Remember what we're overwriting\n dataPriv.set(elem, \"display\", display);\n }\n }\n }\n\n // Set the display of the elements in a second loop to avoid constant reflow\n for (index = 0; index < length; index++) {\n if (values[index] != null) {\n elements[index].style.display = values[index];\n }\n }\n return elements;\n }\n jQuery.fn.extend({\n show: function () {\n return showHide(this, true);\n },\n hide: function () {\n return showHide(this);\n },\n toggle: function (state) {\n if (typeof state === \"boolean\") {\n return state ? this.show() : this.hide();\n }\n return this.each(function () {\n if (isHiddenWithinTree(this)) {\n jQuery(this).show();\n } else {\n jQuery(this).hide();\n }\n });\n }\n });\n var rcheckableType = /^(?:checkbox|radio)$/i;\n var rtagName = /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i;\n var rscriptType = /^$|^module$|\\/(?:java|ecma)script/i;\n (function () {\n var fragment = document.createDocumentFragment(),\n div = fragment.appendChild(document.createElement(\"div\")),\n input = document.createElement(\"input\");\n\n // Support: Android 4.0 - 4.3 only\n // Check state lost if the name is set (trac-11217)\n // Support: Windows Web Apps (WWA)\n // `name` and `type` must use .setAttribute for WWA (trac-14901)\n input.setAttribute(\"type\", \"radio\");\n input.setAttribute(\"checked\", \"checked\");\n input.setAttribute(\"name\", \"t\");\n div.appendChild(input);\n\n // Support: Android <=4.1 only\n // Older WebKit doesn't clone checked state correctly in fragments\n support.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked;\n\n // Support: IE <=11 only\n // Make sure textarea (and checkbox) defaultValue is properly cloned\n div.innerHTML = \"<textarea>x</textarea>\";\n support.noCloneChecked = !!div.cloneNode(true).lastChild.defaultValue;\n\n // Support: IE <=9 only\n // IE <=9 replaces <option> tags with their contents when inserted outside of\n // the select element.\n div.innerHTML = \"<option></option>\";\n support.option = !!div.lastChild;\n })();\n\n // We have to close these tags to support XHTML (trac-13200)\n var wrapMap = {\n // XHTML parsers do not magically insert elements in the\n // same way that tag soup parsers do. So we cannot shorten\n // this by omitting <tbody> or other required elements.\n thead: [1, \"<table>\", \"</table>\"],\n col: [2, \"<table><colgroup>\", \"</colgroup></table>\"],\n tr: [2, \"<table><tbody>\", \"</tbody></table>\"],\n td: [3, \"<table><tbody><tr>\", \"</tr></tbody></table>\"],\n _default: [0, \"\", \"\"]\n };\n wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\n wrapMap.th = wrapMap.td;\n\n // Support: IE <=9 only\n if (!support.option) {\n wrapMap.optgroup = wrapMap.option = [1, \"<select multiple='multiple'>\", \"</select>\"];\n }\n function getAll(context, tag) {\n // Support: IE <=9 - 11 only\n // Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n var ret;\n if (typeof context.getElementsByTagName !== \"undefined\") {\n ret = context.getElementsByTagName(tag || \"*\");\n } else if (typeof context.querySelectorAll !== \"undefined\") {\n ret = context.querySelectorAll(tag || \"*\");\n } else {\n ret = [];\n }\n if (tag === undefined || tag && nodeName(context, tag)) {\n return jQuery.merge([context], ret);\n }\n return ret;\n }\n\n // Mark scripts as having already been evaluated\n function setGlobalEval(elems, refElements) {\n var i = 0,\n l = elems.length;\n for (; i < l; i++) {\n dataPriv.set(elems[i], \"globalEval\", !refElements || dataPriv.get(refElements[i], \"globalEval\"));\n }\n }\n var rhtml = /<|&#?\\w+;/;\n function buildFragment(elems, context, scripts, selection, ignored) {\n var elem,\n tmp,\n tag,\n wrap,\n attached,\n j,\n fragment = context.createDocumentFragment(),\n nodes = [],\n i = 0,\n l = elems.length;\n for (; i < l; i++) {\n elem = elems[i];\n if (elem || elem === 0) {\n // Add nodes directly\n if (toType(elem) === \"object\") {\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n jQuery.merge(nodes, elem.nodeType ? [elem] : elem);\n\n // Convert non-html into a text node\n } else if (!rhtml.test(elem)) {\n nodes.push(context.createTextNode(elem));\n\n // Convert html into DOM nodes\n } else {\n tmp = tmp || fragment.appendChild(context.createElement(\"div\"));\n\n // Deserialize a standard representation\n tag = (rtagName.exec(elem) || [\"\", \"\"])[1].toLowerCase();\n wrap = wrapMap[tag] || wrapMap._default;\n tmp.innerHTML = wrap[1] + jQuery.htmlPrefilter(elem) + wrap[2];\n\n // Descend through wrappers to the right content\n j = wrap[0];\n while (j--) {\n tmp = tmp.lastChild;\n }\n\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n jQuery.merge(nodes, tmp.childNodes);\n\n // Remember the top-level container\n tmp = fragment.firstChild;\n\n // Ensure the created nodes are orphaned (trac-12392)\n tmp.textContent = \"\";\n }\n }\n }\n\n // Remove wrapper from fragment\n fragment.textContent = \"\";\n i = 0;\n while (elem = nodes[i++]) {\n // Skip elements already in the context collection (trac-4087)\n if (selection && jQuery.inArray(elem, selection) > -1) {\n if (ignored) {\n ignored.push(elem);\n }\n continue;\n }\n attached = isAttached(elem);\n\n // Append to fragment\n tmp = getAll(fragment.appendChild(elem), \"script\");\n\n // Preserve script evaluation history\n if (attached) {\n setGlobalEval(tmp);\n }\n\n // Capture executables\n if (scripts) {\n j = 0;\n while (elem = tmp[j++]) {\n if (rscriptType.test(elem.type || \"\")) {\n scripts.push(elem);\n }\n }\n }\n }\n return fragment;\n }\n var rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n function returnTrue() {\n return true;\n }\n function returnFalse() {\n return false;\n }\n function on(elem, types, selector, data, fn, one) {\n var origFn, type;\n\n // Types can be a map of types/handlers\n if (typeof types === \"object\") {\n // ( types-Object, selector, data )\n if (typeof selector !== \"string\") {\n // ( types-Object, data )\n data = data || selector;\n selector = undefined;\n }\n for (type in types) {\n on(elem, type, selector, data, types[type], one);\n }\n return elem;\n }\n if (data == null && fn == null) {\n // ( types, fn )\n fn = selector;\n data = selector = undefined;\n } else if (fn == null) {\n if (typeof selector === \"string\") {\n // ( types, selector, fn )\n fn = data;\n data = undefined;\n } else {\n // ( types, data, fn )\n fn = data;\n data = selector;\n selector = undefined;\n }\n }\n if (fn === false) {\n fn = returnFalse;\n } else if (!fn) {\n return elem;\n }\n if (one === 1) {\n origFn = fn;\n fn = function (event) {\n // Can use an empty set, since event contains the info\n jQuery().off(event);\n return origFn.apply(this, arguments);\n };\n\n // Use same guid so caller can remove using origFn\n fn.guid = origFn.guid || (origFn.guid = jQuery.guid++);\n }\n return elem.each(function () {\n jQuery.event.add(this, types, fn, data, selector);\n });\n }\n\n /*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\n jQuery.event = {\n global: {},\n add: function (elem, types, handler, data, selector) {\n var handleObjIn,\n eventHandle,\n tmp,\n events,\n t,\n handleObj,\n special,\n handlers,\n type,\n namespaces,\n origType,\n elemData = dataPriv.get(elem);\n\n // Only attach events to objects that accept data\n if (!acceptData(elem)) {\n return;\n }\n\n // Caller can pass in an object of custom data in lieu of the handler\n if (handler.handler) {\n handleObjIn = handler;\n handler = handleObjIn.handler;\n selector = handleObjIn.selector;\n }\n\n // Ensure that invalid selectors throw exceptions at attach time\n // Evaluate against documentElement in case elem is a non-element node (e.g., document)\n if (selector) {\n jQuery.find.matchesSelector(documentElement, selector);\n }\n\n // Make sure that the handler has a unique ID, used to find/remove it later\n if (!handler.guid) {\n handler.guid = jQuery.guid++;\n }\n\n // Init the element's event structure and main handler, if this is the first\n if (!(events = elemData.events)) {\n events = elemData.events = Object.create(null);\n }\n if (!(eventHandle = elemData.handle)) {\n eventHandle = elemData.handle = function (e) {\n // Discard the second event of a jQuery.event.trigger() and\n // when an event is called after a page has unloaded\n return typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ? jQuery.event.dispatch.apply(elem, arguments) : undefined;\n };\n }\n\n // Handle multiple events separated by a space\n types = (types || \"\").match(rnothtmlwhite) || [\"\"];\n t = types.length;\n while (t--) {\n tmp = rtypenamespace.exec(types[t]) || [];\n type = origType = tmp[1];\n namespaces = (tmp[2] || \"\").split(\".\").sort();\n\n // There *must* be a type, no attaching namespace-only handlers\n if (!type) {\n continue;\n }\n\n // If event changes its type, use the special event handlers for the changed type\n special = jQuery.event.special[type] || {};\n\n // If selector defined, determine special event api type, otherwise given type\n type = (selector ? special.delegateType : special.bindType) || type;\n\n // Update special based on newly reset type\n special = jQuery.event.special[type] || {};\n\n // handleObj is passed to all event handlers\n handleObj = jQuery.extend({\n type: type,\n origType: origType,\n data: data,\n handler: handler,\n guid: handler.guid,\n selector: selector,\n needsContext: selector && jQuery.expr.match.needsContext.test(selector),\n namespace: namespaces.join(\".\")\n }, handleObjIn);\n\n // Init the event handler queue if we're the first\n if (!(handlers = events[type])) {\n handlers = events[type] = [];\n handlers.delegateCount = 0;\n\n // Only use addEventListener if the special events handler returns false\n if (!special.setup || special.setup.call(elem, data, namespaces, eventHandle) === false) {\n if (elem.addEventListener) {\n elem.addEventListener(type, eventHandle);\n }\n }\n }\n if (special.add) {\n special.add.call(elem, handleObj);\n if (!handleObj.handler.guid) {\n handleObj.handler.guid = handler.guid;\n }\n }\n\n // Add to the element's handler list, delegates in front\n if (selector) {\n handlers.splice(handlers.delegateCount++, 0, handleObj);\n } else {\n handlers.push(handleObj);\n }\n\n // Keep track of which events have ever been used, for event optimization\n jQuery.event.global[type] = true;\n }\n },\n // Detach an event or set of events from an element\n remove: function (elem, types, handler, selector, mappedTypes) {\n var j,\n origCount,\n tmp,\n events,\n t,\n handleObj,\n special,\n handlers,\n type,\n namespaces,\n origType,\n elemData = dataPriv.hasData(elem) && dataPriv.get(elem);\n if (!elemData || !(events = elemData.events)) {\n return;\n }\n\n // Once for each type.namespace in types; type may be omitted\n types = (types || \"\").match(rnothtmlwhite) || [\"\"];\n t = types.length;\n while (t--) {\n tmp = rtypenamespace.exec(types[t]) || [];\n type = origType = tmp[1];\n namespaces = (tmp[2] || \"\").split(\".\").sort();\n\n // Unbind all events (on this namespace, if provided) for the element\n if (!type) {\n for (type in events) {\n jQuery.event.remove(elem, type + types[t], handler, selector, true);\n }\n continue;\n }\n special = jQuery.event.special[type] || {};\n type = (selector ? special.delegateType : special.bindType) || type;\n handlers = events[type] || [];\n tmp = tmp[2] && new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\");\n\n // Remove matching events\n origCount = j = handlers.length;\n while (j--) {\n handleObj = handlers[j];\n if ((mappedTypes || origType === handleObj.origType) && (!handler || handler.guid === handleObj.guid) && (!tmp || tmp.test(handleObj.namespace)) && (!selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector)) {\n handlers.splice(j, 1);\n if (handleObj.selector) {\n handlers.delegateCount--;\n }\n if (special.remove) {\n special.remove.call(elem, handleObj);\n }\n }\n }\n\n // Remove generic event handler if we removed something and no more handlers exist\n // (avoids potential for endless recursion during removal of special event handlers)\n if (origCount && !handlers.length) {\n if (!special.teardown || special.teardown.call(elem, namespaces, elemData.handle) === false) {\n jQuery.removeEvent(elem, type, elemData.handle);\n }\n delete events[type];\n }\n }\n\n // Remove data and the expando if it's no longer used\n if (jQuery.isEmptyObject(events)) {\n dataPriv.remove(elem, \"handle events\");\n }\n },\n dispatch: function (nativeEvent) {\n var i,\n j,\n ret,\n matched,\n handleObj,\n handlerQueue,\n args = new Array(arguments.length),\n // Make a writable jQuery.Event from the native event object\n event = jQuery.event.fix(nativeEvent),\n handlers = (dataPriv.get(this, \"events\") || Object.create(null))[event.type] || [],\n special = jQuery.event.special[event.type] || {};\n\n // Use the fix-ed jQuery.Event rather than the (read-only) native event\n args[0] = event;\n for (i = 1; i < arguments.length; i++) {\n args[i] = arguments[i];\n }\n event.delegateTarget = this;\n\n // Call the preDispatch hook for the mapped type, and let it bail if desired\n if (special.preDispatch && special.preDispatch.call(this, event) === false) {\n return;\n }\n\n // Determine handlers\n handlerQueue = jQuery.event.handlers.call(this, event, handlers);\n\n // Run delegates first; they may want to stop propagation beneath us\n i = 0;\n while ((matched = handlerQueue[i++]) && !event.isPropagationStopped()) {\n event.currentTarget = matched.elem;\n j = 0;\n while ((handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped()) {\n // If the event is namespaced, then each handler is only invoked if it is\n // specially universal or its namespaces are a superset of the event's.\n if (!event.rnamespace || handleObj.namespace === false || event.rnamespace.test(handleObj.namespace)) {\n event.handleObj = handleObj;\n event.data = handleObj.data;\n ret = ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args);\n if (ret !== undefined) {\n if ((event.result = ret) === false) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n }\n }\n\n // Call the postDispatch hook for the mapped type\n if (special.postDispatch) {\n special.postDispatch.call(this, event);\n }\n return event.result;\n },\n handlers: function (event, handlers) {\n var i,\n handleObj,\n sel,\n matchedHandlers,\n matchedSelectors,\n handlerQueue = [],\n delegateCount = handlers.delegateCount,\n cur = event.target;\n\n // Find delegate handlers\n if (delegateCount &&\n // Support: IE <=9\n // Black-hole SVG <use> instance trees (trac-13180)\n cur.nodeType &&\n // Support: Firefox <=42\n // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n // Support: IE 11 only\n // ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n !(event.type === \"click\" && event.button >= 1)) {\n for (; cur !== this; cur = cur.parentNode || this) {\n // Don't check non-elements (trac-13208)\n // Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n if (cur.nodeType === 1 && !(event.type === \"click\" && cur.disabled === true)) {\n matchedHandlers = [];\n matchedSelectors = {};\n for (i = 0; i < delegateCount; i++) {\n handleObj = handlers[i];\n\n // Don't conflict with Object.prototype properties (trac-13203)\n sel = handleObj.selector + \" \";\n if (matchedSelectors[sel] === undefined) {\n matchedSelectors[sel] = handleObj.needsContext ? jQuery(sel, this).index(cur) > -1 : jQuery.find(sel, this, null, [cur]).length;\n }\n if (matchedSelectors[sel]) {\n matchedHandlers.push(handleObj);\n }\n }\n if (matchedHandlers.length) {\n handlerQueue.push({\n elem: cur,\n handlers: matchedHandlers\n });\n }\n }\n }\n }\n\n // Add the remaining (directly-bound) handlers\n cur = this;\n if (delegateCount < handlers.length) {\n handlerQueue.push({\n elem: cur,\n handlers: handlers.slice(delegateCount)\n });\n }\n return handlerQueue;\n },\n addProp: function (name, hook) {\n Object.defineProperty(jQuery.Event.prototype, name, {\n enumerable: true,\n configurable: true,\n get: isFunction(hook) ? function () {\n if (this.originalEvent) {\n return hook(this.originalEvent);\n }\n } : function () {\n if (this.originalEvent) {\n return this.originalEvent[name];\n }\n },\n set: function (value) {\n Object.defineProperty(this, name, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: value\n });\n }\n });\n },\n fix: function (originalEvent) {\n return originalEvent[jQuery.expando] ? originalEvent : new jQuery.Event(originalEvent);\n },\n special: {\n load: {\n // Prevent triggered image.load events from bubbling to window.load\n noBubble: true\n },\n click: {\n // Utilize native event to ensure correct state for checkable inputs\n setup: function (data) {\n // For mutual compressibility with _default, replace `this` access with a local var.\n // `|| data` is dead code meant only to preserve the variable through minification.\n var el = this || data;\n\n // Claim the first handler\n if (rcheckableType.test(el.type) && el.click && nodeName(el, \"input\")) {\n // dataPriv.set( el, \"click\", ... )\n leverageNative(el, \"click\", true);\n }\n\n // Return false to allow normal processing in the caller\n return false;\n },\n trigger: function (data) {\n // For mutual compressibility with _default, replace `this` access with a local var.\n // `|| data` is dead code meant only to preserve the variable through minification.\n var el = this || data;\n\n // Force setup before triggering a click\n if (rcheckableType.test(el.type) && el.click && nodeName(el, \"input\")) {\n leverageNative(el, \"click\");\n }\n\n // Return non-false to allow normal event-path propagation\n return true;\n },\n // For cross-browser consistency, suppress native .click() on links\n // Also prevent it if we're currently inside a leveraged native-event stack\n _default: function (event) {\n var target = event.target;\n return rcheckableType.test(target.type) && target.click && nodeName(target, \"input\") && dataPriv.get(target, \"click\") || nodeName(target, \"a\");\n }\n },\n beforeunload: {\n postDispatch: function (event) {\n // Support: Firefox 20+\n // Firefox doesn't alert if the returnValue field is not set.\n if (event.result !== undefined && event.originalEvent) {\n event.originalEvent.returnValue = event.result;\n }\n }\n }\n }\n };\n\n // Ensure the presence of an event listener that handles manually-triggered\n // synthetic events by interrupting progress until reinvoked in response to\n // *native* events that it fires directly, ensuring that state changes have\n // already occurred before other listeners are invoked.\n function leverageNative(el, type, isSetup) {\n // Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\n if (!isSetup) {\n if (dataPriv.get(el, type) === undefined) {\n jQuery.event.add(el, type, returnTrue);\n }\n return;\n }\n\n // Register the controller as a special universal handler for all event namespaces\n dataPriv.set(el, type, false);\n jQuery.event.add(el, type, {\n namespace: false,\n handler: function (event) {\n var result,\n saved = dataPriv.get(this, type);\n if (event.isTrigger & 1 && this[type]) {\n // Interrupt processing of the outer synthetic .trigger()ed event\n if (!saved) {\n // Store arguments for use when handling the inner native event\n // There will always be at least one argument (an event object), so this array\n // will not be confused with a leftover capture object.\n saved = slice.call(arguments);\n dataPriv.set(this, type, saved);\n\n // Trigger the native event and capture its result\n this[type]();\n result = dataPriv.get(this, type);\n dataPriv.set(this, type, false);\n if (saved !== result) {\n // Cancel the outer synthetic event\n event.stopImmediatePropagation();\n event.preventDefault();\n return result;\n }\n\n // If this is an inner synthetic event for an event with a bubbling surrogate\n // (focus or blur), assume that the surrogate already propagated from triggering\n // the native event and prevent that from happening again here.\n // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n // bubbling surrogate propagates *after* the non-bubbling base), but that seems\n // less bad than duplication.\n } else if ((jQuery.event.special[type] || {}).delegateType) {\n event.stopPropagation();\n }\n\n // If this is a native event triggered above, everything is now in order\n // Fire an inner synthetic event with the original arguments\n } else if (saved) {\n // ...and capture the result\n dataPriv.set(this, type, jQuery.event.trigger(saved[0], saved.slice(1), this));\n\n // Abort handling of the native event by all jQuery handlers while allowing\n // native handlers on the same element to run. On target, this is achieved\n // by stopping immediate propagation just on the jQuery event. However,\n // the native event is re-wrapped by a jQuery one on each level of the\n // propagation so the only way to stop it for jQuery is to stop it for\n // everyone via native `stopPropagation()`. This is not a problem for\n // focus/blur which don't bubble, but it does also stop click on checkboxes\n // and radios. We accept this limitation.\n event.stopPropagation();\n event.isImmediatePropagationStopped = returnTrue;\n }\n }\n });\n }\n jQuery.removeEvent = function (elem, type, handle) {\n // This \"if\" is needed for plain objects\n if (elem.removeEventListener) {\n elem.removeEventListener(type, handle);\n }\n };\n jQuery.Event = function (src, props) {\n // Allow instantiation without the 'new' keyword\n if (!(this instanceof jQuery.Event)) {\n return new jQuery.Event(src, props);\n }\n\n // Event object\n if (src && src.type) {\n this.originalEvent = src;\n this.type = src.type;\n\n // Events bubbling up the document may have been marked as prevented\n // by a handler lower down the tree; reflect the correct value.\n this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === undefined &&\n // Support: Android <=2.3 only\n src.returnValue === false ? returnTrue : returnFalse;\n\n // Create target properties\n // Support: Safari <=6 - 7 only\n // Target should not be a text node (trac-504, trac-13143)\n this.target = src.target && src.target.nodeType === 3 ? src.target.parentNode : src.target;\n this.currentTarget = src.currentTarget;\n this.relatedTarget = src.relatedTarget;\n\n // Event type\n } else {\n this.type = src;\n }\n\n // Put explicitly provided properties onto the event object\n if (props) {\n jQuery.extend(this, props);\n }\n\n // Create a timestamp if incoming event doesn't have one\n this.timeStamp = src && src.timeStamp || Date.now();\n\n // Mark it as fixed\n this[jQuery.expando] = true;\n };\n\n // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n // https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\n jQuery.Event.prototype = {\n constructor: jQuery.Event,\n isDefaultPrevented: returnFalse,\n isPropagationStopped: returnFalse,\n isImmediatePropagationStopped: returnFalse,\n isSimulated: false,\n preventDefault: function () {\n var e = this.originalEvent;\n this.isDefaultPrevented = returnTrue;\n if (e && !this.isSimulated) {\n e.preventDefault();\n }\n },\n stopPropagation: function () {\n var e = this.originalEvent;\n this.isPropagationStopped = returnTrue;\n if (e && !this.isSimulated) {\n e.stopPropagation();\n }\n },\n stopImmediatePropagation: function () {\n var e = this.originalEvent;\n this.isImmediatePropagationStopped = returnTrue;\n if (e && !this.isSimulated) {\n e.stopImmediatePropagation();\n }\n this.stopPropagation();\n }\n };\n\n // Includes all common event props including KeyEvent and MouseEvent specific props\n jQuery.each({\n altKey: true,\n bubbles: true,\n cancelable: true,\n changedTouches: true,\n ctrlKey: true,\n detail: true,\n eventPhase: true,\n metaKey: true,\n pageX: true,\n pageY: true,\n shiftKey: true,\n view: true,\n \"char\": true,\n code: true,\n charCode: true,\n key: true,\n keyCode: true,\n button: true,\n buttons: true,\n clientX: true,\n clientY: true,\n offsetX: true,\n offsetY: true,\n pointerId: true,\n pointerType: true,\n screenX: true,\n screenY: true,\n targetTouches: true,\n toElement: true,\n touches: true,\n which: true\n }, jQuery.event.addProp);\n jQuery.each({\n focus: \"focusin\",\n blur: \"focusout\"\n }, function (type, delegateType) {\n function focusMappedHandler(nativeEvent) {\n if (document.documentMode) {\n // Support: IE 11+\n // Attach a single focusin/focusout handler on the document while someone wants\n // focus/blur. This is because the former are synchronous in IE while the latter\n // are async. In other browsers, all those handlers are invoked synchronously.\n\n // `handle` from private data would already wrap the event, but we need\n // to change the `type` here.\n var handle = dataPriv.get(this, \"handle\"),\n event = jQuery.event.fix(nativeEvent);\n event.type = nativeEvent.type === \"focusin\" ? \"focus\" : \"blur\";\n event.isSimulated = true;\n\n // First, handle focusin/focusout\n handle(nativeEvent);\n\n // ...then, handle focus/blur\n //\n // focus/blur don't bubble while focusin/focusout do; simulate the former by only\n // invoking the handler at the lower level.\n if (event.target === event.currentTarget) {\n // The setup part calls `leverageNative`, which, in turn, calls\n // `jQuery.event.add`, so event handle will already have been set\n // by this point.\n handle(event);\n }\n } else {\n // For non-IE browsers, attach a single capturing handler on the document\n // while someone wants focusin/focusout.\n jQuery.event.simulate(delegateType, nativeEvent.target, jQuery.event.fix(nativeEvent));\n }\n }\n jQuery.event.special[type] = {\n // Utilize native event if possible so blur/focus sequence is correct\n setup: function () {\n var attaches;\n\n // Claim the first handler\n // dataPriv.set( this, \"focus\", ... )\n // dataPriv.set( this, \"blur\", ... )\n leverageNative(this, type, true);\n if (document.documentMode) {\n // Support: IE 9 - 11+\n // We use the same native handler for focusin & focus (and focusout & blur)\n // so we need to coordinate setup & teardown parts between those events.\n // Use `delegateType` as the key as `type` is already used by `leverageNative`.\n attaches = dataPriv.get(this, delegateType);\n if (!attaches) {\n this.addEventListener(delegateType, focusMappedHandler);\n }\n dataPriv.set(this, delegateType, (attaches || 0) + 1);\n } else {\n // Return false to allow normal processing in the caller\n return false;\n }\n },\n trigger: function () {\n // Force setup before trigger\n leverageNative(this, type);\n\n // Return non-false to allow normal event-path propagation\n return true;\n },\n teardown: function () {\n var attaches;\n if (document.documentMode) {\n attaches = dataPriv.get(this, delegateType) - 1;\n if (!attaches) {\n this.removeEventListener(delegateType, focusMappedHandler);\n dataPriv.remove(this, delegateType);\n } else {\n dataPriv.set(this, delegateType, attaches);\n }\n } else {\n // Return false to indicate standard teardown should be applied\n return false;\n }\n },\n // Suppress native focus or blur if we're currently inside\n // a leveraged native-event stack\n _default: function (event) {\n return dataPriv.get(event.target, type);\n },\n delegateType: delegateType\n };\n\n // Support: Firefox <=44\n // Firefox doesn't have focus(in | out) events\n // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n //\n // Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n // focus(in | out) events fire after focus & blur events,\n // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n // Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n //\n // Support: IE 9 - 11+\n // To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,\n // attach a single handler for both events in IE.\n jQuery.event.special[delegateType] = {\n setup: function () {\n // Handle: regular nodes (via `this.ownerDocument`), window\n // (via `this.document`) & document (via `this`).\n var doc = this.ownerDocument || this.document || this,\n dataHolder = document.documentMode ? this : doc,\n attaches = dataPriv.get(dataHolder, delegateType);\n\n // Support: IE 9 - 11+\n // We use the same native handler for focusin & focus (and focusout & blur)\n // so we need to coordinate setup & teardown parts between those events.\n // Use `delegateType` as the key as `type` is already used by `leverageNative`.\n if (!attaches) {\n if (document.documentMode) {\n this.addEventListener(delegateType, focusMappedHandler);\n } else {\n doc.addEventListener(type, focusMappedHandler, true);\n }\n }\n dataPriv.set(dataHolder, delegateType, (attaches || 0) + 1);\n },\n teardown: function () {\n var doc = this.ownerDocument || this.document || this,\n dataHolder = document.documentMode ? this : doc,\n attaches = dataPriv.get(dataHolder, delegateType) - 1;\n if (!attaches) {\n if (document.documentMode) {\n this.removeEventListener(delegateType, focusMappedHandler);\n } else {\n doc.removeEventListener(type, focusMappedHandler, true);\n }\n dataPriv.remove(dataHolder, delegateType);\n } else {\n dataPriv.set(dataHolder, delegateType, attaches);\n }\n }\n };\n });\n\n // Create mouseenter/leave events using mouseover/out and event-time checks\n // so that event delegation works in jQuery.\n // Do the same for pointerenter/pointerleave and pointerover/pointerout\n //\n // Support: Safari 7 only\n // Safari sends mouseenter too often; see:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n // for the description of the bug (it existed in older Chrome versions as well).\n jQuery.each({\n mouseenter: \"mouseover\",\n mouseleave: \"mouseout\",\n pointerenter: \"pointerover\",\n pointerleave: \"pointerout\"\n }, function (orig, fix) {\n jQuery.event.special[orig] = {\n delegateType: fix,\n bindType: fix,\n handle: function (event) {\n var ret,\n target = this,\n related = event.relatedTarget,\n handleObj = event.handleObj;\n\n // For mouseenter/leave call the handler if related is outside the target.\n // NB: No relatedTarget if the mouse left/entered the browser window\n if (!related || related !== target && !jQuery.contains(target, related)) {\n event.type = handleObj.origType;\n ret = handleObj.handler.apply(this, arguments);\n event.type = fix;\n }\n return ret;\n }\n };\n });\n jQuery.fn.extend({\n on: function (types, selector, data, fn) {\n return on(this, types, selector, data, fn);\n },\n one: function (types, selector, data, fn) {\n return on(this, types, selector, data, fn, 1);\n },\n off: function (types, selector, fn) {\n var handleObj, type;\n if (types && types.preventDefault && types.handleObj) {\n // ( event ) dispatched jQuery.Event\n handleObj = types.handleObj;\n jQuery(types.delegateTarget).off(handleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler);\n return this;\n }\n if (typeof types === \"object\") {\n // ( types-object [, selector] )\n for (type in types) {\n this.off(type, selector, types[type]);\n }\n return this;\n }\n if (selector === false || typeof selector === \"function\") {\n // ( types [, fn] )\n fn = selector;\n selector = undefined;\n }\n if (fn === false) {\n fn = returnFalse;\n }\n return this.each(function () {\n jQuery.event.remove(this, types, fn, selector);\n });\n }\n });\n var\n // Support: IE <=10 - 11, Edge 12 - 13 only\n // In IE/Edge using regex groups here causes severe slowdowns.\n // See https://connect.microsoft.com/IE/feedback/details/1736512/\n rnoInnerhtml = /<script|<style|<link/i,\n // checked=\"checked\" or checked\n rchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n rcleanScript = /^\\s*<!\\[CDATA\\[|\\]\\]>\\s*$/g;\n\n // Prefer a tbody over its parent table for containing new rows\n function manipulationTarget(elem, content) {\n if (nodeName(elem, \"table\") && nodeName(content.nodeType !== 11 ? content : content.firstChild, \"tr\")) {\n return jQuery(elem).children(\"tbody\")[0] || elem;\n }\n return elem;\n }\n\n // Replace/restore the type attribute of script elements for safe DOM manipulation\n function disableScript(elem) {\n elem.type = (elem.getAttribute(\"type\") !== null) + \"/\" + elem.type;\n return elem;\n }\n function restoreScript(elem) {\n if ((elem.type || \"\").slice(0, 5) === \"true/\") {\n elem.type = elem.type.slice(5);\n } else {\n elem.removeAttribute(\"type\");\n }\n return elem;\n }\n function cloneCopyEvent(src, dest) {\n var i, l, type, pdataOld, udataOld, udataCur, events;\n if (dest.nodeType !== 1) {\n return;\n }\n\n // 1. Copy private data: events, handlers, etc.\n if (dataPriv.hasData(src)) {\n pdataOld = dataPriv.get(src);\n events = pdataOld.events;\n if (events) {\n dataPriv.remove(dest, \"handle events\");\n for (type in events) {\n for (i = 0, l = events[type].length; i < l; i++) {\n jQuery.event.add(dest, type, events[type][i]);\n }\n }\n }\n }\n\n // 2. Copy user data\n if (dataUser.hasData(src)) {\n udataOld = dataUser.access(src);\n udataCur = jQuery.extend({}, udataOld);\n dataUser.set(dest, udataCur);\n }\n }\n\n // Fix IE bugs, see support tests\n function fixInput(src, dest) {\n var nodeName = dest.nodeName.toLowerCase();\n\n // Fails to persist the checked state of a cloned checkbox or radio button.\n if (nodeName === \"input\" && rcheckableType.test(src.type)) {\n dest.checked = src.checked;\n\n // Fails to return the selected option to the default selected state when cloning options\n } else if (nodeName === \"input\" || nodeName === \"textarea\") {\n dest.defaultValue = src.defaultValue;\n }\n }\n function domManip(collection, args, callback, ignored) {\n // Flatten any nested arrays\n args = flat(args);\n var fragment,\n first,\n scripts,\n hasScripts,\n node,\n doc,\n i = 0,\n l = collection.length,\n iNoClone = l - 1,\n value = args[0],\n valueIsFunction = isFunction(value);\n\n // We can't cloneNode fragments that contain checked, in WebKit\n if (valueIsFunction || l > 1 && typeof value === \"string\" && !support.checkClone && rchecked.test(value)) {\n return collection.each(function (index) {\n var self = collection.eq(index);\n if (valueIsFunction) {\n args[0] = value.call(this, index, self.html());\n }\n domManip(self, args, callback, ignored);\n });\n }\n if (l) {\n fragment = buildFragment(args, collection[0].ownerDocument, false, collection, ignored);\n first = fragment.firstChild;\n if (fragment.childNodes.length === 1) {\n fragment = first;\n }\n\n // Require either new content or an interest in ignored elements to invoke the callback\n if (first || ignored) {\n scripts = jQuery.map(getAll(fragment, \"script\"), disableScript);\n hasScripts = scripts.length;\n\n // Use the original fragment for the last item\n // instead of the first because it can end up\n // being emptied incorrectly in certain situations (trac-8070).\n for (; i < l; i++) {\n node = fragment;\n if (i !== iNoClone) {\n node = jQuery.clone(node, true, true);\n\n // Keep references to cloned scripts for later restoration\n if (hasScripts) {\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n jQuery.merge(scripts, getAll(node, \"script\"));\n }\n }\n callback.call(collection[i], node, i);\n }\n if (hasScripts) {\n doc = scripts[scripts.length - 1].ownerDocument;\n\n // Re-enable scripts\n jQuery.map(scripts, restoreScript);\n\n // Evaluate executable scripts on first document insertion\n for (i = 0; i < hasScripts; i++) {\n node = scripts[i];\n if (rscriptType.test(node.type || \"\") && !dataPriv.access(node, \"globalEval\") && jQuery.contains(doc, node)) {\n if (node.src && (node.type || \"\").toLowerCase() !== \"module\") {\n // Optional AJAX dependency, but won't run scripts if not present\n if (jQuery._evalUrl && !node.noModule) {\n jQuery._evalUrl(node.src, {\n nonce: node.nonce || node.getAttribute(\"nonce\")\n }, doc);\n }\n } else {\n // Unwrap a CDATA section containing script contents. This shouldn't be\n // needed as in XML documents they're already not visible when\n // inspecting element contents and in HTML documents they have no\n // meaning but we're preserving that logic for backwards compatibility.\n // This will be removed completely in 4.0. See gh-4904.\n DOMEval(node.textContent.replace(rcleanScript, \"\"), node, doc);\n }\n }\n }\n }\n }\n }\n return collection;\n }\n function remove(elem, selector, keepData) {\n var node,\n nodes = selector ? jQuery.filter(selector, elem) : elem,\n i = 0;\n for (; (node = nodes[i]) != null; i++) {\n if (!keepData && node.nodeType === 1) {\n jQuery.cleanData(getAll(node));\n }\n if (node.parentNode) {\n if (keepData && isAttached(node)) {\n setGlobalEval(getAll(node, \"script\"));\n }\n node.parentNode.removeChild(node);\n }\n }\n return elem;\n }\n jQuery.extend({\n htmlPrefilter: function (html) {\n return html;\n },\n clone: function (elem, dataAndEvents, deepDataAndEvents) {\n var i,\n l,\n srcElements,\n destElements,\n clone = elem.cloneNode(true),\n inPage = isAttached(elem);\n\n // Fix IE cloning issues\n if (!support.noCloneChecked && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem)) {\n // We eschew jQuery#find here for performance reasons:\n // https://jsperf.com/getall-vs-sizzle/2\n destElements = getAll(clone);\n srcElements = getAll(elem);\n for (i = 0, l = srcElements.length; i < l; i++) {\n fixInput(srcElements[i], destElements[i]);\n }\n }\n\n // Copy the events from the original to the clone\n if (dataAndEvents) {\n if (deepDataAndEvents) {\n srcElements = srcElements || getAll(elem);\n destElements = destElements || getAll(clone);\n for (i = 0, l = srcElements.length; i < l; i++) {\n cloneCopyEvent(srcElements[i], destElements[i]);\n }\n } else {\n cloneCopyEvent(elem, clone);\n }\n }\n\n // Preserve script evaluation history\n destElements = getAll(clone, \"script\");\n if (destElements.length > 0) {\n setGlobalEval(destElements, !inPage && getAll(elem, \"script\"));\n }\n\n // Return the cloned set\n return clone;\n },\n cleanData: function (elems) {\n var data,\n elem,\n type,\n special = jQuery.event.special,\n i = 0;\n for (; (elem = elems[i]) !== undefined; i++) {\n if (acceptData(elem)) {\n if (data = elem[dataPriv.expando]) {\n if (data.events) {\n for (type in data.events) {\n if (special[type]) {\n jQuery.event.remove(elem, type);\n\n // This is a shortcut to avoid jQuery.event.remove's overhead\n } else {\n jQuery.removeEvent(elem, type, data.handle);\n }\n }\n }\n\n // Support: Chrome <=35 - 45+\n // Assign undefined instead of using delete, see Data#remove\n elem[dataPriv.expando] = undefined;\n }\n if (elem[dataUser.expando]) {\n // Support: Chrome <=35 - 45+\n // Assign undefined instead of using delete, see Data#remove\n elem[dataUser.expando] = undefined;\n }\n }\n }\n }\n });\n jQuery.fn.extend({\n detach: function (selector) {\n return remove(this, selector, true);\n },\n remove: function (selector) {\n return remove(this, selector);\n },\n text: function (value) {\n return access(this, function (value) {\n return value === undefined ? jQuery.text(this) : this.empty().each(function () {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n this.textContent = value;\n }\n });\n }, null, value, arguments.length);\n },\n append: function () {\n return domManip(this, arguments, function (elem) {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n var target = manipulationTarget(this, elem);\n target.appendChild(elem);\n }\n });\n },\n prepend: function () {\n return domManip(this, arguments, function (elem) {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n var target = manipulationTarget(this, elem);\n target.insertBefore(elem, target.firstChild);\n }\n });\n },\n before: function () {\n return domManip(this, arguments, function (elem) {\n if (this.parentNode) {\n this.parentNode.insertBefore(elem, this);\n }\n });\n },\n after: function () {\n return domManip(this, arguments, function (elem) {\n if (this.parentNode) {\n this.parentNode.insertBefore(elem, this.nextSibling);\n }\n });\n },\n empty: function () {\n var elem,\n i = 0;\n for (; (elem = this[i]) != null; i++) {\n if (elem.nodeType === 1) {\n // Prevent memory leaks\n jQuery.cleanData(getAll(elem, false));\n\n // Remove any remaining nodes\n elem.textContent = \"\";\n }\n }\n return this;\n },\n clone: function (dataAndEvents, deepDataAndEvents) {\n dataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n return this.map(function () {\n return jQuery.clone(this, dataAndEvents, deepDataAndEvents);\n });\n },\n html: function (value) {\n return access(this, function (value) {\n var elem = this[0] || {},\n i = 0,\n l = this.length;\n if (value === undefined && elem.nodeType === 1) {\n return elem.innerHTML;\n }\n\n // See if we can take a shortcut and just use innerHTML\n if (typeof value === \"string\" && !rnoInnerhtml.test(value) && !wrapMap[(rtagName.exec(value) || [\"\", \"\"])[1].toLowerCase()]) {\n value = jQuery.htmlPrefilter(value);\n try {\n for (; i < l; i++) {\n elem = this[i] || {};\n\n // Remove element nodes and prevent memory leaks\n if (elem.nodeType === 1) {\n jQuery.cleanData(getAll(elem, false));\n elem.innerHTML = value;\n }\n }\n elem = 0;\n\n // If using innerHTML throws an exception, use the fallback method\n } catch (e) {}\n }\n if (elem) {\n this.empty().append(value);\n }\n }, null, value, arguments.length);\n },\n replaceWith: function () {\n var ignored = [];\n\n // Make the changes, replacing each non-ignored context element with the new content\n return domManip(this, arguments, function (elem) {\n var parent = this.parentNode;\n if (jQuery.inArray(this, ignored) < 0) {\n jQuery.cleanData(getAll(this));\n if (parent) {\n parent.replaceChild(elem, this);\n }\n }\n\n // Force callback invocation\n }, ignored);\n }\n });\n jQuery.each({\n appendTo: \"append\",\n prependTo: \"prepend\",\n insertBefore: \"before\",\n insertAfter: \"after\",\n replaceAll: \"replaceWith\"\n }, function (name, original) {\n jQuery.fn[name] = function (selector) {\n var elems,\n ret = [],\n insert = jQuery(selector),\n last = insert.length - 1,\n i = 0;\n for (; i <= last; i++) {\n elems = i === last ? this : this.clone(true);\n jQuery(insert[i])[original](elems);\n\n // Support: Android <=4.0 only, PhantomJS 1 only\n // .get() because push.apply(_, arraylike) throws on ancient WebKit\n push.apply(ret, elems.get());\n }\n return this.pushStack(ret);\n };\n });\n var rnumnonpx = new RegExp(\"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\");\n var rcustomProp = /^--/;\n var getStyles = function (elem) {\n // Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n // IE throws on elements created in popups\n // FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n var view = elem.ownerDocument.defaultView;\n if (!view || !view.opener) {\n view = window;\n }\n return view.getComputedStyle(elem);\n };\n var swap = function (elem, options, callback) {\n var ret,\n name,\n old = {};\n\n // Remember the old values, and insert the new ones\n for (name in options) {\n old[name] = elem.style[name];\n elem.style[name] = options[name];\n }\n ret = callback.call(elem);\n\n // Revert the old values\n for (name in options) {\n elem.style[name] = old[name];\n }\n return ret;\n };\n var rboxStyle = new RegExp(cssExpand.join(\"|\"), \"i\");\n (function () {\n // Executing both pixelPosition & boxSizingReliable tests require only one layout\n // so they're executed at the same time to save the second computation.\n function computeStyleTests() {\n // This is a singleton, we need to execute it only once\n if (!div) {\n return;\n }\n container.style.cssText = \"position:absolute;left:-11111px;width:60px;\" + \"margin-top:1px;padding:0;border:0\";\n div.style.cssText = \"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" + \"margin:auto;border:1px;padding:1px;\" + \"width:60%;top:1%\";\n documentElement.appendChild(container).appendChild(div);\n var divStyle = window.getComputedStyle(div);\n pixelPositionVal = divStyle.top !== \"1%\";\n\n // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n reliableMarginLeftVal = roundPixelMeasures(divStyle.marginLeft) === 12;\n\n // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n // Some styles come back with percentage values, even though they shouldn't\n div.style.right = \"60%\";\n pixelBoxStylesVal = roundPixelMeasures(divStyle.right) === 36;\n\n // Support: IE 9 - 11 only\n // Detect misreporting of content dimensions for box-sizing:border-box elements\n boxSizingReliableVal = roundPixelMeasures(divStyle.width) === 36;\n\n // Support: IE 9 only\n // Detect overflow:scroll screwiness (gh-3699)\n // Support: Chrome <=64\n // Don't get tricked when zoom affects offsetWidth (gh-4029)\n div.style.position = \"absolute\";\n scrollboxSizeVal = roundPixelMeasures(div.offsetWidth / 3) === 12;\n documentElement.removeChild(container);\n\n // Nullify the div so it wouldn't be stored in the memory and\n // it will also be a sign that checks already performed\n div = null;\n }\n function roundPixelMeasures(measure) {\n return Math.round(parseFloat(measure));\n }\n var pixelPositionVal,\n boxSizingReliableVal,\n scrollboxSizeVal,\n pixelBoxStylesVal,\n reliableTrDimensionsVal,\n reliableMarginLeftVal,\n container = document.createElement(\"div\"),\n div = document.createElement(\"div\");\n\n // Finish early in limited (non-browser) environments\n if (!div.style) {\n return;\n }\n\n // Support: IE <=9 - 11 only\n // Style of cloned element affects source element cloned (trac-8908)\n div.style.backgroundClip = \"content-box\";\n div.cloneNode(true).style.backgroundClip = \"\";\n support.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n jQuery.extend(support, {\n boxSizingReliable: function () {\n computeStyleTests();\n return boxSizingReliableVal;\n },\n pixelBoxStyles: function () {\n computeStyleTests();\n return pixelBoxStylesVal;\n },\n pixelPosition: function () {\n computeStyleTests();\n return pixelPositionVal;\n },\n reliableMarginLeft: function () {\n computeStyleTests();\n return reliableMarginLeftVal;\n },\n scrollboxSize: function () {\n computeStyleTests();\n return scrollboxSizeVal;\n },\n // Support: IE 9 - 11+, Edge 15 - 18+\n // IE/Edge misreport `getComputedStyle` of table rows with width/height\n // set in CSS while `offset*` properties report correct values.\n // Behavior in IE 9 is more subtle than in newer versions & it passes\n // some versions of this test; make sure not to make it pass there!\n //\n // Support: Firefox 70+\n // Only Firefox includes border widths\n // in computed dimensions. (gh-4529)\n reliableTrDimensions: function () {\n var table, tr, trChild, trStyle;\n if (reliableTrDimensionsVal == null) {\n table = document.createElement(\"table\");\n tr = document.createElement(\"tr\");\n trChild = document.createElement(\"div\");\n table.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n tr.style.cssText = \"box-sizing:content-box;border:1px solid\";\n\n // Support: Chrome 86+\n // Height set through cssText does not get applied.\n // Computed height then comes back as 0.\n tr.style.height = \"1px\";\n trChild.style.height = \"9px\";\n\n // Support: Android 8 Chrome 86+\n // In our bodyBackground.html iframe,\n // display for all div elements is set to \"inline\",\n // which causes a problem only in Android 8 Chrome 86.\n // Ensuring the div is `display: block`\n // gets around this issue.\n trChild.style.display = \"block\";\n documentElement.appendChild(table).appendChild(tr).appendChild(trChild);\n trStyle = window.getComputedStyle(tr);\n reliableTrDimensionsVal = parseInt(trStyle.height, 10) + parseInt(trStyle.borderTopWidth, 10) + parseInt(trStyle.borderBottomWidth, 10) === tr.offsetHeight;\n documentElement.removeChild(table);\n }\n return reliableTrDimensionsVal;\n }\n });\n })();\n function curCSS(elem, name, computed) {\n var width,\n minWidth,\n maxWidth,\n ret,\n isCustomProp = rcustomProp.test(name),\n // Support: Firefox 51+\n // Retrieving style before computed somehow\n // fixes an issue with getting wrong values\n // on detached elements\n style = elem.style;\n computed = computed || getStyles(elem);\n\n // getPropertyValue is needed for:\n // .css('filter') (IE 9 only, trac-12537)\n // .css('--customProperty) (gh-3144)\n if (computed) {\n // Support: IE <=9 - 11+\n // IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n // it's only available as `\"cssFloat\"`. We no longer modify properties\n // sent to `.css()` apart from camelCasing, so we need to check both.\n // Normally, this would create difference in behavior: if\n // `getPropertyValue` returns an empty string, the value returned\n // by `.css()` would be `undefined`. This is usually the case for\n // disconnected elements. However, in IE even disconnected elements\n // with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n ret = computed.getPropertyValue(name) || computed[name];\n if (isCustomProp && ret) {\n // Support: Firefox 105+, Chrome <=105+\n // Spec requires trimming whitespace for custom properties (gh-4926).\n // Firefox only trims leading whitespace. Chrome just collapses\n // both leading & trailing whitespace to a single space.\n //\n // Fall back to `undefined` if empty string returned.\n // This collapses a missing definition with property defined\n // and set to an empty string but there's no standard API\n // allowing us to differentiate them without a performance penalty\n // and returning `undefined` aligns with older jQuery.\n //\n // rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n // as whitespace while CSS does not, but this is not a problem\n // because CSS preprocessing replaces them with U+000A LINE FEED\n // (which *is* CSS whitespace)\n // https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n ret = ret.replace(rtrimCSS, \"$1\") || undefined;\n }\n if (ret === \"\" && !isAttached(elem)) {\n ret = jQuery.style(elem, name);\n }\n\n // A tribute to the \"awesome hack by Dean Edwards\"\n // Android Browser returns percentage for some values,\n // but width seems to be reliably pixels.\n // This is against the CSSOM draft spec:\n // https://drafts.csswg.org/cssom/#resolved-values\n if (!support.pixelBoxStyles() && rnumnonpx.test(ret) && rboxStyle.test(name)) {\n // Remember the original values\n width = style.width;\n minWidth = style.minWidth;\n maxWidth = style.maxWidth;\n\n // Put in the new values to get a computed value out\n style.minWidth = style.maxWidth = style.width = ret;\n ret = computed.width;\n\n // Revert the changed values\n style.width = width;\n style.minWidth = minWidth;\n style.maxWidth = maxWidth;\n }\n }\n return ret !== undefined ?\n // Support: IE <=9 - 11 only\n // IE returns zIndex value as an integer.\n ret + \"\" : ret;\n }\n function addGetHookIf(conditionFn, hookFn) {\n // Define the hook, we'll check on the first run if it's really needed.\n return {\n get: function () {\n if (conditionFn()) {\n // Hook not needed (or it's not possible to use it due\n // to missing dependency), remove it.\n delete this.get;\n return;\n }\n\n // Hook needed; redefine it so that the support test is not executed again.\n return (this.get = hookFn).apply(this, arguments);\n }\n };\n }\n var cssPrefixes = [\"Webkit\", \"Moz\", \"ms\"],\n emptyStyle = document.createElement(\"div\").style,\n vendorProps = {};\n\n // Return a vendor-prefixed property or undefined\n function vendorPropName(name) {\n // Check for vendor prefixed names\n var capName = name[0].toUpperCase() + name.slice(1),\n i = cssPrefixes.length;\n while (i--) {\n name = cssPrefixes[i] + capName;\n if (name in emptyStyle) {\n return name;\n }\n }\n }\n\n // Return a potentially-mapped jQuery.cssProps or vendor prefixed property\n function finalPropName(name) {\n var final = jQuery.cssProps[name] || vendorProps[name];\n if (final) {\n return final;\n }\n if (name in emptyStyle) {\n return name;\n }\n return vendorProps[name] = vendorPropName(name) || name;\n }\n var\n // Swappable if display is none or starts with table\n // except \"table\", \"table-cell\", or \"table-caption\"\n // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n rdisplayswap = /^(none|table(?!-c[ea]).+)/,\n cssShow = {\n position: \"absolute\",\n visibility: \"hidden\",\n display: \"block\"\n },\n cssNormalTransform = {\n letterSpacing: \"0\",\n fontWeight: \"400\"\n };\n function setPositiveNumber(_elem, value, subtract) {\n // Any relative (+/-) values have already been\n // normalized at this point\n var matches = rcssNum.exec(value);\n return matches ?\n // Guard against undefined \"subtract\", e.g., when used as in cssHooks\n Math.max(0, matches[2] - (subtract || 0)) + (matches[3] || \"px\") : value;\n }\n function boxModelAdjustment(elem, dimension, box, isBorderBox, styles, computedVal) {\n var i = dimension === \"width\" ? 1 : 0,\n extra = 0,\n delta = 0,\n marginDelta = 0;\n\n // Adjustment may not be necessary\n if (box === (isBorderBox ? \"border\" : \"content\")) {\n return 0;\n }\n for (; i < 4; i += 2) {\n // Both box models exclude margin\n // Count margin delta separately to only add it after scroll gutter adjustment.\n // This is needed to make negative margins work with `outerHeight( true )` (gh-3982).\n if (box === \"margin\") {\n marginDelta += jQuery.css(elem, box + cssExpand[i], true, styles);\n }\n\n // If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n if (!isBorderBox) {\n // Add padding\n delta += jQuery.css(elem, \"padding\" + cssExpand[i], true, styles);\n\n // For \"border\" or \"margin\", add border\n if (box !== \"padding\") {\n delta += jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles);\n\n // But still keep track of it otherwise\n } else {\n extra += jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles);\n }\n\n // If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n // \"padding\" or \"margin\"\n } else {\n // For \"content\", subtract padding\n if (box === \"content\") {\n delta -= jQuery.css(elem, \"padding\" + cssExpand[i], true, styles);\n }\n\n // For \"content\" or \"padding\", subtract border\n if (box !== \"margin\") {\n delta -= jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles);\n }\n }\n }\n\n // Account for positive content-box scroll gutter when requested by providing computedVal\n if (!isBorderBox && computedVal >= 0) {\n // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n // Assuming integer scroll gutter, subtract the rest and round down\n delta += Math.max(0, Math.ceil(elem[\"offset\" + dimension[0].toUpperCase() + dimension.slice(1)] - computedVal - delta - extra - 0.5\n\n // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n // Use an explicit zero to avoid NaN (gh-3964)\n )) || 0;\n }\n return delta + marginDelta;\n }\n function getWidthOrHeight(elem, dimension, extra) {\n // Start with computed style\n var styles = getStyles(elem),\n // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n // Fake content-box until we know it's needed to know the true value.\n boxSizingNeeded = !support.boxSizingReliable() || extra,\n isBorderBox = boxSizingNeeded && jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\",\n valueIsBorderBox = isBorderBox,\n val = curCSS(elem, dimension, styles),\n offsetProp = \"offset\" + dimension[0].toUpperCase() + dimension.slice(1);\n\n // Support: Firefox <=54\n // Return a confounding non-pixel value or feign ignorance, as appropriate.\n if (rnumnonpx.test(val)) {\n if (!extra) {\n return val;\n }\n val = \"auto\";\n }\n\n // Support: IE 9 - 11 only\n // Use offsetWidth/offsetHeight for when box sizing is unreliable.\n // In those cases, the computed value can be trusted to be border-box.\n if ((!support.boxSizingReliable() && isBorderBox ||\n // Support: IE 10 - 11+, Edge 15 - 18+\n // IE/Edge misreport `getComputedStyle` of table rows with width/height\n // set in CSS while `offset*` properties report correct values.\n // Interestingly, in some cases IE 9 doesn't suffer from this issue.\n !support.reliableTrDimensions() && nodeName(elem, \"tr\") ||\n // Fall back to offsetWidth/offsetHeight when value is \"auto\"\n // This happens for inline elements with no explicit setting (gh-3571)\n val === \"auto\" ||\n // Support: Android <=4.1 - 4.3 only\n // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n !parseFloat(val) && jQuery.css(elem, \"display\", false, styles) === \"inline\") &&\n // Make sure the element is visible & connected\n elem.getClientRects().length) {\n isBorderBox = jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\";\n\n // Where available, offsetWidth/offsetHeight approximate border box dimensions.\n // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n // retrieved value as a content box dimension.\n valueIsBorderBox = offsetProp in elem;\n if (valueIsBorderBox) {\n val = elem[offsetProp];\n }\n }\n\n // Normalize \"\" and auto\n val = parseFloat(val) || 0;\n\n // Adjust for the element's box model\n return val + boxModelAdjustment(elem, dimension, extra || (isBorderBox ? \"border\" : \"content\"), valueIsBorderBox, styles,\n // Provide the current computed size to request scroll gutter calculation (gh-3589)\n val) + \"px\";\n }\n jQuery.extend({\n // Add in style property hooks for overriding the default\n // behavior of getting and setting a style property\n cssHooks: {\n opacity: {\n get: function (elem, computed) {\n if (computed) {\n // We should always get a number back from opacity\n var ret = curCSS(elem, \"opacity\");\n return ret === \"\" ? \"1\" : ret;\n }\n }\n }\n },\n // Don't automatically add \"px\" to these possibly-unitless properties\n cssNumber: {\n animationIterationCount: true,\n aspectRatio: true,\n borderImageSlice: true,\n columnCount: true,\n flexGrow: true,\n flexShrink: true,\n fontWeight: true,\n gridArea: true,\n gridColumn: true,\n gridColumnEnd: true,\n gridColumnStart: true,\n gridRow: true,\n gridRowEnd: true,\n gridRowStart: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n scale: true,\n widows: true,\n zIndex: true,\n zoom: true,\n // SVG-related\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeMiterlimit: true,\n strokeOpacity: true\n },\n // Add in properties whose names you wish to fix before\n // setting or getting the value\n cssProps: {},\n // Get and set the style property on a DOM Node\n style: function (elem, name, value, extra) {\n // Don't set styles on text and comment nodes\n if (!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style) {\n return;\n }\n\n // Make sure that we're working with the right name\n var ret,\n type,\n hooks,\n origName = camelCase(name),\n isCustomProp = rcustomProp.test(name),\n style = elem.style;\n\n // Make sure that we're working with the right name. We don't\n // want to query the value if it is a CSS custom property\n // since they are user-defined.\n if (!isCustomProp) {\n name = finalPropName(origName);\n }\n\n // Gets hook for the prefixed version, then unprefixed version\n hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName];\n\n // Check if we're setting a value\n if (value !== undefined) {\n type = typeof value;\n\n // Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n if (type === \"string\" && (ret = rcssNum.exec(value)) && ret[1]) {\n value = adjustCSS(elem, name, ret);\n\n // Fixes bug trac-9237\n type = \"number\";\n }\n\n // Make sure that null and NaN values aren't set (trac-7116)\n if (value == null || value !== value) {\n return;\n }\n\n // If a number was passed in, add the unit (except for certain CSS properties)\n // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n // \"px\" to a few hardcoded values.\n if (type === \"number\" && !isCustomProp) {\n value += ret && ret[3] || (jQuery.cssNumber[origName] ? \"\" : \"px\");\n }\n\n // background-* props affect original clone's values\n if (!support.clearCloneStyle && value === \"\" && name.indexOf(\"background\") === 0) {\n style[name] = \"inherit\";\n }\n\n // If a hook was provided, use that value, otherwise just set the specified value\n if (!hooks || !(\"set\" in hooks) || (value = hooks.set(elem, value, extra)) !== undefined) {\n if (isCustomProp) {\n style.setProperty(name, value);\n } else {\n style[name] = value;\n }\n }\n } else {\n // If a hook was provided get the non-computed value from there\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, false, extra)) !== undefined) {\n return ret;\n }\n\n // Otherwise just get the value from the style object\n return style[name];\n }\n },\n css: function (elem, name, extra, styles) {\n var val,\n num,\n hooks,\n origName = camelCase(name),\n isCustomProp = rcustomProp.test(name);\n\n // Make sure that we're working with the right name. We don't\n // want to modify the value if it is a CSS custom property\n // since they are user-defined.\n if (!isCustomProp) {\n name = finalPropName(origName);\n }\n\n // Try prefixed name followed by the unprefixed name\n hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName];\n\n // If a hook was provided get the computed value from there\n if (hooks && \"get\" in hooks) {\n val = hooks.get(elem, true, extra);\n }\n\n // Otherwise, if a way to get the computed value exists, use that\n if (val === undefined) {\n val = curCSS(elem, name, styles);\n }\n\n // Convert \"normal\" to computed value\n if (val === \"normal\" && name in cssNormalTransform) {\n val = cssNormalTransform[name];\n }\n\n // Make numeric if forced or a qualifier was provided and val looks numeric\n if (extra === \"\" || extra) {\n num = parseFloat(val);\n return extra === true || isFinite(num) ? num || 0 : val;\n }\n return val;\n }\n });\n jQuery.each([\"height\", \"width\"], function (_i, dimension) {\n jQuery.cssHooks[dimension] = {\n get: function (elem, computed, extra) {\n if (computed) {\n // Certain elements can have dimension info if we invisibly show them\n // but it must have a current display style that would benefit\n return rdisplayswap.test(jQuery.css(elem, \"display\")) && (\n // Support: Safari 8+\n // Table columns in Safari have non-zero offsetWidth & zero\n // getBoundingClientRect().width unless display is changed.\n // Support: IE <=11 only\n // Running getBoundingClientRect on a disconnected node\n // in IE throws an error.\n !elem.getClientRects().length || !elem.getBoundingClientRect().width) ? swap(elem, cssShow, function () {\n return getWidthOrHeight(elem, dimension, extra);\n }) : getWidthOrHeight(elem, dimension, extra);\n }\n },\n set: function (elem, value, extra) {\n var matches,\n styles = getStyles(elem),\n // Only read styles.position if the test has a chance to fail\n // to avoid forcing a reflow.\n scrollboxSizeBuggy = !support.scrollboxSize() && styles.position === \"absolute\",\n // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n boxSizingNeeded = scrollboxSizeBuggy || extra,\n isBorderBox = boxSizingNeeded && jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\",\n subtract = extra ? boxModelAdjustment(elem, dimension, extra, isBorderBox, styles) : 0;\n\n // Account for unreliable border-box dimensions by comparing offset* to computed and\n // faking a content-box to get border and padding (gh-3699)\n if (isBorderBox && scrollboxSizeBuggy) {\n subtract -= Math.ceil(elem[\"offset\" + dimension[0].toUpperCase() + dimension.slice(1)] - parseFloat(styles[dimension]) - boxModelAdjustment(elem, dimension, \"border\", false, styles) - 0.5);\n }\n\n // Convert to pixels if value adjustment is needed\n if (subtract && (matches = rcssNum.exec(value)) && (matches[3] || \"px\") !== \"px\") {\n elem.style[dimension] = value;\n value = jQuery.css(elem, dimension);\n }\n return setPositiveNumber(elem, value, subtract);\n }\n };\n });\n jQuery.cssHooks.marginLeft = addGetHookIf(support.reliableMarginLeft, function (elem, computed) {\n if (computed) {\n return (parseFloat(curCSS(elem, \"marginLeft\")) || elem.getBoundingClientRect().left - swap(elem, {\n marginLeft: 0\n }, function () {\n return elem.getBoundingClientRect().left;\n })) + \"px\";\n }\n });\n\n // These hooks are used by animate to expand properties\n jQuery.each({\n margin: \"\",\n padding: \"\",\n border: \"Width\"\n }, function (prefix, suffix) {\n jQuery.cssHooks[prefix + suffix] = {\n expand: function (value) {\n var i = 0,\n expanded = {},\n // Assumes a single number if not a string\n parts = typeof value === \"string\" ? value.split(\" \") : [value];\n for (; i < 4; i++) {\n expanded[prefix + cssExpand[i] + suffix] = parts[i] || parts[i - 2] || parts[0];\n }\n return expanded;\n }\n };\n if (prefix !== \"margin\") {\n jQuery.cssHooks[prefix + suffix].set = setPositiveNumber;\n }\n });\n jQuery.fn.extend({\n css: function (name, value) {\n return access(this, function (elem, name, value) {\n var styles,\n len,\n map = {},\n i = 0;\n if (Array.isArray(name)) {\n styles = getStyles(elem);\n len = name.length;\n for (; i < len; i++) {\n map[name[i]] = jQuery.css(elem, name[i], false, styles);\n }\n return map;\n }\n return value !== undefined ? jQuery.style(elem, name, value) : jQuery.css(elem, name);\n }, name, value, arguments.length > 1);\n }\n });\n function Tween(elem, options, prop, end, easing) {\n return new Tween.prototype.init(elem, options, prop, end, easing);\n }\n jQuery.Tween = Tween;\n Tween.prototype = {\n constructor: Tween,\n init: function (elem, options, prop, end, easing, unit) {\n this.elem = elem;\n this.prop = prop;\n this.easing = easing || jQuery.easing._default;\n this.options = options;\n this.start = this.now = this.cur();\n this.end = end;\n this.unit = unit || (jQuery.cssNumber[prop] ? \"\" : \"px\");\n },\n cur: function () {\n var hooks = Tween.propHooks[this.prop];\n return hooks && hooks.get ? hooks.get(this) : Tween.propHooks._default.get(this);\n },\n run: function (percent) {\n var eased,\n hooks = Tween.propHooks[this.prop];\n if (this.options.duration) {\n this.pos = eased = jQuery.easing[this.easing](percent, this.options.duration * percent, 0, 1, this.options.duration);\n } else {\n this.pos = eased = percent;\n }\n this.now = (this.end - this.start) * eased + this.start;\n if (this.options.step) {\n this.options.step.call(this.elem, this.now, this);\n }\n if (hooks && hooks.set) {\n hooks.set(this);\n } else {\n Tween.propHooks._default.set(this);\n }\n return this;\n }\n };\n Tween.prototype.init.prototype = Tween.prototype;\n Tween.propHooks = {\n _default: {\n get: function (tween) {\n var result;\n\n // Use a property on the element directly when it is not a DOM element,\n // or when there is no matching style property that exists.\n if (tween.elem.nodeType !== 1 || tween.elem[tween.prop] != null && tween.elem.style[tween.prop] == null) {\n return tween.elem[tween.prop];\n }\n\n // Passing an empty string as a 3rd parameter to .css will automatically\n // attempt a parseFloat and fallback to a string if the parse fails.\n // Simple values such as \"10px\" are parsed to Float;\n // complex values such as \"rotate(1rad)\" are returned as-is.\n result = jQuery.css(tween.elem, tween.prop, \"\");\n\n // Empty strings, null, undefined and \"auto\" are converted to 0.\n return !result || result === \"auto\" ? 0 : result;\n },\n set: function (tween) {\n // Use step hook for back compat.\n // Use cssHook if its there.\n // Use .style if available and use plain properties where available.\n if (jQuery.fx.step[tween.prop]) {\n jQuery.fx.step[tween.prop](tween);\n } else if (tween.elem.nodeType === 1 && (jQuery.cssHooks[tween.prop] || tween.elem.style[finalPropName(tween.prop)] != null)) {\n jQuery.style(tween.elem, tween.prop, tween.now + tween.unit);\n } else {\n tween.elem[tween.prop] = tween.now;\n }\n }\n }\n };\n\n // Support: IE <=9 only\n // Panic based approach to setting things on disconnected nodes\n Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n set: function (tween) {\n if (tween.elem.nodeType && tween.elem.parentNode) {\n tween.elem[tween.prop] = tween.now;\n }\n }\n };\n jQuery.easing = {\n linear: function (p) {\n return p;\n },\n swing: function (p) {\n return 0.5 - Math.cos(p * Math.PI) / 2;\n },\n _default: \"swing\"\n };\n jQuery.fx = Tween.prototype.init;\n\n // Back compat <1.8 extension point\n jQuery.fx.step = {};\n var fxNow,\n inProgress,\n rfxtypes = /^(?:toggle|show|hide)$/,\n rrun = /queueHooks$/;\n function schedule() {\n if (inProgress) {\n if (document.hidden === false && window.requestAnimationFrame) {\n window.requestAnimationFrame(schedule);\n } else {\n window.setTimeout(schedule, jQuery.fx.interval);\n }\n jQuery.fx.tick();\n }\n }\n\n // Animations created synchronously will run synchronously\n function createFxNow() {\n window.setTimeout(function () {\n fxNow = undefined;\n });\n return fxNow = Date.now();\n }\n\n // Generate parameters to create a standard animation\n function genFx(type, includeWidth) {\n var which,\n i = 0,\n attrs = {\n height: type\n };\n\n // If we include width, step value is 1 to do all cssExpand values,\n // otherwise step value is 2 to skip over Left and Right\n includeWidth = includeWidth ? 1 : 0;\n for (; i < 4; i += 2 - includeWidth) {\n which = cssExpand[i];\n attrs[\"margin\" + which] = attrs[\"padding\" + which] = type;\n }\n if (includeWidth) {\n attrs.opacity = attrs.width = type;\n }\n return attrs;\n }\n function createTween(value, prop, animation) {\n var tween,\n collection = (Animation.tweeners[prop] || []).concat(Animation.tweeners[\"*\"]),\n index = 0,\n length = collection.length;\n for (; index < length; index++) {\n if (tween = collection[index].call(animation, prop, value)) {\n // We're done with this property\n return tween;\n }\n }\n }\n function defaultPrefilter(elem, props, opts) {\n var prop,\n value,\n toggle,\n hooks,\n oldfire,\n propTween,\n restoreDisplay,\n display,\n isBox = \"width\" in props || \"height\" in props,\n anim = this,\n orig = {},\n style = elem.style,\n hidden = elem.nodeType && isHiddenWithinTree(elem),\n dataShow = dataPriv.get(elem, \"fxshow\");\n\n // Queue-skipping animations hijack the fx hooks\n if (!opts.queue) {\n hooks = jQuery._queueHooks(elem, \"fx\");\n if (hooks.unqueued == null) {\n hooks.unqueued = 0;\n oldfire = hooks.empty.fire;\n hooks.empty.fire = function () {\n if (!hooks.unqueued) {\n oldfire();\n }\n };\n }\n hooks.unqueued++;\n anim.always(function () {\n // Ensure the complete handler is called before this completes\n anim.always(function () {\n hooks.unqueued--;\n if (!jQuery.queue(elem, \"fx\").length) {\n hooks.empty.fire();\n }\n });\n });\n }\n\n // Detect show/hide animations\n for (prop in props) {\n value = props[prop];\n if (rfxtypes.test(value)) {\n delete props[prop];\n toggle = toggle || value === \"toggle\";\n if (value === (hidden ? \"hide\" : \"show\")) {\n // Pretend to be hidden if this is a \"show\" and\n // there is still data from a stopped show/hide\n if (value === \"show\" && dataShow && dataShow[prop] !== undefined) {\n hidden = true;\n\n // Ignore all other no-op show/hide data\n } else {\n continue;\n }\n }\n orig[prop] = dataShow && dataShow[prop] || jQuery.style(elem, prop);\n }\n }\n\n // Bail out if this is a no-op like .hide().hide()\n propTween = !jQuery.isEmptyObject(props);\n if (!propTween && jQuery.isEmptyObject(orig)) {\n return;\n }\n\n // Restrict \"overflow\" and \"display\" styles during box animations\n if (isBox && elem.nodeType === 1) {\n // Support: IE <=9 - 11, Edge 12 - 15\n // Record all 3 overflow attributes because IE does not infer the shorthand\n // from identically-valued overflowX and overflowY and Edge just mirrors\n // the overflowX value there.\n opts.overflow = [style.overflow, style.overflowX, style.overflowY];\n\n // Identify a display type, preferring old show/hide data over the CSS cascade\n restoreDisplay = dataShow && dataShow.display;\n if (restoreDisplay == null) {\n restoreDisplay = dataPriv.get(elem, \"display\");\n }\n display = jQuery.css(elem, \"display\");\n if (display === \"none\") {\n if (restoreDisplay) {\n display = restoreDisplay;\n } else {\n // Get nonempty value(s) by temporarily forcing visibility\n showHide([elem], true);\n restoreDisplay = elem.style.display || restoreDisplay;\n display = jQuery.css(elem, \"display\");\n showHide([elem]);\n }\n }\n\n // Animate inline elements as inline-block\n if (display === \"inline\" || display === \"inline-block\" && restoreDisplay != null) {\n if (jQuery.css(elem, \"float\") === \"none\") {\n // Restore the original display value at the end of pure show/hide animations\n if (!propTween) {\n anim.done(function () {\n style.display = restoreDisplay;\n });\n if (restoreDisplay == null) {\n display = style.display;\n restoreDisplay = display === \"none\" ? \"\" : display;\n }\n }\n style.display = \"inline-block\";\n }\n }\n }\n if (opts.overflow) {\n style.overflow = \"hidden\";\n anim.always(function () {\n style.overflow = opts.overflow[0];\n style.overflowX = opts.overflow[1];\n style.overflowY = opts.overflow[2];\n });\n }\n\n // Implement show/hide animations\n propTween = false;\n for (prop in orig) {\n // General show/hide setup for this element animation\n if (!propTween) {\n if (dataShow) {\n if (\"hidden\" in dataShow) {\n hidden = dataShow.hidden;\n }\n } else {\n dataShow = dataPriv.access(elem, \"fxshow\", {\n display: restoreDisplay\n });\n }\n\n // Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n if (toggle) {\n dataShow.hidden = !hidden;\n }\n\n // Show elements before animating them\n if (hidden) {\n showHide([elem], true);\n }\n\n /* eslint-disable no-loop-func */\n\n anim.done(function () {\n /* eslint-enable no-loop-func */\n\n // The final step of a \"hide\" animation is actually hiding the element\n if (!hidden) {\n showHide([elem]);\n }\n dataPriv.remove(elem, \"fxshow\");\n for (prop in orig) {\n jQuery.style(elem, prop, orig[prop]);\n }\n });\n }\n\n // Per-property setup\n propTween = createTween(hidden ? dataShow[prop] : 0, prop, anim);\n if (!(prop in dataShow)) {\n dataShow[prop] = propTween.start;\n if (hidden) {\n propTween.end = propTween.start;\n propTween.start = 0;\n }\n }\n }\n }\n function propFilter(props, specialEasing) {\n var index, name, easing, value, hooks;\n\n // camelCase, specialEasing and expand cssHook pass\n for (index in props) {\n name = camelCase(index);\n easing = specialEasing[name];\n value = props[index];\n if (Array.isArray(value)) {\n easing = value[1];\n value = props[index] = value[0];\n }\n if (index !== name) {\n props[name] = value;\n delete props[index];\n }\n hooks = jQuery.cssHooks[name];\n if (hooks && \"expand\" in hooks) {\n value = hooks.expand(value);\n delete props[name];\n\n // Not quite $.extend, this won't overwrite existing keys.\n // Reusing 'index' because we have the correct \"name\"\n for (index in value) {\n if (!(index in props)) {\n props[index] = value[index];\n specialEasing[index] = easing;\n }\n }\n } else {\n specialEasing[name] = easing;\n }\n }\n }\n function Animation(elem, properties, options) {\n var result,\n stopped,\n index = 0,\n length = Animation.prefilters.length,\n deferred = jQuery.Deferred().always(function () {\n // Don't match elem in the :animated selector\n delete tick.elem;\n }),\n tick = function () {\n if (stopped) {\n return false;\n }\n var currentTime = fxNow || createFxNow(),\n remaining = Math.max(0, animation.startTime + animation.duration - currentTime),\n // Support: Android 2.3 only\n // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n temp = remaining / animation.duration || 0,\n percent = 1 - temp,\n index = 0,\n length = animation.tweens.length;\n for (; index < length; index++) {\n animation.tweens[index].run(percent);\n }\n deferred.notifyWith(elem, [animation, percent, remaining]);\n\n // If there's more to do, yield\n if (percent < 1 && length) {\n return remaining;\n }\n\n // If this was an empty animation, synthesize a final progress notification\n if (!length) {\n deferred.notifyWith(elem, [animation, 1, 0]);\n }\n\n // Resolve the animation and report its conclusion\n deferred.resolveWith(elem, [animation]);\n return false;\n },\n animation = deferred.promise({\n elem: elem,\n props: jQuery.extend({}, properties),\n opts: jQuery.extend(true, {\n specialEasing: {},\n easing: jQuery.easing._default\n }, options),\n originalProperties: properties,\n originalOptions: options,\n startTime: fxNow || createFxNow(),\n duration: options.duration,\n tweens: [],\n createTween: function (prop, end) {\n var tween = jQuery.Tween(elem, animation.opts, prop, end, animation.opts.specialEasing[prop] || animation.opts.easing);\n animation.tweens.push(tween);\n return tween;\n },\n stop: function (gotoEnd) {\n var index = 0,\n // If we are going to the end, we want to run all the tweens\n // otherwise we skip this part\n length = gotoEnd ? animation.tweens.length : 0;\n if (stopped) {\n return this;\n }\n stopped = true;\n for (; index < length; index++) {\n animation.tweens[index].run(1);\n }\n\n // Resolve when we played the last frame; otherwise, reject\n if (gotoEnd) {\n deferred.notifyWith(elem, [animation, 1, 0]);\n deferred.resolveWith(elem, [animation, gotoEnd]);\n } else {\n deferred.rejectWith(elem, [animation, gotoEnd]);\n }\n return this;\n }\n }),\n props = animation.props;\n propFilter(props, animation.opts.specialEasing);\n for (; index < length; index++) {\n result = Animation.prefilters[index].call(animation, elem, props, animation.opts);\n if (result) {\n if (isFunction(result.stop)) {\n jQuery._queueHooks(animation.elem, animation.opts.queue).stop = result.stop.bind(result);\n }\n return result;\n }\n }\n jQuery.map(props, createTween, animation);\n if (isFunction(animation.opts.start)) {\n animation.opts.start.call(elem, animation);\n }\n\n // Attach callbacks from options\n animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always);\n jQuery.fx.timer(jQuery.extend(tick, {\n elem: elem,\n anim: animation,\n queue: animation.opts.queue\n }));\n return animation;\n }\n jQuery.Animation = jQuery.extend(Animation, {\n tweeners: {\n \"*\": [function (prop, value) {\n var tween = this.createTween(prop, value);\n adjustCSS(tween.elem, prop, rcssNum.exec(value), tween);\n return tween;\n }]\n },\n tweener: function (props, callback) {\n if (isFunction(props)) {\n callback = props;\n props = [\"*\"];\n } else {\n props = props.match(rnothtmlwhite);\n }\n var prop,\n index = 0,\n length = props.length;\n for (; index < length; index++) {\n prop = props[index];\n Animation.tweeners[prop] = Animation.tweeners[prop] || [];\n Animation.tweeners[prop].unshift(callback);\n }\n },\n prefilters: [defaultPrefilter],\n prefilter: function (callback, prepend) {\n if (prepend) {\n Animation.prefilters.unshift(callback);\n } else {\n Animation.prefilters.push(callback);\n }\n }\n });\n jQuery.speed = function (speed, easing, fn) {\n var opt = speed && typeof speed === \"object\" ? jQuery.extend({}, speed) : {\n complete: fn || !fn && easing || isFunction(speed) && speed,\n duration: speed,\n easing: fn && easing || easing && !isFunction(easing) && easing\n };\n\n // Go to the end state if fx are off\n if (jQuery.fx.off) {\n opt.duration = 0;\n } else {\n if (typeof opt.duration !== \"number\") {\n if (opt.duration in jQuery.fx.speeds) {\n opt.duration = jQuery.fx.speeds[opt.duration];\n } else {\n opt.duration = jQuery.fx.speeds._default;\n }\n }\n }\n\n // Normalize opt.queue - true/undefined/null -> \"fx\"\n if (opt.queue == null || opt.queue === true) {\n opt.queue = \"fx\";\n }\n\n // Queueing\n opt.old = opt.complete;\n opt.complete = function () {\n if (isFunction(opt.old)) {\n opt.old.call(this);\n }\n if (opt.queue) {\n jQuery.dequeue(this, opt.queue);\n }\n };\n return opt;\n };\n jQuery.fn.extend({\n fadeTo: function (speed, to, easing, callback) {\n // Show any hidden elements after setting opacity to 0\n return this.filter(isHiddenWithinTree).css(\"opacity\", 0).show()\n\n // Animate to the value specified\n .end().animate({\n opacity: to\n }, speed, easing, callback);\n },\n animate: function (prop, speed, easing, callback) {\n var empty = jQuery.isEmptyObject(prop),\n optall = jQuery.speed(speed, easing, callback),\n doAnimation = function () {\n // Operate on a copy of prop so per-property easing won't be lost\n var anim = Animation(this, jQuery.extend({}, prop), optall);\n\n // Empty animations, or finishing resolves immediately\n if (empty || dataPriv.get(this, \"finish\")) {\n anim.stop(true);\n }\n };\n doAnimation.finish = doAnimation;\n return empty || optall.queue === false ? this.each(doAnimation) : this.queue(optall.queue, doAnimation);\n },\n stop: function (type, clearQueue, gotoEnd) {\n var stopQueue = function (hooks) {\n var stop = hooks.stop;\n delete hooks.stop;\n stop(gotoEnd);\n };\n if (typeof type !== \"string\") {\n gotoEnd = clearQueue;\n clearQueue = type;\n type = undefined;\n }\n if (clearQueue) {\n this.queue(type || \"fx\", []);\n }\n return this.each(function () {\n var dequeue = true,\n index = type != null && type + \"queueHooks\",\n timers = jQuery.timers,\n data = dataPriv.get(this);\n if (index) {\n if (data[index] && data[index].stop) {\n stopQueue(data[index]);\n }\n } else {\n for (index in data) {\n if (data[index] && data[index].stop && rrun.test(index)) {\n stopQueue(data[index]);\n }\n }\n }\n for (index = timers.length; index--;) {\n if (timers[index].elem === this && (type == null || timers[index].queue === type)) {\n timers[index].anim.stop(gotoEnd);\n dequeue = false;\n timers.splice(index, 1);\n }\n }\n\n // Start the next in the queue if the last step wasn't forced.\n // Timers currently will call their complete callbacks, which\n // will dequeue but only if they were gotoEnd.\n if (dequeue || !gotoEnd) {\n jQuery.dequeue(this, type);\n }\n });\n },\n finish: function (type) {\n if (type !== false) {\n type = type || \"fx\";\n }\n return this.each(function () {\n var index,\n data = dataPriv.get(this),\n queue = data[type + \"queue\"],\n hooks = data[type + \"queueHooks\"],\n timers = jQuery.timers,\n length = queue ? queue.length : 0;\n\n // Enable finishing flag on private data\n data.finish = true;\n\n // Empty the queue first\n jQuery.queue(this, type, []);\n if (hooks && hooks.stop) {\n hooks.stop.call(this, true);\n }\n\n // Look for any active animations, and finish them\n for (index = timers.length; index--;) {\n if (timers[index].elem === this && timers[index].queue === type) {\n timers[index].anim.stop(true);\n timers.splice(index, 1);\n }\n }\n\n // Look for any animations in the old queue and finish them\n for (index = 0; index < length; index++) {\n if (queue[index] && queue[index].finish) {\n queue[index].finish.call(this);\n }\n }\n\n // Turn off finishing flag\n delete data.finish;\n });\n }\n });\n jQuery.each([\"toggle\", \"show\", \"hide\"], function (_i, name) {\n var cssFn = jQuery.fn[name];\n jQuery.fn[name] = function (speed, easing, callback) {\n return speed == null || typeof speed === \"boolean\" ? cssFn.apply(this, arguments) : this.animate(genFx(name, true), speed, easing, callback);\n };\n });\n\n // Generate shortcuts for custom animations\n jQuery.each({\n slideDown: genFx(\"show\"),\n slideUp: genFx(\"hide\"),\n slideToggle: genFx(\"toggle\"),\n fadeIn: {\n opacity: \"show\"\n },\n fadeOut: {\n opacity: \"hide\"\n },\n fadeToggle: {\n opacity: \"toggle\"\n }\n }, function (name, props) {\n jQuery.fn[name] = function (speed, easing, callback) {\n return this.animate(props, speed, easing, callback);\n };\n });\n jQuery.timers = [];\n jQuery.fx.tick = function () {\n var timer,\n i = 0,\n timers = jQuery.timers;\n fxNow = Date.now();\n for (; i < timers.length; i++) {\n timer = timers[i];\n\n // Run the timer and safely remove it when done (allowing for external removal)\n if (!timer() && timers[i] === timer) {\n timers.splice(i--, 1);\n }\n }\n if (!timers.length) {\n jQuery.fx.stop();\n }\n fxNow = undefined;\n };\n jQuery.fx.timer = function (timer) {\n jQuery.timers.push(timer);\n jQuery.fx.start();\n };\n jQuery.fx.interval = 13;\n jQuery.fx.start = function () {\n if (inProgress) {\n return;\n }\n inProgress = true;\n schedule();\n };\n jQuery.fx.stop = function () {\n inProgress = null;\n };\n jQuery.fx.speeds = {\n slow: 600,\n fast: 200,\n // Default speed\n _default: 400\n };\n\n // Based off of the plugin by Clint Helfers, with permission.\n jQuery.fn.delay = function (time, type) {\n time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;\n type = type || \"fx\";\n return this.queue(type, function (next, hooks) {\n var timeout = window.setTimeout(next, time);\n hooks.stop = function () {\n window.clearTimeout(timeout);\n };\n });\n };\n (function () {\n var input = document.createElement(\"input\"),\n select = document.createElement(\"select\"),\n opt = select.appendChild(document.createElement(\"option\"));\n input.type = \"checkbox\";\n\n // Support: Android <=4.3 only\n // Default value for a checkbox should be \"on\"\n support.checkOn = input.value !== \"\";\n\n // Support: IE <=11 only\n // Must access selectedIndex to make default options select\n support.optSelected = opt.selected;\n\n // Support: IE <=11 only\n // An input loses its value after becoming a radio\n input = document.createElement(\"input\");\n input.value = \"t\";\n input.type = \"radio\";\n support.radioValue = input.value === \"t\";\n })();\n var boolHook,\n attrHandle = jQuery.expr.attrHandle;\n jQuery.fn.extend({\n attr: function (name, value) {\n return access(this, jQuery.attr, name, value, arguments.length > 1);\n },\n removeAttr: function (name) {\n return this.each(function () {\n jQuery.removeAttr(this, name);\n });\n }\n });\n jQuery.extend({\n attr: function (elem, name, value) {\n var ret,\n hooks,\n nType = elem.nodeType;\n\n // Don't get/set attributes on text, comment and attribute nodes\n if (nType === 3 || nType === 8 || nType === 2) {\n return;\n }\n\n // Fallback to prop when attributes are not supported\n if (typeof elem.getAttribute === \"undefined\") {\n return jQuery.prop(elem, name, value);\n }\n\n // Attribute hooks are determined by the lowercase version\n // Grab necessary hook if one is defined\n if (nType !== 1 || !jQuery.isXMLDoc(elem)) {\n hooks = jQuery.attrHooks[name.toLowerCase()] || (jQuery.expr.match.bool.test(name) ? boolHook : undefined);\n }\n if (value !== undefined) {\n if (value === null) {\n jQuery.removeAttr(elem, name);\n return;\n }\n if (hooks && \"set\" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {\n return ret;\n }\n elem.setAttribute(name, value + \"\");\n return value;\n }\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, name)) !== null) {\n return ret;\n }\n ret = jQuery.find.attr(elem, name);\n\n // Non-existent attributes return null, we normalize to undefined\n return ret == null ? undefined : ret;\n },\n attrHooks: {\n type: {\n set: function (elem, value) {\n if (!support.radioValue && value === \"radio\" && nodeName(elem, \"input\")) {\n var val = elem.value;\n elem.setAttribute(\"type\", value);\n if (val) {\n elem.value = val;\n }\n return value;\n }\n }\n }\n },\n removeAttr: function (elem, value) {\n var name,\n i = 0,\n // Attribute names can contain non-HTML whitespace characters\n // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n attrNames = value && value.match(rnothtmlwhite);\n if (attrNames && elem.nodeType === 1) {\n while (name = attrNames[i++]) {\n elem.removeAttribute(name);\n }\n }\n }\n });\n\n // Hooks for boolean attributes\n boolHook = {\n set: function (elem, value, name) {\n if (value === false) {\n // Remove boolean attributes when set to false\n jQuery.removeAttr(elem, name);\n } else {\n elem.setAttribute(name, name);\n }\n return name;\n }\n };\n jQuery.each(jQuery.expr.match.bool.source.match(/\\w+/g), function (_i, name) {\n var getter = attrHandle[name] || jQuery.find.attr;\n attrHandle[name] = function (elem, name, isXML) {\n var ret,\n handle,\n lowercaseName = name.toLowerCase();\n if (!isXML) {\n // Avoid an infinite loop by temporarily removing this function from the getter\n handle = attrHandle[lowercaseName];\n attrHandle[lowercaseName] = ret;\n ret = getter(elem, name, isXML) != null ? lowercaseName : null;\n attrHandle[lowercaseName] = handle;\n }\n return ret;\n };\n });\n var rfocusable = /^(?:input|select|textarea|button)$/i,\n rclickable = /^(?:a|area)$/i;\n jQuery.fn.extend({\n prop: function (name, value) {\n return access(this, jQuery.prop, name, value, arguments.length > 1);\n },\n removeProp: function (name) {\n return this.each(function () {\n delete this[jQuery.propFix[name] || name];\n });\n }\n });\n jQuery.extend({\n prop: function (elem, name, value) {\n var ret,\n hooks,\n nType = elem.nodeType;\n\n // Don't get/set properties on text, comment and attribute nodes\n if (nType === 3 || nType === 8 || nType === 2) {\n return;\n }\n if (nType !== 1 || !jQuery.isXMLDoc(elem)) {\n // Fix name and attach hooks\n name = jQuery.propFix[name] || name;\n hooks = jQuery.propHooks[name];\n }\n if (value !== undefined) {\n if (hooks && \"set\" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {\n return ret;\n }\n return elem[name] = value;\n }\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, name)) !== null) {\n return ret;\n }\n return elem[name];\n },\n propHooks: {\n tabIndex: {\n get: function (elem) {\n // Support: IE <=9 - 11 only\n // elem.tabIndex doesn't always return the\n // correct value when it hasn't been explicitly set\n // Use proper attribute retrieval (trac-12072)\n var tabindex = jQuery.find.attr(elem, \"tabindex\");\n if (tabindex) {\n return parseInt(tabindex, 10);\n }\n if (rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href) {\n return 0;\n }\n return -1;\n }\n }\n },\n propFix: {\n \"for\": \"htmlFor\",\n \"class\": \"className\"\n }\n });\n\n // Support: IE <=11 only\n // Accessing the selectedIndex property\n // forces the browser to respect setting selected\n // on the option\n // The getter ensures a default option is selected\n // when in an optgroup\n // eslint rule \"no-unused-expressions\" is disabled for this code\n // since it considers such accessions noop\n if (!support.optSelected) {\n jQuery.propHooks.selected = {\n get: function (elem) {\n /* eslint no-unused-expressions: \"off\" */\n\n var parent = elem.parentNode;\n if (parent && parent.parentNode) {\n parent.parentNode.selectedIndex;\n }\n return null;\n },\n set: function (elem) {\n /* eslint no-unused-expressions: \"off\" */\n\n var parent = elem.parentNode;\n if (parent) {\n parent.selectedIndex;\n if (parent.parentNode) {\n parent.parentNode.selectedIndex;\n }\n }\n }\n };\n }\n jQuery.each([\"tabIndex\", \"readOnly\", \"maxLength\", \"cellSpacing\", \"cellPadding\", \"rowSpan\", \"colSpan\", \"useMap\", \"frameBorder\", \"contentEditable\"], function () {\n jQuery.propFix[this.toLowerCase()] = this;\n });\n\n // Strip and collapse whitespace according to HTML spec\n // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n function stripAndCollapse(value) {\n var tokens = value.match(rnothtmlwhite) || [];\n return tokens.join(\" \");\n }\n function getClass(elem) {\n return elem.getAttribute && elem.getAttribute(\"class\") || \"\";\n }\n function classesToArray(value) {\n if (Array.isArray(value)) {\n return value;\n }\n if (typeof value === \"string\") {\n return value.match(rnothtmlwhite) || [];\n }\n return [];\n }\n jQuery.fn.extend({\n addClass: function (value) {\n var classNames, cur, curValue, className, i, finalValue;\n if (isFunction(value)) {\n return this.each(function (j) {\n jQuery(this).addClass(value.call(this, j, getClass(this)));\n });\n }\n classNames = classesToArray(value);\n if (classNames.length) {\n return this.each(function () {\n curValue = getClass(this);\n cur = this.nodeType === 1 && \" \" + stripAndCollapse(curValue) + \" \";\n if (cur) {\n for (i = 0; i < classNames.length; i++) {\n className = classNames[i];\n if (cur.indexOf(\" \" + className + \" \") < 0) {\n cur += className + \" \";\n }\n }\n\n // Only assign if different to avoid unneeded rendering.\n finalValue = stripAndCollapse(cur);\n if (curValue !== finalValue) {\n this.setAttribute(\"class\", finalValue);\n }\n }\n });\n }\n return this;\n },\n removeClass: function (value) {\n var classNames, cur, curValue, className, i, finalValue;\n if (isFunction(value)) {\n return this.each(function (j) {\n jQuery(this).removeClass(value.call(this, j, getClass(this)));\n });\n }\n if (!arguments.length) {\n return this.attr(\"class\", \"\");\n }\n classNames = classesToArray(value);\n if (classNames.length) {\n return this.each(function () {\n curValue = getClass(this);\n\n // This expression is here for better compressibility (see addClass)\n cur = this.nodeType === 1 && \" \" + stripAndCollapse(curValue) + \" \";\n if (cur) {\n for (i = 0; i < classNames.length; i++) {\n className = classNames[i];\n\n // Remove *all* instances\n while (cur.indexOf(\" \" + className + \" \") > -1) {\n cur = cur.replace(\" \" + className + \" \", \" \");\n }\n }\n\n // Only assign if different to avoid unneeded rendering.\n finalValue = stripAndCollapse(cur);\n if (curValue !== finalValue) {\n this.setAttribute(\"class\", finalValue);\n }\n }\n });\n }\n return this;\n },\n toggleClass: function (value, stateVal) {\n var classNames,\n className,\n i,\n self,\n type = typeof value,\n isValidValue = type === \"string\" || Array.isArray(value);\n if (isFunction(value)) {\n return this.each(function (i) {\n jQuery(this).toggleClass(value.call(this, i, getClass(this), stateVal), stateVal);\n });\n }\n if (typeof stateVal === \"boolean\" && isValidValue) {\n return stateVal ? this.addClass(value) : this.removeClass(value);\n }\n classNames = classesToArray(value);\n return this.each(function () {\n if (isValidValue) {\n // Toggle individual class names\n self = jQuery(this);\n for (i = 0; i < classNames.length; i++) {\n className = classNames[i];\n\n // Check each className given, space separated list\n if (self.hasClass(className)) {\n self.removeClass(className);\n } else {\n self.addClass(className);\n }\n }\n\n // Toggle whole class name\n } else if (value === undefined || type === \"boolean\") {\n className = getClass(this);\n if (className) {\n // Store className if set\n dataPriv.set(this, \"__className__\", className);\n }\n\n // If the element has a class name or if we're passed `false`,\n // then remove the whole classname (if there was one, the above saved it).\n // Otherwise bring back whatever was previously saved (if anything),\n // falling back to the empty string if nothing was stored.\n if (this.setAttribute) {\n this.setAttribute(\"class\", className || value === false ? \"\" : dataPriv.get(this, \"__className__\") || \"\");\n }\n }\n });\n },\n hasClass: function (selector) {\n var className,\n elem,\n i = 0;\n className = \" \" + selector + \" \";\n while (elem = this[i++]) {\n if (elem.nodeType === 1 && (\" \" + stripAndCollapse(getClass(elem)) + \" \").indexOf(className) > -1) {\n return true;\n }\n }\n return false;\n }\n });\n var rreturn = /\\r/g;\n jQuery.fn.extend({\n val: function (value) {\n var hooks,\n ret,\n valueIsFunction,\n elem = this[0];\n if (!arguments.length) {\n if (elem) {\n hooks = jQuery.valHooks[elem.type] || jQuery.valHooks[elem.nodeName.toLowerCase()];\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, \"value\")) !== undefined) {\n return ret;\n }\n ret = elem.value;\n\n // Handle most common string cases\n if (typeof ret === \"string\") {\n return ret.replace(rreturn, \"\");\n }\n\n // Handle cases where value is null/undef or number\n return ret == null ? \"\" : ret;\n }\n return;\n }\n valueIsFunction = isFunction(value);\n return this.each(function (i) {\n var val;\n if (this.nodeType !== 1) {\n return;\n }\n if (valueIsFunction) {\n val = value.call(this, i, jQuery(this).val());\n } else {\n val = value;\n }\n\n // Treat null/undefined as \"\"; convert numbers to string\n if (val == null) {\n val = \"\";\n } else if (typeof val === \"number\") {\n val += \"\";\n } else if (Array.isArray(val)) {\n val = jQuery.map(val, function (value) {\n return value == null ? \"\" : value + \"\";\n });\n }\n hooks = jQuery.valHooks[this.type] || jQuery.valHooks[this.nodeName.toLowerCase()];\n\n // If set returns undefined, fall back to normal setting\n if (!hooks || !(\"set\" in hooks) || hooks.set(this, val, \"value\") === undefined) {\n this.value = val;\n }\n });\n }\n });\n jQuery.extend({\n valHooks: {\n option: {\n get: function (elem) {\n var val = jQuery.find.attr(elem, \"value\");\n return val != null ? val :\n // Support: IE <=10 - 11 only\n // option.text throws exceptions (trac-14686, trac-14858)\n // Strip and collapse whitespace\n // https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n stripAndCollapse(jQuery.text(elem));\n }\n },\n select: {\n get: function (elem) {\n var value,\n option,\n i,\n options = elem.options,\n index = elem.selectedIndex,\n one = elem.type === \"select-one\",\n values = one ? null : [],\n max = one ? index + 1 : options.length;\n if (index < 0) {\n i = max;\n } else {\n i = one ? index : 0;\n }\n\n // Loop through all the selected options\n for (; i < max; i++) {\n option = options[i];\n\n // Support: IE <=9 only\n // IE8-9 doesn't update selected after form reset (trac-2551)\n if ((option.selected || i === index) &&\n // Don't return options that are disabled or in a disabled optgroup\n !option.disabled && (!option.parentNode.disabled || !nodeName(option.parentNode, \"optgroup\"))) {\n // Get the specific value for the option\n value = jQuery(option).val();\n\n // We don't need an array for one selects\n if (one) {\n return value;\n }\n\n // Multi-Selects return an array\n values.push(value);\n }\n }\n return values;\n },\n set: function (elem, value) {\n var optionSet,\n option,\n options = elem.options,\n values = jQuery.makeArray(value),\n i = options.length;\n while (i--) {\n option = options[i];\n\n /* eslint-disable no-cond-assign */\n\n if (option.selected = jQuery.inArray(jQuery.valHooks.option.get(option), values) > -1) {\n optionSet = true;\n }\n\n /* eslint-enable no-cond-assign */\n }\n\n // Force browsers to behave consistently when non-matching value is set\n if (!optionSet) {\n elem.selectedIndex = -1;\n }\n return values;\n }\n }\n }\n });\n\n // Radios and checkboxes getter/setter\n jQuery.each([\"radio\", \"checkbox\"], function () {\n jQuery.valHooks[this] = {\n set: function (elem, value) {\n if (Array.isArray(value)) {\n return elem.checked = jQuery.inArray(jQuery(elem).val(), value) > -1;\n }\n }\n };\n if (!support.checkOn) {\n jQuery.valHooks[this].get = function (elem) {\n return elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n };\n }\n });\n\n // Return jQuery for attributes-only inclusion\n var location = window.location;\n var nonce = {\n guid: Date.now()\n };\n var rquery = /\\?/;\n\n // Cross-browser xml parsing\n jQuery.parseXML = function (data) {\n var xml, parserErrorElem;\n if (!data || typeof data !== \"string\") {\n return null;\n }\n\n // Support: IE 9 - 11 only\n // IE throws on parseFromString with invalid input.\n try {\n xml = new window.DOMParser().parseFromString(data, \"text/xml\");\n } catch (e) {}\n parserErrorElem = xml && xml.getElementsByTagName(\"parsererror\")[0];\n if (!xml || parserErrorElem) {\n jQuery.error(\"Invalid XML: \" + (parserErrorElem ? jQuery.map(parserErrorElem.childNodes, function (el) {\n return el.textContent;\n }).join(\"\\n\") : data));\n }\n return xml;\n };\n var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n stopPropagationCallback = function (e) {\n e.stopPropagation();\n };\n jQuery.extend(jQuery.event, {\n trigger: function (event, data, elem, onlyHandlers) {\n var i,\n cur,\n tmp,\n bubbleType,\n ontype,\n handle,\n special,\n lastElement,\n eventPath = [elem || document],\n type = hasOwn.call(event, \"type\") ? event.type : event,\n namespaces = hasOwn.call(event, \"namespace\") ? event.namespace.split(\".\") : [];\n cur = lastElement = tmp = elem = elem || document;\n\n // Don't do events on text and comment nodes\n if (elem.nodeType === 3 || elem.nodeType === 8) {\n return;\n }\n\n // focus/blur morphs to focusin/out; ensure we're not firing them right now\n if (rfocusMorph.test(type + jQuery.event.triggered)) {\n return;\n }\n if (type.indexOf(\".\") > -1) {\n // Namespaced trigger; create a regexp to match event type in handle()\n namespaces = type.split(\".\");\n type = namespaces.shift();\n namespaces.sort();\n }\n ontype = type.indexOf(\":\") < 0 && \"on\" + type;\n\n // Caller can pass in a jQuery.Event object, Object, or just an event type string\n event = event[jQuery.expando] ? event : new jQuery.Event(type, typeof event === \"object\" && event);\n\n // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n event.isTrigger = onlyHandlers ? 2 : 3;\n event.namespace = namespaces.join(\".\");\n event.rnamespace = event.namespace ? new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\") : null;\n\n // Clean up the event in case it is being reused\n event.result = undefined;\n if (!event.target) {\n event.target = elem;\n }\n\n // Clone any incoming data and prepend the event, creating the handler arg list\n data = data == null ? [event] : jQuery.makeArray(data, [event]);\n\n // Allow special events to draw outside the lines\n special = jQuery.event.special[type] || {};\n if (!onlyHandlers && special.trigger && special.trigger.apply(elem, data) === false) {\n return;\n }\n\n // Determine event propagation path in advance, per W3C events spec (trac-9951)\n // Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n if (!onlyHandlers && !special.noBubble && !isWindow(elem)) {\n bubbleType = special.delegateType || type;\n if (!rfocusMorph.test(bubbleType + type)) {\n cur = cur.parentNode;\n }\n for (; cur; cur = cur.parentNode) {\n eventPath.push(cur);\n tmp = cur;\n }\n\n // Only add window if we got to document (e.g., not plain obj or detached DOM)\n if (tmp === (elem.ownerDocument || document)) {\n eventPath.push(tmp.defaultView || tmp.parentWindow || window);\n }\n }\n\n // Fire handlers on the event path\n i = 0;\n while ((cur = eventPath[i++]) && !event.isPropagationStopped()) {\n lastElement = cur;\n event.type = i > 1 ? bubbleType : special.bindType || type;\n\n // jQuery handler\n handle = (dataPriv.get(cur, \"events\") || Object.create(null))[event.type] && dataPriv.get(cur, \"handle\");\n if (handle) {\n handle.apply(cur, data);\n }\n\n // Native handler\n handle = ontype && cur[ontype];\n if (handle && handle.apply && acceptData(cur)) {\n event.result = handle.apply(cur, data);\n if (event.result === false) {\n event.preventDefault();\n }\n }\n }\n event.type = type;\n\n // If nobody prevented the default action, do it now\n if (!onlyHandlers && !event.isDefaultPrevented()) {\n if ((!special._default || special._default.apply(eventPath.pop(), data) === false) && acceptData(elem)) {\n // Call a native DOM method on the target with the same name as the event.\n // Don't do default actions on window, that's where global variables be (trac-6170)\n if (ontype && isFunction(elem[type]) && !isWindow(elem)) {\n // Don't re-trigger an onFOO event when we call its FOO() method\n tmp = elem[ontype];\n if (tmp) {\n elem[ontype] = null;\n }\n\n // Prevent re-triggering of the same event, since we already bubbled it above\n jQuery.event.triggered = type;\n if (event.isPropagationStopped()) {\n lastElement.addEventListener(type, stopPropagationCallback);\n }\n elem[type]();\n if (event.isPropagationStopped()) {\n lastElement.removeEventListener(type, stopPropagationCallback);\n }\n jQuery.event.triggered = undefined;\n if (tmp) {\n elem[ontype] = tmp;\n }\n }\n }\n }\n return event.result;\n },\n // Piggyback on a donor event to simulate a different one\n // Used only for `focus(in | out)` events\n simulate: function (type, elem, event) {\n var e = jQuery.extend(new jQuery.Event(), event, {\n type: type,\n isSimulated: true\n });\n jQuery.event.trigger(e, null, elem);\n }\n });\n jQuery.fn.extend({\n trigger: function (type, data) {\n return this.each(function () {\n jQuery.event.trigger(type, data, this);\n });\n },\n triggerHandler: function (type, data) {\n var elem = this[0];\n if (elem) {\n return jQuery.event.trigger(type, data, elem, true);\n }\n }\n });\n var rbracket = /\\[\\]$/,\n rCRLF = /\\r?\\n/g,\n rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n rsubmittable = /^(?:input|select|textarea|keygen)/i;\n function buildParams(prefix, obj, traditional, add) {\n var name;\n if (Array.isArray(obj)) {\n // Serialize array item.\n jQuery.each(obj, function (i, v) {\n if (traditional || rbracket.test(prefix)) {\n // Treat each array item as a scalar.\n add(prefix, v);\n } else {\n // Item is non-scalar (array or object), encode its numeric index.\n buildParams(prefix + \"[\" + (typeof v === \"object\" && v != null ? i : \"\") + \"]\", v, traditional, add);\n }\n });\n } else if (!traditional && toType(obj) === \"object\") {\n // Serialize object item.\n for (name in obj) {\n buildParams(prefix + \"[\" + name + \"]\", obj[name], traditional, add);\n }\n } else {\n // Serialize scalar item.\n add(prefix, obj);\n }\n }\n\n // Serialize an array of form elements or a set of\n // key/values into a query string\n jQuery.param = function (a, traditional) {\n var prefix,\n s = [],\n add = function (key, valueOrFunction) {\n // If value is a function, invoke it and use its return value\n var value = isFunction(valueOrFunction) ? valueOrFunction() : valueOrFunction;\n s[s.length] = encodeURIComponent(key) + \"=\" + encodeURIComponent(value == null ? \"\" : value);\n };\n if (a == null) {\n return \"\";\n }\n\n // If an array was passed in, assume that it is an array of form elements.\n if (Array.isArray(a) || a.jquery && !jQuery.isPlainObject(a)) {\n // Serialize the form elements\n jQuery.each(a, function () {\n add(this.name, this.value);\n });\n } else {\n // If traditional, encode the \"old\" way (the way 1.3.2 or older\n // did it), otherwise encode params recursively.\n for (prefix in a) {\n buildParams(prefix, a[prefix], traditional, add);\n }\n }\n\n // Return the resulting serialization\n return s.join(\"&\");\n };\n jQuery.fn.extend({\n serialize: function () {\n return jQuery.param(this.serializeArray());\n },\n serializeArray: function () {\n return this.map(function () {\n // Can add propHook for \"elements\" to filter or add form elements\n var elements = jQuery.prop(this, \"elements\");\n return elements ? jQuery.makeArray(elements) : this;\n }).filter(function () {\n var type = this.type;\n\n // Use .is( \":disabled\" ) so that fieldset[disabled] works\n return this.name && !jQuery(this).is(\":disabled\") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) && (this.checked || !rcheckableType.test(type));\n }).map(function (_i, elem) {\n var val = jQuery(this).val();\n if (val == null) {\n return null;\n }\n if (Array.isArray(val)) {\n return jQuery.map(val, function (val) {\n return {\n name: elem.name,\n value: val.replace(rCRLF, \"\\r\\n\")\n };\n });\n }\n return {\n name: elem.name,\n value: val.replace(rCRLF, \"\\r\\n\")\n };\n }).get();\n }\n });\n var r20 = /%20/g,\n rhash = /#.*$/,\n rantiCache = /([?&])_=[^&]*/,\n rheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n // trac-7653, trac-8125, trac-8152: local protocol detection\n rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n rnoContent = /^(?:GET|HEAD)$/,\n rprotocol = /^\\/\\//,\n /* Prefilters\n * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n * 2) These are called:\n * - BEFORE asking for a transport\n * - AFTER param serialization (s.data is a string if s.processData is true)\n * 3) key is the dataType\n * 4) the catchall symbol \"*\" can be used\n * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n */\n prefilters = {},\n /* Transports bindings\n * 1) key is the dataType\n * 2) the catchall symbol \"*\" can be used\n * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n */\n transports = {},\n // Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n allTypes = \"*/\".concat(\"*\"),\n // Anchor tag for parsing the document origin\n originAnchor = document.createElement(\"a\");\n originAnchor.href = location.href;\n\n // Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\n function addToPrefiltersOrTransports(structure) {\n // dataTypeExpression is optional and defaults to \"*\"\n return function (dataTypeExpression, func) {\n if (typeof dataTypeExpression !== \"string\") {\n func = dataTypeExpression;\n dataTypeExpression = \"*\";\n }\n var dataType,\n i = 0,\n dataTypes = dataTypeExpression.toLowerCase().match(rnothtmlwhite) || [];\n if (isFunction(func)) {\n // For each dataType in the dataTypeExpression\n while (dataType = dataTypes[i++]) {\n // Prepend if requested\n if (dataType[0] === \"+\") {\n dataType = dataType.slice(1) || \"*\";\n (structure[dataType] = structure[dataType] || []).unshift(func);\n\n // Otherwise append\n } else {\n (structure[dataType] = structure[dataType] || []).push(func);\n }\n }\n }\n };\n }\n\n // Base inspection function for prefilters and transports\n function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) {\n var inspected = {},\n seekingTransport = structure === transports;\n function inspect(dataType) {\n var selected;\n inspected[dataType] = true;\n jQuery.each(structure[dataType] || [], function (_, prefilterOrFactory) {\n var dataTypeOrTransport = prefilterOrFactory(options, originalOptions, jqXHR);\n if (typeof dataTypeOrTransport === \"string\" && !seekingTransport && !inspected[dataTypeOrTransport]) {\n options.dataTypes.unshift(dataTypeOrTransport);\n inspect(dataTypeOrTransport);\n return false;\n } else if (seekingTransport) {\n return !(selected = dataTypeOrTransport);\n }\n });\n return selected;\n }\n return inspect(options.dataTypes[0]) || !inspected[\"*\"] && inspect(\"*\");\n }\n\n // A special extend for ajax options\n // that takes \"flat\" options (not to be deep extended)\n // Fixes trac-9887\n function ajaxExtend(target, src) {\n var key,\n deep,\n flatOptions = jQuery.ajaxSettings.flatOptions || {};\n for (key in src) {\n if (src[key] !== undefined) {\n (flatOptions[key] ? target : deep || (deep = {}))[key] = src[key];\n }\n }\n if (deep) {\n jQuery.extend(true, target, deep);\n }\n return target;\n }\n\n /* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\n function ajaxHandleResponses(s, jqXHR, responses) {\n var ct,\n type,\n finalDataType,\n firstDataType,\n contents = s.contents,\n dataTypes = s.dataTypes;\n\n // Remove auto dataType and get content-type in the process\n while (dataTypes[0] === \"*\") {\n dataTypes.shift();\n if (ct === undefined) {\n ct = s.mimeType || jqXHR.getResponseHeader(\"Content-Type\");\n }\n }\n\n // Check if we're dealing with a known content-type\n if (ct) {\n for (type in contents) {\n if (contents[type] && contents[type].test(ct)) {\n dataTypes.unshift(type);\n break;\n }\n }\n }\n\n // Check to see if we have a response for the expected dataType\n if (dataTypes[0] in responses) {\n finalDataType = dataTypes[0];\n } else {\n // Try convertible dataTypes\n for (type in responses) {\n if (!dataTypes[0] || s.converters[type + \" \" + dataTypes[0]]) {\n finalDataType = type;\n break;\n }\n if (!firstDataType) {\n firstDataType = type;\n }\n }\n\n // Or just use first one\n finalDataType = finalDataType || firstDataType;\n }\n\n // If we found a dataType\n // We add the dataType to the list if needed\n // and return the corresponding response\n if (finalDataType) {\n if (finalDataType !== dataTypes[0]) {\n dataTypes.unshift(finalDataType);\n }\n return responses[finalDataType];\n }\n }\n\n /* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\n function ajaxConvert(s, response, jqXHR, isSuccess) {\n var conv2,\n current,\n conv,\n tmp,\n prev,\n converters = {},\n // Work with a copy of dataTypes in case we need to modify it for conversion\n dataTypes = s.dataTypes.slice();\n\n // Create converters map with lowercased keys\n if (dataTypes[1]) {\n for (conv in s.converters) {\n converters[conv.toLowerCase()] = s.converters[conv];\n }\n }\n current = dataTypes.shift();\n\n // Convert to each sequential dataType\n while (current) {\n if (s.responseFields[current]) {\n jqXHR[s.responseFields[current]] = response;\n }\n\n // Apply the dataFilter if provided\n if (!prev && isSuccess && s.dataFilter) {\n response = s.dataFilter(response, s.dataType);\n }\n prev = current;\n current = dataTypes.shift();\n if (current) {\n // There's only work to do if current dataType is non-auto\n if (current === \"*\") {\n current = prev;\n\n // Convert response if prev dataType is non-auto and differs from current\n } else if (prev !== \"*\" && prev !== current) {\n // Seek a direct converter\n conv = converters[prev + \" \" + current] || converters[\"* \" + current];\n\n // If none found, seek a pair\n if (!conv) {\n for (conv2 in converters) {\n // If conv2 outputs current\n tmp = conv2.split(\" \");\n if (tmp[1] === current) {\n // If prev can be converted to accepted input\n conv = converters[prev + \" \" + tmp[0]] || converters[\"* \" + tmp[0]];\n if (conv) {\n // Condense equivalence converters\n if (conv === true) {\n conv = converters[conv2];\n\n // Otherwise, insert the intermediate dataType\n } else if (converters[conv2] !== true) {\n current = tmp[0];\n dataTypes.unshift(tmp[1]);\n }\n break;\n }\n }\n }\n }\n\n // Apply converter (if not an equivalence)\n if (conv !== true) {\n // Unless errors are allowed to bubble, catch and return them\n if (conv && s.throws) {\n response = conv(response);\n } else {\n try {\n response = conv(response);\n } catch (e) {\n return {\n state: \"parsererror\",\n error: conv ? e : \"No conversion from \" + prev + \" to \" + current\n };\n }\n }\n }\n }\n }\n }\n return {\n state: \"success\",\n data: response\n };\n }\n jQuery.extend({\n // Counter for holding the number of active queries\n active: 0,\n // Last-Modified header cache for next request\n lastModified: {},\n etag: {},\n ajaxSettings: {\n url: location.href,\n type: \"GET\",\n isLocal: rlocalProtocol.test(location.protocol),\n global: true,\n processData: true,\n async: true,\n contentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n /*\n timeout: 0,\n data: null,\n dataType: null,\n username: null,\n password: null,\n cache: null,\n throws: false,\n traditional: false,\n headers: {},\n */\n\n accepts: {\n \"*\": allTypes,\n text: \"text/plain\",\n html: \"text/html\",\n xml: \"application/xml, text/xml\",\n json: \"application/json, text/javascript\"\n },\n contents: {\n xml: /\\bxml\\b/,\n html: /\\bhtml/,\n json: /\\bjson\\b/\n },\n responseFields: {\n xml: \"responseXML\",\n text: \"responseText\",\n json: \"responseJSON\"\n },\n // Data converters\n // Keys separate source (or catchall \"*\") and destination types with a single space\n converters: {\n // Convert anything to text\n \"* text\": String,\n // Text to html (true = no transformation)\n \"text html\": true,\n // Evaluate text as a json expression\n \"text json\": JSON.parse,\n // Parse text as xml\n \"text xml\": jQuery.parseXML\n },\n // For options that shouldn't be deep extended:\n // you can add your own custom options here if\n // and when you create one that shouldn't be\n // deep extended (see ajaxExtend)\n flatOptions: {\n url: true,\n context: true\n }\n },\n // Creates a full fledged settings object into target\n // with both ajaxSettings and settings fields.\n // If target is omitted, writes into ajaxSettings.\n ajaxSetup: function (target, settings) {\n return settings ?\n // Building a settings object\n ajaxExtend(ajaxExtend(target, jQuery.ajaxSettings), settings) :\n // Extending ajaxSettings\n ajaxExtend(jQuery.ajaxSettings, target);\n },\n ajaxPrefilter: addToPrefiltersOrTransports(prefilters),\n ajaxTransport: addToPrefiltersOrTransports(transports),\n // Main method\n ajax: function (url, options) {\n // If url is an object, simulate pre-1.5 signature\n if (typeof url === \"object\") {\n options = url;\n url = undefined;\n }\n\n // Force options to be an object\n options = options || {};\n var transport,\n // URL without anti-cache param\n cacheURL,\n // Response headers\n responseHeadersString,\n responseHeaders,\n // timeout handle\n timeoutTimer,\n // Url cleanup var\n urlAnchor,\n // Request state (becomes false upon send and true upon completion)\n completed,\n // To know if global events are to be dispatched\n fireGlobals,\n // Loop variable\n i,\n // uncached part of the url\n uncached,\n // Create the final options object\n s = jQuery.ajaxSetup({}, options),\n // Callbacks context\n callbackContext = s.context || s,\n // Context for global events is callbackContext if it is a DOM node or jQuery collection\n globalEventContext = s.context && (callbackContext.nodeType || callbackContext.jquery) ? jQuery(callbackContext) : jQuery.event,\n // Deferreds\n deferred = jQuery.Deferred(),\n completeDeferred = jQuery.Callbacks(\"once memory\"),\n // Status-dependent callbacks\n statusCode = s.statusCode || {},\n // Headers (they are sent all at once)\n requestHeaders = {},\n requestHeadersNames = {},\n // Default abort message\n strAbort = \"canceled\",\n // Fake xhr\n jqXHR = {\n readyState: 0,\n // Builds headers hashtable if needed\n getResponseHeader: function (key) {\n var match;\n if (completed) {\n if (!responseHeaders) {\n responseHeaders = {};\n while (match = rheaders.exec(responseHeadersString)) {\n responseHeaders[match[1].toLowerCase() + \" \"] = (responseHeaders[match[1].toLowerCase() + \" \"] || []).concat(match[2]);\n }\n }\n match = responseHeaders[key.toLowerCase() + \" \"];\n }\n return match == null ? null : match.join(\", \");\n },\n // Raw string\n getAllResponseHeaders: function () {\n return completed ? responseHeadersString : null;\n },\n // Caches the header\n setRequestHeader: function (name, value) {\n if (completed == null) {\n name = requestHeadersNames[name.toLowerCase()] = requestHeadersNames[name.toLowerCase()] || name;\n requestHeaders[name] = value;\n }\n return this;\n },\n // Overrides response content-type header\n overrideMimeType: function (type) {\n if (completed == null) {\n s.mimeType = type;\n }\n return this;\n },\n // Status-dependent callbacks\n statusCode: function (map) {\n var code;\n if (map) {\n if (completed) {\n // Execute the appropriate callbacks\n jqXHR.always(map[jqXHR.status]);\n } else {\n // Lazy-add the new callbacks in a way that preserves old ones\n for (code in map) {\n statusCode[code] = [statusCode[code], map[code]];\n }\n }\n }\n return this;\n },\n // Cancel the request\n abort: function (statusText) {\n var finalText = statusText || strAbort;\n if (transport) {\n transport.abort(finalText);\n }\n done(0, finalText);\n return this;\n }\n };\n\n // Attach deferreds\n deferred.promise(jqXHR);\n\n // Add protocol if not provided (prefilters might expect it)\n // Handle falsy url in the settings object (trac-10093: consistency with old signature)\n // We also use the url parameter if available\n s.url = ((url || s.url || location.href) + \"\").replace(rprotocol, location.protocol + \"//\");\n\n // Alias method option to type as per ticket trac-12004\n s.type = options.method || options.type || s.method || s.type;\n\n // Extract dataTypes list\n s.dataTypes = (s.dataType || \"*\").toLowerCase().match(rnothtmlwhite) || [\"\"];\n\n // A cross-domain request is in order when the origin doesn't match the current origin.\n if (s.crossDomain == null) {\n urlAnchor = document.createElement(\"a\");\n\n // Support: IE <=8 - 11, Edge 12 - 15\n // IE throws exception on accessing the href property if url is malformed,\n // e.g. http://example.com:80x/\n try {\n urlAnchor.href = s.url;\n\n // Support: IE <=8 - 11 only\n // Anchor's host property isn't correctly set when s.url is relative\n urlAnchor.href = urlAnchor.href;\n s.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !== urlAnchor.protocol + \"//\" + urlAnchor.host;\n } catch (e) {\n // If there is an error parsing the URL, assume it is crossDomain,\n // it can be rejected by the transport if it is invalid\n s.crossDomain = true;\n }\n }\n\n // Convert data if not already a string\n if (s.data && s.processData && typeof s.data !== \"string\") {\n s.data = jQuery.param(s.data, s.traditional);\n }\n\n // Apply prefilters\n inspectPrefiltersOrTransports(prefilters, s, options, jqXHR);\n\n // If request was aborted inside a prefilter, stop there\n if (completed) {\n return jqXHR;\n }\n\n // We can fire global events as of now if asked to\n // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n fireGlobals = jQuery.event && s.global;\n\n // Watch for a new set of requests\n if (fireGlobals && jQuery.active++ === 0) {\n jQuery.event.trigger(\"ajaxStart\");\n }\n\n // Uppercase the type\n s.type = s.type.toUpperCase();\n\n // Determine if request has content\n s.hasContent = !rnoContent.test(s.type);\n\n // Save the URL in case we're toying with the If-Modified-Since\n // and/or If-None-Match header later on\n // Remove hash to simplify url manipulation\n cacheURL = s.url.replace(rhash, \"\");\n\n // More options handling for requests with no content\n if (!s.hasContent) {\n // Remember the hash so we can put it back\n uncached = s.url.slice(cacheURL.length);\n\n // If data is available and should be processed, append data to url\n if (s.data && (s.processData || typeof s.data === \"string\")) {\n cacheURL += (rquery.test(cacheURL) ? \"&\" : \"?\") + s.data;\n\n // trac-9682: remove data so that it's not used in an eventual retry\n delete s.data;\n }\n\n // Add or update anti-cache param if needed\n if (s.cache === false) {\n cacheURL = cacheURL.replace(rantiCache, \"$1\");\n uncached = (rquery.test(cacheURL) ? \"&\" : \"?\") + \"_=\" + nonce.guid++ + uncached;\n }\n\n // Put hash and anti-cache on the URL that will be requested (gh-1732)\n s.url = cacheURL + uncached;\n\n // Change '%20' to '+' if this is encoded form body content (gh-2658)\n } else if (s.data && s.processData && (s.contentType || \"\").indexOf(\"application/x-www-form-urlencoded\") === 0) {\n s.data = s.data.replace(r20, \"+\");\n }\n\n // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n if (s.ifModified) {\n if (jQuery.lastModified[cacheURL]) {\n jqXHR.setRequestHeader(\"If-Modified-Since\", jQuery.lastModified[cacheURL]);\n }\n if (jQuery.etag[cacheURL]) {\n jqXHR.setRequestHeader(\"If-None-Match\", jQuery.etag[cacheURL]);\n }\n }\n\n // Set the correct header, if data is being sent\n if (s.data && s.hasContent && s.contentType !== false || options.contentType) {\n jqXHR.setRequestHeader(\"Content-Type\", s.contentType);\n }\n\n // Set the Accepts header for the server, depending on the dataType\n jqXHR.setRequestHeader(\"Accept\", s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + (s.dataTypes[0] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\") : s.accepts[\"*\"]);\n\n // Check for headers option\n for (i in s.headers) {\n jqXHR.setRequestHeader(i, s.headers[i]);\n }\n\n // Allow custom headers/mimetypes and early abort\n if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === false || completed)) {\n // Abort if not done already and return\n return jqXHR.abort();\n }\n\n // Aborting is no longer a cancellation\n strAbort = \"abort\";\n\n // Install callbacks on deferreds\n completeDeferred.add(s.complete);\n jqXHR.done(s.success);\n jqXHR.fail(s.error);\n\n // Get transport\n transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR);\n\n // If no transport, we auto-abort\n if (!transport) {\n done(-1, \"No Transport\");\n } else {\n jqXHR.readyState = 1;\n\n // Send global event\n if (fireGlobals) {\n globalEventContext.trigger(\"ajaxSend\", [jqXHR, s]);\n }\n\n // If request was aborted inside ajaxSend, stop there\n if (completed) {\n return jqXHR;\n }\n\n // Timeout\n if (s.async && s.timeout > 0) {\n timeoutTimer = window.setTimeout(function () {\n jqXHR.abort(\"timeout\");\n }, s.timeout);\n }\n try {\n completed = false;\n transport.send(requestHeaders, done);\n } catch (e) {\n // Rethrow post-completion exceptions\n if (completed) {\n throw e;\n }\n\n // Propagate others as results\n done(-1, e);\n }\n }\n\n // Callback for when everything is done\n function done(status, nativeStatusText, responses, headers) {\n var isSuccess,\n success,\n error,\n response,\n modified,\n statusText = nativeStatusText;\n\n // Ignore repeat invocations\n if (completed) {\n return;\n }\n completed = true;\n\n // Clear timeout if it exists\n if (timeoutTimer) {\n window.clearTimeout(timeoutTimer);\n }\n\n // Dereference transport for early garbage collection\n // (no matter how long the jqXHR object will be used)\n transport = undefined;\n\n // Cache response headers\n responseHeadersString = headers || \"\";\n\n // Set readyState\n jqXHR.readyState = status > 0 ? 4 : 0;\n\n // Determine if successful\n isSuccess = status >= 200 && status < 300 || status === 304;\n\n // Get response data\n if (responses) {\n response = ajaxHandleResponses(s, jqXHR, responses);\n }\n\n // Use a noop converter for missing script but not if jsonp\n if (!isSuccess && jQuery.inArray(\"script\", s.dataTypes) > -1 && jQuery.inArray(\"json\", s.dataTypes) < 0) {\n s.converters[\"text script\"] = function () {};\n }\n\n // Convert no matter what (that way responseXXX fields are always set)\n response = ajaxConvert(s, response, jqXHR, isSuccess);\n\n // If successful, handle type chaining\n if (isSuccess) {\n // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n if (s.ifModified) {\n modified = jqXHR.getResponseHeader(\"Last-Modified\");\n if (modified) {\n jQuery.lastModified[cacheURL] = modified;\n }\n modified = jqXHR.getResponseHeader(\"etag\");\n if (modified) {\n jQuery.etag[cacheURL] = modified;\n }\n }\n\n // if no content\n if (status === 204 || s.type === \"HEAD\") {\n statusText = \"nocontent\";\n\n // if not modified\n } else if (status === 304) {\n statusText = \"notmodified\";\n\n // If we have data, let's convert it\n } else {\n statusText = response.state;\n success = response.data;\n error = response.error;\n isSuccess = !error;\n }\n } else {\n // Extract error from statusText and normalize for non-aborts\n error = statusText;\n if (status || !statusText) {\n statusText = \"error\";\n if (status < 0) {\n status = 0;\n }\n }\n }\n\n // Set data for the fake xhr object\n jqXHR.status = status;\n jqXHR.statusText = (nativeStatusText || statusText) + \"\";\n\n // Success/Error\n if (isSuccess) {\n deferred.resolveWith(callbackContext, [success, statusText, jqXHR]);\n } else {\n deferred.rejectWith(callbackContext, [jqXHR, statusText, error]);\n }\n\n // Status-dependent callbacks\n jqXHR.statusCode(statusCode);\n statusCode = undefined;\n if (fireGlobals) {\n globalEventContext.trigger(isSuccess ? \"ajaxSuccess\" : \"ajaxError\", [jqXHR, s, isSuccess ? success : error]);\n }\n\n // Complete\n completeDeferred.fireWith(callbackContext, [jqXHR, statusText]);\n if (fireGlobals) {\n globalEventContext.trigger(\"ajaxComplete\", [jqXHR, s]);\n\n // Handle the global AJAX counter\n if (! --jQuery.active) {\n jQuery.event.trigger(\"ajaxStop\");\n }\n }\n }\n return jqXHR;\n },\n getJSON: function (url, data, callback) {\n return jQuery.get(url, data, callback, \"json\");\n },\n getScript: function (url, callback) {\n return jQuery.get(url, undefined, callback, \"script\");\n }\n });\n jQuery.each([\"get\", \"post\"], function (_i, method) {\n jQuery[method] = function (url, data, callback, type) {\n // Shift arguments if data argument was omitted\n if (isFunction(data)) {\n type = type || callback;\n callback = data;\n data = undefined;\n }\n\n // The url can be an options object (which then must have .url)\n return jQuery.ajax(jQuery.extend({\n url: url,\n type: method,\n dataType: type,\n data: data,\n success: callback\n }, jQuery.isPlainObject(url) && url));\n };\n });\n jQuery.ajaxPrefilter(function (s) {\n var i;\n for (i in s.headers) {\n if (i.toLowerCase() === \"content-type\") {\n s.contentType = s.headers[i] || \"\";\n }\n }\n });\n jQuery._evalUrl = function (url, options, doc) {\n return jQuery.ajax({\n url: url,\n // Make this explicit, since user can override this through ajaxSetup (trac-11264)\n type: \"GET\",\n dataType: \"script\",\n cache: true,\n async: false,\n global: false,\n // Only evaluate the response if it is successful (gh-4126)\n // dataFilter is not invoked for failure responses, so using it instead\n // of the default converter is kludgy but it works.\n converters: {\n \"text script\": function () {}\n },\n dataFilter: function (response) {\n jQuery.globalEval(response, options, doc);\n }\n });\n };\n jQuery.fn.extend({\n wrapAll: function (html) {\n var wrap;\n if (this[0]) {\n if (isFunction(html)) {\n html = html.call(this[0]);\n }\n\n // The elements to wrap the target around\n wrap = jQuery(html, this[0].ownerDocument).eq(0).clone(true);\n if (this[0].parentNode) {\n wrap.insertBefore(this[0]);\n }\n wrap.map(function () {\n var elem = this;\n while (elem.firstElementChild) {\n elem = elem.firstElementChild;\n }\n return elem;\n }).append(this);\n }\n return this;\n },\n wrapInner: function (html) {\n if (isFunction(html)) {\n return this.each(function (i) {\n jQuery(this).wrapInner(html.call(this, i));\n });\n }\n return this.each(function () {\n var self = jQuery(this),\n contents = self.contents();\n if (contents.length) {\n contents.wrapAll(html);\n } else {\n self.append(html);\n }\n });\n },\n wrap: function (html) {\n var htmlIsFunction = isFunction(html);\n return this.each(function (i) {\n jQuery(this).wrapAll(htmlIsFunction ? html.call(this, i) : html);\n });\n },\n unwrap: function (selector) {\n this.parent(selector).not(\"body\").each(function () {\n jQuery(this).replaceWith(this.childNodes);\n });\n return this;\n }\n });\n jQuery.expr.pseudos.hidden = function (elem) {\n return !jQuery.expr.pseudos.visible(elem);\n };\n jQuery.expr.pseudos.visible = function (elem) {\n return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);\n };\n jQuery.ajaxSettings.xhr = function () {\n try {\n return new window.XMLHttpRequest();\n } catch (e) {}\n };\n var xhrSuccessStatus = {\n // File protocol always yields status code 0, assume 200\n 0: 200,\n // Support: IE <=9 only\n // trac-1450: sometimes IE returns 1223 when it should be 204\n 1223: 204\n },\n xhrSupported = jQuery.ajaxSettings.xhr();\n support.cors = !!xhrSupported && \"withCredentials\" in xhrSupported;\n support.ajax = xhrSupported = !!xhrSupported;\n jQuery.ajaxTransport(function (options) {\n var callback, errorCallback;\n\n // Cross domain only allowed if supported through XMLHttpRequest\n if (support.cors || xhrSupported && !options.crossDomain) {\n return {\n send: function (headers, complete) {\n var i,\n xhr = options.xhr();\n xhr.open(options.type, options.url, options.async, options.username, options.password);\n\n // Apply custom fields if provided\n if (options.xhrFields) {\n for (i in options.xhrFields) {\n xhr[i] = options.xhrFields[i];\n }\n }\n\n // Override mime type if needed\n if (options.mimeType && xhr.overrideMimeType) {\n xhr.overrideMimeType(options.mimeType);\n }\n\n // X-Requested-With header\n // For cross-domain requests, seeing as conditions for a preflight are\n // akin to a jigsaw puzzle, we simply never set it to be sure.\n // (it can always be set on a per-request basis or even using ajaxSetup)\n // For same-domain requests, won't change header if already provided.\n if (!options.crossDomain && !headers[\"X-Requested-With\"]) {\n headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\n }\n\n // Set headers\n for (i in headers) {\n xhr.setRequestHeader(i, headers[i]);\n }\n\n // Callback\n callback = function (type) {\n return function () {\n if (callback) {\n callback = errorCallback = xhr.onload = xhr.onerror = xhr.onabort = xhr.ontimeout = xhr.onreadystatechange = null;\n if (type === \"abort\") {\n xhr.abort();\n } else if (type === \"error\") {\n // Support: IE <=9 only\n // On a manual native abort, IE9 throws\n // errors on any property access that is not readyState\n if (typeof xhr.status !== \"number\") {\n complete(0, \"error\");\n } else {\n complete(\n // File: protocol always yields status 0; see trac-8605, trac-14207\n xhr.status, xhr.statusText);\n }\n } else {\n complete(xhrSuccessStatus[xhr.status] || xhr.status, xhr.statusText,\n // Support: IE <=9 only\n // IE9 has no XHR2 but throws on binary (trac-11426)\n // For XHR2 non-text, let the caller handle it (gh-2498)\n (xhr.responseType || \"text\") !== \"text\" || typeof xhr.responseText !== \"string\" ? {\n binary: xhr.response\n } : {\n text: xhr.responseText\n }, xhr.getAllResponseHeaders());\n }\n }\n };\n };\n\n // Listen to events\n xhr.onload = callback();\n errorCallback = xhr.onerror = xhr.ontimeout = callback(\"error\");\n\n // Support: IE 9 only\n // Use onreadystatechange to replace onabort\n // to handle uncaught aborts\n if (xhr.onabort !== undefined) {\n xhr.onabort = errorCallback;\n } else {\n xhr.onreadystatechange = function () {\n // Check readyState before timeout as it changes\n if (xhr.readyState === 4) {\n // Allow onerror to be called first,\n // but that will not handle a native abort\n // Also, save errorCallback to a variable\n // as xhr.onerror cannot be accessed\n window.setTimeout(function () {\n if (callback) {\n errorCallback();\n }\n });\n }\n };\n }\n\n // Create the abort callback\n callback = callback(\"abort\");\n try {\n // Do send the request (this may raise an exception)\n xhr.send(options.hasContent && options.data || null);\n } catch (e) {\n // trac-14683: Only rethrow if this hasn't been notified as an error yet\n if (callback) {\n throw e;\n }\n }\n },\n abort: function () {\n if (callback) {\n callback();\n }\n }\n };\n }\n });\n\n // Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\n jQuery.ajaxPrefilter(function (s) {\n if (s.crossDomain) {\n s.contents.script = false;\n }\n });\n\n // Install script dataType\n jQuery.ajaxSetup({\n accepts: {\n script: \"text/javascript, application/javascript, \" + \"application/ecmascript, application/x-ecmascript\"\n },\n contents: {\n script: /\\b(?:java|ecma)script\\b/\n },\n converters: {\n \"text script\": function (text) {\n jQuery.globalEval(text);\n return text;\n }\n }\n });\n\n // Handle cache's special case and crossDomain\n jQuery.ajaxPrefilter(\"script\", function (s) {\n if (s.cache === undefined) {\n s.cache = false;\n }\n if (s.crossDomain) {\n s.type = \"GET\";\n }\n });\n\n // Bind script tag hack transport\n jQuery.ajaxTransport(\"script\", function (s) {\n // This transport only deals with cross domain or forced-by-attrs requests\n if (s.crossDomain || s.scriptAttrs) {\n var script, callback;\n return {\n send: function (_, complete) {\n script = jQuery(\"<script>\").attr(s.scriptAttrs || {}).prop({\n charset: s.scriptCharset,\n src: s.url\n }).on(\"load error\", callback = function (evt) {\n script.remove();\n callback = null;\n if (evt) {\n complete(evt.type === \"error\" ? 404 : 200, evt.type);\n }\n });\n\n // Use native DOM manipulation to avoid our domManip AJAX trickery\n document.head.appendChild(script[0]);\n },\n abort: function () {\n if (callback) {\n callback();\n }\n }\n };\n }\n });\n var oldCallbacks = [],\n rjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n // Default jsonp settings\n jQuery.ajaxSetup({\n jsonp: \"callback\",\n jsonpCallback: function () {\n var callback = oldCallbacks.pop() || jQuery.expando + \"_\" + nonce.guid++;\n this[callback] = true;\n return callback;\n }\n });\n\n // Detect, normalize options and install callbacks for jsonp requests\n jQuery.ajaxPrefilter(\"json jsonp\", function (s, originalSettings, jqXHR) {\n var callbackName,\n overwritten,\n responseContainer,\n jsonProp = s.jsonp !== false && (rjsonp.test(s.url) ? \"url\" : typeof s.data === \"string\" && (s.contentType || \"\").indexOf(\"application/x-www-form-urlencoded\") === 0 && rjsonp.test(s.data) && \"data\");\n\n // Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n if (jsonProp || s.dataTypes[0] === \"jsonp\") {\n // Get callback name, remembering preexisting value associated with it\n callbackName = s.jsonpCallback = isFunction(s.jsonpCallback) ? s.jsonpCallback() : s.jsonpCallback;\n\n // Insert callback into url or form data\n if (jsonProp) {\n s[jsonProp] = s[jsonProp].replace(rjsonp, \"$1\" + callbackName);\n } else if (s.jsonp !== false) {\n s.url += (rquery.test(s.url) ? \"&\" : \"?\") + s.jsonp + \"=\" + callbackName;\n }\n\n // Use data converter to retrieve json after script execution\n s.converters[\"script json\"] = function () {\n if (!responseContainer) {\n jQuery.error(callbackName + \" was not called\");\n }\n return responseContainer[0];\n };\n\n // Force json dataType\n s.dataTypes[0] = \"json\";\n\n // Install callback\n overwritten = window[callbackName];\n window[callbackName] = function () {\n responseContainer = arguments;\n };\n\n // Clean-up function (fires after converters)\n jqXHR.always(function () {\n // If previous value didn't exist - remove it\n if (overwritten === undefined) {\n jQuery(window).removeProp(callbackName);\n\n // Otherwise restore preexisting value\n } else {\n window[callbackName] = overwritten;\n }\n\n // Save back as free\n if (s[callbackName]) {\n // Make sure that re-using the options doesn't screw things around\n s.jsonpCallback = originalSettings.jsonpCallback;\n\n // Save the callback name for future use\n oldCallbacks.push(callbackName);\n }\n\n // Call if it was a function and we have a response\n if (responseContainer && isFunction(overwritten)) {\n overwritten(responseContainer[0]);\n }\n responseContainer = overwritten = undefined;\n });\n\n // Delegate to script\n return \"script\";\n }\n });\n\n // Support: Safari 8 only\n // In Safari 8 documents created via document.implementation.createHTMLDocument\n // collapse sibling forms: the second one becomes a child of the first one.\n // Because of that, this security measure has to be disabled in Safari 8.\n // https://bugs.webkit.org/show_bug.cgi?id=137337\n support.createHTMLDocument = function () {\n var body = document.implementation.createHTMLDocument(\"\").body;\n body.innerHTML = \"<form></form><form></form>\";\n return body.childNodes.length === 2;\n }();\n\n // Argument \"data\" should be string of html\n // context (optional): If specified, the fragment will be created in this context,\n // defaults to document\n // keepScripts (optional): If true, will include scripts passed in the html string\n jQuery.parseHTML = function (data, context, keepScripts) {\n if (typeof data !== \"string\") {\n return [];\n }\n if (typeof context === \"boolean\") {\n keepScripts = context;\n context = false;\n }\n var base, parsed, scripts;\n if (!context) {\n // Stop scripts or inline event handlers from being executed immediately\n // by using document.implementation\n if (support.createHTMLDocument) {\n context = document.implementation.createHTMLDocument(\"\");\n\n // Set the base href for the created document\n // so any parsed elements with URLs\n // are based on the document's URL (gh-2965)\n base = context.createElement(\"base\");\n base.href = document.location.href;\n context.head.appendChild(base);\n } else {\n context = document;\n }\n }\n parsed = rsingleTag.exec(data);\n scripts = !keepScripts && [];\n\n // Single tag\n if (parsed) {\n return [context.createElement(parsed[1])];\n }\n parsed = buildFragment([data], context, scripts);\n if (scripts && scripts.length) {\n jQuery(scripts).remove();\n }\n return jQuery.merge([], parsed.childNodes);\n };\n\n /**\n * Load a url into a page\n */\n jQuery.fn.load = function (url, params, callback) {\n var selector,\n type,\n response,\n self = this,\n off = url.indexOf(\" \");\n if (off > -1) {\n selector = stripAndCollapse(url.slice(off));\n url = url.slice(0, off);\n }\n\n // If it's a function\n if (isFunction(params)) {\n // We assume that it's the callback\n callback = params;\n params = undefined;\n\n // Otherwise, build a param string\n } else if (params && typeof params === \"object\") {\n type = \"POST\";\n }\n\n // If we have elements to modify, make the request\n if (self.length > 0) {\n jQuery.ajax({\n url: url,\n // If \"type\" variable is undefined, then \"GET\" method will be used.\n // Make value of this field explicit since\n // user can override it through ajaxSetup method\n type: type || \"GET\",\n dataType: \"html\",\n data: params\n }).done(function (responseText) {\n // Save response for use in complete callback\n response = arguments;\n self.html(selector ?\n // If a selector was specified, locate the right elements in a dummy div\n // Exclude scripts to avoid IE 'Permission Denied' errors\n jQuery(\"<div>\").append(jQuery.parseHTML(responseText)).find(selector) :\n // Otherwise use the full result\n responseText);\n\n // If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n // but they are ignored because response was set above.\n // If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n }).always(callback && function (jqXHR, status) {\n self.each(function () {\n callback.apply(this, response || [jqXHR.responseText, status, jqXHR]);\n });\n });\n }\n return this;\n };\n jQuery.expr.pseudos.animated = function (elem) {\n return jQuery.grep(jQuery.timers, function (fn) {\n return elem === fn.elem;\n }).length;\n };\n jQuery.offset = {\n setOffset: function (elem, options, i) {\n var curPosition,\n curLeft,\n curCSSTop,\n curTop,\n curOffset,\n curCSSLeft,\n calculatePosition,\n position = jQuery.css(elem, \"position\"),\n curElem = jQuery(elem),\n props = {};\n\n // Set position first, in-case top/left are set even on static elem\n if (position === \"static\") {\n elem.style.position = \"relative\";\n }\n curOffset = curElem.offset();\n curCSSTop = jQuery.css(elem, \"top\");\n curCSSLeft = jQuery.css(elem, \"left\");\n calculatePosition = (position === \"absolute\" || position === \"fixed\") && (curCSSTop + curCSSLeft).indexOf(\"auto\") > -1;\n\n // Need to be able to calculate position if either\n // top or left is auto and position is either absolute or fixed\n if (calculatePosition) {\n curPosition = curElem.position();\n curTop = curPosition.top;\n curLeft = curPosition.left;\n } else {\n curTop = parseFloat(curCSSTop) || 0;\n curLeft = parseFloat(curCSSLeft) || 0;\n }\n if (isFunction(options)) {\n // Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n options = options.call(elem, i, jQuery.extend({}, curOffset));\n }\n if (options.top != null) {\n props.top = options.top - curOffset.top + curTop;\n }\n if (options.left != null) {\n props.left = options.left - curOffset.left + curLeft;\n }\n if (\"using\" in options) {\n options.using.call(elem, props);\n } else {\n curElem.css(props);\n }\n }\n };\n jQuery.fn.extend({\n // offset() relates an element's border box to the document origin\n offset: function (options) {\n // Preserve chaining for setter\n if (arguments.length) {\n return options === undefined ? this : this.each(function (i) {\n jQuery.offset.setOffset(this, options, i);\n });\n }\n var rect,\n win,\n elem = this[0];\n if (!elem) {\n return;\n }\n\n // Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n // Support: IE <=11 only\n // Running getBoundingClientRect on a\n // disconnected node in IE throws an error\n if (!elem.getClientRects().length) {\n return {\n top: 0,\n left: 0\n };\n }\n\n // Get document-relative position by adding viewport scroll to viewport-relative gBCR\n rect = elem.getBoundingClientRect();\n win = elem.ownerDocument.defaultView;\n return {\n top: rect.top + win.pageYOffset,\n left: rect.left + win.pageXOffset\n };\n },\n // position() relates an element's margin box to its offset parent's padding box\n // This corresponds to the behavior of CSS absolute positioning\n position: function () {\n if (!this[0]) {\n return;\n }\n var offsetParent,\n offset,\n doc,\n elem = this[0],\n parentOffset = {\n top: 0,\n left: 0\n };\n\n // position:fixed elements are offset from the viewport, which itself always has zero offset\n if (jQuery.css(elem, \"position\") === \"fixed\") {\n // Assume position:fixed implies availability of getBoundingClientRect\n offset = elem.getBoundingClientRect();\n } else {\n offset = this.offset();\n\n // Account for the *real* offset parent, which can be the document or its root element\n // when a statically positioned element is identified\n doc = elem.ownerDocument;\n offsetParent = elem.offsetParent || doc.documentElement;\n while (offsetParent && (offsetParent === doc.body || offsetParent === doc.documentElement) && jQuery.css(offsetParent, \"position\") === \"static\") {\n offsetParent = offsetParent.parentNode;\n }\n if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) {\n // Incorporate borders into its offset, since they are outside its content origin\n parentOffset = jQuery(offsetParent).offset();\n parentOffset.top += jQuery.css(offsetParent, \"borderTopWidth\", true);\n parentOffset.left += jQuery.css(offsetParent, \"borderLeftWidth\", true);\n }\n }\n\n // Subtract parent offsets and element margins\n return {\n top: offset.top - parentOffset.top - jQuery.css(elem, \"marginTop\", true),\n left: offset.left - parentOffset.left - jQuery.css(elem, \"marginLeft\", true)\n };\n },\n // This method will return documentElement in the following cases:\n // 1) For the element inside the iframe without offsetParent, this method will return\n // documentElement of the parent window\n // 2) For the hidden or detached element\n // 3) For body or html element, i.e. in case of the html node - it will return itself\n //\n // but those exceptions were never presented as a real life use-cases\n // and might be considered as more preferable results.\n //\n // This logic, however, is not guaranteed and can change at any point in the future\n offsetParent: function () {\n return this.map(function () {\n var offsetParent = this.offsetParent;\n while (offsetParent && jQuery.css(offsetParent, \"position\") === \"static\") {\n offsetParent = offsetParent.offsetParent;\n }\n return offsetParent || documentElement;\n });\n }\n });\n\n // Create scrollLeft and scrollTop methods\n jQuery.each({\n scrollLeft: \"pageXOffset\",\n scrollTop: \"pageYOffset\"\n }, function (method, prop) {\n var top = \"pageYOffset\" === prop;\n jQuery.fn[method] = function (val) {\n return access(this, function (elem, method, val) {\n // Coalesce documents and windows\n var win;\n if (isWindow(elem)) {\n win = elem;\n } else if (elem.nodeType === 9) {\n win = elem.defaultView;\n }\n if (val === undefined) {\n return win ? win[prop] : elem[method];\n }\n if (win) {\n win.scrollTo(!top ? val : win.pageXOffset, top ? val : win.pageYOffset);\n } else {\n elem[method] = val;\n }\n }, method, val, arguments.length);\n };\n });\n\n // Support: Safari <=7 - 9.1, Chrome <=37 - 49\n // Add the top/left cssHooks using jQuery.fn.position\n // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n // Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n // getComputedStyle returns percent when specified for top/left/bottom/right;\n // rather than make the css module depend on the offset module, just check for it here\n jQuery.each([\"top\", \"left\"], function (_i, prop) {\n jQuery.cssHooks[prop] = addGetHookIf(support.pixelPosition, function (elem, computed) {\n if (computed) {\n computed = curCSS(elem, prop);\n\n // If curCSS returns percentage, fallback to offset\n return rnumnonpx.test(computed) ? jQuery(elem).position()[prop] + \"px\" : computed;\n }\n });\n });\n\n // Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\n jQuery.each({\n Height: \"height\",\n Width: \"width\"\n }, function (name, type) {\n jQuery.each({\n padding: \"inner\" + name,\n content: type,\n \"\": \"outer\" + name\n }, function (defaultExtra, funcName) {\n // Margin is only for outerHeight, outerWidth\n jQuery.fn[funcName] = function (margin, value) {\n var chainable = arguments.length && (defaultExtra || typeof margin !== \"boolean\"),\n extra = defaultExtra || (margin === true || value === true ? \"margin\" : \"border\");\n return access(this, function (elem, type, value) {\n var doc;\n if (isWindow(elem)) {\n // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n return funcName.indexOf(\"outer\") === 0 ? elem[\"inner\" + name] : elem.document.documentElement[\"client\" + name];\n }\n\n // Get document width or height\n if (elem.nodeType === 9) {\n doc = elem.documentElement;\n\n // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n // whichever is greatest\n return Math.max(elem.body[\"scroll\" + name], doc[\"scroll\" + name], elem.body[\"offset\" + name], doc[\"offset\" + name], doc[\"client\" + name]);\n }\n return value === undefined ?\n // Get width or height on the element, requesting but not forcing parseFloat\n jQuery.css(elem, type, extra) :\n // Set width or height on the element\n jQuery.style(elem, type, value, extra);\n }, type, chainable ? margin : undefined, chainable);\n };\n });\n });\n jQuery.each([\"ajaxStart\", \"ajaxStop\", \"ajaxComplete\", \"ajaxError\", \"ajaxSuccess\", \"ajaxSend\"], function (_i, type) {\n jQuery.fn[type] = function (fn) {\n return this.on(type, fn);\n };\n });\n jQuery.fn.extend({\n bind: function (types, data, fn) {\n return this.on(types, null, data, fn);\n },\n unbind: function (types, fn) {\n return this.off(types, null, fn);\n },\n delegate: function (selector, types, data, fn) {\n return this.on(types, selector, data, fn);\n },\n undelegate: function (selector, types, fn) {\n // ( namespace ) or ( selector, types [, fn] )\n return arguments.length === 1 ? this.off(selector, \"**\") : this.off(types, selector || \"**\", fn);\n },\n hover: function (fnOver, fnOut) {\n return this.on(\"mouseenter\", fnOver).on(\"mouseleave\", fnOut || fnOver);\n }\n });\n jQuery.each((\"blur focus focusin focusout resize scroll click dblclick \" + \"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" + \"change select submit keydown keypress keyup contextmenu\").split(\" \"), function (_i, name) {\n // Handle event binding\n jQuery.fn[name] = function (data, fn) {\n return arguments.length > 0 ? this.on(name, null, data, fn) : this.trigger(name);\n };\n });\n\n // Support: Android <=4.0 only\n // Make sure we trim BOM and NBSP\n // Require that the \"whitespace run\" starts from a non-whitespace\n // to avoid O(N^2) behavior when the engine would try matching \"\\s+$\" at each space position.\n var rtrim = /^[\\s\\uFEFF\\xA0]+|([^\\s\\uFEFF\\xA0])[\\s\\uFEFF\\xA0]+$/g;\n\n // Bind a function to a context, optionally partially applying any\n // arguments.\n // jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n // However, it is not slated for removal any time soon\n jQuery.proxy = function (fn, context) {\n var tmp, args, proxy;\n if (typeof context === \"string\") {\n tmp = fn[context];\n context = fn;\n fn = tmp;\n }\n\n // Quick check to determine if target is callable, in the spec\n // this throws a TypeError, but we will just return undefined.\n if (!isFunction(fn)) {\n return undefined;\n }\n\n // Simulated bind\n args = slice.call(arguments, 2);\n proxy = function () {\n return fn.apply(context || this, args.concat(slice.call(arguments)));\n };\n\n // Set the guid of unique handler to the same of original handler, so it can be removed\n proxy.guid = fn.guid = fn.guid || jQuery.guid++;\n return proxy;\n };\n jQuery.holdReady = function (hold) {\n if (hold) {\n jQuery.readyWait++;\n } else {\n jQuery.ready(true);\n }\n };\n jQuery.isArray = Array.isArray;\n jQuery.parseJSON = JSON.parse;\n jQuery.nodeName = nodeName;\n jQuery.isFunction = isFunction;\n jQuery.isWindow = isWindow;\n jQuery.camelCase = camelCase;\n jQuery.type = toType;\n jQuery.now = Date.now;\n jQuery.isNumeric = function (obj) {\n // As of jQuery 3.0, isNumeric is limited to\n // strings and numbers (primitives or objects)\n // that can be coerced to finite numbers (gh-2662)\n var type = jQuery.type(obj);\n return (type === \"number\" || type === \"string\") &&\n // parseFloat NaNs numeric-cast false positives (\"\")\n // ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n // subtraction forces infinities to NaN\n !isNaN(obj - parseFloat(obj));\n };\n jQuery.trim = function (text) {\n return text == null ? \"\" : (text + \"\").replace(rtrim, \"$1\");\n };\n\n // Register as a named AMD module, since jQuery can be concatenated with other\n // files that may use define, but not via a proper concatenation script that\n // understands anonymous AMD modules. A named AMD is safest and most robust\n // way to register. Lowercase jquery is used because AMD module names are\n // derived from file names, and jQuery is normally delivered in a lowercase\n // file name. Do this after creating the global so that if an AMD module wants\n // to call noConflict to hide this version of jQuery, it will work.\n\n // Note that for maximum portability, libraries that are not jQuery should\n // declare themselves as anonymous modules, and avoid setting a global if an\n // AMD loader is present. jQuery is a special case. For more information, see\n // https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\n if (typeof define === \"function\" && define.amd) {\n define(\"jquery\", [], function () {\n return jQuery;\n });\n }\n var\n // Map over jQuery in case of overwrite\n _jQuery = window.jQuery,\n // Map over the $ in case of overwrite\n _$ = window.$;\n jQuery.noConflict = function (deep) {\n if (window.$ === jQuery) {\n window.$ = _$;\n }\n if (deep && window.jQuery === jQuery) {\n window.jQuery = _jQuery;\n }\n return jQuery;\n };\n\n // Expose jQuery and $ identifiers, even in AMD\n // (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)\n // and CommonJS for browser emulators (trac-13566)\n if (typeof noGlobal === \"undefined\") {\n window.jQuery = window.$ = jQuery;\n }\n return jQuery;\n});","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n Object.keys(src).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\nexport { getWindow as a, getDocument as g };","/*!\n * FilePond 4.30.4\n * Licensed under MIT, https://opensource.org/licenses/MIT/\n * Please visit https://pqina.nl/filepond/ for details.\n */\n\n/* eslint-disable */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (global = global || self, factory(global.FilePond = {}));\n})(this, function (exports) {\n 'use strict';\n\n var isNode = function isNode(value) {\n return value instanceof HTMLElement;\n };\n var createStore = function createStore(initialState) {\n var queries = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var actions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n // internal state\n var state = Object.assign({}, initialState);\n\n // contains all actions for next frame, is clear when actions are requested\n var actionQueue = [];\n var dispatchQueue = [];\n\n // returns a duplicate of the current state\n var getState = function getState() {\n return Object.assign({}, state);\n };\n\n // returns a duplicate of the actions array and clears the actions array\n var processActionQueue = function processActionQueue() {\n // create copy of actions queue\n var queue = [].concat(actionQueue);\n\n // clear actions queue (we don't want no double actions)\n actionQueue.length = 0;\n return queue;\n };\n\n // processes actions that might block the main UI thread\n var processDispatchQueue = function processDispatchQueue() {\n // create copy of actions queue\n var queue = [].concat(dispatchQueue);\n\n // clear actions queue (we don't want no double actions)\n dispatchQueue.length = 0;\n\n // now dispatch these actions\n queue.forEach(function (_ref) {\n var type = _ref.type,\n data = _ref.data;\n dispatch(type, data);\n });\n };\n\n // adds a new action, calls its handler and\n var dispatch = function dispatch(type, data, isBlocking) {\n // is blocking action (should never block if document is hidden)\n if (isBlocking && !document.hidden) {\n dispatchQueue.push({\n type: type,\n data: data\n });\n return;\n }\n\n // if this action has a handler, handle the action\n if (actionHandlers[type]) {\n actionHandlers[type](data);\n }\n\n // now add action\n actionQueue.push({\n type: type,\n data: data\n });\n };\n var query = function query(str) {\n var _queryHandles;\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n return queryHandles[str] ? (_queryHandles = queryHandles)[str].apply(_queryHandles, args) : null;\n };\n var api = {\n getState: getState,\n processActionQueue: processActionQueue,\n processDispatchQueue: processDispatchQueue,\n dispatch: dispatch,\n query: query\n };\n var queryHandles = {};\n queries.forEach(function (query) {\n queryHandles = Object.assign({}, query(state), {}, queryHandles);\n });\n var actionHandlers = {};\n actions.forEach(function (action) {\n actionHandlers = Object.assign({}, action(dispatch, query, state), {}, actionHandlers);\n });\n return api;\n };\n var defineProperty = function defineProperty(obj, property, definition) {\n if (typeof definition === 'function') {\n obj[property] = definition;\n return;\n }\n Object.defineProperty(obj, property, Object.assign({}, definition));\n };\n var forin = function forin(obj, cb) {\n for (var key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n cb(key, obj[key]);\n }\n };\n var createObject = function createObject(definition) {\n var obj = {};\n forin(definition, function (property) {\n defineProperty(obj, property, definition[property]);\n });\n return obj;\n };\n var attr = function attr(node, name) {\n var value = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n if (value === null) {\n return node.getAttribute(name) || node.hasAttribute(name);\n }\n node.setAttribute(name, value);\n };\n var ns = 'http://www.w3.org/2000/svg';\n var svgElements = ['svg', 'path']; // only svg elements used\n\n var isSVGElement = function isSVGElement(tag) {\n return svgElements.includes(tag);\n };\n var createElement = function createElement(tag, className) {\n var attributes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (typeof className === 'object') {\n attributes = className;\n className = null;\n }\n var element = isSVGElement(tag) ? document.createElementNS(ns, tag) : document.createElement(tag);\n if (className) {\n if (isSVGElement(tag)) {\n attr(element, 'class', className);\n } else {\n element.className = className;\n }\n }\n forin(attributes, function (name, value) {\n attr(element, name, value);\n });\n return element;\n };\n var appendChild = function appendChild(parent) {\n return function (child, index) {\n if (typeof index !== 'undefined' && parent.children[index]) {\n parent.insertBefore(child, parent.children[index]);\n } else {\n parent.appendChild(child);\n }\n };\n };\n var appendChildView = function appendChildView(parent, childViews) {\n return function (view, index) {\n if (typeof index !== 'undefined') {\n childViews.splice(index, 0, view);\n } else {\n childViews.push(view);\n }\n return view;\n };\n };\n var removeChildView = function removeChildView(parent, childViews) {\n return function (view) {\n // remove from child views\n childViews.splice(childViews.indexOf(view), 1);\n\n // remove the element\n if (view.element.parentNode) {\n parent.removeChild(view.element);\n }\n return view;\n };\n };\n var IS_BROWSER = function () {\n return typeof window !== 'undefined' && typeof window.document !== 'undefined';\n }();\n var isBrowser = function isBrowser() {\n return IS_BROWSER;\n };\n var testElement = isBrowser() ? createElement('svg') : {};\n var getChildCount = 'children' in testElement ? function (el) {\n return el.children.length;\n } : function (el) {\n return el.childNodes.length;\n };\n var getViewRect = function getViewRect(elementRect, childViews, offset, scale) {\n var left = offset[0] || elementRect.left;\n var top = offset[1] || elementRect.top;\n var right = left + elementRect.width;\n var bottom = top + elementRect.height * (scale[1] || 1);\n var rect = {\n // the rectangle of the element itself\n element: Object.assign({}, elementRect),\n // the rectangle of the element expanded to contain its children, does not include any margins\n inner: {\n left: elementRect.left,\n top: elementRect.top,\n right: elementRect.right,\n bottom: elementRect.bottom\n },\n // the rectangle of the element expanded to contain its children including own margin and child margins\n // margins will be added after we've recalculated the size\n outer: {\n left: left,\n top: top,\n right: right,\n bottom: bottom\n }\n };\n\n // expand rect to fit all child rectangles\n childViews.filter(function (childView) {\n return !childView.isRectIgnored();\n }).map(function (childView) {\n return childView.rect;\n }).forEach(function (childViewRect) {\n expandRect(rect.inner, Object.assign({}, childViewRect.inner));\n expandRect(rect.outer, Object.assign({}, childViewRect.outer));\n });\n\n // calculate inner width and height\n calculateRectSize(rect.inner);\n\n // append additional margin (top and left margins are included in top and left automatically)\n rect.outer.bottom += rect.element.marginBottom;\n rect.outer.right += rect.element.marginRight;\n\n // calculate outer width and height\n calculateRectSize(rect.outer);\n return rect;\n };\n var expandRect = function expandRect(parent, child) {\n // adjust for parent offset\n child.top += parent.top;\n child.right += parent.left;\n child.bottom += parent.top;\n child.left += parent.left;\n if (child.bottom > parent.bottom) {\n parent.bottom = child.bottom;\n }\n if (child.right > parent.right) {\n parent.right = child.right;\n }\n };\n var calculateRectSize = function calculateRectSize(rect) {\n rect.width = rect.right - rect.left;\n rect.height = rect.bottom - rect.top;\n };\n var isNumber = function isNumber(value) {\n return typeof value === 'number';\n };\n\n /**\n * Determines if position is at destination\n * @param position\n * @param destination\n * @param velocity\n * @param errorMargin\n * @returns {boolean}\n */\n var thereYet = function thereYet(position, destination, velocity) {\n var errorMargin = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0.001;\n return Math.abs(position - destination) < errorMargin && Math.abs(velocity) < errorMargin;\n };\n\n /**\n * Spring animation\n */\n var spring =\n // default options\n function spring()\n // method definition\n {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$stiffness = _ref.stiffness,\n stiffness = _ref$stiffness === void 0 ? 0.5 : _ref$stiffness,\n _ref$damping = _ref.damping,\n damping = _ref$damping === void 0 ? 0.75 : _ref$damping,\n _ref$mass = _ref.mass,\n mass = _ref$mass === void 0 ? 10 : _ref$mass;\n var target = null;\n var position = null;\n var velocity = 0;\n var resting = false;\n\n // updates spring state\n var interpolate = function interpolate(ts, skipToEndState) {\n // in rest, don't animate\n if (resting) return;\n\n // need at least a target or position to do springy things\n if (!(isNumber(target) && isNumber(position))) {\n resting = true;\n velocity = 0;\n return;\n }\n\n // calculate spring force\n var f = -(position - target) * stiffness;\n\n // update velocity by adding force based on mass\n velocity += f / mass;\n\n // update position by adding velocity\n position += velocity;\n\n // slow down based on amount of damping\n velocity *= damping;\n\n // we've arrived if we're near target and our velocity is near zero\n if (thereYet(position, target, velocity) || skipToEndState) {\n position = target;\n velocity = 0;\n resting = true;\n\n // we done\n api.onupdate(position);\n api.oncomplete(position);\n } else {\n // progress update\n api.onupdate(position);\n }\n };\n\n /**\n * Set new target value\n * @param value\n */\n var setTarget = function setTarget(value) {\n // if currently has no position, set target and position to this value\n if (isNumber(value) && !isNumber(position)) {\n position = value;\n }\n\n // next target value will not be animated to\n if (target === null) {\n target = value;\n position = value;\n }\n\n // let start moving to target\n target = value;\n\n // already at target\n if (position === target || typeof target === 'undefined') {\n // now resting as target is current position, stop moving\n resting = true;\n velocity = 0;\n\n // done!\n api.onupdate(position);\n api.oncomplete(position);\n return;\n }\n resting = false;\n };\n\n // need 'api' to call onupdate callback\n var api = createObject({\n interpolate: interpolate,\n target: {\n set: setTarget,\n get: function get() {\n return target;\n }\n },\n resting: {\n get: function get() {\n return resting;\n }\n },\n onupdate: function onupdate(value) {},\n oncomplete: function oncomplete(value) {}\n });\n return api;\n };\n var easeLinear = function easeLinear(t) {\n return t;\n };\n var easeInOutQuad = function easeInOutQuad(t) {\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\n };\n var tween =\n // default values\n function tween()\n // method definition\n {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$duration = _ref.duration,\n duration = _ref$duration === void 0 ? 500 : _ref$duration,\n _ref$easing = _ref.easing,\n easing = _ref$easing === void 0 ? easeInOutQuad : _ref$easing,\n _ref$delay = _ref.delay,\n delay = _ref$delay === void 0 ? 0 : _ref$delay;\n var start = null;\n var t;\n var p;\n var resting = true;\n var reverse = false;\n var target = null;\n var interpolate = function interpolate(ts, skipToEndState) {\n if (resting || target === null) return;\n if (start === null) {\n start = ts;\n }\n if (ts - start < delay) return;\n t = ts - start - delay;\n if (t >= duration || skipToEndState) {\n t = 1;\n p = reverse ? 0 : 1;\n api.onupdate(p * target);\n api.oncomplete(p * target);\n resting = true;\n } else {\n p = t / duration;\n api.onupdate((t >= 0 ? easing(reverse ? 1 - p : p) : 0) * target);\n }\n };\n\n // need 'api' to call onupdate callback\n var api = createObject({\n interpolate: interpolate,\n target: {\n get: function get() {\n return reverse ? 0 : target;\n },\n set: function set(value) {\n // is initial value\n if (target === null) {\n target = value;\n api.onupdate(value);\n api.oncomplete(value);\n return;\n }\n\n // want to tween to a smaller value and have a current value\n if (value < target) {\n target = 1;\n reverse = true;\n } else {\n // not tweening to a smaller value\n reverse = false;\n target = value;\n }\n\n // let's go!\n resting = false;\n start = null;\n }\n },\n resting: {\n get: function get() {\n return resting;\n }\n },\n onupdate: function onupdate(value) {},\n oncomplete: function oncomplete(value) {}\n });\n return api;\n };\n var animator = {\n spring: spring,\n tween: tween\n };\n\n /*\n { type: 'spring', stiffness: .5, damping: .75, mass: 10 };\n { translation: { type: 'spring', ... }, ... }\n { translation: { x: { type: 'spring', ... } } }\n */\n var createAnimator = function createAnimator(definition, category, property) {\n // default is single definition\n // we check if transform is set, if so, we check if property is set\n var def = definition[category] && typeof definition[category][property] === 'object' ? definition[category][property] : definition[category] || definition;\n var type = typeof def === 'string' ? def : def.type;\n var props = typeof def === 'object' ? Object.assign({}, def) : {};\n return animator[type] ? animator[type](props) : null;\n };\n var addGetSet = function addGetSet(keys, obj, props) {\n var overwrite = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n obj = Array.isArray(obj) ? obj : [obj];\n obj.forEach(function (o) {\n keys.forEach(function (key) {\n var name = key;\n var getter = function getter() {\n return props[key];\n };\n var setter = function setter(value) {\n return props[key] = value;\n };\n if (typeof key === 'object') {\n name = key.key;\n getter = key.getter || getter;\n setter = key.setter || setter;\n }\n if (o[name] && !overwrite) {\n return;\n }\n o[name] = {\n get: getter,\n set: setter\n };\n });\n });\n };\n\n // add to state,\n // add getters and setters to internal and external api (if not set)\n // setup animators\n\n var animations = function animations(_ref) {\n var mixinConfig = _ref.mixinConfig,\n viewProps = _ref.viewProps,\n viewInternalAPI = _ref.viewInternalAPI,\n viewExternalAPI = _ref.viewExternalAPI;\n // initial properties\n var initialProps = Object.assign({}, viewProps);\n\n // list of all active animations\n var animations = [];\n\n // setup animators\n forin(mixinConfig, function (property, animation) {\n var animator = createAnimator(animation);\n if (!animator) {\n return;\n }\n\n // when the animator updates, update the view state value\n animator.onupdate = function (value) {\n viewProps[property] = value;\n };\n\n // set animator target\n animator.target = initialProps[property];\n\n // when value is set, set the animator target value\n var prop = {\n key: property,\n setter: function setter(value) {\n // if already at target, we done!\n if (animator.target === value) {\n return;\n }\n animator.target = value;\n },\n getter: function getter() {\n return viewProps[property];\n }\n };\n\n // add getters and setters\n addGetSet([prop], [viewInternalAPI, viewExternalAPI], viewProps, true);\n\n // add it to the list for easy updating from the _write method\n animations.push(animator);\n });\n\n // expose internal write api\n return {\n write: function write(ts) {\n var skipToEndState = document.hidden;\n var resting = true;\n animations.forEach(function (animation) {\n if (!animation.resting) resting = false;\n animation.interpolate(ts, skipToEndState);\n });\n return resting;\n },\n destroy: function destroy() {}\n };\n };\n var addEvent = function addEvent(element) {\n return function (type, fn) {\n element.addEventListener(type, fn);\n };\n };\n var removeEvent = function removeEvent(element) {\n return function (type, fn) {\n element.removeEventListener(type, fn);\n };\n };\n\n // mixin\n var listeners = function listeners(_ref) {\n var mixinConfig = _ref.mixinConfig,\n viewProps = _ref.viewProps,\n viewInternalAPI = _ref.viewInternalAPI,\n viewExternalAPI = _ref.viewExternalAPI,\n viewState = _ref.viewState,\n view = _ref.view;\n var events = [];\n var add = addEvent(view.element);\n var remove = removeEvent(view.element);\n viewExternalAPI.on = function (type, fn) {\n events.push({\n type: type,\n fn: fn\n });\n add(type, fn);\n };\n viewExternalAPI.off = function (type, fn) {\n events.splice(events.findIndex(function (event) {\n return event.type === type && event.fn === fn;\n }), 1);\n remove(type, fn);\n };\n return {\n write: function write() {\n // not busy\n return true;\n },\n destroy: function destroy() {\n events.forEach(function (event) {\n remove(event.type, event.fn);\n });\n }\n };\n };\n\n // add to external api and link to props\n\n var apis = function apis(_ref) {\n var mixinConfig = _ref.mixinConfig,\n viewProps = _ref.viewProps,\n viewExternalAPI = _ref.viewExternalAPI;\n addGetSet(mixinConfig, viewExternalAPI, viewProps);\n };\n var isDefined = function isDefined(value) {\n return value != null;\n };\n\n // add to state,\n // add getters and setters to internal and external api (if not set)\n // set initial state based on props in viewProps\n // apply as transforms each frame\n\n var defaults = {\n opacity: 1,\n scaleX: 1,\n scaleY: 1,\n translateX: 0,\n translateY: 0,\n rotateX: 0,\n rotateY: 0,\n rotateZ: 0,\n originX: 0,\n originY: 0\n };\n var styles = function styles(_ref) {\n var mixinConfig = _ref.mixinConfig,\n viewProps = _ref.viewProps,\n viewInternalAPI = _ref.viewInternalAPI,\n viewExternalAPI = _ref.viewExternalAPI,\n view = _ref.view;\n // initial props\n var initialProps = Object.assign({}, viewProps);\n\n // current props\n var currentProps = {};\n\n // we will add those properties to the external API and link them to the viewState\n addGetSet(mixinConfig, [viewInternalAPI, viewExternalAPI], viewProps);\n\n // override rect on internal and external rect getter so it takes in account transforms\n var getOffset = function getOffset() {\n return [viewProps['translateX'] || 0, viewProps['translateY'] || 0];\n };\n var getScale = function getScale() {\n return [viewProps['scaleX'] || 0, viewProps['scaleY'] || 0];\n };\n var getRect = function getRect() {\n return view.rect ? getViewRect(view.rect, view.childViews, getOffset(), getScale()) : null;\n };\n viewInternalAPI.rect = {\n get: getRect\n };\n viewExternalAPI.rect = {\n get: getRect\n };\n\n // apply view props\n mixinConfig.forEach(function (key) {\n viewProps[key] = typeof initialProps[key] === 'undefined' ? defaults[key] : initialProps[key];\n });\n\n // expose api\n return {\n write: function write() {\n // see if props have changed\n if (!propsHaveChanged(currentProps, viewProps)) {\n return;\n }\n\n // moves element to correct position on screen\n applyStyles(view.element, viewProps);\n\n // store new transforms\n Object.assign(currentProps, Object.assign({}, viewProps));\n\n // no longer busy\n return true;\n },\n destroy: function destroy() {}\n };\n };\n var propsHaveChanged = function propsHaveChanged(currentProps, newProps) {\n // different amount of keys\n if (Object.keys(currentProps).length !== Object.keys(newProps).length) {\n return true;\n }\n\n // lets analyze the individual props\n for (var prop in newProps) {\n if (newProps[prop] !== currentProps[prop]) {\n return true;\n }\n }\n return false;\n };\n var applyStyles = function applyStyles(element, _ref2) {\n var opacity = _ref2.opacity,\n perspective = _ref2.perspective,\n translateX = _ref2.translateX,\n translateY = _ref2.translateY,\n scaleX = _ref2.scaleX,\n scaleY = _ref2.scaleY,\n rotateX = _ref2.rotateX,\n rotateY = _ref2.rotateY,\n rotateZ = _ref2.rotateZ,\n originX = _ref2.originX,\n originY = _ref2.originY,\n width = _ref2.width,\n height = _ref2.height;\n var transforms = '';\n var styles = '';\n\n // handle transform origin\n if (isDefined(originX) || isDefined(originY)) {\n styles += 'transform-origin: ' + (originX || 0) + 'px ' + (originY || 0) + 'px;';\n }\n\n // transform order is relevant\n // 0. perspective\n if (isDefined(perspective)) {\n transforms += 'perspective(' + perspective + 'px) ';\n }\n\n // 1. translate\n if (isDefined(translateX) || isDefined(translateY)) {\n transforms += 'translate3d(' + (translateX || 0) + 'px, ' + (translateY || 0) + 'px, 0) ';\n }\n\n // 2. scale\n if (isDefined(scaleX) || isDefined(scaleY)) {\n transforms += 'scale3d(' + (isDefined(scaleX) ? scaleX : 1) + ', ' + (isDefined(scaleY) ? scaleY : 1) + ', 1) ';\n }\n\n // 3. rotate\n if (isDefined(rotateZ)) {\n transforms += 'rotateZ(' + rotateZ + 'rad) ';\n }\n if (isDefined(rotateX)) {\n transforms += 'rotateX(' + rotateX + 'rad) ';\n }\n if (isDefined(rotateY)) {\n transforms += 'rotateY(' + rotateY + 'rad) ';\n }\n\n // add transforms\n if (transforms.length) {\n styles += 'transform:' + transforms + ';';\n }\n\n // add opacity\n if (isDefined(opacity)) {\n styles += 'opacity:' + opacity + ';';\n\n // if we reach zero, we make the element inaccessible\n if (opacity === 0) {\n styles += 'visibility:hidden;';\n }\n\n // if we're below 100% opacity this element can't be clicked\n if (opacity < 1) {\n styles += 'pointer-events:none;';\n }\n }\n\n // add height\n if (isDefined(height)) {\n styles += 'height:' + height + 'px;';\n }\n\n // add width\n if (isDefined(width)) {\n styles += 'width:' + width + 'px;';\n }\n\n // apply styles\n var elementCurrentStyle = element.elementCurrentStyle || '';\n\n // if new styles does not match current styles, lets update!\n if (styles.length !== elementCurrentStyle.length || styles !== elementCurrentStyle) {\n element.style.cssText = styles;\n // store current styles so we can compare them to new styles later on\n // _not_ getting the style value is faster\n element.elementCurrentStyle = styles;\n }\n };\n var Mixins = {\n styles: styles,\n listeners: listeners,\n animations: animations,\n apis: apis\n };\n var updateRect = function updateRect() {\n var rect = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var element = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var style = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (!element.layoutCalculated) {\n rect.paddingTop = parseInt(style.paddingTop, 10) || 0;\n rect.marginTop = parseInt(style.marginTop, 10) || 0;\n rect.marginRight = parseInt(style.marginRight, 10) || 0;\n rect.marginBottom = parseInt(style.marginBottom, 10) || 0;\n rect.marginLeft = parseInt(style.marginLeft, 10) || 0;\n element.layoutCalculated = true;\n }\n rect.left = element.offsetLeft || 0;\n rect.top = element.offsetTop || 0;\n rect.width = element.offsetWidth || 0;\n rect.height = element.offsetHeight || 0;\n rect.right = rect.left + rect.width;\n rect.bottom = rect.top + rect.height;\n rect.scrollTop = element.scrollTop;\n rect.hidden = element.offsetParent === null;\n return rect;\n };\n var createView =\n // default view definition\n function createView() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$tag = _ref.tag,\n tag = _ref$tag === void 0 ? 'div' : _ref$tag,\n _ref$name = _ref.name,\n name = _ref$name === void 0 ? null : _ref$name,\n _ref$attributes = _ref.attributes,\n attributes = _ref$attributes === void 0 ? {} : _ref$attributes,\n _ref$read = _ref.read,\n read = _ref$read === void 0 ? function () {} : _ref$read,\n _ref$write = _ref.write,\n write = _ref$write === void 0 ? function () {} : _ref$write,\n _ref$create = _ref.create,\n create = _ref$create === void 0 ? function () {} : _ref$create,\n _ref$destroy = _ref.destroy,\n destroy = _ref$destroy === void 0 ? function () {} : _ref$destroy,\n _ref$filterFrameActio = _ref.filterFrameActionsForChild,\n filterFrameActionsForChild = _ref$filterFrameActio === void 0 ? function (child, actions) {\n return actions;\n } : _ref$filterFrameActio,\n _ref$didCreateView = _ref.didCreateView,\n didCreateView = _ref$didCreateView === void 0 ? function () {} : _ref$didCreateView,\n _ref$didWriteView = _ref.didWriteView,\n didWriteView = _ref$didWriteView === void 0 ? function () {} : _ref$didWriteView,\n _ref$ignoreRect = _ref.ignoreRect,\n ignoreRect = _ref$ignoreRect === void 0 ? false : _ref$ignoreRect,\n _ref$ignoreRectUpdate = _ref.ignoreRectUpdate,\n ignoreRectUpdate = _ref$ignoreRectUpdate === void 0 ? false : _ref$ignoreRectUpdate,\n _ref$mixins = _ref.mixins,\n mixins = _ref$mixins === void 0 ? [] : _ref$mixins;\n return function (\n // each view requires reference to store\n store) {\n var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // root element should not be changed\n var element = createElement(tag, 'filepond--' + name, attributes);\n\n // style reference should also not be changed\n var style = window.getComputedStyle(element, null);\n\n // element rectangle\n var rect = updateRect();\n var frameRect = null;\n\n // rest state\n var isResting = false;\n\n // pretty self explanatory\n var childViews = [];\n\n // loaded mixins\n var activeMixins = [];\n\n // references to created children\n var ref = {};\n\n // state used for each instance\n var state = {};\n\n // list of writers that will be called to update this view\n var writers = [write // default writer\n ];\n\n var readers = [read // default reader\n ];\n\n var destroyers = [destroy // default destroy\n ];\n\n // core view methods\n var getElement = function getElement() {\n return element;\n };\n var getChildViews = function getChildViews() {\n return childViews.concat();\n };\n var getReference = function getReference() {\n return ref;\n };\n var createChildView = function createChildView(store) {\n return function (view, props) {\n return view(store, props);\n };\n };\n var getRect = function getRect() {\n if (frameRect) {\n return frameRect;\n }\n frameRect = getViewRect(rect, childViews, [0, 0], [1, 1]);\n return frameRect;\n };\n var getStyle = function getStyle() {\n return style;\n };\n\n /**\n * Read data from DOM\n * @private\n */\n var _read = function _read() {\n frameRect = null;\n\n // read child views\n childViews.forEach(function (child) {\n return child._read();\n });\n var shouldUpdate = !(ignoreRectUpdate && rect.width && rect.height);\n if (shouldUpdate) {\n updateRect(rect, element, style);\n }\n\n // readers\n var api = {\n root: internalAPI,\n props: props,\n rect: rect\n };\n readers.forEach(function (reader) {\n return reader(api);\n });\n };\n\n /**\n * Write data to DOM\n * @private\n */\n var _write = function _write(ts, frameActions, shouldOptimize) {\n // if no actions, we assume that the view is resting\n var resting = frameActions.length === 0;\n\n // writers\n writers.forEach(function (writer) {\n var writerResting = writer({\n props: props,\n root: internalAPI,\n actions: frameActions,\n timestamp: ts,\n shouldOptimize: shouldOptimize\n });\n if (writerResting === false) {\n resting = false;\n }\n });\n\n // run mixins\n activeMixins.forEach(function (mixin) {\n // if one of the mixins is still busy after write operation, we are not resting\n var mixinResting = mixin.write(ts);\n if (mixinResting === false) {\n resting = false;\n }\n });\n\n // updates child views that are currently attached to the DOM\n childViews.filter(function (child) {\n return !!child.element.parentNode;\n }).forEach(function (child) {\n // if a child view is not resting, we are not resting\n var childResting = child._write(ts, filterFrameActionsForChild(child, frameActions), shouldOptimize);\n if (!childResting) {\n resting = false;\n }\n });\n\n // append new elements to DOM and update those\n childViews\n //.filter(child => !child.element.parentNode)\n .forEach(function (child, index) {\n // skip\n if (child.element.parentNode) {\n return;\n }\n\n // append to DOM\n internalAPI.appendChild(child.element, index);\n\n // call read (need to know the size of these elements)\n child._read();\n\n // re-call write\n child._write(ts, filterFrameActionsForChild(child, frameActions), shouldOptimize);\n\n // we just added somthing to the dom, no rest\n resting = false;\n });\n\n // update resting state\n isResting = resting;\n didWriteView({\n props: props,\n root: internalAPI,\n actions: frameActions,\n timestamp: ts\n });\n\n // let parent know if we are resting\n return resting;\n };\n var _destroy = function _destroy() {\n activeMixins.forEach(function (mixin) {\n return mixin.destroy();\n });\n destroyers.forEach(function (destroyer) {\n destroyer({\n root: internalAPI,\n props: props\n });\n });\n childViews.forEach(function (child) {\n return child._destroy();\n });\n };\n\n // sharedAPI\n var sharedAPIDefinition = {\n element: {\n get: getElement\n },\n style: {\n get: getStyle\n },\n childViews: {\n get: getChildViews\n }\n };\n\n // private API definition\n var internalAPIDefinition = Object.assign({}, sharedAPIDefinition, {\n rect: {\n get: getRect\n },\n // access to custom children references\n ref: {\n get: getReference\n },\n // dom modifiers\n is: function is(needle) {\n return name === needle;\n },\n appendChild: appendChild(element),\n createChildView: createChildView(store),\n linkView: function linkView(view) {\n childViews.push(view);\n return view;\n },\n unlinkView: function unlinkView(view) {\n childViews.splice(childViews.indexOf(view), 1);\n },\n appendChildView: appendChildView(element, childViews),\n removeChildView: removeChildView(element, childViews),\n registerWriter: function registerWriter(writer) {\n return writers.push(writer);\n },\n registerReader: function registerReader(reader) {\n return readers.push(reader);\n },\n registerDestroyer: function registerDestroyer(destroyer) {\n return destroyers.push(destroyer);\n },\n invalidateLayout: function invalidateLayout() {\n return element.layoutCalculated = false;\n },\n // access to data store\n dispatch: store.dispatch,\n query: store.query\n });\n\n // public view API methods\n var externalAPIDefinition = {\n element: {\n get: getElement\n },\n childViews: {\n get: getChildViews\n },\n rect: {\n get: getRect\n },\n resting: {\n get: function get() {\n return isResting;\n }\n },\n isRectIgnored: function isRectIgnored() {\n return ignoreRect;\n },\n _read: _read,\n _write: _write,\n _destroy: _destroy\n };\n\n // mixin API methods\n var mixinAPIDefinition = Object.assign({}, sharedAPIDefinition, {\n rect: {\n get: function get() {\n return rect;\n }\n }\n });\n\n // add mixin functionality\n Object.keys(mixins).sort(function (a, b) {\n // move styles to the back of the mixin list (so adjustments of other mixins are applied to the props correctly)\n if (a === 'styles') {\n return 1;\n } else if (b === 'styles') {\n return -1;\n }\n return 0;\n }).forEach(function (key) {\n var mixinAPI = Mixins[key]({\n mixinConfig: mixins[key],\n viewProps: props,\n viewState: state,\n viewInternalAPI: internalAPIDefinition,\n viewExternalAPI: externalAPIDefinition,\n view: createObject(mixinAPIDefinition)\n });\n if (mixinAPI) {\n activeMixins.push(mixinAPI);\n }\n });\n\n // construct private api\n var internalAPI = createObject(internalAPIDefinition);\n\n // create the view\n create({\n root: internalAPI,\n props: props\n });\n\n // append created child views to root node\n var childCount = getChildCount(element); // need to know the current child count so appending happens in correct order\n childViews.forEach(function (child, index) {\n internalAPI.appendChild(child.element, childCount + index);\n });\n\n // call did create\n didCreateView(internalAPI);\n\n // expose public api\n return createObject(externalAPIDefinition);\n };\n };\n var createPainter = function createPainter(read, write) {\n var fps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 60;\n var name = '__framePainter';\n\n // set global painter\n if (window[name]) {\n window[name].readers.push(read);\n window[name].writers.push(write);\n return;\n }\n window[name] = {\n readers: [read],\n writers: [write]\n };\n var painter = window[name];\n var interval = 1000 / fps;\n var last = null;\n var id = null;\n var requestTick = null;\n var cancelTick = null;\n var setTimerType = function setTimerType() {\n if (document.hidden) {\n requestTick = function requestTick() {\n return window.setTimeout(function () {\n return tick(performance.now());\n }, interval);\n };\n cancelTick = function cancelTick() {\n return window.clearTimeout(id);\n };\n } else {\n requestTick = function requestTick() {\n return window.requestAnimationFrame(tick);\n };\n cancelTick = function cancelTick() {\n return window.cancelAnimationFrame(id);\n };\n }\n };\n document.addEventListener('visibilitychange', function () {\n if (cancelTick) cancelTick();\n setTimerType();\n tick(performance.now());\n });\n var tick = function tick(ts) {\n // queue next tick\n id = requestTick(tick);\n\n // limit fps\n if (!last) {\n last = ts;\n }\n var delta = ts - last;\n if (delta <= interval) {\n // skip frame\n return;\n }\n\n // align next frame\n last = ts - delta % interval;\n\n // update view\n painter.readers.forEach(function (read) {\n return read();\n });\n painter.writers.forEach(function (write) {\n return write(ts);\n });\n };\n setTimerType();\n tick(performance.now());\n return {\n pause: function pause() {\n cancelTick(id);\n }\n };\n };\n var createRoute = function createRoute(routes, fn) {\n return function (_ref) {\n var root = _ref.root,\n props = _ref.props,\n _ref$actions = _ref.actions,\n actions = _ref$actions === void 0 ? [] : _ref$actions,\n timestamp = _ref.timestamp,\n shouldOptimize = _ref.shouldOptimize;\n actions.filter(function (action) {\n return routes[action.type];\n }).forEach(function (action) {\n return routes[action.type]({\n root: root,\n props: props,\n action: action.data,\n timestamp: timestamp,\n shouldOptimize: shouldOptimize\n });\n });\n if (fn) {\n fn({\n root: root,\n props: props,\n actions: actions,\n timestamp: timestamp,\n shouldOptimize: shouldOptimize\n });\n }\n };\n };\n var insertBefore = function insertBefore(newNode, referenceNode) {\n return referenceNode.parentNode.insertBefore(newNode, referenceNode);\n };\n var insertAfter = function insertAfter(newNode, referenceNode) {\n return referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\n };\n var isArray = function isArray(value) {\n return Array.isArray(value);\n };\n var isEmpty = function isEmpty(value) {\n return value == null;\n };\n var trim = function trim(str) {\n return str.trim();\n };\n var toString = function toString(value) {\n return '' + value;\n };\n var toArray = function toArray(value) {\n var splitter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ',';\n if (isEmpty(value)) {\n return [];\n }\n if (isArray(value)) {\n return value;\n }\n return toString(value).split(splitter).map(trim).filter(function (str) {\n return str.length;\n });\n };\n var isBoolean = function isBoolean(value) {\n return typeof value === 'boolean';\n };\n var toBoolean = function toBoolean(value) {\n return isBoolean(value) ? value : value === 'true';\n };\n var isString = function isString(value) {\n return typeof value === 'string';\n };\n var toNumber = function toNumber(value) {\n return isNumber(value) ? value : isString(value) ? toString(value).replace(/[a-z]+/gi, '') : 0;\n };\n var toInt = function toInt(value) {\n return parseInt(toNumber(value), 10);\n };\n var toFloat = function toFloat(value) {\n return parseFloat(toNumber(value));\n };\n var isInt = function isInt(value) {\n return isNumber(value) && isFinite(value) && Math.floor(value) === value;\n };\n var toBytes = function toBytes(value) {\n var base = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000;\n // is in bytes\n if (isInt(value)) {\n return value;\n }\n\n // is natural file size\n var naturalFileSize = toString(value).trim();\n\n // if is value in megabytes\n if (/MB$/i.test(naturalFileSize)) {\n naturalFileSize = naturalFileSize.replace(/MB$i/, '').trim();\n return toInt(naturalFileSize) * base * base;\n }\n\n // if is value in kilobytes\n if (/KB/i.test(naturalFileSize)) {\n naturalFileSize = naturalFileSize.replace(/KB$i/, '').trim();\n return toInt(naturalFileSize) * base;\n }\n return toInt(naturalFileSize);\n };\n var isFunction = function isFunction(value) {\n return typeof value === 'function';\n };\n var toFunctionReference = function toFunctionReference(string) {\n var ref = self;\n var levels = string.split('.');\n var level = null;\n while (level = levels.shift()) {\n ref = ref[level];\n if (!ref) {\n return null;\n }\n }\n return ref;\n };\n var methods = {\n process: 'POST',\n patch: 'PATCH',\n revert: 'DELETE',\n fetch: 'GET',\n restore: 'GET',\n load: 'GET'\n };\n var createServerAPI = function createServerAPI(outline) {\n var api = {};\n api.url = isString(outline) ? outline : outline.url || '';\n api.timeout = outline.timeout ? parseInt(outline.timeout, 10) : 0;\n api.headers = outline.headers ? outline.headers : {};\n forin(methods, function (key) {\n api[key] = createAction(key, outline[key], methods[key], api.timeout, api.headers);\n });\n\n // remove process if no url or process on outline\n api.process = outline.process || isString(outline) || outline.url ? api.process : null;\n\n // special treatment for remove\n api.remove = outline.remove || null;\n\n // remove generic headers from api object\n delete api.headers;\n return api;\n };\n var createAction = function createAction(name, outline, method, timeout, headers) {\n // is explicitely set to null so disable\n if (outline === null) {\n return null;\n }\n\n // if is custom function, done! Dev handles everything.\n if (typeof outline === 'function') {\n return outline;\n }\n\n // build action object\n var action = {\n url: method === 'GET' || method === 'PATCH' ? '?' + name + '=' : '',\n method: method,\n headers: headers,\n withCredentials: false,\n timeout: timeout,\n onload: null,\n ondata: null,\n onerror: null\n };\n\n // is a single url\n if (isString(outline)) {\n action.url = outline;\n return action;\n }\n\n // overwrite\n Object.assign(action, outline);\n\n // see if should reformat headers;\n if (isString(action.headers)) {\n var parts = action.headers.split(/:(.+)/);\n action.headers = {\n header: parts[0],\n value: parts[1]\n };\n }\n\n // if is bool withCredentials\n action.withCredentials = toBoolean(action.withCredentials);\n return action;\n };\n var toServerAPI = function toServerAPI(value) {\n return createServerAPI(value);\n };\n var isNull = function isNull(value) {\n return value === null;\n };\n var isObject = function isObject(value) {\n return typeof value === 'object' && value !== null;\n };\n var isAPI = function isAPI(value) {\n return isObject(value) && isString(value.url) && isObject(value.process) && isObject(value.revert) && isObject(value.restore) && isObject(value.fetch);\n };\n var getType = function getType(value) {\n if (isArray(value)) {\n return 'array';\n }\n if (isNull(value)) {\n return 'null';\n }\n if (isInt(value)) {\n return 'int';\n }\n if (/^[0-9]+ ?(?:GB|MB|KB)$/gi.test(value)) {\n return 'bytes';\n }\n if (isAPI(value)) {\n return 'api';\n }\n return typeof value;\n };\n var replaceSingleQuotes = function replaceSingleQuotes(str) {\n return str.replace(/{\\s*'/g, '{\"').replace(/'\\s*}/g, '\"}').replace(/'\\s*:/g, '\":').replace(/:\\s*'/g, ':\"').replace(/,\\s*'/g, ',\"').replace(/'\\s*,/g, '\",');\n };\n var conversionTable = {\n array: toArray,\n boolean: toBoolean,\n int: function int(value) {\n return getType(value) === 'bytes' ? toBytes(value) : toInt(value);\n },\n number: toFloat,\n float: toFloat,\n bytes: toBytes,\n string: function string(value) {\n return isFunction(value) ? value : toString(value);\n },\n function: function _function(value) {\n return toFunctionReference(value);\n },\n serverapi: toServerAPI,\n object: function object(value) {\n try {\n return JSON.parse(replaceSingleQuotes(value));\n } catch (e) {\n return null;\n }\n }\n };\n var convertTo = function convertTo(value, type) {\n return conversionTable[type](value);\n };\n var getValueByType = function getValueByType(newValue, defaultValue, valueType) {\n // can always assign default value\n if (newValue === defaultValue) {\n return newValue;\n }\n\n // get the type of the new value\n var newValueType = getType(newValue);\n\n // is valid type?\n if (newValueType !== valueType) {\n // is string input, let's attempt to convert\n var convertedValue = convertTo(newValue, valueType);\n\n // what is the type now\n newValueType = getType(convertedValue);\n\n // no valid conversions found\n if (convertedValue === null) {\n throw 'Trying to assign value with incorrect type to \"' + option + '\", allowed type: \"' + valueType + '\"';\n } else {\n newValue = convertedValue;\n }\n }\n\n // assign new value\n return newValue;\n };\n var createOption = function createOption(defaultValue, valueType) {\n var currentValue = defaultValue;\n return {\n enumerable: true,\n get: function get() {\n return currentValue;\n },\n set: function set(newValue) {\n currentValue = getValueByType(newValue, defaultValue, valueType);\n }\n };\n };\n var createOptions = function createOptions(options) {\n var obj = {};\n forin(options, function (prop) {\n var optionDefinition = options[prop];\n obj[prop] = createOption(optionDefinition[0], optionDefinition[1]);\n });\n return createObject(obj);\n };\n var createInitialState = function createInitialState(options) {\n return {\n // model\n items: [],\n // timeout used for calling update items\n listUpdateTimeout: null,\n // timeout used for stacking metadata updates\n itemUpdateTimeout: null,\n // queue of items waiting to be processed\n processingQueue: [],\n // options\n options: createOptions(options)\n };\n };\n var fromCamels = function fromCamels(string) {\n var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '-';\n return string.split(/(?=[A-Z])/).map(function (part) {\n return part.toLowerCase();\n }).join(separator);\n };\n var createOptionAPI = function createOptionAPI(store, options) {\n var obj = {};\n forin(options, function (key) {\n obj[key] = {\n get: function get() {\n return store.getState().options[key];\n },\n set: function set(value) {\n store.dispatch('SET_' + fromCamels(key, '_').toUpperCase(), {\n value: value\n });\n }\n };\n });\n return obj;\n };\n var createOptionActions = function createOptionActions(options) {\n return function (dispatch, query, state) {\n var obj = {};\n forin(options, function (key) {\n var name = fromCamels(key, '_').toUpperCase();\n obj['SET_' + name] = function (action) {\n try {\n state.options[key] = action.value;\n } catch (e) {} // nope, failed\n\n // we successfully set the value of this option\n dispatch('DID_SET_' + name, {\n value: state.options[key]\n });\n };\n });\n return obj;\n };\n };\n var createOptionQueries = function createOptionQueries(options) {\n return function (state) {\n var obj = {};\n forin(options, function (key) {\n obj['GET_' + fromCamels(key, '_').toUpperCase()] = function (action) {\n return state.options[key];\n };\n });\n return obj;\n };\n };\n var InteractionMethod = {\n API: 1,\n DROP: 2,\n BROWSE: 3,\n PASTE: 4,\n NONE: 5\n };\n var getUniqueId = function getUniqueId() {\n return Math.random().toString(36).substring(2, 11);\n };\n function _typeof(obj) {\n if (typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol') {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj;\n };\n }\n return _typeof(obj);\n }\n var REACT_ELEMENT_TYPE;\n function _jsx(type, props, key, children) {\n if (!REACT_ELEMENT_TYPE) {\n REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;\n }\n var defaultProps = type && type.defaultProps;\n var childrenLength = arguments.length - 3;\n if (!props && childrenLength !== 0) {\n props = {\n children: void 0\n };\n }\n if (props && defaultProps) {\n for (var propName in defaultProps) {\n if (props[propName] === void 0) {\n props[propName] = defaultProps[propName];\n }\n }\n } else if (!props) {\n props = defaultProps || {};\n }\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = new Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 3];\n }\n props.children = childArray;\n }\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key === undefined ? null : '' + key,\n ref: null,\n props: props,\n _owner: null\n };\n }\n function _asyncIterator(iterable) {\n var method;\n if (typeof Symbol !== 'undefined') {\n if (Symbol.asyncIterator) {\n method = iterable[Symbol.asyncIterator];\n if (method != null) return method.call(iterable);\n }\n if (Symbol.iterator) {\n method = iterable[Symbol.iterator];\n if (method != null) return method.call(iterable);\n }\n }\n throw new TypeError('Object is not async iterable');\n }\n function _AwaitValue(value) {\n this.wrapped = value;\n }\n function _AsyncGenerator(gen) {\n var front, back;\n function send(key, arg) {\n return new Promise(function (resolve, reject) {\n var request = {\n key: key,\n arg: arg,\n resolve: resolve,\n reject: reject,\n next: null\n };\n if (back) {\n back = back.next = request;\n } else {\n front = back = request;\n resume(key, arg);\n }\n });\n }\n function resume(key, arg) {\n try {\n var result = gen[key](arg);\n var value = result.value;\n var wrappedAwait = value instanceof _AwaitValue;\n Promise.resolve(wrappedAwait ? value.wrapped : value).then(function (arg) {\n if (wrappedAwait) {\n resume('next', arg);\n return;\n }\n settle(result.done ? 'return' : 'normal', arg);\n }, function (err) {\n resume('throw', err);\n });\n } catch (err) {\n settle('throw', err);\n }\n }\n function settle(type, value) {\n switch (type) {\n case 'return':\n front.resolve({\n value: value,\n done: true\n });\n break;\n case 'throw':\n front.reject(value);\n break;\n default:\n front.resolve({\n value: value,\n done: false\n });\n break;\n }\n front = front.next;\n if (front) {\n resume(front.key, front.arg);\n } else {\n back = null;\n }\n }\n this._invoke = send;\n if (typeof gen.return !== 'function') {\n this.return = undefined;\n }\n }\n if (typeof Symbol === 'function' && Symbol.asyncIterator) {\n _AsyncGenerator.prototype[Symbol.asyncIterator] = function () {\n return this;\n };\n }\n _AsyncGenerator.prototype.next = function (arg) {\n return this._invoke('next', arg);\n };\n _AsyncGenerator.prototype.throw = function (arg) {\n return this._invoke('throw', arg);\n };\n _AsyncGenerator.prototype.return = function (arg) {\n return this._invoke('return', arg);\n };\n function _wrapAsyncGenerator(fn) {\n return function () {\n return new _AsyncGenerator(fn.apply(this, arguments));\n };\n }\n function _awaitAsyncGenerator(value) {\n return new _AwaitValue(value);\n }\n function _asyncGeneratorDelegate(inner, awaitWrap) {\n var iter = {},\n waiting = false;\n function pump(key, value) {\n waiting = true;\n value = new Promise(function (resolve) {\n resolve(inner[key](value));\n });\n return {\n done: false,\n value: awaitWrap(value)\n };\n }\n if (typeof Symbol === 'function' && Symbol.iterator) {\n iter[Symbol.iterator] = function () {\n return this;\n };\n }\n iter.next = function (value) {\n if (waiting) {\n waiting = false;\n return value;\n }\n return pump('next', value);\n };\n if (typeof inner.throw === 'function') {\n iter.throw = function (value) {\n if (waiting) {\n waiting = false;\n throw value;\n }\n return pump('throw', value);\n };\n }\n if (typeof inner.return === 'function') {\n iter.return = function (value) {\n return pump('return', value);\n };\n }\n return iter;\n }\n function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n }\n function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'next', value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'throw', err);\n }\n _next(undefined);\n });\n };\n }\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError('Cannot call a class as a function');\n }\n }\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ('value' in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n function _defineEnumerableProperties(obj, descs) {\n for (var key in descs) {\n var desc = descs[key];\n desc.configurable = desc.enumerable = true;\n if ('value' in desc) desc.writable = true;\n Object.defineProperty(obj, key, desc);\n }\n if (Object.getOwnPropertySymbols) {\n var objectSymbols = Object.getOwnPropertySymbols(descs);\n for (var i = 0; i < objectSymbols.length; i++) {\n var sym = objectSymbols[i];\n var desc = descs[sym];\n desc.configurable = desc.enumerable = true;\n if ('value' in desc) desc.writable = true;\n Object.defineProperty(obj, sym, desc);\n }\n }\n return obj;\n }\n function _defaults(obj, defaults) {\n var keys = Object.getOwnPropertyNames(defaults);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = Object.getOwnPropertyDescriptor(defaults, key);\n if (value && value.configurable && obj[key] === undefined) {\n Object.defineProperty(obj, key, value);\n }\n }\n return obj;\n }\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n }\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n }\n function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n return target;\n }\n function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n return keys;\n }\n function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n }\n function _inherits(subClass, superClass) {\n if (typeof superClass !== 'function' && superClass !== null) {\n throw new TypeError('Super expression must either be null or a function');\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n }\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n }\n function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n }\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n }\n function isNativeReflectConstruct() {\n if (typeof Reflect === 'undefined' || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === 'function') return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n }\n function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n }\n function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf('[native code]') !== -1;\n }\n function _wrapNativeSuper(Class) {\n var _cache = typeof Map === 'function' ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n if (typeof Class !== 'function') {\n throw new TypeError('Super expression must either be null or a function');\n }\n if (typeof _cache !== 'undefined') {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n }\n function _instanceof(left, right) {\n if (right != null && typeof Symbol !== 'undefined' && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else {\n return left instanceof right;\n }\n }\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n function _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};\n if (desc.get || desc.set) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n }\n newObj.default = obj;\n return newObj;\n }\n }\n function _newArrowCheck(innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError('Cannot instantiate an arrow function');\n }\n }\n function _objectDestructuringEmpty(obj) {\n if (obj == null) throw new TypeError('Cannot destructure undefined');\n }\n function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n }\n function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n }\n function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n }\n function _possibleConstructorReturn(self, call) {\n if (call && (typeof call === 'object' || typeof call === 'function')) {\n return call;\n }\n return _assertThisInitialized(self);\n }\n function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n }\n function _get(target, property, receiver) {\n if (typeof Reflect !== 'undefined' && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) {\n return desc.get.call(receiver);\n }\n return desc.value;\n };\n }\n return _get(target, property, receiver || target);\n }\n function set(target, property, value, receiver) {\n if (typeof Reflect !== 'undefined' && Reflect.set) {\n set = Reflect.set;\n } else {\n set = function set(target, property, value, receiver) {\n var base = _superPropBase(target, property);\n var desc;\n if (base) {\n desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.set) {\n desc.set.call(receiver, value);\n return true;\n } else if (!desc.writable) {\n return false;\n }\n }\n desc = Object.getOwnPropertyDescriptor(receiver, property);\n if (desc) {\n if (!desc.writable) {\n return false;\n }\n desc.value = value;\n Object.defineProperty(receiver, property, desc);\n } else {\n _defineProperty(receiver, property, value);\n }\n return true;\n };\n }\n return set(target, property, value, receiver);\n }\n function _set(target, property, value, receiver, isStrict) {\n var s = set(target, property, value, receiver || target);\n if (!s && isStrict) {\n throw new Error('failed to set property');\n }\n return value;\n }\n function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n }\n function _taggedTemplateLiteralLoose(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n strings.raw = raw;\n return strings;\n }\n function _temporalRef(val, name) {\n if (val === _temporalUndefined) {\n throw new ReferenceError(name + ' is not defined - temporal dead zone');\n } else {\n return val;\n }\n }\n function _readOnlyError(name) {\n throw new Error('\"' + name + '\" is read-only');\n }\n function _classNameTDZError(name) {\n throw new Error('Class \"' + name + '\" cannot be referenced in computed property keys.');\n }\n var _temporalUndefined = {};\n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n }\n function _slicedToArrayLoose(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimitLoose(arr, i) || _nonIterableRest();\n }\n function _toArray(arr) {\n return _arrayWithHoles(arr) || _iterableToArray(arr) || _nonIterableRest();\n }\n function _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n }\n function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n return arr2;\n }\n }\n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === '[object Arguments]') return Array.from(iter);\n }\n function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i['return'] != null) _i['return']();\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n function _iterableToArrayLimitLoose(arr, i) {\n var _arr = [];\n for (var _iterator = arr[Symbol.iterator](), _step; !(_step = _iterator.next()).done;) {\n _arr.push(_step.value);\n if (i && _arr.length === i) break;\n }\n return _arr;\n }\n function _nonIterableSpread() {\n throw new TypeError('Invalid attempt to spread non-iterable instance');\n }\n function _nonIterableRest() {\n throw new TypeError('Invalid attempt to destructure non-iterable instance');\n }\n function _skipFirstGeneratorNext(fn) {\n return function () {\n var it = fn.apply(this, arguments);\n it.next();\n return it;\n };\n }\n function _toPrimitive(input, hint) {\n if (typeof input !== 'object' || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || 'default');\n if (typeof res !== 'object') return res;\n throw new TypeError('@@toPrimitive must return a primitive value.');\n }\n return (hint === 'string' ? String : Number)(input);\n }\n function _toPropertyKey(arg) {\n var key = _toPrimitive(arg, 'string');\n return typeof key === 'symbol' ? key : String(key);\n }\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that ' + 'proposal-class-properties is enabled and set to use loose mode. ' + 'To use proposal-class-properties in spec mode with decorators, wait for ' + 'the next major version of decorators in stage 2.');\n }\n function _initializerDefineProperty(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object.keys(descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n if (desc.initializer === void 0) {\n Object.defineProperty(target, property, desc);\n desc = null;\n }\n return desc;\n }\n var id = 0;\n function _classPrivateFieldLooseKey(name) {\n return '__private_' + id++ + '_' + name;\n }\n function _classPrivateFieldLooseBase(receiver, privateKey) {\n if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {\n throw new TypeError('attempted to use private field on non-instance');\n }\n return receiver;\n }\n function _classPrivateFieldGet(receiver, privateMap) {\n var descriptor = privateMap.get(receiver);\n if (!descriptor) {\n throw new TypeError('attempted to get private field on non-instance');\n }\n if (descriptor.get) {\n return descriptor.get.call(receiver);\n }\n return descriptor.value;\n }\n function _classPrivateFieldSet(receiver, privateMap, value) {\n var descriptor = privateMap.get(receiver);\n if (!descriptor) {\n throw new TypeError('attempted to set private field on non-instance');\n }\n if (descriptor.set) {\n descriptor.set.call(receiver, value);\n } else {\n if (!descriptor.writable) {\n throw new TypeError('attempted to set read only private field');\n }\n descriptor.value = value;\n }\n return value;\n }\n function _classPrivateFieldDestructureSet(receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError('attempted to set private field on non-instance');\n }\n var descriptor = privateMap.get(receiver);\n if (descriptor.set) {\n if (!('__destrObj' in descriptor)) {\n descriptor.__destrObj = {\n set value(v) {\n descriptor.set.call(receiver, v);\n }\n };\n }\n return descriptor.__destrObj;\n } else {\n if (!descriptor.writable) {\n throw new TypeError('attempted to set read only private field');\n }\n return descriptor;\n }\n }\n function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) {\n if (receiver !== classConstructor) {\n throw new TypeError('Private static access of wrong provenance');\n }\n return descriptor.value;\n }\n function _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) {\n if (receiver !== classConstructor) {\n throw new TypeError('Private static access of wrong provenance');\n }\n if (!descriptor.writable) {\n throw new TypeError('attempted to set read only private field');\n }\n descriptor.value = value;\n return value;\n }\n function _classStaticPrivateMethodGet(receiver, classConstructor, method) {\n if (receiver !== classConstructor) {\n throw new TypeError('Private static access of wrong provenance');\n }\n return method;\n }\n function _classStaticPrivateMethodSet() {\n throw new TypeError('attempted to set read only static private field');\n }\n function _decorate(decorators, factory, superClass, mixins) {\n var api = _getDecoratorsApi();\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n api = mixins[i](api);\n }\n }\n var r = factory(function initialize(O) {\n api.initializeInstanceElements(O, decorated.elements);\n }, superClass);\n var decorated = api.decorateClass(_coalesceClassElements(r.d.map(_createElementDescriptor)), decorators);\n api.initializeClassElements(r.F, decorated.elements);\n return api.runClassFinishers(r.F, decorated.finishers);\n }\n function _getDecoratorsApi() {\n _getDecoratorsApi = function () {\n return api;\n };\n var api = {\n elementsDefinitionOrder: [['method'], ['field']],\n initializeInstanceElements: function (O, elements) {\n ['method', 'field'].forEach(function (kind) {\n elements.forEach(function (element) {\n if (element.kind === kind && element.placement === 'own') {\n this.defineClassElement(O, element);\n }\n }, this);\n }, this);\n },\n initializeClassElements: function (F, elements) {\n var proto = F.prototype;\n ['method', 'field'].forEach(function (kind) {\n elements.forEach(function (element) {\n var placement = element.placement;\n if (element.kind === kind && (placement === 'static' || placement === 'prototype')) {\n var receiver = placement === 'static' ? F : proto;\n this.defineClassElement(receiver, element);\n }\n }, this);\n }, this);\n },\n defineClassElement: function (receiver, element) {\n var descriptor = element.descriptor;\n if (element.kind === 'field') {\n var initializer = element.initializer;\n descriptor = {\n enumerable: descriptor.enumerable,\n writable: descriptor.writable,\n configurable: descriptor.configurable,\n value: initializer === void 0 ? void 0 : initializer.call(receiver)\n };\n }\n Object.defineProperty(receiver, element.key, descriptor);\n },\n decorateClass: function (elements, decorators) {\n var newElements = [];\n var finishers = [];\n var placements = {\n static: [],\n prototype: [],\n own: []\n };\n elements.forEach(function (element) {\n this.addElementPlacement(element, placements);\n }, this);\n elements.forEach(function (element) {\n if (!_hasDecorators(element)) return newElements.push(element);\n var elementFinishersExtras = this.decorateElement(element, placements);\n newElements.push(elementFinishersExtras.element);\n newElements.push.apply(newElements, elementFinishersExtras.extras);\n finishers.push.apply(finishers, elementFinishersExtras.finishers);\n }, this);\n if (!decorators) {\n return {\n elements: newElements,\n finishers: finishers\n };\n }\n var result = this.decorateConstructor(newElements, decorators);\n finishers.push.apply(finishers, result.finishers);\n result.finishers = finishers;\n return result;\n },\n addElementPlacement: function (element, placements, silent) {\n var keys = placements[element.placement];\n if (!silent && keys.indexOf(element.key) !== -1) {\n throw new TypeError('Duplicated element (' + element.key + ')');\n }\n keys.push(element.key);\n },\n decorateElement: function (element, placements) {\n var extras = [];\n var finishers = [];\n for (var decorators = element.decorators, i = decorators.length - 1; i >= 0; i--) {\n var keys = placements[element.placement];\n keys.splice(keys.indexOf(element.key), 1);\n var elementObject = this.fromElementDescriptor(element);\n var elementFinisherExtras = this.toElementFinisherExtras((0, decorators[i])(elementObject) || elementObject);\n element = elementFinisherExtras.element;\n this.addElementPlacement(element, placements);\n if (elementFinisherExtras.finisher) {\n finishers.push(elementFinisherExtras.finisher);\n }\n var newExtras = elementFinisherExtras.extras;\n if (newExtras) {\n for (var j = 0; j < newExtras.length; j++) {\n this.addElementPlacement(newExtras[j], placements);\n }\n extras.push.apply(extras, newExtras);\n }\n }\n return {\n element: element,\n finishers: finishers,\n extras: extras\n };\n },\n decorateConstructor: function (elements, decorators) {\n var finishers = [];\n for (var i = decorators.length - 1; i >= 0; i--) {\n var obj = this.fromClassDescriptor(elements);\n var elementsAndFinisher = this.toClassDescriptor((0, decorators[i])(obj) || obj);\n if (elementsAndFinisher.finisher !== undefined) {\n finishers.push(elementsAndFinisher.finisher);\n }\n if (elementsAndFinisher.elements !== undefined) {\n elements = elementsAndFinisher.elements;\n for (var j = 0; j < elements.length - 1; j++) {\n for (var k = j + 1; k < elements.length; k++) {\n if (elements[j].key === elements[k].key && elements[j].placement === elements[k].placement) {\n throw new TypeError('Duplicated element (' + elements[j].key + ')');\n }\n }\n }\n }\n }\n return {\n elements: elements,\n finishers: finishers\n };\n },\n fromElementDescriptor: function (element) {\n var obj = {\n kind: element.kind,\n key: element.key,\n placement: element.placement,\n descriptor: element.descriptor\n };\n var desc = {\n value: 'Descriptor',\n configurable: true\n };\n Object.defineProperty(obj, Symbol.toStringTag, desc);\n if (element.kind === 'field') obj.initializer = element.initializer;\n return obj;\n },\n toElementDescriptors: function (elementObjects) {\n if (elementObjects === undefined) return;\n return _toArray(elementObjects).map(function (elementObject) {\n var element = this.toElementDescriptor(elementObject);\n this.disallowProperty(elementObject, 'finisher', 'An element descriptor');\n this.disallowProperty(elementObject, 'extras', 'An element descriptor');\n return element;\n }, this);\n },\n toElementDescriptor: function (elementObject) {\n var kind = String(elementObject.kind);\n if (kind !== 'method' && kind !== 'field') {\n throw new TypeError('An element descriptor\\'s .kind property must be either \"method\" or' + ' \"field\", but a decorator created an element descriptor with' + ' .kind \"' + kind + '\"');\n }\n var key = _toPropertyKey(elementObject.key);\n var placement = String(elementObject.placement);\n if (placement !== 'static' && placement !== 'prototype' && placement !== 'own') {\n throw new TypeError('An element descriptor\\'s .placement property must be one of \"static\",' + ' \"prototype\" or \"own\", but a decorator created an element descriptor' + ' with .placement \"' + placement + '\"');\n }\n var descriptor = elementObject.descriptor;\n this.disallowProperty(elementObject, 'elements', 'An element descriptor');\n var element = {\n kind: kind,\n key: key,\n placement: placement,\n descriptor: Object.assign({}, descriptor)\n };\n if (kind !== 'field') {\n this.disallowProperty(elementObject, 'initializer', 'A method descriptor');\n } else {\n this.disallowProperty(descriptor, 'get', 'The property descriptor of a field descriptor');\n this.disallowProperty(descriptor, 'set', 'The property descriptor of a field descriptor');\n this.disallowProperty(descriptor, 'value', 'The property descriptor of a field descriptor');\n element.initializer = elementObject.initializer;\n }\n return element;\n },\n toElementFinisherExtras: function (elementObject) {\n var element = this.toElementDescriptor(elementObject);\n var finisher = _optionalCallableProperty(elementObject, 'finisher');\n var extras = this.toElementDescriptors(elementObject.extras);\n return {\n element: element,\n finisher: finisher,\n extras: extras\n };\n },\n fromClassDescriptor: function (elements) {\n var obj = {\n kind: 'class',\n elements: elements.map(this.fromElementDescriptor, this)\n };\n var desc = {\n value: 'Descriptor',\n configurable: true\n };\n Object.defineProperty(obj, Symbol.toStringTag, desc);\n return obj;\n },\n toClassDescriptor: function (obj) {\n var kind = String(obj.kind);\n if (kind !== 'class') {\n throw new TypeError('A class descriptor\\'s .kind property must be \"class\", but a decorator' + ' created a class descriptor with .kind \"' + kind + '\"');\n }\n this.disallowProperty(obj, 'key', 'A class descriptor');\n this.disallowProperty(obj, 'placement', 'A class descriptor');\n this.disallowProperty(obj, 'descriptor', 'A class descriptor');\n this.disallowProperty(obj, 'initializer', 'A class descriptor');\n this.disallowProperty(obj, 'extras', 'A class descriptor');\n var finisher = _optionalCallableProperty(obj, 'finisher');\n var elements = this.toElementDescriptors(obj.elements);\n return {\n elements: elements,\n finisher: finisher\n };\n },\n runClassFinishers: function (constructor, finishers) {\n for (var i = 0; i < finishers.length; i++) {\n var newConstructor = (0, finishers[i])(constructor);\n if (newConstructor !== undefined) {\n if (typeof newConstructor !== 'function') {\n throw new TypeError('Finishers must return a constructor.');\n }\n constructor = newConstructor;\n }\n }\n return constructor;\n },\n disallowProperty: function (obj, name, objectType) {\n if (obj[name] !== undefined) {\n throw new TypeError(objectType + \" can't have a .\" + name + ' property.');\n }\n }\n };\n return api;\n }\n function _createElementDescriptor(def) {\n var key = _toPropertyKey(def.key);\n var descriptor;\n if (def.kind === 'method') {\n descriptor = {\n value: def.value,\n writable: true,\n configurable: true,\n enumerable: false\n };\n } else if (def.kind === 'get') {\n descriptor = {\n get: def.value,\n configurable: true,\n enumerable: false\n };\n } else if (def.kind === 'set') {\n descriptor = {\n set: def.value,\n configurable: true,\n enumerable: false\n };\n } else if (def.kind === 'field') {\n descriptor = {\n configurable: true,\n writable: true,\n enumerable: true\n };\n }\n var element = {\n kind: def.kind === 'field' ? 'field' : 'method',\n key: key,\n placement: def.static ? 'static' : def.kind === 'field' ? 'own' : 'prototype',\n descriptor: descriptor\n };\n if (def.decorators) element.decorators = def.decorators;\n if (def.kind === 'field') element.initializer = def.value;\n return element;\n }\n function _coalesceGetterSetter(element, other) {\n if (element.descriptor.get !== undefined) {\n other.descriptor.get = element.descriptor.get;\n } else {\n other.descriptor.set = element.descriptor.set;\n }\n }\n function _coalesceClassElements(elements) {\n var newElements = [];\n var isSameElement = function (other) {\n return other.kind === 'method' && other.key === element.key && other.placement === element.placement;\n };\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n var other;\n if (element.kind === 'method' && (other = newElements.find(isSameElement))) {\n if (_isDataDescriptor(element.descriptor) || _isDataDescriptor(other.descriptor)) {\n if (_hasDecorators(element) || _hasDecorators(other)) {\n throw new ReferenceError('Duplicated methods (' + element.key + \") can't be decorated.\");\n }\n other.descriptor = element.descriptor;\n } else {\n if (_hasDecorators(element)) {\n if (_hasDecorators(other)) {\n throw new ReferenceError(\"Decorators can't be placed on different accessors with for \" + 'the same property (' + element.key + ').');\n }\n other.decorators = element.decorators;\n }\n _coalesceGetterSetter(element, other);\n }\n } else {\n newElements.push(element);\n }\n }\n return newElements;\n }\n function _hasDecorators(element) {\n return element.decorators && element.decorators.length;\n }\n function _isDataDescriptor(desc) {\n return desc !== undefined && !(desc.value === undefined && desc.writable === undefined);\n }\n function _optionalCallableProperty(obj, name) {\n var value = obj[name];\n if (value !== undefined && typeof value !== 'function') {\n throw new TypeError(\"Expected '\" + name + \"' to be a function\");\n }\n return value;\n }\n function _classPrivateMethodGet(receiver, privateSet, fn) {\n if (!privateSet.has(receiver)) {\n throw new TypeError('attempted to get private field on non-instance');\n }\n return fn;\n }\n function _classPrivateMethodSet() {\n throw new TypeError('attempted to reassign private method');\n }\n function _wrapRegExp(re, groups) {\n _wrapRegExp = function (re, groups) {\n return new BabelRegExp(re, groups);\n };\n var _RegExp = _wrapNativeSuper(RegExp);\n var _super = RegExp.prototype;\n var _groups = new WeakMap();\n function BabelRegExp(re, groups) {\n var _this = _RegExp.call(this, re);\n _groups.set(_this, groups);\n return _this;\n }\n _inherits(BabelRegExp, _RegExp);\n BabelRegExp.prototype.exec = function (str) {\n var result = _super.exec.call(this, str);\n if (result) result.groups = buildGroups(result, this);\n return result;\n };\n BabelRegExp.prototype[Symbol.replace] = function (str, substitution) {\n if (typeof substitution === 'string') {\n var groups = _groups.get(this);\n return _super[Symbol.replace].call(this, str, substitution.replace(/\\$<([^>]+)>/g, function (_, name) {\n return '$' + groups[name];\n }));\n } else if (typeof substitution === 'function') {\n var _this = this;\n return _super[Symbol.replace].call(this, str, function () {\n var args = [];\n args.push.apply(args, arguments);\n if (typeof args[args.length - 1] !== 'object') {\n args.push(buildGroups(args, _this));\n }\n return substitution.apply(this, args);\n });\n } else {\n return _super[Symbol.replace].call(this, str, substitution);\n }\n };\n function buildGroups(result, re) {\n var g = _groups.get(re);\n return Object.keys(g).reduce(function (groups, name) {\n groups[name] = result[g[name]];\n return groups;\n }, Object.create(null));\n }\n return _wrapRegExp.apply(this, arguments);\n }\n var arrayRemove = function arrayRemove(arr, index) {\n return arr.splice(index, 1);\n };\n var run = function run(cb, sync) {\n if (sync) {\n cb();\n } else if (document.hidden) {\n Promise.resolve(1).then(cb);\n } else {\n setTimeout(cb, 0);\n }\n };\n var on = function on() {\n var listeners = [];\n var off = function off(event, cb) {\n arrayRemove(listeners, listeners.findIndex(function (listener) {\n return listener.event === event && (listener.cb === cb || !cb);\n }));\n };\n var _fire = function fire(event, args, sync) {\n listeners.filter(function (listener) {\n return listener.event === event;\n }).map(function (listener) {\n return listener.cb;\n }).forEach(function (cb) {\n return run(function () {\n return cb.apply(void 0, _toConsumableArray(args));\n }, sync);\n });\n };\n return {\n fireSync: function fireSync(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n _fire(event, args, true);\n },\n fire: function fire(event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n _fire(event, args, false);\n },\n on: function on(event, cb) {\n listeners.push({\n event: event,\n cb: cb\n });\n },\n onOnce: function onOnce(event, _cb) {\n listeners.push({\n event: event,\n cb: function cb() {\n off(event, _cb);\n _cb.apply(void 0, arguments);\n }\n });\n },\n off: off\n };\n };\n var copyObjectPropertiesToObject = function copyObjectPropertiesToObject(src, target, excluded) {\n Object.getOwnPropertyNames(src).filter(function (property) {\n return !excluded.includes(property);\n }).forEach(function (key) {\n return Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(src, key));\n });\n };\n var PRIVATE = ['fire', 'process', 'revert', 'load', 'on', 'off', 'onOnce', 'retryLoad', 'extend', 'archive', 'archived', 'release', 'released', 'requestProcessing', 'freeze'];\n var createItemAPI = function createItemAPI(item) {\n var api = {};\n copyObjectPropertiesToObject(item, api, PRIVATE);\n return api;\n };\n var removeReleasedItems = function removeReleasedItems(items) {\n items.forEach(function (item, index) {\n if (item.released) {\n arrayRemove(items, index);\n }\n });\n };\n var ItemStatus = {\n INIT: 1,\n IDLE: 2,\n PROCESSING_QUEUED: 9,\n PROCESSING: 3,\n PROCESSING_COMPLETE: 5,\n PROCESSING_ERROR: 6,\n PROCESSING_REVERT_ERROR: 10,\n LOADING: 7,\n LOAD_ERROR: 8\n };\n var FileOrigin = {\n INPUT: 1,\n LIMBO: 2,\n LOCAL: 3\n };\n var getNonNumeric = function getNonNumeric(str) {\n return /[^0-9]+/.exec(str);\n };\n var getDecimalSeparator = function getDecimalSeparator() {\n return getNonNumeric(1.1.toLocaleString())[0];\n };\n var getThousandsSeparator = function getThousandsSeparator() {\n // Added for browsers that do not return the thousands separator (happend on native browser Android 4.4.4)\n // We check against the normal toString output and if they're the same return a comma when decimal separator is a dot\n var decimalSeparator = getDecimalSeparator();\n var thousandsStringWithSeparator = 1000.0.toLocaleString();\n var thousandsStringWithoutSeparator = 1000.0.toString();\n if (thousandsStringWithSeparator !== thousandsStringWithoutSeparator) {\n return getNonNumeric(thousandsStringWithSeparator)[0];\n }\n return decimalSeparator === '.' ? ',' : '.';\n };\n var Type = {\n BOOLEAN: 'boolean',\n INT: 'int',\n NUMBER: 'number',\n STRING: 'string',\n ARRAY: 'array',\n OBJECT: 'object',\n FUNCTION: 'function',\n ACTION: 'action',\n SERVER_API: 'serverapi',\n REGEX: 'regex'\n };\n\n // all registered filters\n var filters = [];\n\n // loops over matching filters and passes options to each filter, returning the mapped results\n var applyFilterChain = function applyFilterChain(key, value, utils) {\n return new Promise(function (resolve, reject) {\n // find matching filters for this key\n var matchingFilters = filters.filter(function (f) {\n return f.key === key;\n }).map(function (f) {\n return f.cb;\n });\n\n // resolve now\n if (matchingFilters.length === 0) {\n resolve(value);\n return;\n }\n\n // first filter to kick things of\n var initialFilter = matchingFilters.shift();\n\n // chain filters\n matchingFilters.reduce(\n // loop over promises passing value to next promise\n function (current, next) {\n return current.then(function (value) {\n return next(value, utils);\n });\n },\n // call initial filter, will return a promise\n initialFilter(value, utils)\n\n // all executed\n ).then(function (value) {\n return resolve(value);\n }).catch(function (error) {\n return reject(error);\n });\n });\n };\n var applyFilters = function applyFilters(key, value, utils) {\n return filters.filter(function (f) {\n return f.key === key;\n }).map(function (f) {\n return f.cb(value, utils);\n });\n };\n\n // adds a new filter to the list\n var addFilter = function addFilter(key, cb) {\n return filters.push({\n key: key,\n cb: cb\n });\n };\n var extendDefaultOptions = function extendDefaultOptions(additionalOptions) {\n return Object.assign(defaultOptions, additionalOptions);\n };\n var getOptions = function getOptions() {\n return Object.assign({}, defaultOptions);\n };\n var setOptions = function setOptions(opts) {\n forin(opts, function (key, value) {\n // key does not exist, so this option cannot be set\n if (!defaultOptions[key]) {\n return;\n }\n defaultOptions[key][0] = getValueByType(value, defaultOptions[key][0], defaultOptions[key][1]);\n });\n };\n\n // default options on app\n var defaultOptions = {\n // the id to add to the root element\n id: [null, Type.STRING],\n // input field name to use\n name: ['filepond', Type.STRING],\n // disable the field\n disabled: [false, Type.BOOLEAN],\n // classname to put on wrapper\n className: [null, Type.STRING],\n // is the field required\n required: [false, Type.BOOLEAN],\n // Allow media capture when value is set\n captureMethod: [null, Type.STRING],\n // - \"camera\", \"microphone\" or \"camcorder\",\n // - Does not work with multiple on apple devices\n // - If set, acceptedFileTypes must be made to match with media wildcard \"image/*\", \"audio/*\" or \"video/*\"\n\n // sync `acceptedFileTypes` property with `accept` attribute\n allowSyncAcceptAttribute: [true, Type.BOOLEAN],\n // Feature toggles\n allowDrop: [true, Type.BOOLEAN],\n // Allow dropping of files\n allowBrowse: [true, Type.BOOLEAN],\n // Allow browsing the file system\n allowPaste: [true, Type.BOOLEAN],\n // Allow pasting files\n allowMultiple: [false, Type.BOOLEAN],\n // Allow multiple files (disabled by default, as multiple attribute is also required on input to allow multiple)\n allowReplace: [true, Type.BOOLEAN],\n // Allow dropping a file on other file to replace it (only works when multiple is set to false)\n allowRevert: [true, Type.BOOLEAN],\n // Allows user to revert file upload\n allowRemove: [true, Type.BOOLEAN],\n // Allow user to remove a file\n allowProcess: [true, Type.BOOLEAN],\n // Allows user to process a file, when set to false, this removes the file upload button\n allowReorder: [false, Type.BOOLEAN],\n // Allow reordering of files\n allowDirectoriesOnly: [false, Type.BOOLEAN],\n // Allow only selecting directories with browse (no support for filtering dnd at this point)\n\n // Try store file if `server` not set\n storeAsFile: [false, Type.BOOLEAN],\n // Revert mode\n forceRevert: [false, Type.BOOLEAN],\n // Set to 'force' to require the file to be reverted before removal\n\n // Input requirements\n maxFiles: [null, Type.INT],\n // Max number of files\n checkValidity: [false, Type.BOOLEAN],\n // Enables custom validity messages\n\n // Where to put file\n itemInsertLocationFreedom: [true, Type.BOOLEAN],\n // Set to false to always add items to begin or end of list\n itemInsertLocation: ['before', Type.STRING],\n // Default index in list to add items that have been dropped at the top of the list\n itemInsertInterval: [75, Type.INT],\n // Drag 'n Drop related\n dropOnPage: [false, Type.BOOLEAN],\n // Allow dropping of files anywhere on page (prevents browser from opening file if dropped outside of Up)\n dropOnElement: [true, Type.BOOLEAN],\n // Drop needs to happen on element (set to false to also load drops outside of Up)\n dropValidation: [false, Type.BOOLEAN],\n // Enable or disable validating files on drop\n ignoredFiles: [['.ds_store', 'thumbs.db', 'desktop.ini'], Type.ARRAY],\n // Upload related\n instantUpload: [true, Type.BOOLEAN],\n // Should upload files immediately on drop\n maxParallelUploads: [2, Type.INT],\n // Maximum files to upload in parallel\n allowMinimumUploadDuration: [true, Type.BOOLEAN],\n // if true uploads take at least 750 ms, this ensures the user sees the upload progress giving trust the upload actually happened\n\n // Chunks\n chunkUploads: [false, Type.BOOLEAN],\n // Enable chunked uploads\n chunkForce: [false, Type.BOOLEAN],\n // Force use of chunk uploads even for files smaller than chunk size\n chunkSize: [5000000, Type.INT],\n // Size of chunks (5MB default)\n chunkRetryDelays: [[500, 1000, 3000], Type.ARRAY],\n // Amount of times to retry upload of a chunk when it fails\n\n // The server api end points to use for uploading (see docs)\n server: [null, Type.SERVER_API],\n // File size calculations, can set to 1024, this is only used for display, properties use file size base 1000\n fileSizeBase: [1000, Type.INT],\n // Labels and status messages\n labelFileSizeBytes: ['bytes', Type.STRING],\n labelFileSizeKilobytes: ['KB', Type.STRING],\n labelFileSizeMegabytes: ['MB', Type.STRING],\n labelFileSizeGigabytes: ['GB', Type.STRING],\n labelDecimalSeparator: [getDecimalSeparator(), Type.STRING],\n // Default is locale separator\n labelThousandsSeparator: [getThousandsSeparator(), Type.STRING],\n // Default is locale separator\n\n labelIdle: ['Drag & Drop your files or <span class=\"filepond--label-action\">Browse</span>', Type.STRING],\n labelInvalidField: ['Field contains invalid files', Type.STRING],\n labelFileWaitingForSize: ['Waiting for size', Type.STRING],\n labelFileSizeNotAvailable: ['Size not available', Type.STRING],\n labelFileCountSingular: ['file in list', Type.STRING],\n labelFileCountPlural: ['files in list', Type.STRING],\n labelFileLoading: ['Loading', Type.STRING],\n labelFileAdded: ['Added', Type.STRING],\n // assistive only\n labelFileLoadError: ['Error during load', Type.STRING],\n labelFileRemoved: ['Removed', Type.STRING],\n // assistive only\n labelFileRemoveError: ['Error during remove', Type.STRING],\n labelFileProcessing: ['Uploading', Type.STRING],\n labelFileProcessingComplete: ['Upload complete', Type.STRING],\n labelFileProcessingAborted: ['Upload cancelled', Type.STRING],\n labelFileProcessingError: ['Error during upload', Type.STRING],\n labelFileProcessingRevertError: ['Error during revert', Type.STRING],\n labelTapToCancel: ['tap to cancel', Type.STRING],\n labelTapToRetry: ['tap to retry', Type.STRING],\n labelTapToUndo: ['tap to undo', Type.STRING],\n labelButtonRemoveItem: ['Remove', Type.STRING],\n labelButtonAbortItemLoad: ['Abort', Type.STRING],\n labelButtonRetryItemLoad: ['Retry', Type.STRING],\n labelButtonAbortItemProcessing: ['Cancel', Type.STRING],\n labelButtonUndoItemProcessing: ['Undo', Type.STRING],\n labelButtonRetryItemProcessing: ['Retry', Type.STRING],\n labelButtonProcessItem: ['Upload', Type.STRING],\n // make sure width and height plus viewpox are even numbers so icons are nicely centered\n iconRemove: ['<svg width=\"26\" height=\"26\" viewBox=\"0 0 26 26\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11.586 13l-2.293 2.293a1 1 0 0 0 1.414 1.414L13 14.414l2.293 2.293a1 1 0 0 0 1.414-1.414L14.414 13l2.293-2.293a1 1 0 0 0-1.414-1.414L13 11.586l-2.293-2.293a1 1 0 0 0-1.414 1.414L11.586 13z\" fill=\"currentColor\" fill-rule=\"nonzero\"/></svg>', Type.STRING],\n iconProcess: ['<svg width=\"26\" height=\"26\" viewBox=\"0 0 26 26\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14 10.414v3.585a1 1 0 0 1-2 0v-3.585l-1.293 1.293a1 1 0 0 1-1.414-1.415l3-3a1 1 0 0 1 1.414 0l3 3a1 1 0 0 1-1.414 1.415L14 10.414zM9 18a1 1 0 0 1 0-2h8a1 1 0 0 1 0 2H9z\" fill=\"currentColor\" fill-rule=\"evenodd\"/></svg>', Type.STRING],\n iconRetry: ['<svg width=\"26\" height=\"26\" viewBox=\"0 0 26 26\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10.81 9.185l-.038.02A4.997 4.997 0 0 0 8 13.683a5 5 0 0 0 5 5 5 5 0 0 0 5-5 1 1 0 0 1 2 0A7 7 0 1 1 9.722 7.496l-.842-.21a.999.999 0 1 1 .484-1.94l3.23.806c.535.133.86.675.73 1.21l-.804 3.233a.997.997 0 0 1-1.21.73.997.997 0 0 1-.73-1.21l.23-.928v-.002z\" fill=\"currentColor\" fill-rule=\"nonzero\"/></svg>', Type.STRING],\n iconUndo: ['<svg width=\"26\" height=\"26\" viewBox=\"0 0 26 26\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.185 10.81l.02-.038A4.997 4.997 0 0 1 13.683 8a5 5 0 0 1 5 5 5 5 0 0 1-5 5 1 1 0 0 0 0 2A7 7 0 1 0 7.496 9.722l-.21-.842a.999.999 0 1 0-1.94.484l.806 3.23c.133.535.675.86 1.21.73l3.233-.803a.997.997 0 0 0 .73-1.21.997.997 0 0 0-1.21-.73l-.928.23-.002-.001z\" fill=\"currentColor\" fill-rule=\"nonzero\"/></svg>', Type.STRING],\n iconDone: ['<svg width=\"26\" height=\"26\" viewBox=\"0 0 26 26\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M18.293 9.293a1 1 0 0 1 1.414 1.414l-7.002 7a1 1 0 0 1-1.414 0l-3.998-4a1 1 0 1 1 1.414-1.414L12 15.586l6.294-6.293z\" fill=\"currentColor\" fill-rule=\"nonzero\"/></svg>', Type.STRING],\n // event handlers\n oninit: [null, Type.FUNCTION],\n onwarning: [null, Type.FUNCTION],\n onerror: [null, Type.FUNCTION],\n onactivatefile: [null, Type.FUNCTION],\n oninitfile: [null, Type.FUNCTION],\n onaddfilestart: [null, Type.FUNCTION],\n onaddfileprogress: [null, Type.FUNCTION],\n onaddfile: [null, Type.FUNCTION],\n onprocessfilestart: [null, Type.FUNCTION],\n onprocessfileprogress: [null, Type.FUNCTION],\n onprocessfileabort: [null, Type.FUNCTION],\n onprocessfilerevert: [null, Type.FUNCTION],\n onprocessfile: [null, Type.FUNCTION],\n onprocessfiles: [null, Type.FUNCTION],\n onremovefile: [null, Type.FUNCTION],\n onpreparefile: [null, Type.FUNCTION],\n onupdatefiles: [null, Type.FUNCTION],\n onreorderfiles: [null, Type.FUNCTION],\n // hooks\n beforeDropFile: [null, Type.FUNCTION],\n beforeAddFile: [null, Type.FUNCTION],\n beforeRemoveFile: [null, Type.FUNCTION],\n beforePrepareFile: [null, Type.FUNCTION],\n // styles\n stylePanelLayout: [null, Type.STRING],\n // null 'integrated', 'compact', 'circle'\n stylePanelAspectRatio: [null, Type.STRING],\n // null or '3:2' or 1\n styleItemPanelAspectRatio: [null, Type.STRING],\n styleButtonRemoveItemPosition: ['left', Type.STRING],\n styleButtonProcessItemPosition: ['right', Type.STRING],\n styleLoadIndicatorPosition: ['right', Type.STRING],\n styleProgressIndicatorPosition: ['right', Type.STRING],\n styleButtonRemoveItemAlign: [false, Type.BOOLEAN],\n // custom initial files array\n files: [[], Type.ARRAY],\n // show support by displaying credits\n credits: [['https://pqina.nl/', 'Powered by PQINA'], Type.ARRAY]\n };\n var getItemByQuery = function getItemByQuery(items, query) {\n // just return first index\n if (isEmpty(query)) {\n return items[0] || null;\n }\n\n // query is index\n if (isInt(query)) {\n return items[query] || null;\n }\n\n // if query is item, get the id\n if (typeof query === 'object') {\n query = query.id;\n }\n\n // assume query is a string and return item by id\n return items.find(function (item) {\n return item.id === query;\n }) || null;\n };\n var getNumericAspectRatioFromString = function getNumericAspectRatioFromString(aspectRatio) {\n if (isEmpty(aspectRatio)) {\n return aspectRatio;\n }\n if (/:/.test(aspectRatio)) {\n var parts = aspectRatio.split(':');\n return parts[1] / parts[0];\n }\n return parseFloat(aspectRatio);\n };\n var getActiveItems = function getActiveItems(items) {\n return items.filter(function (item) {\n return !item.archived;\n });\n };\n var Status = {\n EMPTY: 0,\n IDLE: 1,\n // waiting\n ERROR: 2,\n // a file is in error state\n BUSY: 3,\n // busy processing or loading\n READY: 4 // all files uploaded\n };\n\n var res = null;\n var canUpdateFileInput = function canUpdateFileInput() {\n if (res === null) {\n try {\n var dataTransfer = new DataTransfer();\n dataTransfer.items.add(new File(['hello world'], 'This_Works.txt'));\n var el = document.createElement('input');\n el.setAttribute('type', 'file');\n el.files = dataTransfer.files;\n res = el.files.length === 1;\n } catch (err) {\n res = false;\n }\n }\n return res;\n };\n var ITEM_ERROR = [ItemStatus.LOAD_ERROR, ItemStatus.PROCESSING_ERROR, ItemStatus.PROCESSING_REVERT_ERROR];\n var ITEM_BUSY = [ItemStatus.LOADING, ItemStatus.PROCESSING, ItemStatus.PROCESSING_QUEUED, ItemStatus.INIT];\n var ITEM_READY = [ItemStatus.PROCESSING_COMPLETE];\n var isItemInErrorState = function isItemInErrorState(item) {\n return ITEM_ERROR.includes(item.status);\n };\n var isItemInBusyState = function isItemInBusyState(item) {\n return ITEM_BUSY.includes(item.status);\n };\n var isItemInReadyState = function isItemInReadyState(item) {\n return ITEM_READY.includes(item.status);\n };\n var isAsync = function isAsync(state) {\n return isObject(state.options.server) && (isObject(state.options.server.process) || isFunction(state.options.server.process));\n };\n var queries = function queries(state) {\n return {\n GET_STATUS: function GET_STATUS() {\n var items = getActiveItems(state.items);\n var EMPTY = Status.EMPTY,\n ERROR = Status.ERROR,\n BUSY = Status.BUSY,\n IDLE = Status.IDLE,\n READY = Status.READY;\n if (items.length === 0) return EMPTY;\n if (items.some(isItemInErrorState)) return ERROR;\n if (items.some(isItemInBusyState)) return BUSY;\n if (items.some(isItemInReadyState)) return READY;\n return IDLE;\n },\n GET_ITEM: function GET_ITEM(query) {\n return getItemByQuery(state.items, query);\n },\n GET_ACTIVE_ITEM: function GET_ACTIVE_ITEM(query) {\n return getItemByQuery(getActiveItems(state.items), query);\n },\n GET_ACTIVE_ITEMS: function GET_ACTIVE_ITEMS() {\n return getActiveItems(state.items);\n },\n GET_ITEMS: function GET_ITEMS() {\n return state.items;\n },\n GET_ITEM_NAME: function GET_ITEM_NAME(query) {\n var item = getItemByQuery(state.items, query);\n return item ? item.filename : null;\n },\n GET_ITEM_SIZE: function GET_ITEM_SIZE(query) {\n var item = getItemByQuery(state.items, query);\n return item ? item.fileSize : null;\n },\n GET_STYLES: function GET_STYLES() {\n return Object.keys(state.options).filter(function (key) {\n return /^style/.test(key);\n }).map(function (option) {\n return {\n name: option,\n value: state.options[option]\n };\n });\n },\n GET_PANEL_ASPECT_RATIO: function GET_PANEL_ASPECT_RATIO() {\n var isShapeCircle = /circle/.test(state.options.stylePanelLayout);\n var aspectRatio = isShapeCircle ? 1 : getNumericAspectRatioFromString(state.options.stylePanelAspectRatio);\n return aspectRatio;\n },\n GET_ITEM_PANEL_ASPECT_RATIO: function GET_ITEM_PANEL_ASPECT_RATIO() {\n return state.options.styleItemPanelAspectRatio;\n },\n GET_ITEMS_BY_STATUS: function GET_ITEMS_BY_STATUS(status) {\n return getActiveItems(state.items).filter(function (item) {\n return item.status === status;\n });\n },\n GET_TOTAL_ITEMS: function GET_TOTAL_ITEMS() {\n return getActiveItems(state.items).length;\n },\n SHOULD_UPDATE_FILE_INPUT: function SHOULD_UPDATE_FILE_INPUT() {\n return state.options.storeAsFile && canUpdateFileInput() && !isAsync(state);\n },\n IS_ASYNC: function IS_ASYNC() {\n return isAsync(state);\n },\n GET_FILE_SIZE_LABELS: function GET_FILE_SIZE_LABELS(query) {\n return {\n labelBytes: query('GET_LABEL_FILE_SIZE_BYTES') || undefined,\n labelKilobytes: query('GET_LABEL_FILE_SIZE_KILOBYTES') || undefined,\n labelMegabytes: query('GET_LABEL_FILE_SIZE_MEGABYTES') || undefined,\n labelGigabytes: query('GET_LABEL_FILE_SIZE_GIGABYTES') || undefined\n };\n }\n };\n };\n var hasRoomForItem = function hasRoomForItem(state) {\n var count = getActiveItems(state.items).length;\n\n // if cannot have multiple items, to add one item it should currently not contain items\n if (!state.options.allowMultiple) {\n return count === 0;\n }\n\n // if allows multiple items, we check if a max item count has been set, if not, there's no limit\n var maxFileCount = state.options.maxFiles;\n if (maxFileCount === null) {\n return true;\n }\n\n // we check if the current count is smaller than the max count, if so, another file can still be added\n if (count < maxFileCount) {\n return true;\n }\n\n // no more room for another file\n return false;\n };\n var limit = function limit(value, min, max) {\n return Math.max(Math.min(max, value), min);\n };\n var arrayInsert = function arrayInsert(arr, index, item) {\n return arr.splice(index, 0, item);\n };\n var insertItem = function insertItem(items, item, index) {\n if (isEmpty(item)) {\n return null;\n }\n\n // if index is undefined, append\n if (typeof index === 'undefined') {\n items.push(item);\n return item;\n }\n\n // limit the index to the size of the items array\n index = limit(index, 0, items.length);\n\n // add item to array\n arrayInsert(items, index, item);\n\n // expose\n return item;\n };\n var isBase64DataURI = function isBase64DataURI(str) {\n return /^\\s*data:([a-z]+\\/[a-z0-9-+.]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,([a-z0-9!$&',()*+;=\\-._~:@\\/?%\\s]*)\\s*$/i.test(str);\n };\n var getFilenameFromURL = function getFilenameFromURL(url) {\n return url.split('/').pop().split('?').shift();\n };\n var getExtensionFromFilename = function getExtensionFromFilename(name) {\n return name.split('.').pop();\n };\n var guesstimateExtension = function guesstimateExtension(type) {\n // if no extension supplied, exit here\n if (typeof type !== 'string') {\n return '';\n }\n\n // get subtype\n var subtype = type.split('/').pop();\n\n // is svg subtype\n if (/svg/.test(subtype)) {\n return 'svg';\n }\n if (/zip|compressed/.test(subtype)) {\n return 'zip';\n }\n if (/plain/.test(subtype)) {\n return 'txt';\n }\n if (/msword/.test(subtype)) {\n return 'doc';\n }\n\n // if is valid subtype\n if (/[a-z]+/.test(subtype)) {\n // always use jpg extension\n if (subtype === 'jpeg') {\n return 'jpg';\n }\n\n // return subtype\n return subtype;\n }\n return '';\n };\n var leftPad = function leftPad(value) {\n var padding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n return (padding + value).slice(-padding.length);\n };\n var getDateString = function getDateString() {\n var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date();\n return date.getFullYear() + '-' + leftPad(date.getMonth() + 1, '00') + '-' + leftPad(date.getDate(), '00') + '_' + leftPad(date.getHours(), '00') + '-' + leftPad(date.getMinutes(), '00') + '-' + leftPad(date.getSeconds(), '00');\n };\n var getFileFromBlob = function getFileFromBlob(blob, filename) {\n var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var extension = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var file = typeof type === 'string' ? blob.slice(0, blob.size, type) : blob.slice(0, blob.size, blob.type);\n file.lastModifiedDate = new Date();\n\n // copy relative path\n if (blob._relativePath) file._relativePath = blob._relativePath;\n\n // if blob has name property, use as filename if no filename supplied\n if (!isString(filename)) {\n filename = getDateString();\n }\n\n // if filename supplied but no extension and filename has extension\n if (filename && extension === null && getExtensionFromFilename(filename)) {\n file.name = filename;\n } else {\n extension = extension || guesstimateExtension(file.type);\n file.name = filename + (extension ? '.' + extension : '');\n }\n return file;\n };\n var getBlobBuilder = function getBlobBuilder() {\n return window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;\n };\n var createBlob = function createBlob(arrayBuffer, mimeType) {\n var BB = getBlobBuilder();\n if (BB) {\n var bb = new BB();\n bb.append(arrayBuffer);\n return bb.getBlob(mimeType);\n }\n return new Blob([arrayBuffer], {\n type: mimeType\n });\n };\n var getBlobFromByteStringWithMimeType = function getBlobFromByteStringWithMimeType(byteString, mimeType) {\n var ab = new ArrayBuffer(byteString.length);\n var ia = new Uint8Array(ab);\n for (var i = 0; i < byteString.length; i++) {\n ia[i] = byteString.charCodeAt(i);\n }\n return createBlob(ab, mimeType);\n };\n var getMimeTypeFromBase64DataURI = function getMimeTypeFromBase64DataURI(dataURI) {\n return (/^data:(.+);/.exec(dataURI) || [])[1] || null;\n };\n var getBase64DataFromBase64DataURI = function getBase64DataFromBase64DataURI(dataURI) {\n // get data part of string (remove data:image/jpeg...,)\n var data = dataURI.split(',')[1];\n\n // remove any whitespace as that causes InvalidCharacterError in IE\n return data.replace(/\\s/g, '');\n };\n var getByteStringFromBase64DataURI = function getByteStringFromBase64DataURI(dataURI) {\n return atob(getBase64DataFromBase64DataURI(dataURI));\n };\n var getBlobFromBase64DataURI = function getBlobFromBase64DataURI(dataURI) {\n var mimeType = getMimeTypeFromBase64DataURI(dataURI);\n var byteString = getByteStringFromBase64DataURI(dataURI);\n return getBlobFromByteStringWithMimeType(byteString, mimeType);\n };\n var getFileFromBase64DataURI = function getFileFromBase64DataURI(dataURI, filename, extension) {\n return getFileFromBlob(getBlobFromBase64DataURI(dataURI), filename, null, extension);\n };\n var getFileNameFromHeader = function getFileNameFromHeader(header) {\n // test if is content disposition header, if not exit\n if (!/^content-disposition:/i.test(header)) return null;\n\n // get filename parts\n var matches = header.split(/filename=|filename\\*=.+''/).splice(1).map(function (name) {\n return name.trim().replace(/^[\"']|[;\"']{0,2}$/g, '');\n }).filter(function (name) {\n return name.length;\n });\n return matches.length ? decodeURI(matches[matches.length - 1]) : null;\n };\n var getFileSizeFromHeader = function getFileSizeFromHeader(header) {\n if (/content-length:/i.test(header)) {\n var size = header.match(/[0-9]+/)[0];\n return size ? parseInt(size, 10) : null;\n }\n return null;\n };\n var getTranfserIdFromHeader = function getTranfserIdFromHeader(header) {\n if (/x-content-transfer-id:/i.test(header)) {\n var id = (header.split(':')[1] || '').trim();\n return id || null;\n }\n return null;\n };\n var getFileInfoFromHeaders = function getFileInfoFromHeaders(headers) {\n var info = {\n source: null,\n name: null,\n size: null\n };\n var rows = headers.split('\\n');\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n try {\n for (var _iterator = rows[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var header = _step.value;\n var name = getFileNameFromHeader(header);\n if (name) {\n info.name = name;\n continue;\n }\n var size = getFileSizeFromHeader(header);\n if (size) {\n info.size = size;\n continue;\n }\n var source = getTranfserIdFromHeader(header);\n if (source) {\n info.source = source;\n continue;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return info;\n };\n var createFileLoader = function createFileLoader(fetchFn) {\n var state = {\n source: null,\n complete: false,\n progress: 0,\n size: null,\n timestamp: null,\n duration: 0,\n request: null\n };\n var getProgress = function getProgress() {\n return state.progress;\n };\n var abort = function abort() {\n if (state.request && state.request.abort) {\n state.request.abort();\n }\n };\n\n // load source\n var load = function load() {\n // get quick reference\n var source = state.source;\n api.fire('init', source);\n\n // Load Files\n if (source instanceof File) {\n api.fire('load', source);\n } else if (source instanceof Blob) {\n // Load blobs, set default name to current date\n api.fire('load', getFileFromBlob(source, source.name));\n } else if (isBase64DataURI(source)) {\n // Load base 64, set default name to current date\n api.fire('load', getFileFromBase64DataURI(source));\n } else {\n // Deal as if is external URL, let's load it!\n loadURL(source);\n }\n };\n\n // loads a url\n var loadURL = function loadURL(url) {\n // is remote url and no fetch method supplied\n if (!fetchFn) {\n api.fire('error', {\n type: 'error',\n body: \"Can't load URL\",\n code: 400\n });\n return;\n }\n\n // set request start\n state.timestamp = Date.now();\n\n // load file\n state.request = fetchFn(url, function (response) {\n // update duration\n state.duration = Date.now() - state.timestamp;\n\n // done!\n state.complete = true;\n\n // turn blob response into a file\n if (response instanceof Blob) {\n response = getFileFromBlob(response, response.name || getFilenameFromURL(url));\n }\n api.fire('load',\n // if has received blob, we go with blob, if no response, we return null\n response instanceof Blob ? response : response ? response.body : null);\n }, function (error) {\n api.fire('error', typeof error === 'string' ? {\n type: 'error',\n code: 0,\n body: error\n } : error);\n }, function (computable, current, total) {\n // collected some meta data already\n if (total) {\n state.size = total;\n }\n\n // update duration\n state.duration = Date.now() - state.timestamp;\n\n // if we can't compute progress, we're not going to fire progress events\n if (!computable) {\n state.progress = null;\n return;\n }\n\n // update progress percentage\n state.progress = current / total;\n\n // expose\n api.fire('progress', state.progress);\n }, function () {\n api.fire('abort');\n }, function (response) {\n var fileinfo = getFileInfoFromHeaders(typeof response === 'string' ? response : response.headers);\n api.fire('meta', {\n size: state.size || fileinfo.size,\n filename: fileinfo.name,\n source: fileinfo.source\n });\n });\n };\n var api = Object.assign({}, on(), {\n setSource: function setSource(source) {\n return state.source = source;\n },\n getProgress: getProgress,\n // file load progress\n abort: abort,\n // abort file load\n load: load // start load\n });\n\n return api;\n };\n var isGet = function isGet(method) {\n return /GET|HEAD/.test(method);\n };\n var sendRequest = function sendRequest(data, url, options) {\n var api = {\n onheaders: function onheaders() {},\n onprogress: function onprogress() {},\n onload: function onload() {},\n ontimeout: function ontimeout() {},\n onerror: function onerror() {},\n onabort: function onabort() {},\n abort: function abort() {\n aborted = true;\n xhr.abort();\n }\n };\n\n // timeout identifier, only used when timeout is defined\n var aborted = false;\n var headersReceived = false;\n\n // set default options\n options = Object.assign({\n method: 'POST',\n headers: {},\n withCredentials: false\n }, options);\n\n // encode url\n url = encodeURI(url);\n\n // if method is GET, add any received data to url\n\n if (isGet(options.method) && data) {\n url = '' + url + encodeURIComponent(typeof data === 'string' ? data : JSON.stringify(data));\n }\n\n // create request\n var xhr = new XMLHttpRequest();\n\n // progress of load\n var process = isGet(options.method) ? xhr : xhr.upload;\n process.onprogress = function (e) {\n // no progress event when aborted ( onprogress is called once after abort() )\n if (aborted) {\n return;\n }\n api.onprogress(e.lengthComputable, e.loaded, e.total);\n };\n\n // tries to get header info to the app as fast as possible\n xhr.onreadystatechange = function () {\n // not interesting in these states ('unsent' and 'openend' as they don't give us any additional info)\n if (xhr.readyState < 2) {\n return;\n }\n\n // no server response\n if (xhr.readyState === 4 && xhr.status === 0) {\n return;\n }\n if (headersReceived) {\n return;\n }\n headersReceived = true;\n\n // we've probably received some useful data in response headers\n api.onheaders(xhr);\n };\n\n // load successful\n xhr.onload = function () {\n // is classified as valid response\n if (xhr.status >= 200 && xhr.status < 300) {\n api.onload(xhr);\n } else {\n api.onerror(xhr);\n }\n };\n\n // error during load\n xhr.onerror = function () {\n return api.onerror(xhr);\n };\n\n // request aborted\n xhr.onabort = function () {\n aborted = true;\n api.onabort();\n };\n\n // request timeout\n xhr.ontimeout = function () {\n return api.ontimeout(xhr);\n };\n\n // open up open up!\n xhr.open(options.method, url, true);\n\n // set timeout if defined (do it after open so IE11 plays ball)\n if (isInt(options.timeout)) {\n xhr.timeout = options.timeout;\n }\n\n // add headers\n Object.keys(options.headers).forEach(function (key) {\n var value = unescape(encodeURIComponent(options.headers[key]));\n xhr.setRequestHeader(key, value);\n });\n\n // set type of response\n if (options.responseType) {\n xhr.responseType = options.responseType;\n }\n\n // set credentials\n if (options.withCredentials) {\n xhr.withCredentials = true;\n }\n\n // let's send our data\n xhr.send(data);\n return api;\n };\n var createResponse = function createResponse(type, code, body, headers) {\n return {\n type: type,\n code: code,\n body: body,\n headers: headers\n };\n };\n var createTimeoutResponse = function createTimeoutResponse(cb) {\n return function (xhr) {\n cb(createResponse('error', 0, 'Timeout', xhr.getAllResponseHeaders()));\n };\n };\n var hasQS = function hasQS(str) {\n return /\\?/.test(str);\n };\n var buildURL = function buildURL() {\n var url = '';\n for (var _len = arguments.length, parts = new Array(_len), _key = 0; _key < _len; _key++) {\n parts[_key] = arguments[_key];\n }\n parts.forEach(function (part) {\n url += hasQS(url) && hasQS(part) ? part.replace(/\\?/, '&') : part;\n });\n return url;\n };\n var createFetchFunction = function createFetchFunction() {\n var apiUrl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var action = arguments.length > 1 ? arguments[1] : undefined;\n // custom handler (should also handle file, load, error, progress and abort)\n if (typeof action === 'function') {\n return action;\n }\n\n // no action supplied\n if (!action || !isString(action.url)) {\n return null;\n }\n\n // set onload hanlder\n var onload = action.onload || function (res) {\n return res;\n };\n var onerror = action.onerror || function (res) {\n return null;\n };\n\n // internal handler\n return function (url, load, error, progress, abort, headers) {\n // do local or remote request based on if the url is external\n var request = sendRequest(url, buildURL(apiUrl, action.url), Object.assign({}, action, {\n responseType: 'blob'\n }));\n request.onload = function (xhr) {\n // get headers\n var headers = xhr.getAllResponseHeaders();\n\n // get filename\n var filename = getFileInfoFromHeaders(headers).name || getFilenameFromURL(url);\n\n // create response\n load(createResponse('load', xhr.status, action.method === 'HEAD' ? null : getFileFromBlob(onload(xhr.response), filename), headers));\n };\n request.onerror = function (xhr) {\n error(createResponse('error', xhr.status, onerror(xhr.response) || xhr.statusText, xhr.getAllResponseHeaders()));\n };\n request.onheaders = function (xhr) {\n headers(createResponse('headers', xhr.status, null, xhr.getAllResponseHeaders()));\n };\n request.ontimeout = createTimeoutResponse(error);\n request.onprogress = progress;\n request.onabort = abort;\n\n // should return request\n return request;\n };\n };\n var ChunkStatus = {\n QUEUED: 0,\n COMPLETE: 1,\n PROCESSING: 2,\n ERROR: 3,\n WAITING: 4\n };\n\n /*\n function signature:\n (file, metadata, load, error, progress, abort, transfer, options) => {\n return {\n abort:() => {}\n }\n }\n */\n\n // apiUrl, action, name, file, metadata, load, error, progress, abort, transfer, options\n var processFileChunked = function processFileChunked(apiUrl, action, name, file, metadata, load, error, progress, abort, transfer, options) {\n // all chunks\n var chunks = [];\n var chunkTransferId = options.chunkTransferId,\n chunkServer = options.chunkServer,\n chunkSize = options.chunkSize,\n chunkRetryDelays = options.chunkRetryDelays;\n\n // default state\n var state = {\n serverId: chunkTransferId,\n aborted: false\n };\n\n // set onload handlers\n var ondata = action.ondata || function (fd) {\n return fd;\n };\n var onload = action.onload || function (xhr, method) {\n return method === 'HEAD' ? xhr.getResponseHeader('Upload-Offset') : xhr.response;\n };\n var onerror = action.onerror || function (res) {\n return null;\n };\n\n // create server hook\n var requestTransferId = function requestTransferId(cb) {\n var formData = new FormData();\n\n // add metadata under same name\n if (isObject(metadata)) formData.append(name, JSON.stringify(metadata));\n var headers = typeof action.headers === 'function' ? action.headers(file, metadata) : Object.assign({}, action.headers, {\n 'Upload-Length': file.size\n });\n var requestParams = Object.assign({}, action, {\n headers: headers\n });\n\n // send request object\n var request = sendRequest(ondata(formData), buildURL(apiUrl, action.url), requestParams);\n request.onload = function (xhr) {\n return cb(onload(xhr, requestParams.method));\n };\n request.onerror = function (xhr) {\n return error(createResponse('error', xhr.status, onerror(xhr.response) || xhr.statusText, xhr.getAllResponseHeaders()));\n };\n request.ontimeout = createTimeoutResponse(error);\n };\n var requestTransferOffset = function requestTransferOffset(cb) {\n var requestUrl = buildURL(apiUrl, chunkServer.url, state.serverId);\n var headers = typeof action.headers === 'function' ? action.headers(state.serverId) : Object.assign({}, action.headers);\n var requestParams = {\n headers: headers,\n method: 'HEAD'\n };\n var request = sendRequest(null, requestUrl, requestParams);\n request.onload = function (xhr) {\n return cb(onload(xhr, requestParams.method));\n };\n request.onerror = function (xhr) {\n return error(createResponse('error', xhr.status, onerror(xhr.response) || xhr.statusText, xhr.getAllResponseHeaders()));\n };\n request.ontimeout = createTimeoutResponse(error);\n };\n\n // create chunks\n var lastChunkIndex = Math.floor(file.size / chunkSize);\n for (var i = 0; i <= lastChunkIndex; i++) {\n var offset = i * chunkSize;\n var data = file.slice(offset, offset + chunkSize, 'application/offset+octet-stream');\n chunks[i] = {\n index: i,\n size: data.size,\n offset: offset,\n data: data,\n file: file,\n progress: 0,\n retries: _toConsumableArray(chunkRetryDelays),\n status: ChunkStatus.QUEUED,\n error: null,\n request: null,\n timeout: null\n };\n }\n var completeProcessingChunks = function completeProcessingChunks() {\n return load(state.serverId);\n };\n var canProcessChunk = function canProcessChunk(chunk) {\n return chunk.status === ChunkStatus.QUEUED || chunk.status === ChunkStatus.ERROR;\n };\n var processChunk = function processChunk(chunk) {\n // processing is paused, wait here\n if (state.aborted) return;\n\n // get next chunk to process\n chunk = chunk || chunks.find(canProcessChunk);\n\n // no more chunks to process\n if (!chunk) {\n // all done?\n if (chunks.every(function (chunk) {\n return chunk.status === ChunkStatus.COMPLETE;\n })) {\n completeProcessingChunks();\n }\n\n // no chunk to handle\n return;\n }\n\n // now processing this chunk\n chunk.status = ChunkStatus.PROCESSING;\n chunk.progress = null;\n\n // allow parsing of formdata\n var ondata = chunkServer.ondata || function (fd) {\n return fd;\n };\n var onerror = chunkServer.onerror || function (res) {\n return null;\n };\n\n // send request object\n var requestUrl = buildURL(apiUrl, chunkServer.url, state.serverId);\n var headers = typeof chunkServer.headers === 'function' ? chunkServer.headers(chunk) : Object.assign({}, chunkServer.headers, {\n 'Content-Type': 'application/offset+octet-stream',\n 'Upload-Offset': chunk.offset,\n 'Upload-Length': file.size,\n 'Upload-Name': file.name\n });\n var request = chunk.request = sendRequest(ondata(chunk.data), requestUrl, Object.assign({}, chunkServer, {\n headers: headers\n }));\n request.onload = function () {\n // done!\n chunk.status = ChunkStatus.COMPLETE;\n\n // remove request reference\n chunk.request = null;\n\n // start processing more chunks\n processChunks();\n };\n request.onprogress = function (lengthComputable, loaded, total) {\n chunk.progress = lengthComputable ? loaded : null;\n updateTotalProgress();\n };\n request.onerror = function (xhr) {\n chunk.status = ChunkStatus.ERROR;\n chunk.request = null;\n chunk.error = onerror(xhr.response) || xhr.statusText;\n if (!retryProcessChunk(chunk)) {\n error(createResponse('error', xhr.status, onerror(xhr.response) || xhr.statusText, xhr.getAllResponseHeaders()));\n }\n };\n request.ontimeout = function (xhr) {\n chunk.status = ChunkStatus.ERROR;\n chunk.request = null;\n if (!retryProcessChunk(chunk)) {\n createTimeoutResponse(error)(xhr);\n }\n };\n request.onabort = function () {\n chunk.status = ChunkStatus.QUEUED;\n chunk.request = null;\n abort();\n };\n };\n var retryProcessChunk = function retryProcessChunk(chunk) {\n // no more retries left\n if (chunk.retries.length === 0) return false;\n\n // new retry\n chunk.status = ChunkStatus.WAITING;\n clearTimeout(chunk.timeout);\n chunk.timeout = setTimeout(function () {\n processChunk(chunk);\n }, chunk.retries.shift());\n\n // we're going to retry\n return true;\n };\n var updateTotalProgress = function updateTotalProgress() {\n // calculate total progress fraction\n var totalBytesTransfered = chunks.reduce(function (p, chunk) {\n if (p === null || chunk.progress === null) return null;\n return p + chunk.progress;\n }, 0);\n\n // can't compute progress\n if (totalBytesTransfered === null) return progress(false, 0, 0);\n\n // calculate progress values\n var totalSize = chunks.reduce(function (total, chunk) {\n return total + chunk.size;\n }, 0);\n\n // can update progress indicator\n progress(true, totalBytesTransfered, totalSize);\n };\n\n // process new chunks\n var processChunks = function processChunks() {\n var totalProcessing = chunks.filter(function (chunk) {\n return chunk.status === ChunkStatus.PROCESSING;\n }).length;\n if (totalProcessing >= 1) return;\n processChunk();\n };\n var abortChunks = function abortChunks() {\n chunks.forEach(function (chunk) {\n clearTimeout(chunk.timeout);\n if (chunk.request) {\n chunk.request.abort();\n }\n });\n };\n\n // let's go!\n if (!state.serverId) {\n requestTransferId(function (serverId) {\n // stop here if aborted, might have happened in between request and callback\n if (state.aborted) return;\n\n // pass back to item so we can use it if something goes wrong\n transfer(serverId);\n\n // store internally\n state.serverId = serverId;\n processChunks();\n });\n } else {\n requestTransferOffset(function (offset) {\n // stop here if aborted, might have happened in between request and callback\n if (state.aborted) return;\n\n // mark chunks with lower offset as complete\n chunks.filter(function (chunk) {\n return chunk.offset < offset;\n }).forEach(function (chunk) {\n chunk.status = ChunkStatus.COMPLETE;\n chunk.progress = chunk.size;\n });\n\n // continue processing\n processChunks();\n });\n }\n return {\n abort: function abort() {\n state.aborted = true;\n abortChunks();\n }\n };\n };\n\n /*\n function signature:\n (file, metadata, load, error, progress, abort) => {\n return {\n abort:() => {}\n }\n }\n */\n var createFileProcessorFunction = function createFileProcessorFunction(apiUrl, action, name, options) {\n return function (file, metadata, load, error, progress, abort, transfer) {\n // no file received\n if (!file) return;\n\n // if was passed a file, and we can chunk it, exit here\n var canChunkUpload = options.chunkUploads;\n var shouldChunkUpload = canChunkUpload && file.size > options.chunkSize;\n var willChunkUpload = canChunkUpload && (shouldChunkUpload || options.chunkForce);\n if (file instanceof Blob && willChunkUpload) return processFileChunked(apiUrl, action, name, file, metadata, load, error, progress, abort, transfer, options);\n\n // set handlers\n var ondata = action.ondata || function (fd) {\n return fd;\n };\n var onload = action.onload || function (res) {\n return res;\n };\n var onerror = action.onerror || function (res) {\n return null;\n };\n var headers = typeof action.headers === 'function' ? action.headers(file, metadata) || {} : Object.assign({}, action.headers);\n var requestParams = Object.assign({}, action, {\n headers: headers\n });\n\n // create formdata object\n var formData = new FormData();\n\n // add metadata under same name\n if (isObject(metadata)) {\n formData.append(name, JSON.stringify(metadata));\n }\n\n // Turn into an array of objects so no matter what the input, we can handle it the same way\n (file instanceof Blob ? [{\n name: null,\n file: file\n }] : file).forEach(function (item) {\n formData.append(name, item.file, item.name === null ? item.file.name : '' + item.name + item.file.name);\n });\n\n // send request object\n var request = sendRequest(ondata(formData), buildURL(apiUrl, action.url), requestParams);\n request.onload = function (xhr) {\n load(createResponse('load', xhr.status, onload(xhr.response), xhr.getAllResponseHeaders()));\n };\n request.onerror = function (xhr) {\n error(createResponse('error', xhr.status, onerror(xhr.response) || xhr.statusText, xhr.getAllResponseHeaders()));\n };\n request.ontimeout = createTimeoutResponse(error);\n request.onprogress = progress;\n request.onabort = abort;\n\n // should return request\n return request;\n };\n };\n var createProcessorFunction = function createProcessorFunction() {\n var apiUrl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var action = arguments.length > 1 ? arguments[1] : undefined;\n var name = arguments.length > 2 ? arguments[2] : undefined;\n var options = arguments.length > 3 ? arguments[3] : undefined;\n\n // custom handler (should also handle file, load, error, progress and abort)\n if (typeof action === 'function') return function () {\n for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {\n params[_key] = arguments[_key];\n }\n return action.apply(void 0, [name].concat(params, [options]));\n };\n\n // no action supplied\n if (!action || !isString(action.url)) return null;\n\n // internal handler\n return createFileProcessorFunction(apiUrl, action, name, options);\n };\n\n /*\n function signature:\n (uniqueFileId, load, error) => { }\n */\n var createRevertFunction = function createRevertFunction() {\n var apiUrl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var action = arguments.length > 1 ? arguments[1] : undefined;\n // is custom implementation\n if (typeof action === 'function') {\n return action;\n }\n\n // no action supplied, return stub function, interface will work, but file won't be removed\n if (!action || !isString(action.url)) {\n return function (uniqueFileId, load) {\n return load();\n };\n }\n\n // set onload hanlder\n var onload = action.onload || function (res) {\n return res;\n };\n var onerror = action.onerror || function (res) {\n return null;\n };\n\n // internal implementation\n return function (uniqueFileId, load, error) {\n var request = sendRequest(uniqueFileId, apiUrl + action.url, action // contains method, headers and withCredentials properties\n );\n\n request.onload = function (xhr) {\n load(createResponse('load', xhr.status, onload(xhr.response), xhr.getAllResponseHeaders()));\n };\n request.onerror = function (xhr) {\n error(createResponse('error', xhr.status, onerror(xhr.response) || xhr.statusText, xhr.getAllResponseHeaders()));\n };\n request.ontimeout = createTimeoutResponse(error);\n return request;\n };\n };\n var getRandomNumber = function getRandomNumber() {\n var min = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var max = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n return min + Math.random() * (max - min);\n };\n var createPerceivedPerformanceUpdater = function createPerceivedPerformanceUpdater(cb) {\n var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000;\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var tickMin = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 25;\n var tickMax = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 250;\n var timeout = null;\n var start = Date.now();\n var tick = function tick() {\n var runtime = Date.now() - start;\n var delay = getRandomNumber(tickMin, tickMax);\n if (runtime + delay > duration) {\n delay = runtime + delay - duration;\n }\n var progress = runtime / duration;\n if (progress >= 1 || document.hidden) {\n cb(1);\n return;\n }\n cb(progress);\n timeout = setTimeout(tick, delay);\n };\n if (duration > 0) tick();\n return {\n clear: function clear() {\n clearTimeout(timeout);\n }\n };\n };\n var createFileProcessor = function createFileProcessor(processFn, options) {\n var state = {\n complete: false,\n perceivedProgress: 0,\n perceivedPerformanceUpdater: null,\n progress: null,\n timestamp: null,\n perceivedDuration: 0,\n duration: 0,\n request: null,\n response: null\n };\n var allowMinimumUploadDuration = options.allowMinimumUploadDuration;\n var process = function process(file, metadata) {\n var progressFn = function progressFn() {\n // we've not yet started the real download, stop here\n // the request might not go through, for instance, there might be some server trouble\n // if state.progress is null, the server does not allow computing progress and we show the spinner instead\n if (state.duration === 0 || state.progress === null) return;\n\n // as we're now processing, fire the progress event\n api.fire('progress', api.getProgress());\n };\n var completeFn = function completeFn() {\n state.complete = true;\n api.fire('load-perceived', state.response.body);\n };\n\n // let's start processing\n api.fire('start');\n\n // set request start\n state.timestamp = Date.now();\n\n // create perceived performance progress indicator\n state.perceivedPerformanceUpdater = createPerceivedPerformanceUpdater(function (progress) {\n state.perceivedProgress = progress;\n state.perceivedDuration = Date.now() - state.timestamp;\n progressFn();\n\n // if fake progress is done, and a response has been received,\n // and we've not yet called the complete method\n if (state.response && state.perceivedProgress === 1 && !state.complete) {\n // we done!\n completeFn();\n }\n },\n // random delay as in a list of files you start noticing\n // files uploading at the exact same speed\n allowMinimumUploadDuration ? getRandomNumber(750, 1500) : 0);\n\n // remember request so we can abort it later\n state.request = processFn(\n // the file to process\n file,\n // the metadata to send along\n metadata,\n // callbacks (load, error, progress, abort, transfer)\n // load expects the body to be a server id if\n // you want to make use of revert\n function (response) {\n // we put the response in state so we can access\n // it outside of this method\n state.response = isObject(response) ? response : {\n type: 'load',\n code: 200,\n body: '' + response,\n headers: {}\n };\n\n // update duration\n state.duration = Date.now() - state.timestamp;\n\n // force progress to 1 as we're now done\n state.progress = 1;\n\n // actual load is done let's share results\n api.fire('load', state.response.body);\n\n // we are really done\n // if perceived progress is 1 ( wait for perceived progress to complete )\n // or if server does not support progress ( null )\n if (!allowMinimumUploadDuration || allowMinimumUploadDuration && state.perceivedProgress === 1) {\n completeFn();\n }\n },\n // error is expected to be an object with type, code, body\n function (error) {\n // cancel updater\n state.perceivedPerformanceUpdater.clear();\n\n // update others about this error\n api.fire('error', isObject(error) ? error : {\n type: 'error',\n code: 0,\n body: '' + error\n });\n },\n // actual processing progress\n function (computable, current, total) {\n // update actual duration\n state.duration = Date.now() - state.timestamp;\n\n // update actual progress\n state.progress = computable ? current / total : null;\n progressFn();\n },\n // abort does not expect a value\n function () {\n // stop updater\n state.perceivedPerformanceUpdater.clear();\n\n // fire the abort event so we can switch visuals\n api.fire('abort', state.response ? state.response.body : null);\n },\n // register the id for this transfer\n function (transferId) {\n api.fire('transfer', transferId);\n });\n };\n var abort = function abort() {\n // no request running, can't abort\n if (!state.request) return;\n\n // stop updater\n state.perceivedPerformanceUpdater.clear();\n\n // abort actual request\n if (state.request.abort) state.request.abort();\n\n // if has response object, we've completed the request\n state.complete = true;\n };\n var reset = function reset() {\n abort();\n state.complete = false;\n state.perceivedProgress = 0;\n state.progress = 0;\n state.timestamp = null;\n state.perceivedDuration = 0;\n state.duration = 0;\n state.request = null;\n state.response = null;\n };\n var getProgress = allowMinimumUploadDuration ? function () {\n return state.progress ? Math.min(state.progress, state.perceivedProgress) : null;\n } : function () {\n return state.progress || null;\n };\n var getDuration = allowMinimumUploadDuration ? function () {\n return Math.min(state.duration, state.perceivedDuration);\n } : function () {\n return state.duration;\n };\n var api = Object.assign({}, on(), {\n process: process,\n // start processing file\n abort: abort,\n // abort active process request\n getProgress: getProgress,\n getDuration: getDuration,\n reset: reset\n });\n return api;\n };\n var getFilenameWithoutExtension = function getFilenameWithoutExtension(name) {\n return name.substring(0, name.lastIndexOf('.')) || name;\n };\n var createFileStub = function createFileStub(source) {\n var data = [source.name, source.size, source.type];\n\n // is blob or base64, then we need to set the name\n if (source instanceof Blob || isBase64DataURI(source)) {\n data[0] = source.name || getDateString();\n } else if (isBase64DataURI(source)) {\n // if is base64 data uri we need to determine the average size and type\n data[1] = source.length;\n data[2] = getMimeTypeFromBase64DataURI(source);\n } else if (isString(source)) {\n // url\n data[0] = getFilenameFromURL(source);\n data[1] = 0;\n data[2] = 'application/octet-stream';\n }\n return {\n name: data[0],\n size: data[1],\n type: data[2]\n };\n };\n var isFile = function isFile(value) {\n return !!(value instanceof File || value instanceof Blob && value.name);\n };\n var deepCloneObject = function deepCloneObject(src) {\n if (!isObject(src)) return src;\n var target = isArray(src) ? [] : {};\n for (var key in src) {\n if (!src.hasOwnProperty(key)) continue;\n var v = src[key];\n target[key] = v && isObject(v) ? deepCloneObject(v) : v;\n }\n return target;\n };\n var createItem = function createItem() {\n var origin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var serverFileReference = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var file = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n // unique id for this item, is used to identify the item across views\n var id = getUniqueId();\n\n /**\n * Internal item state\n */\n var state = {\n // is archived\n archived: false,\n // if is frozen, no longer fires events\n frozen: false,\n // removed from view\n released: false,\n // original source\n source: null,\n // file model reference\n file: file,\n // id of file on server\n serverFileReference: serverFileReference,\n // id of file transfer on server\n transferId: null,\n // is aborted\n processingAborted: false,\n // current item status\n status: serverFileReference ? ItemStatus.PROCESSING_COMPLETE : ItemStatus.INIT,\n // active processes\n activeLoader: null,\n activeProcessor: null\n };\n\n // callback used when abort processing is called to link back to the resolve method\n var abortProcessingRequestComplete = null;\n\n /**\n * Externally added item metadata\n */\n var metadata = {};\n\n // item data\n var setStatus = function setStatus(status) {\n return state.status = status;\n };\n\n // fire event unless the item has been archived\n var fire = function fire(event) {\n if (state.released || state.frozen) return;\n for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n params[_key - 1] = arguments[_key];\n }\n api.fire.apply(api, [event].concat(params));\n };\n\n // file data\n var getFileExtension = function getFileExtension() {\n return getExtensionFromFilename(state.file.name);\n };\n var getFileType = function getFileType() {\n return state.file.type;\n };\n var getFileSize = function getFileSize() {\n return state.file.size;\n };\n var getFile = function getFile() {\n return state.file;\n };\n\n //\n // logic to load a file\n //\n var load = function load(source, loader, onload) {\n // remember the original item source\n state.source = source;\n\n // source is known\n api.fireSync('init');\n\n // file stub is already there\n if (state.file) {\n api.fireSync('load-skip');\n return;\n }\n\n // set a stub file object while loading the actual data\n state.file = createFileStub(source);\n\n // starts loading\n loader.on('init', function () {\n fire('load-init');\n });\n\n // we'eve received a size indication, let's update the stub\n loader.on('meta', function (meta) {\n // set size of file stub\n state.file.size = meta.size;\n\n // set name of file stub\n state.file.filename = meta.filename;\n\n // if has received source, we done\n if (meta.source) {\n origin = FileOrigin.LIMBO;\n state.serverFileReference = meta.source;\n state.status = ItemStatus.PROCESSING_COMPLETE;\n }\n\n // size has been updated\n fire('load-meta');\n });\n\n // the file is now loading we need to update the progress indicators\n loader.on('progress', function (progress) {\n setStatus(ItemStatus.LOADING);\n fire('load-progress', progress);\n });\n\n // an error was thrown while loading the file, we need to switch to error state\n loader.on('error', function (error) {\n setStatus(ItemStatus.LOAD_ERROR);\n fire('load-request-error', error);\n });\n\n // user or another process aborted the file load (cannot retry)\n loader.on('abort', function () {\n setStatus(ItemStatus.INIT);\n fire('load-abort');\n });\n\n // done loading\n loader.on('load', function (file) {\n // as we've now loaded the file the loader is no longer required\n state.activeLoader = null;\n\n // called when file has loaded succesfully\n var success = function success(result) {\n // set (possibly) transformed file\n state.file = isFile(result) ? result : state.file;\n\n // file received\n if (origin === FileOrigin.LIMBO && state.serverFileReference) {\n setStatus(ItemStatus.PROCESSING_COMPLETE);\n } else {\n setStatus(ItemStatus.IDLE);\n }\n fire('load');\n };\n var error = function error(result) {\n // set original file\n state.file = file;\n fire('load-meta');\n setStatus(ItemStatus.LOAD_ERROR);\n fire('load-file-error', result);\n };\n\n // if we already have a server file reference, we don't need to call the onload method\n if (state.serverFileReference) {\n success(file);\n return;\n }\n\n // no server id, let's give this file the full treatment\n onload(file, success, error);\n });\n\n // set loader source data\n loader.setSource(source);\n\n // set as active loader\n state.activeLoader = loader;\n\n // load the source data\n loader.load();\n };\n var retryLoad = function retryLoad() {\n if (!state.activeLoader) {\n return;\n }\n state.activeLoader.load();\n };\n var abortLoad = function abortLoad() {\n if (state.activeLoader) {\n state.activeLoader.abort();\n return;\n }\n setStatus(ItemStatus.INIT);\n fire('load-abort');\n };\n\n //\n // logic to process a file\n //\n var process = function process(processor, onprocess) {\n // processing was aborted\n if (state.processingAborted) {\n state.processingAborted = false;\n return;\n }\n\n // now processing\n setStatus(ItemStatus.PROCESSING);\n\n // reset abort callback\n abortProcessingRequestComplete = null;\n\n // if no file loaded we'll wait for the load event\n if (!(state.file instanceof Blob)) {\n api.on('load', function () {\n process(processor, onprocess);\n });\n return;\n }\n\n // setup processor\n processor.on('load', function (serverFileReference) {\n // need this id to be able to revert the upload\n state.transferId = null;\n state.serverFileReference = serverFileReference;\n });\n\n // register transfer id\n processor.on('transfer', function (transferId) {\n // need this id to be able to revert the upload\n state.transferId = transferId;\n });\n processor.on('load-perceived', function (serverFileReference) {\n // no longer required\n state.activeProcessor = null;\n\n // need this id to be able to rever the upload\n state.transferId = null;\n state.serverFileReference = serverFileReference;\n setStatus(ItemStatus.PROCESSING_COMPLETE);\n fire('process-complete', serverFileReference);\n });\n processor.on('start', function () {\n fire('process-start');\n });\n processor.on('error', function (error) {\n state.activeProcessor = null;\n setStatus(ItemStatus.PROCESSING_ERROR);\n fire('process-error', error);\n });\n processor.on('abort', function (serverFileReference) {\n state.activeProcessor = null;\n\n // if file was uploaded but processing was cancelled during perceived processor time store file reference\n state.serverFileReference = serverFileReference;\n setStatus(ItemStatus.IDLE);\n fire('process-abort');\n\n // has timeout so doesn't interfere with remove action\n if (abortProcessingRequestComplete) {\n abortProcessingRequestComplete();\n }\n });\n processor.on('progress', function (progress) {\n fire('process-progress', progress);\n });\n\n // when successfully transformed\n var success = function success(file) {\n // if was archived in the mean time, don't process\n if (state.archived) return;\n\n // process file!\n processor.process(file, Object.assign({}, metadata));\n };\n\n // something went wrong during transform phase\n var error = console.error;\n\n // start processing the file\n onprocess(state.file, success, error);\n\n // set as active processor\n state.activeProcessor = processor;\n };\n var requestProcessing = function requestProcessing() {\n state.processingAborted = false;\n setStatus(ItemStatus.PROCESSING_QUEUED);\n };\n var abortProcessing = function abortProcessing() {\n return new Promise(function (resolve) {\n if (!state.activeProcessor) {\n state.processingAborted = true;\n setStatus(ItemStatus.IDLE);\n fire('process-abort');\n resolve();\n return;\n }\n abortProcessingRequestComplete = function abortProcessingRequestComplete() {\n resolve();\n };\n state.activeProcessor.abort();\n });\n };\n\n //\n // logic to revert a processed file\n //\n var revert = function revert(revertFileUpload, forceRevert) {\n return new Promise(function (resolve, reject) {\n // a completed upload will have a serverFileReference, a failed chunked upload where\n // getting a serverId succeeded but >=0 chunks have been uploaded will have transferId set\n var serverTransferId = state.serverFileReference !== null ? state.serverFileReference : state.transferId;\n\n // cannot revert without a server id for this process\n if (serverTransferId === null) {\n resolve();\n return;\n }\n\n // revert the upload (fire and forget)\n revertFileUpload(serverTransferId, function () {\n // reset file server id and transfer id as now it's not available on the server\n state.serverFileReference = null;\n state.transferId = null;\n resolve();\n }, function (error) {\n // don't set error state when reverting is optional, it will always resolve\n if (!forceRevert) {\n resolve();\n return;\n }\n\n // oh no errors\n setStatus(ItemStatus.PROCESSING_REVERT_ERROR);\n fire('process-revert-error');\n reject(error);\n });\n\n // fire event\n setStatus(ItemStatus.IDLE);\n fire('process-revert');\n });\n };\n\n // exposed methods\n var _setMetadata = function setMetadata(key, value, silent) {\n var keys = key.split('.');\n var root = keys[0];\n var last = keys.pop();\n var data = metadata;\n keys.forEach(function (key) {\n return data = data[key];\n });\n\n // compare old value against new value, if they're the same, we're not updating\n if (JSON.stringify(data[last]) === JSON.stringify(value)) return;\n\n // update value\n data[last] = value;\n\n // fire update\n fire('metadata-update', {\n key: root,\n value: metadata[root],\n silent: silent\n });\n };\n var getMetadata = function getMetadata(key) {\n return deepCloneObject(key ? metadata[key] : metadata);\n };\n var api = Object.assign({\n id: {\n get: function get() {\n return id;\n }\n },\n origin: {\n get: function get() {\n return origin;\n },\n set: function set(value) {\n return origin = value;\n }\n },\n serverId: {\n get: function get() {\n return state.serverFileReference;\n }\n },\n transferId: {\n get: function get() {\n return state.transferId;\n }\n },\n status: {\n get: function get() {\n return state.status;\n }\n },\n filename: {\n get: function get() {\n return state.file.name;\n }\n },\n filenameWithoutExtension: {\n get: function get() {\n return getFilenameWithoutExtension(state.file.name);\n }\n },\n fileExtension: {\n get: getFileExtension\n },\n fileType: {\n get: getFileType\n },\n fileSize: {\n get: getFileSize\n },\n file: {\n get: getFile\n },\n relativePath: {\n get: function get() {\n return state.file._relativePath;\n }\n },\n source: {\n get: function get() {\n return state.source;\n }\n },\n getMetadata: getMetadata,\n setMetadata: function setMetadata(key, value, silent) {\n if (isObject(key)) {\n var data = key;\n Object.keys(data).forEach(function (key) {\n _setMetadata(key, data[key], value);\n });\n return key;\n }\n _setMetadata(key, value, silent);\n return value;\n },\n extend: function extend(name, handler) {\n return itemAPI[name] = handler;\n },\n abortLoad: abortLoad,\n retryLoad: retryLoad,\n requestProcessing: requestProcessing,\n abortProcessing: abortProcessing,\n load: load,\n process: process,\n revert: revert\n }, on(), {\n freeze: function freeze() {\n return state.frozen = true;\n },\n release: function release() {\n return state.released = true;\n },\n released: {\n get: function get() {\n return state.released;\n }\n },\n archive: function archive() {\n return state.archived = true;\n },\n archived: {\n get: function get() {\n return state.archived;\n }\n }\n });\n\n // create it here instead of returning it instantly so we can extend it later\n var itemAPI = createObject(api);\n return itemAPI;\n };\n var getItemIndexByQuery = function getItemIndexByQuery(items, query) {\n // just return first index\n if (isEmpty(query)) {\n return 0;\n }\n\n // invalid queries\n if (!isString(query)) {\n return -1;\n }\n\n // return item by id (or -1 if not found)\n return items.findIndex(function (item) {\n return item.id === query;\n });\n };\n var getItemById = function getItemById(items, itemId) {\n var index = getItemIndexByQuery(items, itemId);\n if (index < 0) {\n return;\n }\n return items[index] || null;\n };\n var fetchBlob = function fetchBlob(url, load, error, progress, abort, headers) {\n var request = sendRequest(null, url, {\n method: 'GET',\n responseType: 'blob'\n });\n request.onload = function (xhr) {\n // get headers\n var headers = xhr.getAllResponseHeaders();\n\n // get filename\n var filename = getFileInfoFromHeaders(headers).name || getFilenameFromURL(url);\n\n // create response\n load(createResponse('load', xhr.status, getFileFromBlob(xhr.response, filename), headers));\n };\n request.onerror = function (xhr) {\n error(createResponse('error', xhr.status, xhr.statusText, xhr.getAllResponseHeaders()));\n };\n request.onheaders = function (xhr) {\n headers(createResponse('headers', xhr.status, null, xhr.getAllResponseHeaders()));\n };\n request.ontimeout = createTimeoutResponse(error);\n request.onprogress = progress;\n request.onabort = abort;\n\n // should return request\n return request;\n };\n var getDomainFromURL = function getDomainFromURL(url) {\n if (url.indexOf('//') === 0) {\n url = location.protocol + url;\n }\n return url.toLowerCase().replace('blob:', '').replace(/([a-z])?:\\/\\//, '$1').split('/')[0];\n };\n var isExternalURL = function isExternalURL(url) {\n return (url.indexOf(':') > -1 || url.indexOf('//') > -1) && getDomainFromURL(location.href) !== getDomainFromURL(url);\n };\n var dynamicLabel = function dynamicLabel(label) {\n return function () {\n return isFunction(label) ? label.apply(void 0, arguments) : label;\n };\n };\n var isMockItem = function isMockItem(item) {\n return !isFile(item.file);\n };\n var listUpdated = function listUpdated(dispatch, state) {\n clearTimeout(state.listUpdateTimeout);\n state.listUpdateTimeout = setTimeout(function () {\n dispatch('DID_UPDATE_ITEMS', {\n items: getActiveItems(state.items)\n });\n }, 0);\n };\n var optionalPromise = function optionalPromise(fn) {\n for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n params[_key - 1] = arguments[_key];\n }\n return new Promise(function (resolve) {\n if (!fn) {\n return resolve(true);\n }\n var result = fn.apply(void 0, params);\n if (result == null) {\n return resolve(true);\n }\n if (typeof result === 'boolean') {\n return resolve(result);\n }\n if (typeof result.then === 'function') {\n result.then(resolve);\n }\n });\n };\n var sortItems = function sortItems(state, compare) {\n state.items.sort(function (a, b) {\n return compare(createItemAPI(a), createItemAPI(b));\n });\n };\n\n // returns item based on state\n var getItemByQueryFromState = function getItemByQueryFromState(state, itemHandler) {\n return function () {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var query = _ref.query,\n _ref$success = _ref.success,\n success = _ref$success === void 0 ? function () {} : _ref$success,\n _ref$failure = _ref.failure,\n failure = _ref$failure === void 0 ? function () {} : _ref$failure,\n options = _objectWithoutProperties(_ref, ['query', 'success', 'failure']);\n var item = getItemByQuery(state.items, query);\n if (!item) {\n failure({\n error: createResponse('error', 0, 'Item not found'),\n file: null\n });\n return;\n }\n itemHandler(item, success, failure, options || {});\n };\n };\n var actions = function actions(dispatch, query, state) {\n return {\n /**\n * Aborts all ongoing processes\n */\n ABORT_ALL: function ABORT_ALL() {\n getActiveItems(state.items).forEach(function (item) {\n item.freeze();\n item.abortLoad();\n item.abortProcessing();\n });\n },\n /**\n * Sets initial files\n */\n DID_SET_FILES: function DID_SET_FILES(_ref2) {\n var _ref2$value = _ref2.value,\n value = _ref2$value === void 0 ? [] : _ref2$value;\n // map values to file objects\n var files = value.map(function (file) {\n return {\n source: file.source ? file.source : file,\n options: file.options\n };\n });\n\n // loop over files, if file is in list, leave it be, if not, remove\n // test if items should be moved\n var activeItems = getActiveItems(state.items);\n activeItems.forEach(function (item) {\n // if item not is in new value, remove\n if (!files.find(function (file) {\n return file.source === item.source || file.source === item.file;\n })) {\n dispatch('REMOVE_ITEM', {\n query: item,\n remove: false\n });\n }\n });\n\n // add new files\n activeItems = getActiveItems(state.items);\n files.forEach(function (file, index) {\n // if file is already in list\n if (activeItems.find(function (item) {\n return item.source === file.source || item.file === file.source;\n })) return;\n\n // not in list, add\n dispatch('ADD_ITEM', Object.assign({}, file, {\n interactionMethod: InteractionMethod.NONE,\n index: index\n }));\n });\n },\n DID_UPDATE_ITEM_METADATA: function DID_UPDATE_ITEM_METADATA(_ref3) {\n var id = _ref3.id,\n action = _ref3.action,\n change = _ref3.change;\n // don't do anything\n if (change.silent) return;\n\n // if is called multiple times in close succession we combined all calls together to save resources\n clearTimeout(state.itemUpdateTimeout);\n state.itemUpdateTimeout = setTimeout(function () {\n var item = getItemById(state.items, id);\n\n // only revert and attempt to upload when we're uploading to a server\n if (!query('IS_ASYNC')) {\n // should we update the output data\n applyFilterChain('SHOULD_PREPARE_OUTPUT', false, {\n item: item,\n query: query,\n action: action,\n change: change\n }).then(function (shouldPrepareOutput) {\n // plugins determined the output data should be prepared (or not), can be adjusted with beforePrepareOutput hook\n var beforePrepareFile = query('GET_BEFORE_PREPARE_FILE');\n if (beforePrepareFile) shouldPrepareOutput = beforePrepareFile(item, shouldPrepareOutput);\n if (!shouldPrepareOutput) return;\n dispatch('REQUEST_PREPARE_OUTPUT', {\n query: id,\n item: item,\n success: function success(file) {\n dispatch('DID_PREPARE_OUTPUT', {\n id: id,\n file: file\n });\n }\n }, true);\n });\n return;\n }\n\n // if is local item we need to enable upload button so change can be propagated to server\n if (item.origin === FileOrigin.LOCAL) {\n dispatch('DID_LOAD_ITEM', {\n id: item.id,\n error: null,\n serverFileReference: item.source\n });\n }\n\n // for async scenarios\n var upload = function upload() {\n // we push this forward a bit so the interface is updated correctly\n setTimeout(function () {\n dispatch('REQUEST_ITEM_PROCESSING', {\n query: id\n });\n }, 32);\n };\n var revert = function revert(doUpload) {\n item.revert(createRevertFunction(state.options.server.url, state.options.server.revert), query('GET_FORCE_REVERT')).then(doUpload ? upload : function () {}).catch(function () {});\n };\n var abort = function abort(doUpload) {\n item.abortProcessing().then(doUpload ? upload : function () {});\n };\n\n // if we should re-upload the file immediately\n if (item.status === ItemStatus.PROCESSING_COMPLETE) {\n return revert(state.options.instantUpload);\n }\n\n // if currently uploading, cancel upload\n if (item.status === ItemStatus.PROCESSING) {\n return abort(state.options.instantUpload);\n }\n if (state.options.instantUpload) {\n upload();\n }\n }, 0);\n },\n MOVE_ITEM: function MOVE_ITEM(_ref4) {\n var query = _ref4.query,\n index = _ref4.index;\n var item = getItemByQuery(state.items, query);\n if (!item) return;\n var currentIndex = state.items.indexOf(item);\n index = limit(index, 0, state.items.length - 1);\n if (currentIndex === index) return;\n state.items.splice(index, 0, state.items.splice(currentIndex, 1)[0]);\n },\n SORT: function SORT(_ref5) {\n var compare = _ref5.compare;\n sortItems(state, compare);\n dispatch('DID_SORT_ITEMS', {\n items: query('GET_ACTIVE_ITEMS')\n });\n },\n ADD_ITEMS: function ADD_ITEMS(_ref6) {\n var items = _ref6.items,\n index = _ref6.index,\n interactionMethod = _ref6.interactionMethod,\n _ref6$success = _ref6.success,\n success = _ref6$success === void 0 ? function () {} : _ref6$success,\n _ref6$failure = _ref6.failure,\n failure = _ref6$failure === void 0 ? function () {} : _ref6$failure;\n var currentIndex = index;\n if (index === -1 || typeof index === 'undefined') {\n var insertLocation = query('GET_ITEM_INSERT_LOCATION');\n var totalItems = query('GET_TOTAL_ITEMS');\n currentIndex = insertLocation === 'before' ? 0 : totalItems;\n }\n var ignoredFiles = query('GET_IGNORED_FILES');\n var isValidFile = function isValidFile(source) {\n return isFile(source) ? !ignoredFiles.includes(source.name.toLowerCase()) : !isEmpty(source);\n };\n var validItems = items.filter(isValidFile);\n var promises = validItems.map(function (source) {\n return new Promise(function (resolve, reject) {\n dispatch('ADD_ITEM', {\n interactionMethod: interactionMethod,\n source: source.source || source,\n success: resolve,\n failure: reject,\n index: currentIndex++,\n options: source.options || {}\n });\n });\n });\n Promise.all(promises).then(success).catch(failure);\n },\n /**\n * @param source\n * @param index\n * @param interactionMethod\n */\n ADD_ITEM: function ADD_ITEM(_ref7) {\n var source = _ref7.source,\n _ref7$index = _ref7.index,\n index = _ref7$index === void 0 ? -1 : _ref7$index,\n interactionMethod = _ref7.interactionMethod,\n _ref7$success = _ref7.success,\n success = _ref7$success === void 0 ? function () {} : _ref7$success,\n _ref7$failure = _ref7.failure,\n failure = _ref7$failure === void 0 ? function () {} : _ref7$failure,\n _ref7$options = _ref7.options,\n options = _ref7$options === void 0 ? {} : _ref7$options;\n // if no source supplied\n if (isEmpty(source)) {\n failure({\n error: createResponse('error', 0, 'No source'),\n file: null\n });\n return;\n }\n\n // filter out invalid file items, used to filter dropped directory contents\n if (isFile(source) && state.options.ignoredFiles.includes(source.name.toLowerCase())) {\n // fail silently\n return;\n }\n\n // test if there's still room in the list of files\n if (!hasRoomForItem(state)) {\n // if multiple allowed, we can't replace\n // or if only a single item is allowed but we're not allowed to replace it we exit\n if (state.options.allowMultiple || !state.options.allowMultiple && !state.options.allowReplace) {\n var error = createResponse('warning', 0, 'Max files');\n dispatch('DID_THROW_MAX_FILES', {\n source: source,\n error: error\n });\n failure({\n error: error,\n file: null\n });\n return;\n }\n\n // let's replace the item\n // id of first item we're about to remove\n var _item = getActiveItems(state.items)[0];\n\n // if has been processed remove it from the server as well\n if (_item.status === ItemStatus.PROCESSING_COMPLETE || _item.status === ItemStatus.PROCESSING_REVERT_ERROR) {\n var forceRevert = query('GET_FORCE_REVERT');\n _item.revert(createRevertFunction(state.options.server.url, state.options.server.revert), forceRevert).then(function () {\n if (!forceRevert) return;\n\n // try to add now\n dispatch('ADD_ITEM', {\n source: source,\n index: index,\n interactionMethod: interactionMethod,\n success: success,\n failure: failure,\n options: options\n });\n }).catch(function () {}); // no need to handle this catch state for now\n\n if (forceRevert) return;\n }\n\n // remove first item as it will be replaced by this item\n dispatch('REMOVE_ITEM', {\n query: _item.id\n });\n }\n\n // where did the file originate\n var origin = options.type === 'local' ? FileOrigin.LOCAL : options.type === 'limbo' ? FileOrigin.LIMBO : FileOrigin.INPUT;\n\n // create a new blank item\n var item = createItem(\n // where did this file come from\n origin,\n // an input file never has a server file reference\n origin === FileOrigin.INPUT ? null : source,\n // file mock data, if defined\n options.file);\n\n // set initial meta data\n Object.keys(options.metadata || {}).forEach(function (key) {\n item.setMetadata(key, options.metadata[key]);\n });\n\n // created the item, let plugins add methods\n applyFilters('DID_CREATE_ITEM', item, {\n query: query,\n dispatch: dispatch\n });\n\n // where to insert new items\n var itemInsertLocation = query('GET_ITEM_INSERT_LOCATION');\n\n // adjust index if is not allowed to pick location\n if (!state.options.itemInsertLocationFreedom) {\n index = itemInsertLocation === 'before' ? -1 : state.items.length;\n }\n\n // add item to list\n insertItem(state.items, item, index);\n\n // sort items in list\n if (isFunction(itemInsertLocation) && source) {\n sortItems(state, itemInsertLocation);\n }\n\n // get a quick reference to the item id\n var id = item.id;\n\n // observe item events\n item.on('init', function () {\n dispatch('DID_INIT_ITEM', {\n id: id\n });\n });\n item.on('load-init', function () {\n dispatch('DID_START_ITEM_LOAD', {\n id: id\n });\n });\n item.on('load-meta', function () {\n dispatch('DID_UPDATE_ITEM_META', {\n id: id\n });\n });\n item.on('load-progress', function (progress) {\n dispatch('DID_UPDATE_ITEM_LOAD_PROGRESS', {\n id: id,\n progress: progress\n });\n });\n item.on('load-request-error', function (error) {\n var mainStatus = dynamicLabel(state.options.labelFileLoadError)(error);\n\n // is client error, no way to recover\n if (error.code >= 400 && error.code < 500) {\n dispatch('DID_THROW_ITEM_INVALID', {\n id: id,\n error: error,\n status: {\n main: mainStatus,\n sub: error.code + ' (' + error.body + ')'\n }\n });\n\n // reject the file so can be dealt with through API\n failure({\n error: error,\n file: createItemAPI(item)\n });\n return;\n }\n\n // is possible server error, so might be possible to retry\n dispatch('DID_THROW_ITEM_LOAD_ERROR', {\n id: id,\n error: error,\n status: {\n main: mainStatus,\n sub: state.options.labelTapToRetry\n }\n });\n });\n item.on('load-file-error', function (error) {\n dispatch('DID_THROW_ITEM_INVALID', {\n id: id,\n error: error.status,\n status: error.status\n });\n failure({\n error: error.status,\n file: createItemAPI(item)\n });\n });\n item.on('load-abort', function () {\n dispatch('REMOVE_ITEM', {\n query: id\n });\n });\n item.on('load-skip', function () {\n dispatch('COMPLETE_LOAD_ITEM', {\n query: id,\n item: item,\n data: {\n source: source,\n success: success\n }\n });\n });\n item.on('load', function () {\n var handleAdd = function handleAdd(shouldAdd) {\n // no should not add this file\n if (!shouldAdd) {\n dispatch('REMOVE_ITEM', {\n query: id\n });\n return;\n }\n\n // now interested in metadata updates\n item.on('metadata-update', function (change) {\n dispatch('DID_UPDATE_ITEM_METADATA', {\n id: id,\n change: change\n });\n });\n\n // let plugins decide if the output data should be prepared at this point\n // means we'll do this and wait for idle state\n applyFilterChain('SHOULD_PREPARE_OUTPUT', false, {\n item: item,\n query: query\n }).then(function (shouldPrepareOutput) {\n // plugins determined the output data should be prepared (or not), can be adjusted with beforePrepareOutput hook\n var beforePrepareFile = query('GET_BEFORE_PREPARE_FILE');\n if (beforePrepareFile) shouldPrepareOutput = beforePrepareFile(item, shouldPrepareOutput);\n var loadComplete = function loadComplete() {\n dispatch('COMPLETE_LOAD_ITEM', {\n query: id,\n item: item,\n data: {\n source: source,\n success: success\n }\n });\n listUpdated(dispatch, state);\n };\n\n // exit\n if (shouldPrepareOutput) {\n // wait for idle state and then run PREPARE_OUTPUT\n dispatch('REQUEST_PREPARE_OUTPUT', {\n query: id,\n item: item,\n success: function success(file) {\n dispatch('DID_PREPARE_OUTPUT', {\n id: id,\n file: file\n });\n loadComplete();\n }\n }, true);\n return;\n }\n loadComplete();\n });\n };\n\n // item loaded, allow plugins to\n // - read data (quickly)\n // - add metadata\n applyFilterChain('DID_LOAD_ITEM', item, {\n query: query,\n dispatch: dispatch\n }).then(function () {\n optionalPromise(query('GET_BEFORE_ADD_FILE'), createItemAPI(item)).then(handleAdd);\n }).catch(function (e) {\n if (!e || !e.error || !e.status) return handleAdd(false);\n dispatch('DID_THROW_ITEM_INVALID', {\n id: id,\n error: e.error,\n status: e.status\n });\n });\n });\n item.on('process-start', function () {\n dispatch('DID_START_ITEM_PROCESSING', {\n id: id\n });\n });\n item.on('process-progress', function (progress) {\n dispatch('DID_UPDATE_ITEM_PROCESS_PROGRESS', {\n id: id,\n progress: progress\n });\n });\n item.on('process-error', function (error) {\n dispatch('DID_THROW_ITEM_PROCESSING_ERROR', {\n id: id,\n error: error,\n status: {\n main: dynamicLabel(state.options.labelFileProcessingError)(error),\n sub: state.options.labelTapToRetry\n }\n });\n });\n item.on('process-revert-error', function (error) {\n dispatch('DID_THROW_ITEM_PROCESSING_REVERT_ERROR', {\n id: id,\n error: error,\n status: {\n main: dynamicLabel(state.options.labelFileProcessingRevertError)(error),\n sub: state.options.labelTapToRetry\n }\n });\n });\n item.on('process-complete', function (serverFileReference) {\n dispatch('DID_COMPLETE_ITEM_PROCESSING', {\n id: id,\n error: null,\n serverFileReference: serverFileReference\n });\n dispatch('DID_DEFINE_VALUE', {\n id: id,\n value: serverFileReference\n });\n });\n item.on('process-abort', function () {\n dispatch('DID_ABORT_ITEM_PROCESSING', {\n id: id\n });\n });\n item.on('process-revert', function () {\n dispatch('DID_REVERT_ITEM_PROCESSING', {\n id: id\n });\n dispatch('DID_DEFINE_VALUE', {\n id: id,\n value: null\n });\n });\n\n // let view know the item has been inserted\n dispatch('DID_ADD_ITEM', {\n id: id,\n index: index,\n interactionMethod: interactionMethod\n });\n listUpdated(dispatch, state);\n\n // start loading the source\n var _ref8 = state.options.server || {},\n url = _ref8.url,\n load = _ref8.load,\n restore = _ref8.restore,\n fetch = _ref8.fetch;\n item.load(source,\n // this creates a function that loads the file based on the type of file (string, base64, blob, file) and location of file (local, remote, limbo)\n createFileLoader(origin === FileOrigin.INPUT ?\n // input, if is remote, see if should use custom fetch, else use default fetchBlob\n isString(source) && isExternalURL(source) ? fetch ? createFetchFunction(url, fetch) : fetchBlob // remote url\n : fetchBlob // try to fetch url\n :\n // limbo or local\n origin === FileOrigin.LIMBO ? createFetchFunction(url, restore) // limbo\n : createFetchFunction(url, load) // local\n ),\n // called when the file is loaded so it can be piped through the filters\n function (file, success, error) {\n // let's process the file\n applyFilterChain('LOAD_FILE', file, {\n query: query\n }).then(success).catch(error);\n });\n },\n REQUEST_PREPARE_OUTPUT: function REQUEST_PREPARE_OUTPUT(_ref9) {\n var item = _ref9.item,\n success = _ref9.success,\n _ref9$failure = _ref9.failure,\n failure = _ref9$failure === void 0 ? function () {} : _ref9$failure;\n // error response if item archived\n var err = {\n error: createResponse('error', 0, 'Item not found'),\n file: null\n };\n\n // don't handle archived items, an item could have been archived (load aborted) while waiting to be prepared\n if (item.archived) return failure(err);\n\n // allow plugins to alter the file data\n applyFilterChain('PREPARE_OUTPUT', item.file, {\n query: query,\n item: item\n }).then(function (result) {\n applyFilterChain('COMPLETE_PREPARE_OUTPUT', result, {\n query: query,\n item: item\n }).then(function (result) {\n // don't handle archived items, an item could have been archived (load aborted) while being prepared\n if (item.archived) return failure(err);\n\n // we done!\n success(result);\n });\n });\n },\n COMPLETE_LOAD_ITEM: function COMPLETE_LOAD_ITEM(_ref10) {\n var item = _ref10.item,\n data = _ref10.data;\n var success = data.success,\n source = data.source;\n\n // sort items in list\n var itemInsertLocation = query('GET_ITEM_INSERT_LOCATION');\n if (isFunction(itemInsertLocation) && source) {\n sortItems(state, itemInsertLocation);\n }\n\n // let interface know the item has loaded\n dispatch('DID_LOAD_ITEM', {\n id: item.id,\n error: null,\n serverFileReference: item.origin === FileOrigin.INPUT ? null : source\n });\n\n // item has been successfully loaded and added to the\n // list of items so can now be safely returned for use\n success(createItemAPI(item));\n\n // if this is a local server file we need to show a different state\n if (item.origin === FileOrigin.LOCAL) {\n dispatch('DID_LOAD_LOCAL_ITEM', {\n id: item.id\n });\n return;\n }\n\n // if is a temp server file we prevent async upload call here (as the file is already on the server)\n if (item.origin === FileOrigin.LIMBO) {\n dispatch('DID_COMPLETE_ITEM_PROCESSING', {\n id: item.id,\n error: null,\n serverFileReference: source\n });\n dispatch('DID_DEFINE_VALUE', {\n id: item.id,\n value: item.serverId || source\n });\n return;\n }\n\n // id we are allowed to upload the file immediately, lets do it\n if (query('IS_ASYNC') && state.options.instantUpload) {\n dispatch('REQUEST_ITEM_PROCESSING', {\n query: item.id\n });\n }\n },\n RETRY_ITEM_LOAD: getItemByQueryFromState(state, function (item) {\n // try loading the source one more time\n item.retryLoad();\n }),\n REQUEST_ITEM_PREPARE: getItemByQueryFromState(state, function (item, _success, failure) {\n dispatch('REQUEST_PREPARE_OUTPUT', {\n query: item.id,\n item: item,\n success: function success(file) {\n dispatch('DID_PREPARE_OUTPUT', {\n id: item.id,\n file: file\n });\n _success({\n file: item,\n output: file\n });\n },\n failure: failure\n }, true);\n }),\n REQUEST_ITEM_PROCESSING: getItemByQueryFromState(state, function (item, success, failure) {\n // cannot be queued (or is already queued)\n var itemCanBeQueuedForProcessing =\n // waiting for something\n item.status === ItemStatus.IDLE ||\n // processing went wrong earlier\n item.status === ItemStatus.PROCESSING_ERROR;\n\n // not ready to be processed\n if (!itemCanBeQueuedForProcessing) {\n var processNow = function processNow() {\n return dispatch('REQUEST_ITEM_PROCESSING', {\n query: item,\n success: success,\n failure: failure\n });\n };\n var process = function process() {\n return document.hidden ? processNow() : setTimeout(processNow, 32);\n };\n\n // if already done processing or tried to revert but didn't work, try again\n if (item.status === ItemStatus.PROCESSING_COMPLETE || item.status === ItemStatus.PROCESSING_REVERT_ERROR) {\n item.revert(createRevertFunction(state.options.server.url, state.options.server.revert), query('GET_FORCE_REVERT')).then(process).catch(function () {}); // don't continue with processing if something went wrong\n } else if (item.status === ItemStatus.PROCESSING) {\n item.abortProcessing().then(process);\n }\n return;\n }\n\n // already queued for processing\n if (item.status === ItemStatus.PROCESSING_QUEUED) return;\n item.requestProcessing();\n dispatch('DID_REQUEST_ITEM_PROCESSING', {\n id: item.id\n });\n dispatch('PROCESS_ITEM', {\n query: item,\n success: success,\n failure: failure\n }, true);\n }),\n PROCESS_ITEM: getItemByQueryFromState(state, function (item, success, failure) {\n var maxParallelUploads = query('GET_MAX_PARALLEL_UPLOADS');\n var totalCurrentUploads = query('GET_ITEMS_BY_STATUS', ItemStatus.PROCESSING).length;\n\n // queue and wait till queue is freed up\n if (totalCurrentUploads === maxParallelUploads) {\n // queue for later processing\n state.processingQueue.push({\n id: item.id,\n success: success,\n failure: failure\n });\n\n // stop it!\n return;\n }\n\n // if was not queued or is already processing exit here\n if (item.status === ItemStatus.PROCESSING) return;\n var processNext = function processNext() {\n // process queueud items\n var queueEntry = state.processingQueue.shift();\n\n // no items left\n if (!queueEntry) return;\n\n // get item reference\n var id = queueEntry.id,\n success = queueEntry.success,\n failure = queueEntry.failure;\n var itemReference = getItemByQuery(state.items, id);\n\n // if item was archived while in queue, jump to next\n if (!itemReference || itemReference.archived) {\n processNext();\n return;\n }\n\n // process queued item\n dispatch('PROCESS_ITEM', {\n query: id,\n success: success,\n failure: failure\n }, true);\n };\n\n // we done function\n item.onOnce('process-complete', function () {\n success(createItemAPI(item));\n processNext();\n\n // if origin is local, and we're instant uploading, trigger remove of original\n // as revert will remove file from list\n var server = state.options.server;\n var instantUpload = state.options.instantUpload;\n if (instantUpload && item.origin === FileOrigin.LOCAL && isFunction(server.remove)) {\n var noop = function noop() {};\n item.origin = FileOrigin.LIMBO;\n state.options.server.remove(item.source, noop, noop);\n }\n\n // All items processed? No errors?\n var allItemsProcessed = query('GET_ITEMS_BY_STATUS', ItemStatus.PROCESSING_COMPLETE).length === state.items.length;\n if (allItemsProcessed) {\n dispatch('DID_COMPLETE_ITEM_PROCESSING_ALL');\n }\n });\n\n // we error function\n item.onOnce('process-error', function (error) {\n failure({\n error: error,\n file: createItemAPI(item)\n });\n processNext();\n });\n\n // start file processing\n var options = state.options;\n item.process(createFileProcessor(createProcessorFunction(options.server.url, options.server.process, options.name, {\n chunkTransferId: item.transferId,\n chunkServer: options.server.patch,\n chunkUploads: options.chunkUploads,\n chunkForce: options.chunkForce,\n chunkSize: options.chunkSize,\n chunkRetryDelays: options.chunkRetryDelays\n }), {\n allowMinimumUploadDuration: query('GET_ALLOW_MINIMUM_UPLOAD_DURATION')\n }),\n // called when the file is about to be processed so it can be piped through the transform filters\n function (file, success, error) {\n // allow plugins to alter the file data\n applyFilterChain('PREPARE_OUTPUT', file, {\n query: query,\n item: item\n }).then(function (file) {\n dispatch('DID_PREPARE_OUTPUT', {\n id: item.id,\n file: file\n });\n success(file);\n }).catch(error);\n });\n }),\n RETRY_ITEM_PROCESSING: getItemByQueryFromState(state, function (item) {\n dispatch('REQUEST_ITEM_PROCESSING', {\n query: item\n });\n }),\n REQUEST_REMOVE_ITEM: getItemByQueryFromState(state, function (item) {\n optionalPromise(query('GET_BEFORE_REMOVE_FILE'), createItemAPI(item)).then(function (shouldRemove) {\n if (!shouldRemove) {\n return;\n }\n dispatch('REMOVE_ITEM', {\n query: item\n });\n });\n }),\n RELEASE_ITEM: getItemByQueryFromState(state, function (item) {\n item.release();\n }),\n REMOVE_ITEM: getItemByQueryFromState(state, function (item, success, failure, options) {\n var removeFromView = function removeFromView() {\n // get id reference\n var id = item.id;\n\n // archive the item, this does not remove it from the list\n getItemById(state.items, id).archive();\n\n // tell the view the item has been removed\n dispatch('DID_REMOVE_ITEM', {\n error: null,\n id: id,\n item: item\n });\n\n // now the list has been modified\n listUpdated(dispatch, state);\n\n // correctly removed\n success(createItemAPI(item));\n };\n\n // if this is a local file and the `server.remove` function has been configured,\n // send source there so dev can remove file from server\n var server = state.options.server;\n if (item.origin === FileOrigin.LOCAL && server && isFunction(server.remove) && options.remove !== false) {\n dispatch('DID_START_ITEM_REMOVE', {\n id: item.id\n });\n server.remove(item.source, function () {\n return removeFromView();\n }, function (status) {\n dispatch('DID_THROW_ITEM_REMOVE_ERROR', {\n id: item.id,\n error: createResponse('error', 0, status, null),\n status: {\n main: dynamicLabel(state.options.labelFileRemoveError)(status),\n sub: state.options.labelTapToRetry\n }\n });\n });\n } else {\n // if is requesting revert and can revert need to call revert handler (not calling request_ because that would also trigger beforeRemoveHook)\n if (options.revert && item.origin !== FileOrigin.LOCAL && item.serverId !== null ||\n // if chunked uploads are enabled and we're uploading in chunks for this specific file\n // or if the file isn't big enough for chunked uploads but chunkForce is set then call\n // revert before removing from the view...\n state.options.chunkUploads && item.file.size > state.options.chunkSize || state.options.chunkUploads && state.options.chunkForce) {\n item.revert(createRevertFunction(state.options.server.url, state.options.server.revert), query('GET_FORCE_REVERT'));\n }\n\n // can now safely remove from view\n removeFromView();\n }\n }),\n ABORT_ITEM_LOAD: getItemByQueryFromState(state, function (item) {\n item.abortLoad();\n }),\n ABORT_ITEM_PROCESSING: getItemByQueryFromState(state, function (item) {\n // test if is already processed\n if (item.serverId) {\n dispatch('REVERT_ITEM_PROCESSING', {\n id: item.id\n });\n return;\n }\n\n // abort\n item.abortProcessing().then(function () {\n var shouldRemove = state.options.instantUpload;\n if (shouldRemove) {\n dispatch('REMOVE_ITEM', {\n query: item.id\n });\n }\n });\n }),\n REQUEST_REVERT_ITEM_PROCESSING: getItemByQueryFromState(state, function (item) {\n // not instant uploading, revert immediately\n if (!state.options.instantUpload) {\n dispatch('REVERT_ITEM_PROCESSING', {\n query: item\n });\n return;\n }\n\n // if we're instant uploading the file will also be removed if we revert,\n // so if a before remove file hook is defined we need to run it now\n var handleRevert = function handleRevert(shouldRevert) {\n if (!shouldRevert) return;\n dispatch('REVERT_ITEM_PROCESSING', {\n query: item\n });\n };\n var fn = query('GET_BEFORE_REMOVE_FILE');\n if (!fn) {\n return handleRevert(true);\n }\n var requestRemoveResult = fn(createItemAPI(item));\n if (requestRemoveResult == null) {\n // undefined or null\n return handleRevert(true);\n }\n if (typeof requestRemoveResult === 'boolean') {\n return handleRevert(requestRemoveResult);\n }\n if (typeof requestRemoveResult.then === 'function') {\n requestRemoveResult.then(handleRevert);\n }\n }),\n REVERT_ITEM_PROCESSING: getItemByQueryFromState(state, function (item) {\n item.revert(createRevertFunction(state.options.server.url, state.options.server.revert), query('GET_FORCE_REVERT')).then(function () {\n var shouldRemove = state.options.instantUpload || isMockItem(item);\n if (shouldRemove) {\n dispatch('REMOVE_ITEM', {\n query: item.id\n });\n }\n }).catch(function () {});\n }),\n SET_OPTIONS: function SET_OPTIONS(_ref11) {\n var options = _ref11.options;\n // get all keys passed\n var optionKeys = Object.keys(options);\n\n // get prioritized keyed to include (remove once not in options object)\n var prioritizedOptionKeys = PrioritizedOptions.filter(function (key) {\n return optionKeys.includes(key);\n });\n\n // order the keys, prioritized first, then rest\n var orderedOptionKeys = [].concat(_toConsumableArray(prioritizedOptionKeys), _toConsumableArray(Object.keys(options).filter(function (key) {\n return !prioritizedOptionKeys.includes(key);\n })));\n\n // dispatch set event for each option\n orderedOptionKeys.forEach(function (key) {\n dispatch('SET_' + fromCamels(key, '_').toUpperCase(), {\n value: options[key]\n });\n });\n }\n };\n };\n var PrioritizedOptions = ['server'];\n var formatFilename = function formatFilename(name) {\n return name;\n };\n var createElement$1 = function createElement(tagName) {\n return document.createElement(tagName);\n };\n var text = function text(node, value) {\n var textNode = node.childNodes[0];\n if (!textNode) {\n textNode = document.createTextNode(value);\n node.appendChild(textNode);\n } else if (value !== textNode.nodeValue) {\n textNode.nodeValue = value;\n }\n };\n var polarToCartesian = function polarToCartesian(centerX, centerY, radius, angleInDegrees) {\n var angleInRadians = (angleInDegrees % 360 - 90) * Math.PI / 180.0;\n return {\n x: centerX + radius * Math.cos(angleInRadians),\n y: centerY + radius * Math.sin(angleInRadians)\n };\n };\n var describeArc = function describeArc(x, y, radius, startAngle, endAngle, arcSweep) {\n var start = polarToCartesian(x, y, radius, endAngle);\n var end = polarToCartesian(x, y, radius, startAngle);\n return ['M', start.x, start.y, 'A', radius, radius, 0, arcSweep, 0, end.x, end.y].join(' ');\n };\n var percentageArc = function percentageArc(x, y, radius, from, to) {\n var arcSweep = 1;\n if (to > from && to - from <= 0.5) {\n arcSweep = 0;\n }\n if (from > to && from - to >= 0.5) {\n arcSweep = 0;\n }\n return describeArc(x, y, radius, Math.min(0.9999, from) * 360, Math.min(0.9999, to) * 360, arcSweep);\n };\n var create = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n // start at 0\n props.spin = false;\n props.progress = 0;\n props.opacity = 0;\n\n // svg\n var svg = createElement('svg');\n root.ref.path = createElement('path', {\n 'stroke-width': 2,\n 'stroke-linecap': 'round'\n });\n svg.appendChild(root.ref.path);\n root.ref.svg = svg;\n root.appendChild(svg);\n };\n var write = function write(_ref2) {\n var root = _ref2.root,\n props = _ref2.props;\n if (props.opacity === 0) {\n return;\n }\n if (props.align) {\n root.element.dataset.align = props.align;\n }\n\n // get width of stroke\n var ringStrokeWidth = parseInt(attr(root.ref.path, 'stroke-width'), 10);\n\n // calculate size of ring\n var size = root.rect.element.width * 0.5;\n\n // ring state\n var ringFrom = 0;\n var ringTo = 0;\n\n // now in busy mode\n if (props.spin) {\n ringFrom = 0;\n ringTo = 0.5;\n } else {\n ringFrom = 0;\n ringTo = props.progress;\n }\n\n // get arc path\n var coordinates = percentageArc(size, size, size - ringStrokeWidth, ringFrom, ringTo);\n\n // update progress bar\n attr(root.ref.path, 'd', coordinates);\n\n // hide while contains 0 value\n attr(root.ref.path, 'stroke-opacity', props.spin || props.progress > 0 ? 1 : 0);\n };\n var progressIndicator = createView({\n tag: 'div',\n name: 'progress-indicator',\n ignoreRectUpdate: true,\n ignoreRect: true,\n create: create,\n write: write,\n mixins: {\n apis: ['progress', 'spin', 'align'],\n styles: ['opacity'],\n animations: {\n opacity: {\n type: 'tween',\n duration: 500\n },\n progress: {\n type: 'spring',\n stiffness: 0.95,\n damping: 0.65,\n mass: 10\n }\n }\n }\n });\n var create$1 = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n root.element.innerHTML = (props.icon || '') + ('<span>' + props.label + '</span>');\n props.isDisabled = false;\n };\n var write$1 = function write(_ref2) {\n var root = _ref2.root,\n props = _ref2.props;\n var isDisabled = props.isDisabled;\n var shouldDisable = root.query('GET_DISABLED') || props.opacity === 0;\n if (shouldDisable && !isDisabled) {\n props.isDisabled = true;\n attr(root.element, 'disabled', 'disabled');\n } else if (!shouldDisable && isDisabled) {\n props.isDisabled = false;\n root.element.removeAttribute('disabled');\n }\n };\n var fileActionButton = createView({\n tag: 'button',\n attributes: {\n type: 'button'\n },\n ignoreRect: true,\n ignoreRectUpdate: true,\n name: 'file-action-button',\n mixins: {\n apis: ['label'],\n styles: ['translateX', 'translateY', 'scaleX', 'scaleY', 'opacity'],\n animations: {\n scaleX: 'spring',\n scaleY: 'spring',\n translateX: 'spring',\n translateY: 'spring',\n opacity: {\n type: 'tween',\n duration: 250\n }\n },\n listeners: true\n },\n create: create$1,\n write: write$1\n });\n var toNaturalFileSize = function toNaturalFileSize(bytes) {\n var decimalSeparator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '.';\n var base = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1000;\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var _options$labelBytes = options.labelBytes,\n labelBytes = _options$labelBytes === void 0 ? 'bytes' : _options$labelBytes,\n _options$labelKilobyt = options.labelKilobytes,\n labelKilobytes = _options$labelKilobyt === void 0 ? 'KB' : _options$labelKilobyt,\n _options$labelMegabyt = options.labelMegabytes,\n labelMegabytes = _options$labelMegabyt === void 0 ? 'MB' : _options$labelMegabyt,\n _options$labelGigabyt = options.labelGigabytes,\n labelGigabytes = _options$labelGigabyt === void 0 ? 'GB' : _options$labelGigabyt;\n\n // no negative byte sizes\n bytes = Math.round(Math.abs(bytes));\n var KB = base;\n var MB = base * base;\n var GB = base * base * base;\n\n // just bytes\n if (bytes < KB) {\n return bytes + ' ' + labelBytes;\n }\n\n // kilobytes\n if (bytes < MB) {\n return Math.floor(bytes / KB) + ' ' + labelKilobytes;\n }\n\n // megabytes\n if (bytes < GB) {\n return removeDecimalsWhenZero(bytes / MB, 1, decimalSeparator) + ' ' + labelMegabytes;\n }\n\n // gigabytes\n return removeDecimalsWhenZero(bytes / GB, 2, decimalSeparator) + ' ' + labelGigabytes;\n };\n var removeDecimalsWhenZero = function removeDecimalsWhenZero(value, decimalCount, separator) {\n return value.toFixed(decimalCount).split('.').filter(function (part) {\n return part !== '0';\n }).join(separator);\n };\n var create$2 = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n // filename\n var fileName = createElement$1('span');\n fileName.className = 'filepond--file-info-main';\n // hide for screenreaders\n // the file is contained in a fieldset with legend that contains the filename\n // no need to read it twice\n attr(fileName, 'aria-hidden', 'true');\n root.appendChild(fileName);\n root.ref.fileName = fileName;\n\n // filesize\n var fileSize = createElement$1('span');\n fileSize.className = 'filepond--file-info-sub';\n root.appendChild(fileSize);\n root.ref.fileSize = fileSize;\n\n // set initial values\n text(fileSize, root.query('GET_LABEL_FILE_WAITING_FOR_SIZE'));\n text(fileName, formatFilename(root.query('GET_ITEM_NAME', props.id)));\n };\n var updateFile = function updateFile(_ref2) {\n var root = _ref2.root,\n props = _ref2.props;\n text(root.ref.fileSize, toNaturalFileSize(root.query('GET_ITEM_SIZE', props.id), '.', root.query('GET_FILE_SIZE_BASE'), root.query('GET_FILE_SIZE_LABELS', root.query)));\n text(root.ref.fileName, formatFilename(root.query('GET_ITEM_NAME', props.id)));\n };\n var updateFileSizeOnError = function updateFileSizeOnError(_ref3) {\n var root = _ref3.root,\n props = _ref3.props;\n // if size is available don't fallback to unknown size message\n if (isInt(root.query('GET_ITEM_SIZE', props.id))) {\n updateFile({\n root: root,\n props: props\n });\n return;\n }\n text(root.ref.fileSize, root.query('GET_LABEL_FILE_SIZE_NOT_AVAILABLE'));\n };\n var fileInfo = createView({\n name: 'file-info',\n ignoreRect: true,\n ignoreRectUpdate: true,\n write: createRoute({\n DID_LOAD_ITEM: updateFile,\n DID_UPDATE_ITEM_META: updateFile,\n DID_THROW_ITEM_LOAD_ERROR: updateFileSizeOnError,\n DID_THROW_ITEM_INVALID: updateFileSizeOnError\n }),\n didCreateView: function didCreateView(root) {\n applyFilters('CREATE_VIEW', Object.assign({}, root, {\n view: root\n }));\n },\n create: create$2,\n mixins: {\n styles: ['translateX', 'translateY'],\n animations: {\n translateX: 'spring',\n translateY: 'spring'\n }\n }\n });\n var toPercentage = function toPercentage(value) {\n return Math.round(value * 100);\n };\n var create$3 = function create(_ref) {\n var root = _ref.root;\n\n // main status\n var main = createElement$1('span');\n main.className = 'filepond--file-status-main';\n root.appendChild(main);\n root.ref.main = main;\n\n // sub status\n var sub = createElement$1('span');\n sub.className = 'filepond--file-status-sub';\n root.appendChild(sub);\n root.ref.sub = sub;\n didSetItemLoadProgress({\n root: root,\n action: {\n progress: null\n }\n });\n };\n var didSetItemLoadProgress = function didSetItemLoadProgress(_ref2) {\n var root = _ref2.root,\n action = _ref2.action;\n var title = action.progress === null ? root.query('GET_LABEL_FILE_LOADING') : root.query('GET_LABEL_FILE_LOADING') + ' ' + toPercentage(action.progress) + '%';\n text(root.ref.main, title);\n text(root.ref.sub, root.query('GET_LABEL_TAP_TO_CANCEL'));\n };\n var didSetItemProcessProgress = function didSetItemProcessProgress(_ref3) {\n var root = _ref3.root,\n action = _ref3.action;\n var title = action.progress === null ? root.query('GET_LABEL_FILE_PROCESSING') : root.query('GET_LABEL_FILE_PROCESSING') + ' ' + toPercentage(action.progress) + '%';\n text(root.ref.main, title);\n text(root.ref.sub, root.query('GET_LABEL_TAP_TO_CANCEL'));\n };\n var didRequestItemProcessing = function didRequestItemProcessing(_ref4) {\n var root = _ref4.root;\n text(root.ref.main, root.query('GET_LABEL_FILE_PROCESSING'));\n text(root.ref.sub, root.query('GET_LABEL_TAP_TO_CANCEL'));\n };\n var didAbortItemProcessing = function didAbortItemProcessing(_ref5) {\n var root = _ref5.root;\n text(root.ref.main, root.query('GET_LABEL_FILE_PROCESSING_ABORTED'));\n text(root.ref.sub, root.query('GET_LABEL_TAP_TO_RETRY'));\n };\n var didCompleteItemProcessing = function didCompleteItemProcessing(_ref6) {\n var root = _ref6.root;\n text(root.ref.main, root.query('GET_LABEL_FILE_PROCESSING_COMPLETE'));\n text(root.ref.sub, root.query('GET_LABEL_TAP_TO_UNDO'));\n };\n var clear = function clear(_ref7) {\n var root = _ref7.root;\n text(root.ref.main, '');\n text(root.ref.sub, '');\n };\n var error = function error(_ref8) {\n var root = _ref8.root,\n action = _ref8.action;\n text(root.ref.main, action.status.main);\n text(root.ref.sub, action.status.sub);\n };\n var fileStatus = createView({\n name: 'file-status',\n ignoreRect: true,\n ignoreRectUpdate: true,\n write: createRoute({\n DID_LOAD_ITEM: clear,\n DID_REVERT_ITEM_PROCESSING: clear,\n DID_REQUEST_ITEM_PROCESSING: didRequestItemProcessing,\n DID_ABORT_ITEM_PROCESSING: didAbortItemProcessing,\n DID_COMPLETE_ITEM_PROCESSING: didCompleteItemProcessing,\n DID_UPDATE_ITEM_PROCESS_PROGRESS: didSetItemProcessProgress,\n DID_UPDATE_ITEM_LOAD_PROGRESS: didSetItemLoadProgress,\n DID_THROW_ITEM_LOAD_ERROR: error,\n DID_THROW_ITEM_INVALID: error,\n DID_THROW_ITEM_PROCESSING_ERROR: error,\n DID_THROW_ITEM_PROCESSING_REVERT_ERROR: error,\n DID_THROW_ITEM_REMOVE_ERROR: error\n }),\n didCreateView: function didCreateView(root) {\n applyFilters('CREATE_VIEW', Object.assign({}, root, {\n view: root\n }));\n },\n create: create$3,\n mixins: {\n styles: ['translateX', 'translateY', 'opacity'],\n animations: {\n opacity: {\n type: 'tween',\n duration: 250\n },\n translateX: 'spring',\n translateY: 'spring'\n }\n }\n });\n\n /**\n * Button definitions for the file view\n */\n\n var Buttons = {\n AbortItemLoad: {\n label: 'GET_LABEL_BUTTON_ABORT_ITEM_LOAD',\n action: 'ABORT_ITEM_LOAD',\n className: 'filepond--action-abort-item-load',\n align: 'LOAD_INDICATOR_POSITION' // right\n },\n\n RetryItemLoad: {\n label: 'GET_LABEL_BUTTON_RETRY_ITEM_LOAD',\n action: 'RETRY_ITEM_LOAD',\n icon: 'GET_ICON_RETRY',\n className: 'filepond--action-retry-item-load',\n align: 'BUTTON_PROCESS_ITEM_POSITION' // right\n },\n\n RemoveItem: {\n label: 'GET_LABEL_BUTTON_REMOVE_ITEM',\n action: 'REQUEST_REMOVE_ITEM',\n icon: 'GET_ICON_REMOVE',\n className: 'filepond--action-remove-item',\n align: 'BUTTON_REMOVE_ITEM_POSITION' // left\n },\n\n ProcessItem: {\n label: 'GET_LABEL_BUTTON_PROCESS_ITEM',\n action: 'REQUEST_ITEM_PROCESSING',\n icon: 'GET_ICON_PROCESS',\n className: 'filepond--action-process-item',\n align: 'BUTTON_PROCESS_ITEM_POSITION' // right\n },\n\n AbortItemProcessing: {\n label: 'GET_LABEL_BUTTON_ABORT_ITEM_PROCESSING',\n action: 'ABORT_ITEM_PROCESSING',\n className: 'filepond--action-abort-item-processing',\n align: 'BUTTON_PROCESS_ITEM_POSITION' // right\n },\n\n RetryItemProcessing: {\n label: 'GET_LABEL_BUTTON_RETRY_ITEM_PROCESSING',\n action: 'RETRY_ITEM_PROCESSING',\n icon: 'GET_ICON_RETRY',\n className: 'filepond--action-retry-item-processing',\n align: 'BUTTON_PROCESS_ITEM_POSITION' // right\n },\n\n RevertItemProcessing: {\n label: 'GET_LABEL_BUTTON_UNDO_ITEM_PROCESSING',\n action: 'REQUEST_REVERT_ITEM_PROCESSING',\n icon: 'GET_ICON_UNDO',\n className: 'filepond--action-revert-item-processing',\n align: 'BUTTON_PROCESS_ITEM_POSITION' // right\n }\n };\n\n // make a list of buttons, we can then remove buttons from this list if they're disabled\n var ButtonKeys = [];\n forin(Buttons, function (key) {\n ButtonKeys.push(key);\n });\n var calculateFileInfoOffset = function calculateFileInfoOffset(root) {\n if (getRemoveIndicatorAligment(root) === 'right') return 0;\n var buttonRect = root.ref.buttonRemoveItem.rect.element;\n return buttonRect.hidden ? null : buttonRect.width + buttonRect.left;\n };\n var calculateButtonWidth = function calculateButtonWidth(root) {\n var buttonRect = root.ref.buttonAbortItemLoad.rect.element;\n return buttonRect.width;\n };\n\n // Force on full pixels so text stays crips\n var calculateFileVerticalCenterOffset = function calculateFileVerticalCenterOffset(root) {\n return Math.floor(root.ref.buttonRemoveItem.rect.element.height / 4);\n };\n var calculateFileHorizontalCenterOffset = function calculateFileHorizontalCenterOffset(root) {\n return Math.floor(root.ref.buttonRemoveItem.rect.element.left / 2);\n };\n var getLoadIndicatorAlignment = function getLoadIndicatorAlignment(root) {\n return root.query('GET_STYLE_LOAD_INDICATOR_POSITION');\n };\n var getProcessIndicatorAlignment = function getProcessIndicatorAlignment(root) {\n return root.query('GET_STYLE_PROGRESS_INDICATOR_POSITION');\n };\n var getRemoveIndicatorAligment = function getRemoveIndicatorAligment(root) {\n return root.query('GET_STYLE_BUTTON_REMOVE_ITEM_POSITION');\n };\n var DefaultStyle = {\n buttonAbortItemLoad: {\n opacity: 0\n },\n buttonRetryItemLoad: {\n opacity: 0\n },\n buttonRemoveItem: {\n opacity: 0\n },\n buttonProcessItem: {\n opacity: 0\n },\n buttonAbortItemProcessing: {\n opacity: 0\n },\n buttonRetryItemProcessing: {\n opacity: 0\n },\n buttonRevertItemProcessing: {\n opacity: 0\n },\n loadProgressIndicator: {\n opacity: 0,\n align: getLoadIndicatorAlignment\n },\n processProgressIndicator: {\n opacity: 0,\n align: getProcessIndicatorAlignment\n },\n processingCompleteIndicator: {\n opacity: 0,\n scaleX: 0.75,\n scaleY: 0.75\n },\n info: {\n translateX: 0,\n translateY: 0,\n opacity: 0\n },\n status: {\n translateX: 0,\n translateY: 0,\n opacity: 0\n }\n };\n var IdleStyle = {\n buttonRemoveItem: {\n opacity: 1\n },\n buttonProcessItem: {\n opacity: 1\n },\n info: {\n translateX: calculateFileInfoOffset\n },\n status: {\n translateX: calculateFileInfoOffset\n }\n };\n var ProcessingStyle = {\n buttonAbortItemProcessing: {\n opacity: 1\n },\n processProgressIndicator: {\n opacity: 1\n },\n status: {\n opacity: 1\n }\n };\n var StyleMap = {\n DID_THROW_ITEM_INVALID: {\n buttonRemoveItem: {\n opacity: 1\n },\n info: {\n translateX: calculateFileInfoOffset\n },\n status: {\n translateX: calculateFileInfoOffset,\n opacity: 1\n }\n },\n DID_START_ITEM_LOAD: {\n buttonAbortItemLoad: {\n opacity: 1\n },\n loadProgressIndicator: {\n opacity: 1\n },\n status: {\n opacity: 1\n }\n },\n DID_THROW_ITEM_LOAD_ERROR: {\n buttonRetryItemLoad: {\n opacity: 1\n },\n buttonRemoveItem: {\n opacity: 1\n },\n info: {\n translateX: calculateFileInfoOffset\n },\n status: {\n opacity: 1\n }\n },\n DID_START_ITEM_REMOVE: {\n processProgressIndicator: {\n opacity: 1,\n align: getRemoveIndicatorAligment\n },\n info: {\n translateX: calculateFileInfoOffset\n },\n status: {\n opacity: 0\n }\n },\n DID_THROW_ITEM_REMOVE_ERROR: {\n processProgressIndicator: {\n opacity: 0,\n align: getRemoveIndicatorAligment\n },\n buttonRemoveItem: {\n opacity: 1\n },\n info: {\n translateX: calculateFileInfoOffset\n },\n status: {\n opacity: 1,\n translateX: calculateFileInfoOffset\n }\n },\n DID_LOAD_ITEM: IdleStyle,\n DID_LOAD_LOCAL_ITEM: {\n buttonRemoveItem: {\n opacity: 1\n },\n info: {\n translateX: calculateFileInfoOffset\n },\n status: {\n translateX: calculateFileInfoOffset\n }\n },\n DID_START_ITEM_PROCESSING: ProcessingStyle,\n DID_REQUEST_ITEM_PROCESSING: ProcessingStyle,\n DID_UPDATE_ITEM_PROCESS_PROGRESS: ProcessingStyle,\n DID_COMPLETE_ITEM_PROCESSING: {\n buttonRevertItemProcessing: {\n opacity: 1\n },\n info: {\n opacity: 1\n },\n status: {\n opacity: 1\n }\n },\n DID_THROW_ITEM_PROCESSING_ERROR: {\n buttonRemoveItem: {\n opacity: 1\n },\n buttonRetryItemProcessing: {\n opacity: 1\n },\n status: {\n opacity: 1\n },\n info: {\n translateX: calculateFileInfoOffset\n }\n },\n DID_THROW_ITEM_PROCESSING_REVERT_ERROR: {\n buttonRevertItemProcessing: {\n opacity: 1\n },\n status: {\n opacity: 1\n },\n info: {\n opacity: 1\n }\n },\n DID_ABORT_ITEM_PROCESSING: {\n buttonRemoveItem: {\n opacity: 1\n },\n buttonProcessItem: {\n opacity: 1\n },\n info: {\n translateX: calculateFileInfoOffset\n },\n status: {\n opacity: 1\n }\n },\n DID_REVERT_ITEM_PROCESSING: IdleStyle\n };\n\n // complete indicator view\n var processingCompleteIndicatorView = createView({\n create: function create(_ref) {\n var root = _ref.root;\n root.element.innerHTML = root.query('GET_ICON_DONE');\n },\n name: 'processing-complete-indicator',\n ignoreRect: true,\n mixins: {\n styles: ['scaleX', 'scaleY', 'opacity'],\n animations: {\n scaleX: 'spring',\n scaleY: 'spring',\n opacity: {\n type: 'tween',\n duration: 250\n }\n }\n }\n });\n\n /**\n * Creates the file view\n */\n var create$4 = function create(_ref2) {\n var root = _ref2.root,\n props = _ref2.props;\n // copy Buttons object\n var LocalButtons = Object.keys(Buttons).reduce(function (prev, curr) {\n prev[curr] = Object.assign({}, Buttons[curr]);\n return prev;\n }, {});\n var id = props.id;\n\n // allow reverting upload\n var allowRevert = root.query('GET_ALLOW_REVERT');\n\n // allow remove file\n var allowRemove = root.query('GET_ALLOW_REMOVE');\n\n // allow processing upload\n var allowProcess = root.query('GET_ALLOW_PROCESS');\n\n // is instant uploading, need this to determine the icon of the undo button\n var instantUpload = root.query('GET_INSTANT_UPLOAD');\n\n // is async set up\n var isAsync = root.query('IS_ASYNC');\n\n // should align remove item buttons\n var alignRemoveItemButton = root.query('GET_STYLE_BUTTON_REMOVE_ITEM_ALIGN');\n\n // enabled buttons array\n var buttonFilter;\n if (isAsync) {\n if (allowProcess && !allowRevert) {\n // only remove revert button\n buttonFilter = function buttonFilter(key) {\n return !/RevertItemProcessing/.test(key);\n };\n } else if (!allowProcess && allowRevert) {\n // only remove process button\n buttonFilter = function buttonFilter(key) {\n return !/ProcessItem|RetryItemProcessing|AbortItemProcessing/.test(key);\n };\n } else if (!allowProcess && !allowRevert) {\n // remove all process buttons\n buttonFilter = function buttonFilter(key) {\n return !/Process/.test(key);\n };\n }\n } else {\n // no process controls available\n buttonFilter = function buttonFilter(key) {\n return !/Process/.test(key);\n };\n }\n var enabledButtons = buttonFilter ? ButtonKeys.filter(buttonFilter) : ButtonKeys.concat();\n\n // update icon and label for revert button when instant uploading\n if (instantUpload && allowRevert) {\n LocalButtons['RevertItemProcessing'].label = 'GET_LABEL_BUTTON_REMOVE_ITEM';\n LocalButtons['RevertItemProcessing'].icon = 'GET_ICON_REMOVE';\n }\n\n // remove last button (revert) if not allowed\n if (isAsync && !allowRevert) {\n var map = StyleMap['DID_COMPLETE_ITEM_PROCESSING'];\n map.info.translateX = calculateFileHorizontalCenterOffset;\n map.info.translateY = calculateFileVerticalCenterOffset;\n map.status.translateY = calculateFileVerticalCenterOffset;\n map.processingCompleteIndicator = {\n opacity: 1,\n scaleX: 1,\n scaleY: 1\n };\n }\n\n // should align center\n if (isAsync && !allowProcess) {\n ['DID_START_ITEM_PROCESSING', 'DID_REQUEST_ITEM_PROCESSING', 'DID_UPDATE_ITEM_PROCESS_PROGRESS', 'DID_THROW_ITEM_PROCESSING_ERROR'].forEach(function (key) {\n StyleMap[key].status.translateY = calculateFileVerticalCenterOffset;\n });\n StyleMap['DID_THROW_ITEM_PROCESSING_ERROR'].status.translateX = calculateButtonWidth;\n }\n\n // move remove button to right\n if (alignRemoveItemButton && allowRevert) {\n LocalButtons['RevertItemProcessing'].align = 'BUTTON_REMOVE_ITEM_POSITION';\n var _map = StyleMap['DID_COMPLETE_ITEM_PROCESSING'];\n _map.info.translateX = calculateFileInfoOffset;\n _map.status.translateY = calculateFileVerticalCenterOffset;\n _map.processingCompleteIndicator = {\n opacity: 1,\n scaleX: 1,\n scaleY: 1\n };\n }\n\n // show/hide RemoveItem button\n if (!allowRemove) {\n LocalButtons['RemoveItem'].disabled = true;\n }\n\n // create the button views\n forin(LocalButtons, function (key, definition) {\n // create button\n var buttonView = root.createChildView(fileActionButton, {\n label: root.query(definition.label),\n icon: root.query(definition.icon),\n opacity: 0\n });\n\n // should be appended?\n if (enabledButtons.includes(key)) {\n root.appendChildView(buttonView);\n }\n\n // toggle\n if (definition.disabled) {\n buttonView.element.setAttribute('disabled', 'disabled');\n buttonView.element.setAttribute('hidden', 'hidden');\n }\n\n // add position attribute\n buttonView.element.dataset.align = root.query('GET_STYLE_' + definition.align);\n\n // add class\n buttonView.element.classList.add(definition.className);\n\n // handle interactions\n buttonView.on('click', function (e) {\n e.stopPropagation();\n if (definition.disabled) return;\n root.dispatch(definition.action, {\n query: id\n });\n });\n\n // set reference\n root.ref['button' + key] = buttonView;\n });\n\n // checkmark\n root.ref.processingCompleteIndicator = root.appendChildView(root.createChildView(processingCompleteIndicatorView));\n root.ref.processingCompleteIndicator.element.dataset.align = root.query('GET_STYLE_BUTTON_PROCESS_ITEM_POSITION');\n\n // create file info view\n root.ref.info = root.appendChildView(root.createChildView(fileInfo, {\n id: id\n }));\n\n // create file status view\n root.ref.status = root.appendChildView(root.createChildView(fileStatus, {\n id: id\n }));\n\n // add progress indicators\n var loadIndicatorView = root.appendChildView(root.createChildView(progressIndicator, {\n opacity: 0,\n align: root.query('GET_STYLE_LOAD_INDICATOR_POSITION')\n }));\n loadIndicatorView.element.classList.add('filepond--load-indicator');\n root.ref.loadProgressIndicator = loadIndicatorView;\n var progressIndicatorView = root.appendChildView(root.createChildView(progressIndicator, {\n opacity: 0,\n align: root.query('GET_STYLE_PROGRESS_INDICATOR_POSITION')\n }));\n progressIndicatorView.element.classList.add('filepond--process-indicator');\n root.ref.processProgressIndicator = progressIndicatorView;\n\n // current active styles\n root.ref.activeStyles = [];\n };\n var write$2 = function write(_ref3) {\n var root = _ref3.root,\n actions = _ref3.actions,\n props = _ref3.props;\n // route actions\n route({\n root: root,\n actions: actions,\n props: props\n });\n\n // select last state change action\n var action = actions.concat().filter(function (action) {\n return /^DID_/.test(action.type);\n }).reverse().find(function (action) {\n return StyleMap[action.type];\n });\n\n // a new action happened, let's get the matching styles\n if (action) {\n // define new active styles\n root.ref.activeStyles = [];\n var stylesToApply = StyleMap[action.type];\n forin(DefaultStyle, function (name, defaultStyles) {\n // get reference to control\n var control = root.ref[name];\n\n // loop over all styles for this control\n forin(defaultStyles, function (key, defaultValue) {\n var value = stylesToApply[name] && typeof stylesToApply[name][key] !== 'undefined' ? stylesToApply[name][key] : defaultValue;\n root.ref.activeStyles.push({\n control: control,\n key: key,\n value: value\n });\n });\n });\n }\n\n // apply active styles to element\n root.ref.activeStyles.forEach(function (_ref4) {\n var control = _ref4.control,\n key = _ref4.key,\n value = _ref4.value;\n control[key] = typeof value === 'function' ? value(root) : value;\n });\n };\n var route = createRoute({\n DID_SET_LABEL_BUTTON_ABORT_ITEM_PROCESSING: function DID_SET_LABEL_BUTTON_ABORT_ITEM_PROCESSING(_ref5) {\n var root = _ref5.root,\n action = _ref5.action;\n root.ref.buttonAbortItemProcessing.label = action.value;\n },\n DID_SET_LABEL_BUTTON_ABORT_ITEM_LOAD: function DID_SET_LABEL_BUTTON_ABORT_ITEM_LOAD(_ref6) {\n var root = _ref6.root,\n action = _ref6.action;\n root.ref.buttonAbortItemLoad.label = action.value;\n },\n DID_SET_LABEL_BUTTON_ABORT_ITEM_REMOVAL: function DID_SET_LABEL_BUTTON_ABORT_ITEM_REMOVAL(_ref7) {\n var root = _ref7.root,\n action = _ref7.action;\n root.ref.buttonAbortItemRemoval.label = action.value;\n },\n DID_REQUEST_ITEM_PROCESSING: function DID_REQUEST_ITEM_PROCESSING(_ref8) {\n var root = _ref8.root;\n root.ref.processProgressIndicator.spin = true;\n root.ref.processProgressIndicator.progress = 0;\n },\n DID_START_ITEM_LOAD: function DID_START_ITEM_LOAD(_ref9) {\n var root = _ref9.root;\n root.ref.loadProgressIndicator.spin = true;\n root.ref.loadProgressIndicator.progress = 0;\n },\n DID_START_ITEM_REMOVE: function DID_START_ITEM_REMOVE(_ref10) {\n var root = _ref10.root;\n root.ref.processProgressIndicator.spin = true;\n root.ref.processProgressIndicator.progress = 0;\n },\n DID_UPDATE_ITEM_LOAD_PROGRESS: function DID_UPDATE_ITEM_LOAD_PROGRESS(_ref11) {\n var root = _ref11.root,\n action = _ref11.action;\n root.ref.loadProgressIndicator.spin = false;\n root.ref.loadProgressIndicator.progress = action.progress;\n },\n DID_UPDATE_ITEM_PROCESS_PROGRESS: function DID_UPDATE_ITEM_PROCESS_PROGRESS(_ref12) {\n var root = _ref12.root,\n action = _ref12.action;\n root.ref.processProgressIndicator.spin = false;\n root.ref.processProgressIndicator.progress = action.progress;\n }\n });\n var file = createView({\n create: create$4,\n write: write$2,\n didCreateView: function didCreateView(root) {\n applyFilters('CREATE_VIEW', Object.assign({}, root, {\n view: root\n }));\n },\n name: 'file'\n });\n\n /**\n * Creates the file view\n */\n var create$5 = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n\n // filename\n root.ref.fileName = createElement$1('legend');\n root.appendChild(root.ref.fileName);\n\n // file appended\n root.ref.file = root.appendChildView(root.createChildView(file, {\n id: props.id\n }));\n\n // data has moved to data.js\n root.ref.data = false;\n };\n\n /**\n * Data storage\n */\n var didLoadItem = function didLoadItem(_ref2) {\n var root = _ref2.root,\n props = _ref2.props;\n // updates the legend of the fieldset so screenreaders can better group buttons\n text(root.ref.fileName, formatFilename(root.query('GET_ITEM_NAME', props.id)));\n };\n var fileWrapper = createView({\n create: create$5,\n ignoreRect: true,\n write: createRoute({\n DID_LOAD_ITEM: didLoadItem\n }),\n didCreateView: function didCreateView(root) {\n applyFilters('CREATE_VIEW', Object.assign({}, root, {\n view: root\n }));\n },\n tag: 'fieldset',\n name: 'file-wrapper'\n });\n var PANEL_SPRING_PROPS = {\n type: 'spring',\n damping: 0.6,\n mass: 7\n };\n var create$6 = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n [{\n name: 'top'\n }, {\n name: 'center',\n props: {\n translateY: null,\n scaleY: null\n },\n mixins: {\n animations: {\n scaleY: PANEL_SPRING_PROPS\n },\n styles: ['translateY', 'scaleY']\n }\n }, {\n name: 'bottom',\n props: {\n translateY: null\n },\n mixins: {\n animations: {\n translateY: PANEL_SPRING_PROPS\n },\n styles: ['translateY']\n }\n }].forEach(function (section) {\n createSection(root, section, props.name);\n });\n root.element.classList.add('filepond--' + props.name);\n root.ref.scalable = null;\n };\n var createSection = function createSection(root, section, className) {\n var viewConstructor = createView({\n name: 'panel-' + section.name + ' filepond--' + className,\n mixins: section.mixins,\n ignoreRectUpdate: true\n });\n var view = root.createChildView(viewConstructor, section.props);\n root.ref[section.name] = root.appendChildView(view);\n };\n var write$3 = function write(_ref2) {\n var root = _ref2.root,\n props = _ref2.props;\n\n // update scalable state\n if (root.ref.scalable === null || props.scalable !== root.ref.scalable) {\n root.ref.scalable = isBoolean(props.scalable) ? props.scalable : true;\n root.element.dataset.scalable = root.ref.scalable;\n }\n\n // no height, can't set\n if (!props.height) return;\n\n // get child rects\n var topRect = root.ref.top.rect.element;\n var bottomRect = root.ref.bottom.rect.element;\n\n // make sure height never is smaller than bottom and top seciton heights combined (will probably never happen, but who knows)\n var height = Math.max(topRect.height + bottomRect.height, props.height);\n\n // offset center part\n root.ref.center.translateY = topRect.height;\n\n // scale center part\n // use math ceil to prevent transparent lines because of rounding errors\n root.ref.center.scaleY = (height - topRect.height - bottomRect.height) / 100;\n\n // offset bottom part\n root.ref.bottom.translateY = height - bottomRect.height;\n };\n var panel = createView({\n name: 'panel',\n read: function read(_ref3) {\n var root = _ref3.root,\n props = _ref3.props;\n return props.heightCurrent = root.ref.bottom.translateY;\n },\n write: write$3,\n create: create$6,\n ignoreRect: true,\n mixins: {\n apis: ['height', 'heightCurrent', 'scalable']\n }\n });\n var createDragHelper = function createDragHelper(items) {\n var itemIds = items.map(function (item) {\n return item.id;\n });\n var prevIndex = undefined;\n return {\n setIndex: function setIndex(index) {\n prevIndex = index;\n },\n getIndex: function getIndex() {\n return prevIndex;\n },\n getItemIndex: function getItemIndex(item) {\n return itemIds.indexOf(item.id);\n }\n };\n };\n var ITEM_TRANSLATE_SPRING = {\n type: 'spring',\n stiffness: 0.75,\n damping: 0.45,\n mass: 10\n };\n var ITEM_SCALE_SPRING = 'spring';\n var StateMap = {\n DID_START_ITEM_LOAD: 'busy',\n DID_UPDATE_ITEM_LOAD_PROGRESS: 'loading',\n DID_THROW_ITEM_INVALID: 'load-invalid',\n DID_THROW_ITEM_LOAD_ERROR: 'load-error',\n DID_LOAD_ITEM: 'idle',\n DID_THROW_ITEM_REMOVE_ERROR: 'remove-error',\n DID_START_ITEM_REMOVE: 'busy',\n DID_START_ITEM_PROCESSING: 'busy processing',\n DID_REQUEST_ITEM_PROCESSING: 'busy processing',\n DID_UPDATE_ITEM_PROCESS_PROGRESS: 'processing',\n DID_COMPLETE_ITEM_PROCESSING: 'processing-complete',\n DID_THROW_ITEM_PROCESSING_ERROR: 'processing-error',\n DID_THROW_ITEM_PROCESSING_REVERT_ERROR: 'processing-revert-error',\n DID_ABORT_ITEM_PROCESSING: 'cancelled',\n DID_REVERT_ITEM_PROCESSING: 'idle'\n };\n\n /**\n * Creates the file view\n */\n var create$7 = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n\n // select\n root.ref.handleClick = function (e) {\n return root.dispatch('DID_ACTIVATE_ITEM', {\n id: props.id\n });\n };\n\n // set id\n root.element.id = 'filepond--item-' + props.id;\n root.element.addEventListener('click', root.ref.handleClick);\n\n // file view\n root.ref.container = root.appendChildView(root.createChildView(fileWrapper, {\n id: props.id\n }));\n\n // file panel\n root.ref.panel = root.appendChildView(root.createChildView(panel, {\n name: 'item-panel'\n }));\n\n // default start height\n root.ref.panel.height = null;\n\n // by default not marked for removal\n props.markedForRemoval = false;\n\n // if not allowed to reorder file items, exit here\n if (!root.query('GET_ALLOW_REORDER')) return;\n\n // set to idle so shows grab cursor\n root.element.dataset.dragState = 'idle';\n var grab = function grab(e) {\n if (!e.isPrimary) return;\n var removedActivateListener = false;\n var origin = {\n x: e.pageX,\n y: e.pageY\n };\n props.dragOrigin = {\n x: root.translateX,\n y: root.translateY\n };\n props.dragCenter = {\n x: e.offsetX,\n y: e.offsetY\n };\n var dragState = createDragHelper(root.query('GET_ACTIVE_ITEMS'));\n root.dispatch('DID_GRAB_ITEM', {\n id: props.id,\n dragState: dragState\n });\n var drag = function drag(e) {\n if (!e.isPrimary) return;\n e.stopPropagation();\n e.preventDefault();\n props.dragOffset = {\n x: e.pageX - origin.x,\n y: e.pageY - origin.y\n };\n\n // if dragged stop listening to clicks, will re-add when done dragging\n var dist = props.dragOffset.x * props.dragOffset.x + props.dragOffset.y * props.dragOffset.y;\n if (dist > 16 && !removedActivateListener) {\n removedActivateListener = true;\n root.element.removeEventListener('click', root.ref.handleClick);\n }\n root.dispatch('DID_DRAG_ITEM', {\n id: props.id,\n dragState: dragState\n });\n };\n var drop = function drop(e) {\n if (!e.isPrimary) return;\n document.removeEventListener('pointermove', drag);\n document.removeEventListener('pointerup', drop);\n props.dragOffset = {\n x: e.pageX - origin.x,\n y: e.pageY - origin.y\n };\n root.dispatch('DID_DROP_ITEM', {\n id: props.id,\n dragState: dragState\n });\n\n // start listening to clicks again\n if (removedActivateListener) {\n setTimeout(function () {\n return root.element.addEventListener('click', root.ref.handleClick);\n }, 0);\n }\n };\n document.addEventListener('pointermove', drag);\n document.addEventListener('pointerup', drop);\n };\n root.element.addEventListener('pointerdown', grab);\n };\n var route$1 = createRoute({\n DID_UPDATE_PANEL_HEIGHT: function DID_UPDATE_PANEL_HEIGHT(_ref2) {\n var root = _ref2.root,\n action = _ref2.action;\n root.height = action.height;\n }\n });\n var write$4 = createRoute({\n DID_GRAB_ITEM: function DID_GRAB_ITEM(_ref3) {\n var root = _ref3.root,\n props = _ref3.props;\n props.dragOrigin = {\n x: root.translateX,\n y: root.translateY\n };\n },\n DID_DRAG_ITEM: function DID_DRAG_ITEM(_ref4) {\n var root = _ref4.root;\n root.element.dataset.dragState = 'drag';\n },\n DID_DROP_ITEM: function DID_DROP_ITEM(_ref5) {\n var root = _ref5.root,\n props = _ref5.props;\n props.dragOffset = null;\n props.dragOrigin = null;\n root.element.dataset.dragState = 'drop';\n }\n }, function (_ref6) {\n var root = _ref6.root,\n actions = _ref6.actions,\n props = _ref6.props,\n shouldOptimize = _ref6.shouldOptimize;\n if (root.element.dataset.dragState === 'drop') {\n if (root.scaleX <= 1) {\n root.element.dataset.dragState = 'idle';\n }\n }\n\n // select last state change action\n var action = actions.concat().filter(function (action) {\n return /^DID_/.test(action.type);\n }).reverse().find(function (action) {\n return StateMap[action.type];\n });\n\n // no need to set same state twice\n if (action && action.type !== props.currentState) {\n // set current state\n props.currentState = action.type;\n\n // set state\n root.element.dataset.filepondItemState = StateMap[props.currentState] || '';\n }\n\n // route actions\n var aspectRatio = root.query('GET_ITEM_PANEL_ASPECT_RATIO') || root.query('GET_PANEL_ASPECT_RATIO');\n if (!aspectRatio) {\n route$1({\n root: root,\n actions: actions,\n props: props\n });\n if (!root.height && root.ref.container.rect.element.height > 0) {\n root.height = root.ref.container.rect.element.height;\n }\n } else if (!shouldOptimize) {\n root.height = root.rect.element.width * aspectRatio;\n }\n\n // sync panel height with item height\n if (shouldOptimize) {\n root.ref.panel.height = null;\n }\n root.ref.panel.height = root.height;\n });\n var item = createView({\n create: create$7,\n write: write$4,\n destroy: function destroy(_ref7) {\n var root = _ref7.root,\n props = _ref7.props;\n root.element.removeEventListener('click', root.ref.handleClick);\n root.dispatch('RELEASE_ITEM', {\n query: props.id\n });\n },\n tag: 'li',\n name: 'item',\n mixins: {\n apis: ['id', 'interactionMethod', 'markedForRemoval', 'spawnDate', 'dragCenter', 'dragOrigin', 'dragOffset'],\n styles: ['translateX', 'translateY', 'scaleX', 'scaleY', 'opacity', 'height'],\n animations: {\n scaleX: ITEM_SCALE_SPRING,\n scaleY: ITEM_SCALE_SPRING,\n translateX: ITEM_TRANSLATE_SPRING,\n translateY: ITEM_TRANSLATE_SPRING,\n opacity: {\n type: 'tween',\n duration: 150\n }\n }\n }\n });\n var getItemsPerRow = function (horizontalSpace, itemWidth) {\n // add one pixel leeway, when using percentages for item width total items can be 1.99 per row\n\n return Math.max(1, Math.floor((horizontalSpace + 1) / itemWidth));\n };\n var getItemIndexByPosition = function getItemIndexByPosition(view, children, positionInView) {\n if (!positionInView) return;\n var horizontalSpace = view.rect.element.width;\n // const children = view.childViews;\n var l = children.length;\n var last = null;\n\n // -1, don't move items to accomodate (either add to top or bottom)\n if (l === 0 || positionInView.top < children[0].rect.element.top) return -1;\n\n // let's get the item width\n var item = children[0];\n var itemRect = item.rect.element;\n var itemHorizontalMargin = itemRect.marginLeft + itemRect.marginRight;\n var itemWidth = itemRect.width + itemHorizontalMargin;\n var itemsPerRow = getItemsPerRow(horizontalSpace, itemWidth);\n\n // stack\n if (itemsPerRow === 1) {\n for (var index = 0; index < l; index++) {\n var child = children[index];\n var childMid = child.rect.outer.top + child.rect.element.height * 0.5;\n if (positionInView.top < childMid) {\n return index;\n }\n }\n return l;\n }\n\n // grid\n var itemVerticalMargin = itemRect.marginTop + itemRect.marginBottom;\n var itemHeight = itemRect.height + itemVerticalMargin;\n for (var _index = 0; _index < l; _index++) {\n var indexX = _index % itemsPerRow;\n var indexY = Math.floor(_index / itemsPerRow);\n var offsetX = indexX * itemWidth;\n var offsetY = indexY * itemHeight;\n var itemTop = offsetY - itemRect.marginTop;\n var itemRight = offsetX + itemWidth;\n var itemBottom = offsetY + itemHeight + itemRect.marginBottom;\n if (positionInView.top < itemBottom && positionInView.top > itemTop) {\n if (positionInView.left < itemRight) {\n return _index;\n } else if (_index !== l - 1) {\n last = _index;\n } else {\n last = null;\n }\n }\n }\n if (last !== null) {\n return last;\n }\n return l;\n };\n var dropAreaDimensions = {\n height: 0,\n width: 0,\n get getHeight() {\n return this.height;\n },\n set setHeight(val) {\n if (this.height === 0 || val === 0) this.height = val;\n },\n get getWidth() {\n return this.width;\n },\n set setWidth(val) {\n if (this.width === 0 || val === 0) this.width = val;\n },\n setDimensions: function setDimensions(height, width) {\n if (this.height === 0 || height === 0) this.height = height;\n if (this.width === 0 || width === 0) this.width = width;\n }\n };\n var create$8 = function create(_ref) {\n var root = _ref.root;\n // need to set role to list as otherwise it won't be read as a list by VoiceOver\n attr(root.element, 'role', 'list');\n root.ref.lastItemSpanwDate = Date.now();\n };\n\n /**\n * Inserts a new item\n * @param root\n * @param action\n */\n var addItemView = function addItemView(_ref2) {\n var root = _ref2.root,\n action = _ref2.action;\n var id = action.id,\n index = action.index,\n interactionMethod = action.interactionMethod;\n root.ref.addIndex = index;\n var now = Date.now();\n var spawnDate = now;\n var opacity = 1;\n if (interactionMethod !== InteractionMethod.NONE) {\n opacity = 0;\n var cooldown = root.query('GET_ITEM_INSERT_INTERVAL');\n var dist = now - root.ref.lastItemSpanwDate;\n spawnDate = dist < cooldown ? now + (cooldown - dist) : now;\n }\n root.ref.lastItemSpanwDate = spawnDate;\n root.appendChildView(root.createChildView(\n // view type\n item,\n // props\n {\n spawnDate: spawnDate,\n id: id,\n opacity: opacity,\n interactionMethod: interactionMethod\n }), index);\n };\n var moveItem = function moveItem(item, x, y) {\n var vx = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var vy = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n // set to null to remove animation while dragging\n if (item.dragOffset) {\n item.translateX = null;\n item.translateY = null;\n item.translateX = item.dragOrigin.x + item.dragOffset.x;\n item.translateY = item.dragOrigin.y + item.dragOffset.y;\n item.scaleX = 1.025;\n item.scaleY = 1.025;\n } else {\n item.translateX = x;\n item.translateY = y;\n if (Date.now() > item.spawnDate) {\n // reveal element\n if (item.opacity === 0) {\n introItemView(item, x, y, vx, vy);\n }\n\n // make sure is default scale every frame\n item.scaleX = 1;\n item.scaleY = 1;\n item.opacity = 1;\n }\n }\n };\n var introItemView = function introItemView(item, x, y, vx, vy) {\n if (item.interactionMethod === InteractionMethod.NONE) {\n item.translateX = null;\n item.translateX = x;\n item.translateY = null;\n item.translateY = y;\n } else if (item.interactionMethod === InteractionMethod.DROP) {\n item.translateX = null;\n item.translateX = x - vx * 20;\n item.translateY = null;\n item.translateY = y - vy * 10;\n item.scaleX = 0.8;\n item.scaleY = 0.8;\n } else if (item.interactionMethod === InteractionMethod.BROWSE) {\n item.translateY = null;\n item.translateY = y - 30;\n } else if (item.interactionMethod === InteractionMethod.API) {\n item.translateX = null;\n item.translateX = x - 30;\n item.translateY = null;\n }\n };\n\n /**\n * Removes an existing item\n * @param root\n * @param action\n */\n var removeItemView = function removeItemView(_ref3) {\n var root = _ref3.root,\n action = _ref3.action;\n var id = action.id;\n\n // get the view matching the given id\n var view = root.childViews.find(function (child) {\n return child.id === id;\n });\n\n // if no view found, exit\n if (!view) {\n return;\n }\n\n // animate view out of view\n view.scaleX = 0.9;\n view.scaleY = 0.9;\n view.opacity = 0;\n\n // mark for removal\n view.markedForRemoval = true;\n };\n var getItemHeight = function getItemHeight(child) {\n return child.rect.element.height + child.rect.element.marginBottom * 0.5 + child.rect.element.marginTop * 0.5;\n };\n var getItemWidth = function getItemWidth(child) {\n return child.rect.element.width + child.rect.element.marginLeft * 0.5 + child.rect.element.marginRight * 0.5;\n };\n var dragItem = function dragItem(_ref4) {\n var root = _ref4.root,\n action = _ref4.action;\n var id = action.id,\n dragState = action.dragState;\n\n // reference to item\n var item = root.query('GET_ITEM', {\n id: id\n });\n\n // get the view matching the given id\n var view = root.childViews.find(function (child) {\n return child.id === id;\n });\n var numItems = root.childViews.length;\n var oldIndex = dragState.getItemIndex(item);\n\n // if no view found, exit\n if (!view) return;\n var dragPosition = {\n x: view.dragOrigin.x + view.dragOffset.x + view.dragCenter.x,\n y: view.dragOrigin.y + view.dragOffset.y + view.dragCenter.y\n };\n\n // get drag area dimensions\n var dragHeight = getItemHeight(view);\n var dragWidth = getItemWidth(view);\n\n // get rows and columns (There will always be at least one row and one column if a file is present)\n var cols = Math.floor(root.rect.outer.width / dragWidth);\n if (cols > numItems) cols = numItems;\n\n // rows are used to find when we have left the preview area bounding box\n var rows = Math.floor(numItems / cols + 1);\n dropAreaDimensions.setHeight = dragHeight * rows;\n dropAreaDimensions.setWidth = dragWidth * cols;\n\n // get new index of dragged item\n var location = {\n y: Math.floor(dragPosition.y / dragHeight),\n x: Math.floor(dragPosition.x / dragWidth),\n getGridIndex: function getGridIndex() {\n if (dragPosition.y > dropAreaDimensions.getHeight || dragPosition.y < 0 || dragPosition.x > dropAreaDimensions.getWidth || dragPosition.x < 0) return oldIndex;\n return this.y * cols + this.x;\n },\n getColIndex: function getColIndex() {\n var items = root.query('GET_ACTIVE_ITEMS');\n var visibleChildren = root.childViews.filter(function (child) {\n return child.rect.element.height;\n });\n var children = items.map(function (item) {\n return visibleChildren.find(function (childView) {\n return childView.id === item.id;\n });\n });\n var currentIndex = children.findIndex(function (child) {\n return child === view;\n });\n var dragHeight = getItemHeight(view);\n var l = children.length;\n var idx = l;\n var childHeight = 0;\n var childBottom = 0;\n var childTop = 0;\n for (var i = 0; i < l; i++) {\n childHeight = getItemHeight(children[i]);\n childTop = childBottom;\n childBottom = childTop + childHeight;\n if (dragPosition.y < childBottom) {\n if (currentIndex > i) {\n if (dragPosition.y < childTop + dragHeight) {\n idx = i;\n break;\n }\n continue;\n }\n idx = i;\n break;\n }\n }\n return idx;\n }\n };\n\n // get new index\n var index = cols > 1 ? location.getGridIndex() : location.getColIndex();\n root.dispatch('MOVE_ITEM', {\n query: view,\n index: index\n });\n\n // if the index of the item changed, dispatch reorder action\n var currentIndex = dragState.getIndex();\n if (currentIndex === undefined || currentIndex !== index) {\n dragState.setIndex(index);\n if (currentIndex === undefined) return;\n root.dispatch('DID_REORDER_ITEMS', {\n items: root.query('GET_ACTIVE_ITEMS'),\n origin: oldIndex,\n target: index\n });\n }\n };\n\n /**\n * Setup action routes\n */\n var route$2 = createRoute({\n DID_ADD_ITEM: addItemView,\n DID_REMOVE_ITEM: removeItemView,\n DID_DRAG_ITEM: dragItem\n });\n\n /**\n * Write to view\n * @param root\n * @param actions\n * @param props\n */\n var write$5 = function write(_ref5) {\n var root = _ref5.root,\n props = _ref5.props,\n actions = _ref5.actions,\n shouldOptimize = _ref5.shouldOptimize;\n // route actions\n route$2({\n root: root,\n props: props,\n actions: actions\n });\n var dragCoordinates = props.dragCoordinates;\n\n // available space on horizontal axis\n var horizontalSpace = root.rect.element.width;\n\n // only draw children that have dimensions\n var visibleChildren = root.childViews.filter(function (child) {\n return child.rect.element.height;\n });\n\n // sort based on current active items\n var children = root.query('GET_ACTIVE_ITEMS').map(function (item) {\n return visibleChildren.find(function (child) {\n return child.id === item.id;\n });\n }).filter(function (item) {\n return item;\n });\n\n // get index\n var dragIndex = dragCoordinates ? getItemIndexByPosition(root, children, dragCoordinates) : null;\n\n // add index is used to reserve the dropped/added item index till the actual item is rendered\n var addIndex = root.ref.addIndex || null;\n\n // add index no longer needed till possibly next draw\n root.ref.addIndex = null;\n var dragIndexOffset = 0;\n var removeIndexOffset = 0;\n var addIndexOffset = 0;\n if (children.length === 0) return;\n var childRect = children[0].rect.element;\n var itemVerticalMargin = childRect.marginTop + childRect.marginBottom;\n var itemHorizontalMargin = childRect.marginLeft + childRect.marginRight;\n var itemWidth = childRect.width + itemHorizontalMargin;\n var itemHeight = childRect.height + itemVerticalMargin;\n var itemsPerRow = getItemsPerRow(horizontalSpace, itemWidth);\n\n // stack\n if (itemsPerRow === 1) {\n var offsetY = 0;\n var dragOffset = 0;\n children.forEach(function (child, index) {\n if (dragIndex) {\n var dist = index - dragIndex;\n if (dist === -2) {\n dragOffset = -itemVerticalMargin * 0.25;\n } else if (dist === -1) {\n dragOffset = -itemVerticalMargin * 0.75;\n } else if (dist === 0) {\n dragOffset = itemVerticalMargin * 0.75;\n } else if (dist === 1) {\n dragOffset = itemVerticalMargin * 0.25;\n } else {\n dragOffset = 0;\n }\n }\n if (shouldOptimize) {\n child.translateX = null;\n child.translateY = null;\n }\n if (!child.markedForRemoval) {\n moveItem(child, 0, offsetY + dragOffset);\n }\n var itemHeight = child.rect.element.height + itemVerticalMargin;\n var visualHeight = itemHeight * (child.markedForRemoval ? child.opacity : 1);\n offsetY += visualHeight;\n });\n }\n // grid\n else {\n var prevX = 0;\n var prevY = 0;\n children.forEach(function (child, index) {\n if (index === dragIndex) {\n dragIndexOffset = 1;\n }\n if (index === addIndex) {\n addIndexOffset += 1;\n }\n if (child.markedForRemoval && child.opacity < 0.5) {\n removeIndexOffset -= 1;\n }\n var visualIndex = index + addIndexOffset + dragIndexOffset + removeIndexOffset;\n var indexX = visualIndex % itemsPerRow;\n var indexY = Math.floor(visualIndex / itemsPerRow);\n var offsetX = indexX * itemWidth;\n var offsetY = indexY * itemHeight;\n var vectorX = Math.sign(offsetX - prevX);\n var vectorY = Math.sign(offsetY - prevY);\n prevX = offsetX;\n prevY = offsetY;\n if (child.markedForRemoval) return;\n if (shouldOptimize) {\n child.translateX = null;\n child.translateY = null;\n }\n moveItem(child, offsetX, offsetY, vectorX, vectorY);\n });\n }\n };\n\n /**\n * Filters actions that are meant specifically for a certain child of the list\n * @param child\n * @param actions\n */\n var filterSetItemActions = function filterSetItemActions(child, actions) {\n return actions.filter(function (action) {\n // if action has an id, filter out actions that don't have this child id\n if (action.data && action.data.id) {\n return child.id === action.data.id;\n }\n\n // allow all other actions\n return true;\n });\n };\n var list = createView({\n create: create$8,\n write: write$5,\n tag: 'ul',\n name: 'list',\n didWriteView: function didWriteView(_ref6) {\n var root = _ref6.root;\n root.childViews.filter(function (view) {\n return view.markedForRemoval && view.opacity === 0 && view.resting;\n }).forEach(function (view) {\n view._destroy();\n root.removeChildView(view);\n });\n },\n filterFrameActionsForChild: filterSetItemActions,\n mixins: {\n apis: ['dragCoordinates']\n }\n });\n var create$9 = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n root.ref.list = root.appendChildView(root.createChildView(list));\n props.dragCoordinates = null;\n props.overflowing = false;\n };\n var storeDragCoordinates = function storeDragCoordinates(_ref2) {\n var root = _ref2.root,\n props = _ref2.props,\n action = _ref2.action;\n if (!root.query('GET_ITEM_INSERT_LOCATION_FREEDOM')) return;\n props.dragCoordinates = {\n left: action.position.scopeLeft - root.ref.list.rect.element.left,\n top: action.position.scopeTop - (root.rect.outer.top + root.rect.element.marginTop + root.rect.element.scrollTop)\n };\n };\n var clearDragCoordinates = function clearDragCoordinates(_ref3) {\n var props = _ref3.props;\n props.dragCoordinates = null;\n };\n var route$3 = createRoute({\n DID_DRAG: storeDragCoordinates,\n DID_END_DRAG: clearDragCoordinates\n });\n var write$6 = function write(_ref4) {\n var root = _ref4.root,\n props = _ref4.props,\n actions = _ref4.actions;\n\n // route actions\n route$3({\n root: root,\n props: props,\n actions: actions\n });\n\n // current drag position\n root.ref.list.dragCoordinates = props.dragCoordinates;\n\n // if currently overflowing but no longer received overflow\n if (props.overflowing && !props.overflow) {\n props.overflowing = false;\n\n // reset overflow state\n root.element.dataset.state = '';\n root.height = null;\n }\n\n // if is not overflowing currently but does receive overflow value\n if (props.overflow) {\n var newHeight = Math.round(props.overflow);\n if (newHeight !== root.height) {\n props.overflowing = true;\n root.element.dataset.state = 'overflow';\n root.height = newHeight;\n }\n }\n };\n var listScroller = createView({\n create: create$9,\n write: write$6,\n name: 'list-scroller',\n mixins: {\n apis: ['overflow', 'dragCoordinates'],\n styles: ['height', 'translateY'],\n animations: {\n translateY: 'spring'\n }\n }\n });\n var attrToggle = function attrToggle(element, name, state) {\n var enabledValue = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';\n if (state) {\n attr(element, name, enabledValue);\n } else {\n element.removeAttribute(name);\n }\n };\n var resetFileInput = function resetFileInput(input) {\n // no value, no need to reset\n if (!input || input.value === '') {\n return;\n }\n try {\n // for modern browsers\n input.value = '';\n } catch (err) {}\n\n // for IE10\n if (input.value) {\n // quickly append input to temp form and reset form\n var form = createElement$1('form');\n var parentNode = input.parentNode;\n var ref = input.nextSibling;\n form.appendChild(input);\n form.reset();\n\n // re-inject input where it originally was\n if (ref) {\n parentNode.insertBefore(input, ref);\n } else {\n parentNode.appendChild(input);\n }\n }\n };\n var create$a = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n\n // set id so can be referenced from outside labels\n root.element.id = 'filepond--browser-' + props.id;\n\n // set name of element (is removed when a value is set)\n attr(root.element, 'name', root.query('GET_NAME'));\n\n // we have to link this element to the status element\n attr(root.element, 'aria-controls', 'filepond--assistant-' + props.id);\n\n // set label, we use labelled by as otherwise the screenreader does not read the \"browse\" text in the label (as it has tabindex: 0)\n attr(root.element, 'aria-labelledby', 'filepond--drop-label-' + props.id);\n\n // set configurable props\n setAcceptedFileTypes({\n root: root,\n action: {\n value: root.query('GET_ACCEPTED_FILE_TYPES')\n }\n });\n toggleAllowMultiple({\n root: root,\n action: {\n value: root.query('GET_ALLOW_MULTIPLE')\n }\n });\n toggleDirectoryFilter({\n root: root,\n action: {\n value: root.query('GET_ALLOW_DIRECTORIES_ONLY')\n }\n });\n toggleDisabled({\n root: root\n });\n toggleRequired({\n root: root,\n action: {\n value: root.query('GET_REQUIRED')\n }\n });\n setCaptureMethod({\n root: root,\n action: {\n value: root.query('GET_CAPTURE_METHOD')\n }\n });\n\n // handle changes to the input field\n root.ref.handleChange = function (e) {\n if (!root.element.value) {\n return;\n }\n\n // extract files and move value of webkitRelativePath path to _relativePath\n var files = Array.from(root.element.files).map(function (file) {\n file._relativePath = file.webkitRelativePath;\n return file;\n });\n\n // we add a little delay so the OS file select window can move out of the way before we add our file\n setTimeout(function () {\n // load files\n props.onload(files);\n\n // reset input, it's just for exposing a method to drop files, should not retain any state\n resetFileInput(root.element);\n }, 250);\n };\n root.element.addEventListener('change', root.ref.handleChange);\n };\n var setAcceptedFileTypes = function setAcceptedFileTypes(_ref2) {\n var root = _ref2.root,\n action = _ref2.action;\n if (!root.query('GET_ALLOW_SYNC_ACCEPT_ATTRIBUTE')) return;\n attrToggle(root.element, 'accept', !!action.value, action.value ? action.value.join(',') : '');\n };\n var toggleAllowMultiple = function toggleAllowMultiple(_ref3) {\n var root = _ref3.root,\n action = _ref3.action;\n attrToggle(root.element, 'multiple', action.value);\n };\n var toggleDirectoryFilter = function toggleDirectoryFilter(_ref4) {\n var root = _ref4.root,\n action = _ref4.action;\n attrToggle(root.element, 'webkitdirectory', action.value);\n };\n var toggleDisabled = function toggleDisabled(_ref5) {\n var root = _ref5.root;\n var isDisabled = root.query('GET_DISABLED');\n var doesAllowBrowse = root.query('GET_ALLOW_BROWSE');\n var disableField = isDisabled || !doesAllowBrowse;\n attrToggle(root.element, 'disabled', disableField);\n };\n var toggleRequired = function toggleRequired(_ref6) {\n var root = _ref6.root,\n action = _ref6.action;\n // want to remove required, always possible\n if (!action.value) {\n attrToggle(root.element, 'required', false);\n }\n // if want to make required, only possible when zero items\n else if (root.query('GET_TOTAL_ITEMS') === 0) {\n attrToggle(root.element, 'required', true);\n }\n };\n var setCaptureMethod = function setCaptureMethod(_ref7) {\n var root = _ref7.root,\n action = _ref7.action;\n attrToggle(root.element, 'capture', !!action.value, action.value === true ? '' : action.value);\n };\n var updateRequiredStatus = function updateRequiredStatus(_ref8) {\n var root = _ref8.root;\n var element = root.element;\n // always remove the required attribute when more than zero items\n if (root.query('GET_TOTAL_ITEMS') > 0) {\n attrToggle(element, 'required', false);\n attrToggle(element, 'name', false);\n } else {\n // add name attribute\n attrToggle(element, 'name', true, root.query('GET_NAME'));\n\n // remove any validation messages\n var shouldCheckValidity = root.query('GET_CHECK_VALIDITY');\n if (shouldCheckValidity) {\n element.setCustomValidity('');\n }\n\n // we only add required if the field has been deemed required\n if (root.query('GET_REQUIRED')) {\n attrToggle(element, 'required', true);\n }\n }\n };\n var updateFieldValidityStatus = function updateFieldValidityStatus(_ref9) {\n var root = _ref9.root;\n var shouldCheckValidity = root.query('GET_CHECK_VALIDITY');\n if (!shouldCheckValidity) return;\n root.element.setCustomValidity(root.query('GET_LABEL_INVALID_FIELD'));\n };\n var browser = createView({\n tag: 'input',\n name: 'browser',\n ignoreRect: true,\n ignoreRectUpdate: true,\n attributes: {\n type: 'file'\n },\n create: create$a,\n destroy: function destroy(_ref10) {\n var root = _ref10.root;\n root.element.removeEventListener('change', root.ref.handleChange);\n },\n write: createRoute({\n DID_LOAD_ITEM: updateRequiredStatus,\n DID_REMOVE_ITEM: updateRequiredStatus,\n DID_THROW_ITEM_INVALID: updateFieldValidityStatus,\n DID_SET_DISABLED: toggleDisabled,\n DID_SET_ALLOW_BROWSE: toggleDisabled,\n DID_SET_ALLOW_DIRECTORIES_ONLY: toggleDirectoryFilter,\n DID_SET_ALLOW_MULTIPLE: toggleAllowMultiple,\n DID_SET_ACCEPTED_FILE_TYPES: setAcceptedFileTypes,\n DID_SET_CAPTURE_METHOD: setCaptureMethod,\n DID_SET_REQUIRED: toggleRequired\n })\n });\n var Key = {\n ENTER: 13,\n SPACE: 32\n };\n var create$b = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n\n // create the label and link it to the file browser\n var label = createElement$1('label');\n attr(label, 'for', 'filepond--browser-' + props.id);\n\n // use for labeling file input (aria-labelledby on file input)\n attr(label, 'id', 'filepond--drop-label-' + props.id);\n\n // hide the label for screenreaders, the input element will read the contents of the label when it's focussed. If we don't set aria-hidden the screenreader will also navigate the contents of the label separately from the input.\n attr(label, 'aria-hidden', 'true');\n\n // handle keys\n root.ref.handleKeyDown = function (e) {\n var isActivationKey = e.keyCode === Key.ENTER || e.keyCode === Key.SPACE;\n if (!isActivationKey) return;\n // stops from triggering the element a second time\n e.preventDefault();\n\n // click link (will then in turn activate file input)\n root.ref.label.click();\n };\n root.ref.handleClick = function (e) {\n var isLabelClick = e.target === label || label.contains(e.target);\n\n // don't want to click twice\n if (isLabelClick) return;\n\n // click link (will then in turn activate file input)\n root.ref.label.click();\n };\n\n // attach events\n label.addEventListener('keydown', root.ref.handleKeyDown);\n root.element.addEventListener('click', root.ref.handleClick);\n\n // update\n updateLabelValue(label, props.caption);\n\n // add!\n root.appendChild(label);\n root.ref.label = label;\n };\n var updateLabelValue = function updateLabelValue(label, value) {\n label.innerHTML = value;\n var clickable = label.querySelector('.filepond--label-action');\n if (clickable) {\n attr(clickable, 'tabindex', '0');\n }\n return value;\n };\n var dropLabel = createView({\n name: 'drop-label',\n ignoreRect: true,\n create: create$b,\n destroy: function destroy(_ref2) {\n var root = _ref2.root;\n root.ref.label.addEventListener('keydown', root.ref.handleKeyDown);\n root.element.removeEventListener('click', root.ref.handleClick);\n },\n write: createRoute({\n DID_SET_LABEL_IDLE: function DID_SET_LABEL_IDLE(_ref3) {\n var root = _ref3.root,\n action = _ref3.action;\n updateLabelValue(root.ref.label, action.value);\n }\n }),\n mixins: {\n styles: ['opacity', 'translateX', 'translateY'],\n animations: {\n opacity: {\n type: 'tween',\n duration: 150\n },\n translateX: 'spring',\n translateY: 'spring'\n }\n }\n });\n var blob = createView({\n name: 'drip-blob',\n ignoreRect: true,\n mixins: {\n styles: ['translateX', 'translateY', 'scaleX', 'scaleY', 'opacity'],\n animations: {\n scaleX: 'spring',\n scaleY: 'spring',\n translateX: 'spring',\n translateY: 'spring',\n opacity: {\n type: 'tween',\n duration: 250\n }\n }\n }\n });\n var addBlob = function addBlob(_ref) {\n var root = _ref.root;\n var centerX = root.rect.element.width * 0.5;\n var centerY = root.rect.element.height * 0.5;\n root.ref.blob = root.appendChildView(root.createChildView(blob, {\n opacity: 0,\n scaleX: 2.5,\n scaleY: 2.5,\n translateX: centerX,\n translateY: centerY\n }));\n };\n var moveBlob = function moveBlob(_ref2) {\n var root = _ref2.root,\n action = _ref2.action;\n if (!root.ref.blob) {\n addBlob({\n root: root\n });\n return;\n }\n root.ref.blob.translateX = action.position.scopeLeft;\n root.ref.blob.translateY = action.position.scopeTop;\n root.ref.blob.scaleX = 1;\n root.ref.blob.scaleY = 1;\n root.ref.blob.opacity = 1;\n };\n var hideBlob = function hideBlob(_ref3) {\n var root = _ref3.root;\n if (!root.ref.blob) {\n return;\n }\n root.ref.blob.opacity = 0;\n };\n var explodeBlob = function explodeBlob(_ref4) {\n var root = _ref4.root;\n if (!root.ref.blob) {\n return;\n }\n root.ref.blob.scaleX = 2.5;\n root.ref.blob.scaleY = 2.5;\n root.ref.blob.opacity = 0;\n };\n var write$7 = function write(_ref5) {\n var root = _ref5.root,\n props = _ref5.props,\n actions = _ref5.actions;\n route$4({\n root: root,\n props: props,\n actions: actions\n });\n var blob = root.ref.blob;\n if (actions.length === 0 && blob && blob.opacity === 0) {\n root.removeChildView(blob);\n root.ref.blob = null;\n }\n };\n var route$4 = createRoute({\n DID_DRAG: moveBlob,\n DID_DROP: explodeBlob,\n DID_END_DRAG: hideBlob\n });\n var drip = createView({\n ignoreRect: true,\n ignoreRectUpdate: true,\n name: 'drip',\n write: write$7\n });\n var setInputFiles = function setInputFiles(element, files) {\n try {\n // Create a DataTransfer instance and add a newly created file\n var dataTransfer = new DataTransfer();\n files.forEach(function (file) {\n if (file instanceof File) {\n dataTransfer.items.add(file);\n } else {\n dataTransfer.items.add(new File([file], file.name, {\n type: file.type\n }));\n }\n });\n\n // Assign the DataTransfer files list to the file input\n element.files = dataTransfer.files;\n } catch (err) {\n return false;\n }\n return true;\n };\n var create$c = function create(_ref) {\n var root = _ref.root;\n return root.ref.fields = {};\n };\n var getField = function getField(root, id) {\n return root.ref.fields[id];\n };\n var syncFieldPositionsWithItems = function syncFieldPositionsWithItems(root) {\n root.query('GET_ACTIVE_ITEMS').forEach(function (item) {\n if (!root.ref.fields[item.id]) return;\n root.element.appendChild(root.ref.fields[item.id]);\n });\n };\n var didReorderItems = function didReorderItems(_ref2) {\n var root = _ref2.root;\n return syncFieldPositionsWithItems(root);\n };\n var didAddItem = function didAddItem(_ref3) {\n var root = _ref3.root,\n action = _ref3.action;\n var fileItem = root.query('GET_ITEM', action.id);\n var isLocalFile = fileItem.origin === FileOrigin.LOCAL;\n var shouldUseFileInput = !isLocalFile && root.query('SHOULD_UPDATE_FILE_INPUT');\n var dataContainer = createElement$1('input');\n dataContainer.type = shouldUseFileInput ? 'file' : 'hidden';\n dataContainer.name = root.query('GET_NAME');\n dataContainer.disabled = root.query('GET_DISABLED');\n root.ref.fields[action.id] = dataContainer;\n syncFieldPositionsWithItems(root);\n };\n var didLoadItem$1 = function didLoadItem(_ref4) {\n var root = _ref4.root,\n action = _ref4.action;\n var field = getField(root, action.id);\n if (!field) return;\n\n // store server ref in hidden input\n if (action.serverFileReference !== null) field.value = action.serverFileReference;\n\n // store file item in file input\n if (!root.query('SHOULD_UPDATE_FILE_INPUT')) return;\n var fileItem = root.query('GET_ITEM', action.id);\n setInputFiles(field, [fileItem.file]);\n };\n var didPrepareOutput = function didPrepareOutput(_ref5) {\n var root = _ref5.root,\n action = _ref5.action;\n // this timeout pushes the handler after 'load'\n if (!root.query('SHOULD_UPDATE_FILE_INPUT')) return;\n setTimeout(function () {\n var field = getField(root, action.id);\n if (!field) return;\n setInputFiles(field, [action.file]);\n }, 0);\n };\n var didSetDisabled = function didSetDisabled(_ref6) {\n var root = _ref6.root;\n root.element.disabled = root.query('GET_DISABLED');\n };\n var didRemoveItem = function didRemoveItem(_ref7) {\n var root = _ref7.root,\n action = _ref7.action;\n var field = getField(root, action.id);\n if (!field) return;\n if (field.parentNode) field.parentNode.removeChild(field);\n delete root.ref.fields[action.id];\n };\n\n // only runs for server files (so doesn't deal with file input)\n var didDefineValue = function didDefineValue(_ref8) {\n var root = _ref8.root,\n action = _ref8.action;\n var field = getField(root, action.id);\n if (!field) return;\n if (action.value === null) {\n // clear field value\n field.removeAttribute('value');\n } else {\n // set field value\n field.value = action.value;\n }\n syncFieldPositionsWithItems(root);\n };\n var write$8 = createRoute({\n DID_SET_DISABLED: didSetDisabled,\n DID_ADD_ITEM: didAddItem,\n DID_LOAD_ITEM: didLoadItem$1,\n DID_REMOVE_ITEM: didRemoveItem,\n DID_DEFINE_VALUE: didDefineValue,\n DID_PREPARE_OUTPUT: didPrepareOutput,\n DID_REORDER_ITEMS: didReorderItems,\n DID_SORT_ITEMS: didReorderItems\n });\n var data = createView({\n tag: 'fieldset',\n name: 'data',\n create: create$c,\n write: write$8,\n ignoreRect: true\n });\n var getRootNode = function getRootNode(element) {\n return 'getRootNode' in element ? element.getRootNode() : document;\n };\n var images = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'tiff'];\n var text$1 = ['css', 'csv', 'html', 'txt'];\n var map = {\n zip: 'zip|compressed',\n epub: 'application/epub+zip'\n };\n var guesstimateMimeType = function guesstimateMimeType() {\n var extension = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n extension = extension.toLowerCase();\n if (images.includes(extension)) {\n return 'image/' + (extension === 'jpg' ? 'jpeg' : extension === 'svg' ? 'svg+xml' : extension);\n }\n if (text$1.includes(extension)) {\n return 'text/' + extension;\n }\n return map[extension] || '';\n };\n var requestDataTransferItems = function requestDataTransferItems(dataTransfer) {\n return new Promise(function (resolve, reject) {\n // try to get links from transfer, if found we'll exit immediately (unless a file is in the dataTransfer as well, this is because Firefox could represent the file as a URL and a file object at the same time)\n var links = getLinks(dataTransfer);\n if (links.length && !hasFiles(dataTransfer)) {\n return resolve(links);\n }\n // try to get files from the transfer\n getFiles(dataTransfer).then(resolve);\n });\n };\n\n /**\n * Test if datatransfer has files\n */\n var hasFiles = function hasFiles(dataTransfer) {\n if (dataTransfer.files) return dataTransfer.files.length > 0;\n return false;\n };\n\n /**\n * Extracts files from a DataTransfer object\n */\n var getFiles = function getFiles(dataTransfer) {\n return new Promise(function (resolve, reject) {\n // get the transfer items as promises\n var promisedFiles = (dataTransfer.items ? Array.from(dataTransfer.items) : []\n // only keep file system items (files and directories)\n ).filter(function (item) {\n return isFileSystemItem(item);\n })\n\n // map each item to promise\n .map(function (item) {\n return getFilesFromItem(item);\n });\n\n // if is empty, see if we can extract some info from the files property as a fallback\n if (!promisedFiles.length) {\n // TODO: test for directories (should not be allowed)\n // Use FileReader, problem is that the files property gets lost in the process\n resolve(dataTransfer.files ? Array.from(dataTransfer.files) : []);\n return;\n }\n\n // done!\n Promise.all(promisedFiles).then(function (returnedFileGroups) {\n // flatten groups\n var files = [];\n returnedFileGroups.forEach(function (group) {\n files.push.apply(files, group);\n });\n\n // done (filter out empty files)!\n resolve(files.filter(function (file) {\n return file;\n }).map(function (file) {\n if (!file._relativePath) file._relativePath = file.webkitRelativePath;\n return file;\n }));\n }).catch(console.error);\n });\n };\n var isFileSystemItem = function isFileSystemItem(item) {\n if (isEntry(item)) {\n var entry = getAsEntry(item);\n if (entry) {\n return entry.isFile || entry.isDirectory;\n }\n }\n return item.kind === 'file';\n };\n var getFilesFromItem = function getFilesFromItem(item) {\n return new Promise(function (resolve, reject) {\n if (isDirectoryEntry(item)) {\n getFilesInDirectory(getAsEntry(item)).then(resolve).catch(reject);\n return;\n }\n resolve([item.getAsFile()]);\n });\n };\n var getFilesInDirectory = function getFilesInDirectory(entry) {\n return new Promise(function (resolve, reject) {\n var files = [];\n\n // the total entries to read\n var dirCounter = 0;\n var fileCounter = 0;\n var resolveIfDone = function resolveIfDone() {\n if (fileCounter === 0 && dirCounter === 0) {\n resolve(files);\n }\n };\n\n // the recursive function\n var readEntries = function readEntries(dirEntry) {\n dirCounter++;\n var directoryReader = dirEntry.createReader();\n\n // directories are returned in batches, we need to process all batches before we're done\n var readBatch = function readBatch() {\n directoryReader.readEntries(function (entries) {\n if (entries.length === 0) {\n dirCounter--;\n resolveIfDone();\n return;\n }\n entries.forEach(function (entry) {\n // recursively read more directories\n if (entry.isDirectory) {\n readEntries(entry);\n } else {\n // read as file\n fileCounter++;\n entry.file(function (file) {\n var correctedFile = correctMissingFileType(file);\n if (entry.fullPath) correctedFile._relativePath = entry.fullPath;\n files.push(correctedFile);\n fileCounter--;\n resolveIfDone();\n });\n }\n });\n\n // try to get next batch of files\n readBatch();\n }, reject);\n };\n\n // read first batch of files\n readBatch();\n };\n\n // go!\n readEntries(entry);\n });\n };\n var correctMissingFileType = function correctMissingFileType(file) {\n if (file.type.length) return file;\n var date = file.lastModifiedDate;\n var name = file.name;\n var type = guesstimateMimeType(getExtensionFromFilename(file.name));\n if (!type.length) return file;\n file = file.slice(0, file.size, type);\n file.name = name;\n file.lastModifiedDate = date;\n return file;\n };\n var isDirectoryEntry = function isDirectoryEntry(item) {\n return isEntry(item) && (getAsEntry(item) || {}).isDirectory;\n };\n var isEntry = function isEntry(item) {\n return 'webkitGetAsEntry' in item;\n };\n var getAsEntry = function getAsEntry(item) {\n return item.webkitGetAsEntry();\n };\n\n /**\n * Extracts links from a DataTransfer object\n */\n var getLinks = function getLinks(dataTransfer) {\n var links = [];\n try {\n // look in meta data property\n links = getLinksFromTransferMetaData(dataTransfer);\n if (links.length) {\n return links;\n }\n links = getLinksFromTransferURLData(dataTransfer);\n } catch (e) {\n // nope nope nope (probably IE trouble)\n }\n return links;\n };\n var getLinksFromTransferURLData = function getLinksFromTransferURLData(dataTransfer) {\n var data = dataTransfer.getData('url');\n if (typeof data === 'string' && data.length) {\n return [data];\n }\n return [];\n };\n var getLinksFromTransferMetaData = function getLinksFromTransferMetaData(dataTransfer) {\n var data = dataTransfer.getData('text/html');\n if (typeof data === 'string' && data.length) {\n var matches = data.match(/src\\s*=\\s*\"(.+?)\"/);\n if (matches) {\n return [matches[1]];\n }\n }\n return [];\n };\n var dragNDropObservers = [];\n var eventPosition = function eventPosition(e) {\n return {\n pageLeft: e.pageX,\n pageTop: e.pageY,\n scopeLeft: e.offsetX || e.layerX,\n scopeTop: e.offsetY || e.layerY\n };\n };\n var createDragNDropClient = function createDragNDropClient(element, scopeToObserve, filterElement) {\n var observer = getDragNDropObserver(scopeToObserve);\n var client = {\n element: element,\n filterElement: filterElement,\n state: null,\n ondrop: function ondrop() {},\n onenter: function onenter() {},\n ondrag: function ondrag() {},\n onexit: function onexit() {},\n onload: function onload() {},\n allowdrop: function allowdrop() {}\n };\n client.destroy = observer.addListener(client);\n return client;\n };\n var getDragNDropObserver = function getDragNDropObserver(element) {\n // see if already exists, if so, return\n var observer = dragNDropObservers.find(function (item) {\n return item.element === element;\n });\n if (observer) {\n return observer;\n }\n\n // create new observer, does not yet exist for this element\n var newObserver = createDragNDropObserver(element);\n dragNDropObservers.push(newObserver);\n return newObserver;\n };\n var createDragNDropObserver = function createDragNDropObserver(element) {\n var clients = [];\n var routes = {\n dragenter: dragenter,\n dragover: dragover,\n dragleave: dragleave,\n drop: drop\n };\n var handlers = {};\n forin(routes, function (event, createHandler) {\n handlers[event] = createHandler(element, clients);\n element.addEventListener(event, handlers[event], false);\n });\n var observer = {\n element: element,\n addListener: function addListener(client) {\n // add as client\n clients.push(client);\n\n // return removeListener function\n return function () {\n // remove client\n clients.splice(clients.indexOf(client), 1);\n\n // if no more clients, clean up observer\n if (clients.length === 0) {\n dragNDropObservers.splice(dragNDropObservers.indexOf(observer), 1);\n forin(routes, function (event) {\n element.removeEventListener(event, handlers[event], false);\n });\n }\n };\n }\n };\n return observer;\n };\n var elementFromPoint = function elementFromPoint(root, point) {\n if (!('elementFromPoint' in root)) {\n root = document;\n }\n return root.elementFromPoint(point.x, point.y);\n };\n var isEventTarget = function isEventTarget(e, target) {\n // get root\n var root = getRootNode(target);\n\n // get element at position\n // if root is not actual shadow DOM and does not have elementFromPoint method, use the one on document\n var elementAtPosition = elementFromPoint(root, {\n x: e.pageX - window.pageXOffset,\n y: e.pageY - window.pageYOffset\n });\n\n // test if target is the element or if one of its children is\n return elementAtPosition === target || target.contains(elementAtPosition);\n };\n var initialTarget = null;\n var setDropEffect = function setDropEffect(dataTransfer, effect) {\n // is in try catch as IE11 will throw error if not\n try {\n dataTransfer.dropEffect = effect;\n } catch (e) {}\n };\n var dragenter = function dragenter(root, clients) {\n return function (e) {\n e.preventDefault();\n initialTarget = e.target;\n clients.forEach(function (client) {\n var element = client.element,\n onenter = client.onenter;\n if (isEventTarget(e, element)) {\n client.state = 'enter';\n\n // fire enter event\n onenter(eventPosition(e));\n }\n });\n };\n };\n var dragover = function dragover(root, clients) {\n return function (e) {\n e.preventDefault();\n var dataTransfer = e.dataTransfer;\n requestDataTransferItems(dataTransfer).then(function (items) {\n var overDropTarget = false;\n clients.some(function (client) {\n var filterElement = client.filterElement,\n element = client.element,\n onenter = client.onenter,\n onexit = client.onexit,\n ondrag = client.ondrag,\n allowdrop = client.allowdrop;\n\n // by default we can drop\n setDropEffect(dataTransfer, 'copy');\n\n // allow transfer of these items\n var allowsTransfer = allowdrop(items);\n\n // only used when can be dropped on page\n if (!allowsTransfer) {\n setDropEffect(dataTransfer, 'none');\n return;\n }\n\n // targetting this client\n if (isEventTarget(e, element)) {\n overDropTarget = true;\n\n // had no previous state, means we are entering this client\n if (client.state === null) {\n client.state = 'enter';\n onenter(eventPosition(e));\n return;\n }\n\n // now over element (no matter if it allows the drop or not)\n client.state = 'over';\n\n // needs to allow transfer\n if (filterElement && !allowsTransfer) {\n setDropEffect(dataTransfer, 'none');\n return;\n }\n\n // dragging\n ondrag(eventPosition(e));\n } else {\n // should be over an element to drop\n if (filterElement && !overDropTarget) {\n setDropEffect(dataTransfer, 'none');\n }\n\n // might have just left this client?\n if (client.state) {\n client.state = null;\n onexit(eventPosition(e));\n }\n }\n });\n });\n };\n };\n var drop = function drop(root, clients) {\n return function (e) {\n e.preventDefault();\n var dataTransfer = e.dataTransfer;\n requestDataTransferItems(dataTransfer).then(function (items) {\n clients.forEach(function (client) {\n var filterElement = client.filterElement,\n element = client.element,\n ondrop = client.ondrop,\n onexit = client.onexit,\n allowdrop = client.allowdrop;\n client.state = null;\n\n // if we're filtering on element we need to be over the element to drop\n if (filterElement && !isEventTarget(e, element)) return;\n\n // no transfer for this client\n if (!allowdrop(items)) return onexit(eventPosition(e));\n\n // we can drop these items on this client\n ondrop(eventPosition(e), items);\n });\n });\n };\n };\n var dragleave = function dragleave(root, clients) {\n return function (e) {\n if (initialTarget !== e.target) {\n return;\n }\n clients.forEach(function (client) {\n var onexit = client.onexit;\n client.state = null;\n onexit(eventPosition(e));\n });\n };\n };\n var createHopper = function createHopper(scope, validateItems, options) {\n // is now hopper scope\n scope.classList.add('filepond--hopper');\n\n // shortcuts\n var catchesDropsOnPage = options.catchesDropsOnPage,\n requiresDropOnElement = options.requiresDropOnElement,\n _options$filterItems = options.filterItems,\n filterItems = _options$filterItems === void 0 ? function (items) {\n return items;\n } : _options$filterItems;\n\n // create a dnd client\n var client = createDragNDropClient(scope, catchesDropsOnPage ? document.documentElement : scope, requiresDropOnElement);\n\n // current client state\n var lastState = '';\n var currentState = '';\n\n // determines if a file may be dropped\n client.allowdrop = function (items) {\n // TODO: if we can, throw error to indicate the items cannot by dropped\n\n return validateItems(filterItems(items));\n };\n client.ondrop = function (position, items) {\n var filteredItems = filterItems(items);\n if (!validateItems(filteredItems)) {\n api.ondragend(position);\n return;\n }\n currentState = 'drag-drop';\n api.onload(filteredItems, position);\n };\n client.ondrag = function (position) {\n api.ondrag(position);\n };\n client.onenter = function (position) {\n currentState = 'drag-over';\n api.ondragstart(position);\n };\n client.onexit = function (position) {\n currentState = 'drag-exit';\n api.ondragend(position);\n };\n var api = {\n updateHopperState: function updateHopperState() {\n if (lastState !== currentState) {\n scope.dataset.hopperState = currentState;\n lastState = currentState;\n }\n },\n onload: function onload() {},\n ondragstart: function ondragstart() {},\n ondrag: function ondrag() {},\n ondragend: function ondragend() {},\n destroy: function destroy() {\n // destroy client\n client.destroy();\n }\n };\n return api;\n };\n var listening = false;\n var listeners$1 = [];\n var handlePaste = function handlePaste(e) {\n // if is pasting in input or textarea and the target is outside of a filepond scope, ignore\n var activeEl = document.activeElement;\n if (activeEl && /textarea|input/i.test(activeEl.nodeName)) {\n // test textarea or input is contained in filepond root\n var inScope = false;\n var element = activeEl;\n while (element !== document.body) {\n if (element.classList.contains('filepond--root')) {\n inScope = true;\n break;\n }\n element = element.parentNode;\n }\n if (!inScope) return;\n }\n requestDataTransferItems(e.clipboardData).then(function (files) {\n // no files received\n if (!files.length) {\n return;\n }\n\n // notify listeners of received files\n listeners$1.forEach(function (listener) {\n return listener(files);\n });\n });\n };\n var listen = function listen(cb) {\n // can't add twice\n if (listeners$1.includes(cb)) {\n return;\n }\n\n // add initial listener\n listeners$1.push(cb);\n\n // setup paste listener for entire page\n if (listening) {\n return;\n }\n listening = true;\n document.addEventListener('paste', handlePaste);\n };\n var unlisten = function unlisten(listener) {\n arrayRemove(listeners$1, listeners$1.indexOf(listener));\n\n // clean up\n if (listeners$1.length === 0) {\n document.removeEventListener('paste', handlePaste);\n listening = false;\n }\n };\n var createPaster = function createPaster() {\n var cb = function cb(files) {\n api.onload(files);\n };\n var api = {\n destroy: function destroy() {\n unlisten(cb);\n },\n onload: function onload() {}\n };\n listen(cb);\n return api;\n };\n\n /**\n * Creates the file view\n */\n var create$d = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n root.element.id = 'filepond--assistant-' + props.id;\n attr(root.element, 'role', 'status');\n attr(root.element, 'aria-live', 'polite');\n attr(root.element, 'aria-relevant', 'additions');\n };\n var addFilesNotificationTimeout = null;\n var notificationClearTimeout = null;\n var filenames = [];\n var assist = function assist(root, message) {\n root.element.textContent = message;\n };\n var clear$1 = function clear(root) {\n root.element.textContent = '';\n };\n var listModified = function listModified(root, filename, label) {\n var total = root.query('GET_TOTAL_ITEMS');\n assist(root, label + ' ' + filename + ', ' + total + ' ' + (total === 1 ? root.query('GET_LABEL_FILE_COUNT_SINGULAR') : root.query('GET_LABEL_FILE_COUNT_PLURAL')));\n\n // clear group after set amount of time so the status is not read twice\n clearTimeout(notificationClearTimeout);\n notificationClearTimeout = setTimeout(function () {\n clear$1(root);\n }, 1500);\n };\n var isUsingFilePond = function isUsingFilePond(root) {\n return root.element.parentNode.contains(document.activeElement);\n };\n var itemAdded = function itemAdded(_ref2) {\n var root = _ref2.root,\n action = _ref2.action;\n if (!isUsingFilePond(root)) {\n return;\n }\n root.element.textContent = '';\n var item = root.query('GET_ITEM', action.id);\n filenames.push(item.filename);\n clearTimeout(addFilesNotificationTimeout);\n addFilesNotificationTimeout = setTimeout(function () {\n listModified(root, filenames.join(', '), root.query('GET_LABEL_FILE_ADDED'));\n filenames.length = 0;\n }, 750);\n };\n var itemRemoved = function itemRemoved(_ref3) {\n var root = _ref3.root,\n action = _ref3.action;\n if (!isUsingFilePond(root)) {\n return;\n }\n var item = action.item;\n listModified(root, item.filename, root.query('GET_LABEL_FILE_REMOVED'));\n };\n var itemProcessed = function itemProcessed(_ref4) {\n var root = _ref4.root,\n action = _ref4.action;\n // will also notify the user when FilePond is not being used, as the user might be occupied with other activities while uploading a file\n\n var item = root.query('GET_ITEM', action.id);\n var filename = item.filename;\n var label = root.query('GET_LABEL_FILE_PROCESSING_COMPLETE');\n assist(root, filename + ' ' + label);\n };\n var itemProcessedUndo = function itemProcessedUndo(_ref5) {\n var root = _ref5.root,\n action = _ref5.action;\n var item = root.query('GET_ITEM', action.id);\n var filename = item.filename;\n var label = root.query('GET_LABEL_FILE_PROCESSING_ABORTED');\n assist(root, filename + ' ' + label);\n };\n var itemError = function itemError(_ref6) {\n var root = _ref6.root,\n action = _ref6.action;\n var item = root.query('GET_ITEM', action.id);\n var filename = item.filename;\n\n // will also notify the user when FilePond is not being used, as the user might be occupied with other activities while uploading a file\n\n assist(root, action.status.main + ' ' + filename + ' ' + action.status.sub);\n };\n var assistant = createView({\n create: create$d,\n ignoreRect: true,\n ignoreRectUpdate: true,\n write: createRoute({\n DID_LOAD_ITEM: itemAdded,\n DID_REMOVE_ITEM: itemRemoved,\n DID_COMPLETE_ITEM_PROCESSING: itemProcessed,\n DID_ABORT_ITEM_PROCESSING: itemProcessedUndo,\n DID_REVERT_ITEM_PROCESSING: itemProcessedUndo,\n DID_THROW_ITEM_REMOVE_ERROR: itemError,\n DID_THROW_ITEM_LOAD_ERROR: itemError,\n DID_THROW_ITEM_INVALID: itemError,\n DID_THROW_ITEM_PROCESSING_ERROR: itemError\n }),\n tag: 'span',\n name: 'assistant'\n });\n var toCamels = function toCamels(string) {\n var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '-';\n return string.replace(new RegExp(separator + '.', 'g'), function (sub) {\n return sub.charAt(1).toUpperCase();\n });\n };\n var debounce = function debounce(func) {\n var interval = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 16;\n var immidiateOnly = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var last = Date.now();\n var timeout = null;\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n clearTimeout(timeout);\n var dist = Date.now() - last;\n var fn = function fn() {\n last = Date.now();\n func.apply(void 0, args);\n };\n if (dist < interval) {\n // we need to delay by the difference between interval and dist\n // for example: if distance is 10 ms and interval is 16 ms,\n // we need to wait an additional 6ms before calling the function)\n if (!immidiateOnly) {\n timeout = setTimeout(fn, interval - dist);\n }\n } else {\n // go!\n fn();\n }\n };\n };\n var MAX_FILES_LIMIT = 1000000;\n var prevent = function prevent(e) {\n return e.preventDefault();\n };\n var create$e = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n // Add id\n var id = root.query('GET_ID');\n if (id) {\n root.element.id = id;\n }\n\n // Add className\n var className = root.query('GET_CLASS_NAME');\n if (className) {\n className.split(' ').filter(function (name) {\n return name.length;\n }).forEach(function (name) {\n root.element.classList.add(name);\n });\n }\n\n // Field label\n root.ref.label = root.appendChildView(root.createChildView(dropLabel, Object.assign({}, props, {\n translateY: null,\n caption: root.query('GET_LABEL_IDLE')\n })));\n\n // List of items\n root.ref.list = root.appendChildView(root.createChildView(listScroller, {\n translateY: null\n }));\n\n // Background panel\n root.ref.panel = root.appendChildView(root.createChildView(panel, {\n name: 'panel-root'\n }));\n\n // Assistant notifies assistive tech when content changes\n root.ref.assistant = root.appendChildView(root.createChildView(assistant, Object.assign({}, props)));\n\n // Data\n root.ref.data = root.appendChildView(root.createChildView(data, Object.assign({}, props)));\n\n // Measure (tests if fixed height was set)\n // DOCTYPE needs to be set for this to work\n root.ref.measure = createElement$1('div');\n root.ref.measure.style.height = '100%';\n root.element.appendChild(root.ref.measure);\n\n // information on the root height or fixed height status\n root.ref.bounds = null;\n\n // apply initial style properties\n root.query('GET_STYLES').filter(function (style) {\n return !isEmpty(style.value);\n }).map(function (_ref2) {\n var name = _ref2.name,\n value = _ref2.value;\n root.element.dataset[name] = value;\n });\n\n // determine if width changed\n root.ref.widthPrevious = null;\n root.ref.widthUpdated = debounce(function () {\n root.ref.updateHistory = [];\n root.dispatch('DID_RESIZE_ROOT');\n }, 250);\n\n // history of updates\n root.ref.previousAspectRatio = null;\n root.ref.updateHistory = [];\n\n // prevent scrolling and zooming on iOS (only if supports pointer events, for then we can enable reorder)\n var canHover = window.matchMedia('(pointer: fine) and (hover: hover)').matches;\n var hasPointerEvents = ('PointerEvent' in window);\n if (root.query('GET_ALLOW_REORDER') && hasPointerEvents && !canHover) {\n root.element.addEventListener('touchmove', prevent, {\n passive: false\n });\n root.element.addEventListener('gesturestart', prevent);\n }\n\n // add credits\n var credits = root.query('GET_CREDITS');\n var hasCredits = credits.length === 2;\n if (hasCredits) {\n var frag = document.createElement('a');\n frag.className = 'filepond--credits';\n frag.setAttribute('aria-hidden', 'true');\n frag.href = credits[0];\n frag.tabindex = -1;\n frag.target = '_blank';\n frag.rel = 'noopener noreferrer';\n frag.textContent = credits[1];\n root.element.appendChild(frag);\n root.ref.credits = frag;\n }\n };\n var write$9 = function write(_ref3) {\n var root = _ref3.root,\n props = _ref3.props,\n actions = _ref3.actions;\n // route actions\n route$5({\n root: root,\n props: props,\n actions: actions\n });\n\n // apply style properties\n actions.filter(function (action) {\n return /^DID_SET_STYLE_/.test(action.type);\n }).filter(function (action) {\n return !isEmpty(action.data.value);\n }).map(function (_ref4) {\n var type = _ref4.type,\n data = _ref4.data;\n var name = toCamels(type.substring(8).toLowerCase(), '_');\n root.element.dataset[name] = data.value;\n root.invalidateLayout();\n });\n if (root.rect.element.hidden) return;\n if (root.rect.element.width !== root.ref.widthPrevious) {\n root.ref.widthPrevious = root.rect.element.width;\n root.ref.widthUpdated();\n }\n\n // get box bounds, we do this only once\n var bounds = root.ref.bounds;\n if (!bounds) {\n bounds = root.ref.bounds = calculateRootBoundingBoxHeight(root);\n\n // destroy measure element\n root.element.removeChild(root.ref.measure);\n root.ref.measure = null;\n }\n\n // get quick references to various high level parts of the upload tool\n var _root$ref = root.ref,\n hopper = _root$ref.hopper,\n label = _root$ref.label,\n list = _root$ref.list,\n panel = _root$ref.panel;\n\n // sets correct state to hopper scope\n if (hopper) {\n hopper.updateHopperState();\n }\n\n // bool to indicate if we're full or not\n var aspectRatio = root.query('GET_PANEL_ASPECT_RATIO');\n var isMultiItem = root.query('GET_ALLOW_MULTIPLE');\n var totalItems = root.query('GET_TOTAL_ITEMS');\n var maxItems = isMultiItem ? root.query('GET_MAX_FILES') || MAX_FILES_LIMIT : 1;\n var atMaxCapacity = totalItems === maxItems;\n\n // action used to add item\n var addAction = actions.find(function (action) {\n return action.type === 'DID_ADD_ITEM';\n });\n\n // if reached max capacity and we've just reached it\n if (atMaxCapacity && addAction) {\n // get interaction type\n var interactionMethod = addAction.data.interactionMethod;\n\n // hide label\n label.opacity = 0;\n if (isMultiItem) {\n label.translateY = -40;\n } else {\n if (interactionMethod === InteractionMethod.API) {\n label.translateX = 40;\n } else if (interactionMethod === InteractionMethod.BROWSE) {\n label.translateY = 40;\n } else {\n label.translateY = 30;\n }\n }\n } else if (!atMaxCapacity) {\n label.opacity = 1;\n label.translateX = 0;\n label.translateY = 0;\n }\n var listItemMargin = calculateListItemMargin(root);\n var listHeight = calculateListHeight(root);\n var labelHeight = label.rect.element.height;\n var currentLabelHeight = !isMultiItem || atMaxCapacity ? 0 : labelHeight;\n var listMarginTop = atMaxCapacity ? list.rect.element.marginTop : 0;\n var listMarginBottom = totalItems === 0 ? 0 : list.rect.element.marginBottom;\n var visualHeight = currentLabelHeight + listMarginTop + listHeight.visual + listMarginBottom;\n var boundsHeight = currentLabelHeight + listMarginTop + listHeight.bounds + listMarginBottom;\n\n // link list to label bottom position\n list.translateY = Math.max(0, currentLabelHeight - list.rect.element.marginTop) - listItemMargin.top;\n if (aspectRatio) {\n // fixed aspect ratio\n\n // calculate height based on width\n var width = root.rect.element.width;\n var height = width * aspectRatio;\n\n // clear history if aspect ratio has changed\n if (aspectRatio !== root.ref.previousAspectRatio) {\n root.ref.previousAspectRatio = aspectRatio;\n root.ref.updateHistory = [];\n }\n\n // remember this width\n var history = root.ref.updateHistory;\n history.push(width);\n var MAX_BOUNCES = 2;\n if (history.length > MAX_BOUNCES * 2) {\n var l = history.length;\n var bottom = l - 10;\n var bounces = 0;\n for (var i = l; i >= bottom; i--) {\n if (history[i] === history[i - 2]) {\n bounces++;\n }\n if (bounces >= MAX_BOUNCES) {\n // dont adjust height\n return;\n }\n }\n }\n\n // fix height of panel so it adheres to aspect ratio\n panel.scalable = false;\n panel.height = height;\n\n // available height for list\n var listAvailableHeight =\n // the height of the panel minus the label height\n height - currentLabelHeight - (\n // the room we leave open between the end of the list and the panel bottom\n listMarginBottom - listItemMargin.bottom) - (\n // if we're full we need to leave some room between the top of the panel and the list\n atMaxCapacity ? listMarginTop : 0);\n if (listHeight.visual > listAvailableHeight) {\n list.overflow = listAvailableHeight;\n } else {\n list.overflow = null;\n }\n\n // set container bounds (so pushes siblings downwards)\n root.height = height;\n } else if (bounds.fixedHeight) {\n // fixed height\n\n // fix height of panel\n panel.scalable = false;\n\n // available height for list\n var _listAvailableHeight =\n // the height of the panel minus the label height\n bounds.fixedHeight - currentLabelHeight - (\n // the room we leave open between the end of the list and the panel bottom\n listMarginBottom - listItemMargin.bottom) - (\n // if we're full we need to leave some room between the top of the panel and the list\n atMaxCapacity ? listMarginTop : 0);\n\n // set list height\n if (listHeight.visual > _listAvailableHeight) {\n list.overflow = _listAvailableHeight;\n } else {\n list.overflow = null;\n }\n\n // no need to set container bounds as these are handles by CSS fixed height\n } else if (bounds.cappedHeight) {\n // max-height\n\n // not a fixed height panel\n var isCappedHeight = visualHeight >= bounds.cappedHeight;\n var panelHeight = Math.min(bounds.cappedHeight, visualHeight);\n panel.scalable = true;\n panel.height = isCappedHeight ? panelHeight : panelHeight - listItemMargin.top - listItemMargin.bottom;\n\n // available height for list\n var _listAvailableHeight2 =\n // the height of the panel minus the label height\n panelHeight - currentLabelHeight - (\n // the room we leave open between the end of the list and the panel bottom\n listMarginBottom - listItemMargin.bottom) - (\n // if we're full we need to leave some room between the top of the panel and the list\n atMaxCapacity ? listMarginTop : 0);\n\n // set list height (if is overflowing)\n if (visualHeight > bounds.cappedHeight && listHeight.visual > _listAvailableHeight2) {\n list.overflow = _listAvailableHeight2;\n } else {\n list.overflow = null;\n }\n\n // set container bounds (so pushes siblings downwards)\n root.height = Math.min(bounds.cappedHeight, boundsHeight - listItemMargin.top - listItemMargin.bottom);\n } else {\n // flexible height\n\n // not a fixed height panel\n var itemMargin = totalItems > 0 ? listItemMargin.top + listItemMargin.bottom : 0;\n panel.scalable = true;\n panel.height = Math.max(labelHeight, visualHeight - itemMargin);\n\n // set container bounds (so pushes siblings downwards)\n root.height = Math.max(labelHeight, boundsHeight - itemMargin);\n }\n\n // move credits to bottom\n if (root.ref.credits && panel.heightCurrent) root.ref.credits.style.transform = 'translateY(' + panel.heightCurrent + 'px)';\n };\n var calculateListItemMargin = function calculateListItemMargin(root) {\n var item = root.ref.list.childViews[0].childViews[0];\n return item ? {\n top: item.rect.element.marginTop,\n bottom: item.rect.element.marginBottom\n } : {\n top: 0,\n bottom: 0\n };\n };\n var calculateListHeight = function calculateListHeight(root) {\n var visual = 0;\n var bounds = 0;\n\n // get file list reference\n var scrollList = root.ref.list;\n var itemList = scrollList.childViews[0];\n var visibleChildren = itemList.childViews.filter(function (child) {\n return child.rect.element.height;\n });\n var children = root.query('GET_ACTIVE_ITEMS').map(function (item) {\n return visibleChildren.find(function (child) {\n return child.id === item.id;\n });\n }).filter(function (item) {\n return item;\n });\n\n // no children, done!\n if (children.length === 0) return {\n visual: visual,\n bounds: bounds\n };\n var horizontalSpace = itemList.rect.element.width;\n var dragIndex = getItemIndexByPosition(itemList, children, scrollList.dragCoordinates);\n var childRect = children[0].rect.element;\n var itemVerticalMargin = childRect.marginTop + childRect.marginBottom;\n var itemHorizontalMargin = childRect.marginLeft + childRect.marginRight;\n var itemWidth = childRect.width + itemHorizontalMargin;\n var itemHeight = childRect.height + itemVerticalMargin;\n var newItem = typeof dragIndex !== 'undefined' && dragIndex >= 0 ? 1 : 0;\n var removedItem = children.find(function (child) {\n return child.markedForRemoval && child.opacity < 0.45;\n }) ? -1 : 0;\n var verticalItemCount = children.length + newItem + removedItem;\n var itemsPerRow = getItemsPerRow(horizontalSpace, itemWidth);\n\n // stack\n if (itemsPerRow === 1) {\n children.forEach(function (item) {\n var height = item.rect.element.height + itemVerticalMargin;\n bounds += height;\n visual += height * item.opacity;\n });\n }\n // grid\n else {\n bounds = Math.ceil(verticalItemCount / itemsPerRow) * itemHeight;\n visual = bounds;\n }\n return {\n visual: visual,\n bounds: bounds\n };\n };\n var calculateRootBoundingBoxHeight = function calculateRootBoundingBoxHeight(root) {\n var height = root.ref.measureHeight || null;\n var cappedHeight = parseInt(root.style.maxHeight, 10) || null;\n var fixedHeight = height === 0 ? null : height;\n return {\n cappedHeight: cappedHeight,\n fixedHeight: fixedHeight\n };\n };\n var exceedsMaxFiles = function exceedsMaxFiles(root, items) {\n var allowReplace = root.query('GET_ALLOW_REPLACE');\n var allowMultiple = root.query('GET_ALLOW_MULTIPLE');\n var totalItems = root.query('GET_TOTAL_ITEMS');\n var maxItems = root.query('GET_MAX_FILES');\n\n // total amount of items being dragged\n var totalBrowseItems = items.length;\n\n // if does not allow multiple items and dragging more than one item\n if (!allowMultiple && totalBrowseItems > 1) {\n root.dispatch('DID_THROW_MAX_FILES', {\n source: items,\n error: createResponse('warning', 0, 'Max files')\n });\n return true;\n }\n\n // limit max items to one if not allowed to drop multiple items\n maxItems = allowMultiple ? maxItems : 1;\n if (!allowMultiple && allowReplace) {\n // There is only one item, so there is room to replace or add an item\n return false;\n }\n\n // no more room?\n var hasMaxItems = isInt(maxItems);\n if (hasMaxItems && totalItems + totalBrowseItems > maxItems) {\n root.dispatch('DID_THROW_MAX_FILES', {\n source: items,\n error: createResponse('warning', 0, 'Max files')\n });\n return true;\n }\n return false;\n };\n var getDragIndex = function getDragIndex(list, children, position) {\n var itemList = list.childViews[0];\n return getItemIndexByPosition(itemList, children, {\n left: position.scopeLeft - itemList.rect.element.left,\n top: position.scopeTop - (list.rect.outer.top + list.rect.element.marginTop + list.rect.element.scrollTop)\n });\n };\n\n /**\n * Enable or disable file drop functionality\n */\n var toggleDrop = function toggleDrop(root) {\n var isAllowed = root.query('GET_ALLOW_DROP');\n var isDisabled = root.query('GET_DISABLED');\n var enabled = isAllowed && !isDisabled;\n if (enabled && !root.ref.hopper) {\n var hopper = createHopper(root.element, function (items) {\n // allow quick validation of dropped items\n var beforeDropFile = root.query('GET_BEFORE_DROP_FILE') || function () {\n return true;\n };\n\n // all items should be validated by all filters as valid\n var dropValidation = root.query('GET_DROP_VALIDATION');\n return dropValidation ? items.every(function (item) {\n return applyFilters('ALLOW_HOPPER_ITEM', item, {\n query: root.query\n }).every(function (result) {\n return result === true;\n }) && beforeDropFile(item);\n }) : true;\n }, {\n filterItems: function filterItems(items) {\n var ignoredFiles = root.query('GET_IGNORED_FILES');\n return items.filter(function (item) {\n if (isFile(item)) {\n return !ignoredFiles.includes(item.name.toLowerCase());\n }\n return true;\n });\n },\n catchesDropsOnPage: root.query('GET_DROP_ON_PAGE'),\n requiresDropOnElement: root.query('GET_DROP_ON_ELEMENT')\n });\n hopper.onload = function (items, position) {\n // get item children elements and sort based on list sort\n var list = root.ref.list.childViews[0];\n var visibleChildren = list.childViews.filter(function (child) {\n return child.rect.element.height;\n });\n var children = root.query('GET_ACTIVE_ITEMS').map(function (item) {\n return visibleChildren.find(function (child) {\n return child.id === item.id;\n });\n }).filter(function (item) {\n return item;\n });\n applyFilterChain('ADD_ITEMS', items, {\n dispatch: root.dispatch\n }).then(function (queue) {\n // these files don't fit so stop here\n if (exceedsMaxFiles(root, queue)) return false;\n\n // go\n root.dispatch('ADD_ITEMS', {\n items: queue,\n index: getDragIndex(root.ref.list, children, position),\n interactionMethod: InteractionMethod.DROP\n });\n });\n root.dispatch('DID_DROP', {\n position: position\n });\n root.dispatch('DID_END_DRAG', {\n position: position\n });\n };\n hopper.ondragstart = function (position) {\n root.dispatch('DID_START_DRAG', {\n position: position\n });\n };\n hopper.ondrag = debounce(function (position) {\n root.dispatch('DID_DRAG', {\n position: position\n });\n });\n hopper.ondragend = function (position) {\n root.dispatch('DID_END_DRAG', {\n position: position\n });\n };\n root.ref.hopper = hopper;\n root.ref.drip = root.appendChildView(root.createChildView(drip));\n } else if (!enabled && root.ref.hopper) {\n root.ref.hopper.destroy();\n root.ref.hopper = null;\n root.removeChildView(root.ref.drip);\n }\n };\n\n /**\n * Enable or disable browse functionality\n */\n var toggleBrowse = function toggleBrowse(root, props) {\n var isAllowed = root.query('GET_ALLOW_BROWSE');\n var isDisabled = root.query('GET_DISABLED');\n var enabled = isAllowed && !isDisabled;\n if (enabled && !root.ref.browser) {\n root.ref.browser = root.appendChildView(root.createChildView(browser, Object.assign({}, props, {\n onload: function onload(items) {\n applyFilterChain('ADD_ITEMS', items, {\n dispatch: root.dispatch\n }).then(function (queue) {\n // these files don't fit so stop here\n if (exceedsMaxFiles(root, queue)) return false;\n\n // add items!\n root.dispatch('ADD_ITEMS', {\n items: queue,\n index: -1,\n interactionMethod: InteractionMethod.BROWSE\n });\n });\n }\n })), 0);\n } else if (!enabled && root.ref.browser) {\n root.removeChildView(root.ref.browser);\n root.ref.browser = null;\n }\n };\n\n /**\n * Enable or disable paste functionality\n */\n var togglePaste = function togglePaste(root) {\n var isAllowed = root.query('GET_ALLOW_PASTE');\n var isDisabled = root.query('GET_DISABLED');\n var enabled = isAllowed && !isDisabled;\n if (enabled && !root.ref.paster) {\n root.ref.paster = createPaster();\n root.ref.paster.onload = function (items) {\n applyFilterChain('ADD_ITEMS', items, {\n dispatch: root.dispatch\n }).then(function (queue) {\n // these files don't fit so stop here\n if (exceedsMaxFiles(root, queue)) return false;\n\n // add items!\n root.dispatch('ADD_ITEMS', {\n items: queue,\n index: -1,\n interactionMethod: InteractionMethod.PASTE\n });\n });\n };\n } else if (!enabled && root.ref.paster) {\n root.ref.paster.destroy();\n root.ref.paster = null;\n }\n };\n\n /**\n * Route actions\n */\n var route$5 = createRoute({\n DID_SET_ALLOW_BROWSE: function DID_SET_ALLOW_BROWSE(_ref5) {\n var root = _ref5.root,\n props = _ref5.props;\n toggleBrowse(root, props);\n },\n DID_SET_ALLOW_DROP: function DID_SET_ALLOW_DROP(_ref6) {\n var root = _ref6.root;\n toggleDrop(root);\n },\n DID_SET_ALLOW_PASTE: function DID_SET_ALLOW_PASTE(_ref7) {\n var root = _ref7.root;\n togglePaste(root);\n },\n DID_SET_DISABLED: function DID_SET_DISABLED(_ref8) {\n var root = _ref8.root,\n props = _ref8.props;\n toggleDrop(root);\n togglePaste(root);\n toggleBrowse(root, props);\n var isDisabled = root.query('GET_DISABLED');\n if (isDisabled) {\n root.element.dataset.disabled = 'disabled';\n } else {\n // delete root.element.dataset.disabled; <= this does not work on iOS 10\n root.element.removeAttribute('data-disabled');\n }\n }\n });\n var root = createView({\n name: 'root',\n read: function read(_ref9) {\n var root = _ref9.root;\n if (root.ref.measure) {\n root.ref.measureHeight = root.ref.measure.offsetHeight;\n }\n },\n create: create$e,\n write: write$9,\n destroy: function destroy(_ref10) {\n var root = _ref10.root;\n if (root.ref.paster) {\n root.ref.paster.destroy();\n }\n if (root.ref.hopper) {\n root.ref.hopper.destroy();\n }\n root.element.removeEventListener('touchmove', prevent);\n root.element.removeEventListener('gesturestart', prevent);\n },\n mixins: {\n styles: ['height']\n }\n });\n\n // creates the app\n var createApp = function createApp() {\n var initialOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // let element\n var originalElement = null;\n\n // get default options\n var defaultOptions = getOptions();\n\n // create the data store, this will contain all our app info\n var store = createStore(\n // initial state (should be serializable)\n createInitialState(defaultOptions),\n // queries\n [queries, createOptionQueries(defaultOptions)],\n // action handlers\n [actions, createOptionActions(defaultOptions)]);\n\n // set initial options\n store.dispatch('SET_OPTIONS', {\n options: initialOptions\n });\n\n // kick thread if visibility changes\n var visibilityHandler = function visibilityHandler() {\n if (document.hidden) return;\n store.dispatch('KICK');\n };\n document.addEventListener('visibilitychange', visibilityHandler);\n\n // re-render on window resize start and finish\n var resizeDoneTimer = null;\n var isResizing = false;\n var isResizingHorizontally = false;\n var initialWindowWidth = null;\n var currentWindowWidth = null;\n var resizeHandler = function resizeHandler() {\n if (!isResizing) {\n isResizing = true;\n }\n clearTimeout(resizeDoneTimer);\n resizeDoneTimer = setTimeout(function () {\n isResizing = false;\n initialWindowWidth = null;\n currentWindowWidth = null;\n if (isResizingHorizontally) {\n isResizingHorizontally = false;\n store.dispatch('DID_STOP_RESIZE');\n }\n }, 500);\n };\n window.addEventListener('resize', resizeHandler);\n\n // render initial view\n var view = root(store, {\n id: getUniqueId()\n });\n\n //\n // PRIVATE API -------------------------------------------------------------------------------------\n //\n var isResting = false;\n var isHidden = false;\n var readWriteApi = {\n // necessary for update loop\n\n /**\n * Reads from dom (never call manually)\n * @private\n */\n _read: function _read() {\n // test if we're resizing horizontally\n // TODO: see if we can optimize this by measuring root rect\n if (isResizing) {\n currentWindowWidth = window.innerWidth;\n if (!initialWindowWidth) {\n initialWindowWidth = currentWindowWidth;\n }\n if (!isResizingHorizontally && currentWindowWidth !== initialWindowWidth) {\n store.dispatch('DID_START_RESIZE');\n isResizingHorizontally = true;\n }\n }\n if (isHidden && isResting) {\n // test if is no longer hidden\n isResting = view.element.offsetParent === null;\n }\n\n // if resting, no need to read as numbers will still all be correct\n if (isResting) return;\n\n // read view data\n view._read();\n\n // if is hidden we need to know so we exit rest mode when revealed\n isHidden = view.rect.element.hidden;\n },\n /**\n * Writes to dom (never call manually)\n * @private\n */\n _write: function _write(ts) {\n // get all actions from store\n var actions = store.processActionQueue()\n\n // filter out set actions (these will automatically trigger DID_SET)\n .filter(function (action) {\n return !/^SET_/.test(action.type);\n });\n\n // if was idling and no actions stop here\n if (isResting && !actions.length) return;\n\n // some actions might trigger events\n routeActionsToEvents(actions);\n\n // update the view\n isResting = view._write(ts, actions, isResizingHorizontally);\n\n // will clean up all archived items\n removeReleasedItems(store.query('GET_ITEMS'));\n\n // now idling\n if (isResting) {\n store.processDispatchQueue();\n }\n }\n };\n\n //\n // EXPOSE EVENTS -------------------------------------------------------------------------------------\n //\n var createEvent = function createEvent(name) {\n return function (data) {\n // create default event\n var event = {\n type: name\n };\n\n // no data to add\n if (!data) {\n return event;\n }\n\n // copy relevant props\n if (data.hasOwnProperty('error')) {\n event.error = data.error ? Object.assign({}, data.error) : null;\n }\n if (data.status) {\n event.status = Object.assign({}, data.status);\n }\n if (data.file) {\n event.output = data.file;\n }\n\n // only source is available, else add item if possible\n if (data.source) {\n event.file = data.source;\n } else if (data.item || data.id) {\n var item = data.item ? data.item : store.query('GET_ITEM', data.id);\n event.file = item ? createItemAPI(item) : null;\n }\n\n // map all items in a possible items array\n if (data.items) {\n event.items = data.items.map(createItemAPI);\n }\n\n // if this is a progress event add the progress amount\n if (/progress/.test(name)) {\n event.progress = data.progress;\n }\n\n // copy relevant props\n if (data.hasOwnProperty('origin') && data.hasOwnProperty('target')) {\n event.origin = data.origin;\n event.target = data.target;\n }\n return event;\n };\n };\n var eventRoutes = {\n DID_DESTROY: createEvent('destroy'),\n DID_INIT: createEvent('init'),\n DID_THROW_MAX_FILES: createEvent('warning'),\n DID_INIT_ITEM: createEvent('initfile'),\n DID_START_ITEM_LOAD: createEvent('addfilestart'),\n DID_UPDATE_ITEM_LOAD_PROGRESS: createEvent('addfileprogress'),\n DID_LOAD_ITEM: createEvent('addfile'),\n DID_THROW_ITEM_INVALID: [createEvent('error'), createEvent('addfile')],\n DID_THROW_ITEM_LOAD_ERROR: [createEvent('error'), createEvent('addfile')],\n DID_THROW_ITEM_REMOVE_ERROR: [createEvent('error'), createEvent('removefile')],\n DID_PREPARE_OUTPUT: createEvent('preparefile'),\n DID_START_ITEM_PROCESSING: createEvent('processfilestart'),\n DID_UPDATE_ITEM_PROCESS_PROGRESS: createEvent('processfileprogress'),\n DID_ABORT_ITEM_PROCESSING: createEvent('processfileabort'),\n DID_COMPLETE_ITEM_PROCESSING: createEvent('processfile'),\n DID_COMPLETE_ITEM_PROCESSING_ALL: createEvent('processfiles'),\n DID_REVERT_ITEM_PROCESSING: createEvent('processfilerevert'),\n DID_THROW_ITEM_PROCESSING_ERROR: [createEvent('error'), createEvent('processfile')],\n DID_REMOVE_ITEM: createEvent('removefile'),\n DID_UPDATE_ITEMS: createEvent('updatefiles'),\n DID_ACTIVATE_ITEM: createEvent('activatefile'),\n DID_REORDER_ITEMS: createEvent('reorderfiles')\n };\n var exposeEvent = function exposeEvent(event) {\n // create event object to be dispatched\n var detail = Object.assign({\n pond: exports\n }, event);\n delete detail.type;\n view.element.dispatchEvent(new CustomEvent('FilePond:' + event.type, {\n // event info\n detail: detail,\n // event behaviour\n bubbles: true,\n cancelable: true,\n composed: true // triggers listeners outside of shadow root\n }));\n\n // event object to params used for `on()` event handlers and callbacks `oninit()`\n var params = [];\n\n // if is possible error event, make it the first param\n if (event.hasOwnProperty('error')) {\n params.push(event.error);\n }\n\n // file is always section\n if (event.hasOwnProperty('file')) {\n params.push(event.file);\n }\n\n // append other props\n var filtered = ['type', 'error', 'file'];\n Object.keys(event).filter(function (key) {\n return !filtered.includes(key);\n }).forEach(function (key) {\n return params.push(event[key]);\n });\n\n // on(type, () => { })\n exports.fire.apply(exports, [event.type].concat(params));\n\n // oninit = () => {}\n var handler = store.query('GET_ON' + event.type.toUpperCase());\n if (handler) {\n handler.apply(void 0, params);\n }\n };\n var routeActionsToEvents = function routeActionsToEvents(actions) {\n if (!actions.length) return;\n actions.filter(function (action) {\n return eventRoutes[action.type];\n }).forEach(function (action) {\n var routes = eventRoutes[action.type];\n (Array.isArray(routes) ? routes : [routes]).forEach(function (route) {\n // this isn't fantastic, but because of the stacking of settimeouts plugins can handle the did_load before the did_init\n if (action.type === 'DID_INIT_ITEM') {\n exposeEvent(route(action.data));\n } else {\n setTimeout(function () {\n exposeEvent(route(action.data));\n }, 0);\n }\n });\n });\n };\n\n //\n // PUBLIC API -------------------------------------------------------------------------------------\n //\n var setOptions = function setOptions(options) {\n return store.dispatch('SET_OPTIONS', {\n options: options\n });\n };\n var getFile = function getFile(query) {\n return store.query('GET_ACTIVE_ITEM', query);\n };\n var prepareFile = function prepareFile(query) {\n return new Promise(function (resolve, reject) {\n store.dispatch('REQUEST_ITEM_PREPARE', {\n query: query,\n success: function success(item) {\n resolve(item);\n },\n failure: function failure(error) {\n reject(error);\n }\n });\n });\n };\n var addFile = function addFile(source) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new Promise(function (resolve, reject) {\n addFiles([{\n source: source,\n options: options\n }], {\n index: options.index\n }).then(function (items) {\n return resolve(items && items[0]);\n }).catch(reject);\n });\n };\n var isFilePondFile = function isFilePondFile(obj) {\n return obj.file && obj.id;\n };\n var removeFile = function removeFile(query, options) {\n // if only passed options\n if (typeof query === 'object' && !isFilePondFile(query) && !options) {\n options = query;\n query = undefined;\n }\n\n // request item removal\n store.dispatch('REMOVE_ITEM', Object.assign({}, options, {\n query: query\n }));\n\n // see if item has been removed\n return store.query('GET_ACTIVE_ITEM', query) === null;\n };\n var addFiles = function addFiles() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return new Promise(function (resolve, reject) {\n var sources = [];\n var options = {};\n\n // user passed a sources array\n if (isArray(args[0])) {\n sources.push.apply(sources, args[0]);\n Object.assign(options, args[1] || {});\n } else {\n // user passed sources as arguments, last one might be options object\n var lastArgument = args[args.length - 1];\n if (typeof lastArgument === 'object' && !(lastArgument instanceof Blob)) {\n Object.assign(options, args.pop());\n }\n\n // add rest to sources\n sources.push.apply(sources, args);\n }\n store.dispatch('ADD_ITEMS', {\n items: sources,\n index: options.index,\n interactionMethod: InteractionMethod.API,\n success: resolve,\n failure: reject\n });\n });\n };\n var getFiles = function getFiles() {\n return store.query('GET_ACTIVE_ITEMS');\n };\n var processFile = function processFile(query) {\n return new Promise(function (resolve, reject) {\n store.dispatch('REQUEST_ITEM_PROCESSING', {\n query: query,\n success: function success(item) {\n resolve(item);\n },\n failure: function failure(error) {\n reject(error);\n }\n });\n });\n };\n var prepareFiles = function prepareFiles() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n var queries = Array.isArray(args[0]) ? args[0] : args;\n var items = queries.length ? queries : getFiles();\n return Promise.all(items.map(prepareFile));\n };\n var processFiles = function processFiles() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n var queries = Array.isArray(args[0]) ? args[0] : args;\n if (!queries.length) {\n var files = getFiles().filter(function (item) {\n return !(item.status === ItemStatus.IDLE && item.origin === FileOrigin.LOCAL) && item.status !== ItemStatus.PROCESSING && item.status !== ItemStatus.PROCESSING_COMPLETE && item.status !== ItemStatus.PROCESSING_REVERT_ERROR;\n });\n return Promise.all(files.map(processFile));\n }\n return Promise.all(queries.map(processFile));\n };\n var removeFiles = function removeFiles() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n var queries = Array.isArray(args[0]) ? args[0] : args;\n var options;\n if (typeof queries[queries.length - 1] === 'object') {\n options = queries.pop();\n } else if (Array.isArray(args[0])) {\n options = args[1];\n }\n var files = getFiles();\n if (!queries.length) return Promise.all(files.map(function (file) {\n return removeFile(file, options);\n }));\n\n // when removing by index the indexes shift after each file removal so we need to convert indexes to ids\n var mappedQueries = queries.map(function (query) {\n return isNumber(query) ? files[query] ? files[query].id : null : query;\n }).filter(function (query) {\n return query;\n });\n return mappedQueries.map(function (q) {\n return removeFile(q, options);\n });\n };\n var exports = Object.assign({}, on(), {}, readWriteApi, {}, createOptionAPI(store, defaultOptions), {\n /**\n * Override options defined in options object\n * @param options\n */\n setOptions: setOptions,\n /**\n * Load the given file\n * @param source - the source of the file (either a File, base64 data uri or url)\n * @param options - object, { index: 0 }\n */\n addFile: addFile,\n /**\n * Load the given files\n * @param sources - the sources of the files to load\n * @param options - object, { index: 0 }\n */\n addFiles: addFiles,\n /**\n * Returns the file objects matching the given query\n * @param query { string, number, null }\n */\n getFile: getFile,\n /**\n * Upload file with given name\n * @param query { string, number, null }\n */\n processFile: processFile,\n /**\n * Request prepare output for file with given name\n * @param query { string, number, null }\n */\n prepareFile: prepareFile,\n /**\n * Removes a file by its name\n * @param query { string, number, null }\n */\n removeFile: removeFile,\n /**\n * Moves a file to a new location in the files list\n */\n moveFile: function moveFile(query, index) {\n return store.dispatch('MOVE_ITEM', {\n query: query,\n index: index\n });\n },\n /**\n * Returns all files (wrapped in public api)\n */\n getFiles: getFiles,\n /**\n * Starts uploading all files\n */\n processFiles: processFiles,\n /**\n * Clears all files from the files list\n */\n removeFiles: removeFiles,\n /**\n * Starts preparing output of all files\n */\n prepareFiles: prepareFiles,\n /**\n * Sort list of files\n */\n sort: function sort(compare) {\n return store.dispatch('SORT', {\n compare: compare\n });\n },\n /**\n * Browse the file system for a file\n */\n browse: function browse() {\n // needs to be trigger directly as user action needs to be traceable (is not traceable in requestAnimationFrame)\n var input = view.element.querySelector('input[type=file]');\n if (input) {\n input.click();\n }\n },\n /**\n * Destroys the app\n */\n destroy: function destroy() {\n // request destruction\n exports.fire('destroy', view.element);\n\n // stop active processes (file uploads, fetches, stuff like that)\n // loop over items and depending on states call abort for ongoing processes\n store.dispatch('ABORT_ALL');\n\n // destroy view\n view._destroy();\n\n // stop listening to resize\n window.removeEventListener('resize', resizeHandler);\n\n // stop listening to the visiblitychange event\n document.removeEventListener('visibilitychange', visibilityHandler);\n\n // dispatch destroy\n store.dispatch('DID_DESTROY');\n },\n /**\n * Inserts the plugin before the target element\n */\n insertBefore: function insertBefore$1(element) {\n return insertBefore(view.element, element);\n },\n /**\n * Inserts the plugin after the target element\n */\n insertAfter: function insertAfter$1(element) {\n return insertAfter(view.element, element);\n },\n /**\n * Appends the plugin to the target element\n */\n appendTo: function appendTo(element) {\n return element.appendChild(view.element);\n },\n /**\n * Replaces an element with the app\n */\n replaceElement: function replaceElement(element) {\n // insert the app before the element\n insertBefore(view.element, element);\n\n // remove the original element\n element.parentNode.removeChild(element);\n\n // remember original element\n originalElement = element;\n },\n /**\n * Restores the original element\n */\n restoreElement: function restoreElement() {\n if (!originalElement) {\n return; // no element to restore\n }\n\n // restore original element\n insertAfter(originalElement, view.element);\n\n // remove our element\n view.element.parentNode.removeChild(view.element);\n\n // remove reference\n originalElement = null;\n },\n /**\n * Returns true if the app root is attached to given element\n * @param element\n */\n isAttachedTo: function isAttachedTo(element) {\n return view.element === element || originalElement === element;\n },\n /**\n * Returns the root element\n */\n element: {\n get: function get() {\n return view.element;\n }\n },\n /**\n * Returns the current pond status\n */\n status: {\n get: function get() {\n return store.query('GET_STATUS');\n }\n }\n });\n\n // Done!\n store.dispatch('DID_INIT');\n\n // create actual api object\n return createObject(exports);\n };\n var createAppObject = function createAppObject() {\n var customOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // default options\n var defaultOptions = {};\n forin(getOptions(), function (key, value) {\n defaultOptions[key] = value[0];\n });\n\n // set app options\n var app = createApp(Object.assign({}, defaultOptions, {}, customOptions));\n\n // return the plugin instance\n return app;\n };\n var lowerCaseFirstLetter = function lowerCaseFirstLetter(string) {\n return string.charAt(0).toLowerCase() + string.slice(1);\n };\n var attributeNameToPropertyName = function attributeNameToPropertyName(attributeName) {\n return toCamels(attributeName.replace(/^data-/, ''));\n };\n var mapObject = function mapObject(object, propertyMap) {\n // remove unwanted\n forin(propertyMap, function (selector, mapping) {\n forin(object, function (property, value) {\n // create regexp shortcut\n var selectorRegExp = new RegExp(selector);\n\n // tests if\n var matches = selectorRegExp.test(property);\n\n // no match, skip\n if (!matches) {\n return;\n }\n\n // if there's a mapping, the original property is always removed\n delete object[property];\n\n // should only remove, we done!\n if (mapping === false) {\n return;\n }\n\n // move value to new property\n if (isString(mapping)) {\n object[mapping] = value;\n return;\n }\n\n // move to group\n var group = mapping.group;\n if (isObject(mapping) && !object[group]) {\n object[group] = {};\n }\n object[group][lowerCaseFirstLetter(property.replace(selectorRegExp, ''))] = value;\n });\n\n // do submapping\n if (mapping.mapping) {\n mapObject(object[mapping.group], mapping.mapping);\n }\n });\n };\n var getAttributesAsObject = function getAttributesAsObject(node) {\n var attributeMapping = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // turn attributes into object\n var attributes = [];\n forin(node.attributes, function (index) {\n attributes.push(node.attributes[index]);\n });\n var output = attributes.filter(function (attribute) {\n return attribute.name;\n }).reduce(function (obj, attribute) {\n var value = attr(node, attribute.name);\n obj[attributeNameToPropertyName(attribute.name)] = value === attribute.name ? true : value;\n return obj;\n }, {});\n\n // do mapping of object properties\n mapObject(output, attributeMapping);\n return output;\n };\n var createAppAtElement = function createAppAtElement(element) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // how attributes of the input element are mapped to the options for the plugin\n var attributeMapping = {\n // translate to other name\n '^class$': 'className',\n '^multiple$': 'allowMultiple',\n '^capture$': 'captureMethod',\n '^webkitdirectory$': 'allowDirectoriesOnly',\n // group under single property\n '^server': {\n group: 'server',\n mapping: {\n '^process': {\n group: 'process'\n },\n '^revert': {\n group: 'revert'\n },\n '^fetch': {\n group: 'fetch'\n },\n '^restore': {\n group: 'restore'\n },\n '^load': {\n group: 'load'\n }\n }\n },\n // don't include in object\n '^type$': false,\n '^files$': false\n };\n\n // add additional option translators\n applyFilters('SET_ATTRIBUTE_TO_OPTION_MAP', attributeMapping);\n\n // create final options object by setting options object and then overriding options supplied on element\n var mergedOptions = Object.assign({}, options);\n var attributeOptions = getAttributesAsObject(element.nodeName === 'FIELDSET' ? element.querySelector('input[type=file]') : element, attributeMapping);\n\n // merge with options object\n Object.keys(attributeOptions).forEach(function (key) {\n if (isObject(attributeOptions[key])) {\n if (!isObject(mergedOptions[key])) {\n mergedOptions[key] = {};\n }\n Object.assign(mergedOptions[key], attributeOptions[key]);\n } else {\n mergedOptions[key] = attributeOptions[key];\n }\n });\n\n // if parent is a fieldset, get files from parent by selecting all input fields that are not file upload fields\n // these will then be automatically set to the initial files\n mergedOptions.files = (options.files || []).concat(Array.from(element.querySelectorAll('input:not([type=file])')).map(function (input) {\n return {\n source: input.value,\n options: {\n type: input.dataset.type\n }\n };\n }));\n\n // build plugin\n var app = createAppObject(mergedOptions);\n\n // add already selected files\n if (element.files) {\n Array.from(element.files).forEach(function (file) {\n app.addFile(file);\n });\n }\n\n // replace the target element\n app.replaceElement(element);\n\n // expose\n return app;\n };\n\n // if an element is passed, we create the instance at that element, if not, we just create an up object\n var createApp$1 = function createApp() {\n return isNode(arguments.length <= 0 ? undefined : arguments[0]) ? createAppAtElement.apply(void 0, arguments) : createAppObject.apply(void 0, arguments);\n };\n var PRIVATE_METHODS = ['fire', '_read', '_write'];\n var createAppAPI = function createAppAPI(app) {\n var api = {};\n copyObjectPropertiesToObject(app, api, PRIVATE_METHODS);\n return api;\n };\n\n /**\n * Replaces placeholders in given string with replacements\n * @param string - \"Foo {bar}\"\"\n * @param replacements - { \"bar\": 10 }\n */\n var replaceInString = function replaceInString(string, replacements) {\n return string.replace(/(?:{([a-zA-Z]+)})/g, function (match, group) {\n return replacements[group];\n });\n };\n var createWorker = function createWorker(fn) {\n var workerBlob = new Blob(['(', fn.toString(), ')()'], {\n type: 'application/javascript'\n });\n var workerURL = URL.createObjectURL(workerBlob);\n var worker = new Worker(workerURL);\n return {\n transfer: function transfer(message, cb) {},\n post: function post(message, cb, transferList) {\n var id = getUniqueId();\n worker.onmessage = function (e) {\n if (e.data.id === id) {\n cb(e.data.message);\n }\n };\n worker.postMessage({\n id: id,\n message: message\n }, transferList);\n },\n terminate: function terminate() {\n worker.terminate();\n URL.revokeObjectURL(workerURL);\n }\n };\n };\n var loadImage = function loadImage(url) {\n return new Promise(function (resolve, reject) {\n var img = new Image();\n img.onload = function () {\n resolve(img);\n };\n img.onerror = function (e) {\n reject(e);\n };\n img.src = url;\n });\n };\n var renameFile = function renameFile(file, name) {\n var renamedFile = file.slice(0, file.size, file.type);\n renamedFile.lastModifiedDate = file.lastModifiedDate;\n renamedFile.name = name;\n return renamedFile;\n };\n var copyFile = function copyFile(file) {\n return renameFile(file, file.name);\n };\n\n // already registered plugins (can't register twice)\n var registeredPlugins = [];\n\n // pass utils to plugin\n var createAppPlugin = function createAppPlugin(plugin) {\n // already registered\n if (registeredPlugins.includes(plugin)) {\n return;\n }\n\n // remember this plugin\n registeredPlugins.push(plugin);\n\n // setup!\n var pluginOutline = plugin({\n addFilter: addFilter,\n utils: {\n Type: Type,\n forin: forin,\n isString: isString,\n isFile: isFile,\n toNaturalFileSize: toNaturalFileSize,\n replaceInString: replaceInString,\n getExtensionFromFilename: getExtensionFromFilename,\n getFilenameWithoutExtension: getFilenameWithoutExtension,\n guesstimateMimeType: guesstimateMimeType,\n getFileFromBlob: getFileFromBlob,\n getFilenameFromURL: getFilenameFromURL,\n createRoute: createRoute,\n createWorker: createWorker,\n createView: createView,\n createItemAPI: createItemAPI,\n loadImage: loadImage,\n copyFile: copyFile,\n renameFile: renameFile,\n createBlob: createBlob,\n applyFilterChain: applyFilterChain,\n text: text,\n getNumericAspectRatioFromString: getNumericAspectRatioFromString\n },\n views: {\n fileActionButton: fileActionButton\n }\n });\n\n // add plugin options to default options\n extendDefaultOptions(pluginOutline.options);\n };\n\n // feature detection used by supported() method\n var isOperaMini = function isOperaMini() {\n return Object.prototype.toString.call(window.operamini) === '[object OperaMini]';\n };\n var hasPromises = function hasPromises() {\n return 'Promise' in window;\n };\n var hasBlobSlice = function hasBlobSlice() {\n return 'slice' in Blob.prototype;\n };\n var hasCreateObjectURL = function hasCreateObjectURL() {\n return 'URL' in window && 'createObjectURL' in window.URL;\n };\n var hasVisibility = function hasVisibility() {\n return 'visibilityState' in document;\n };\n var hasTiming = function hasTiming() {\n return 'performance' in window;\n }; // iOS 8.x\n var hasCSSSupports = function hasCSSSupports() {\n return 'supports' in (window.CSS || {});\n }; // use to detect Safari 9+\n var isIE11 = function isIE11() {\n return /MSIE|Trident/.test(window.navigator.userAgent);\n };\n var supported = function () {\n // Runs immediately and then remembers result for subsequent calls\n var isSupported =\n // Has to be a browser\n isBrowser() &&\n // Can't run on Opera Mini due to lack of everything\n !isOperaMini() &&\n // Require these APIs to feature detect a modern browser\n hasVisibility() && hasPromises() && hasBlobSlice() && hasCreateObjectURL() && hasTiming() && (\n // doesn't need CSSSupports but is a good way to detect Safari 9+ (we do want to support IE11 though)\n hasCSSSupports() || isIE11());\n return function () {\n return isSupported;\n };\n }();\n\n /**\n * Plugin internal state (over all instances)\n */\n var state = {\n // active app instances, used to redraw the apps and to find the later\n apps: []\n };\n\n // plugin name\n var name = 'filepond';\n\n /**\n * Public Plugin methods\n */\n var fn = function fn() {};\n exports.Status = {};\n exports.FileStatus = {};\n exports.FileOrigin = {};\n exports.OptionTypes = {};\n exports.create = fn;\n exports.destroy = fn;\n exports.parse = fn;\n exports.find = fn;\n exports.registerPlugin = fn;\n exports.getOptions = fn;\n exports.setOptions = fn;\n\n // if not supported, no API\n if (supported()) {\n // start painter and fire load event\n createPainter(function () {\n state.apps.forEach(function (app) {\n return app._read();\n });\n }, function (ts) {\n state.apps.forEach(function (app) {\n return app._write(ts);\n });\n });\n\n // fire loaded event so we know when FilePond is available\n var dispatch = function dispatch() {\n // let others know we have area ready\n document.dispatchEvent(new CustomEvent('FilePond:loaded', {\n detail: {\n supported: supported,\n create: exports.create,\n destroy: exports.destroy,\n parse: exports.parse,\n find: exports.find,\n registerPlugin: exports.registerPlugin,\n setOptions: exports.setOptions\n }\n }));\n\n // clean up event\n document.removeEventListener('DOMContentLoaded', dispatch);\n };\n if (document.readyState !== 'loading') {\n // move to back of execution queue, FilePond should have been exported by then\n setTimeout(function () {\n return dispatch();\n }, 0);\n } else {\n document.addEventListener('DOMContentLoaded', dispatch);\n }\n\n // updates the OptionTypes object based on the current options\n var updateOptionTypes = function updateOptionTypes() {\n return forin(getOptions(), function (key, value) {\n exports.OptionTypes[key] = value[1];\n });\n };\n exports.Status = Object.assign({}, Status);\n exports.FileOrigin = Object.assign({}, FileOrigin);\n exports.FileStatus = Object.assign({}, ItemStatus);\n exports.OptionTypes = {};\n updateOptionTypes();\n\n // create method, creates apps and adds them to the app array\n exports.create = function create() {\n var app = createApp$1.apply(void 0, arguments);\n app.on('destroy', exports.destroy);\n state.apps.push(app);\n return createAppAPI(app);\n };\n\n // destroys apps and removes them from the app array\n exports.destroy = function destroy(hook) {\n // returns true if the app was destroyed successfully\n var indexToRemove = state.apps.findIndex(function (app) {\n return app.isAttachedTo(hook);\n });\n if (indexToRemove >= 0) {\n // remove from apps\n var app = state.apps.splice(indexToRemove, 1)[0];\n\n // restore original dom element\n app.restoreElement();\n return true;\n }\n return false;\n };\n\n // parses the given context for plugins (does not include the context element itself)\n exports.parse = function parse(context) {\n // get all possible hooks\n var matchedHooks = Array.from(context.querySelectorAll('.' + name));\n\n // filter out already active hooks\n var newHooks = matchedHooks.filter(function (newHook) {\n return !state.apps.find(function (app) {\n return app.isAttachedTo(newHook);\n });\n });\n\n // create new instance for each hook\n return newHooks.map(function (hook) {\n return exports.create(hook);\n });\n };\n\n // returns an app based on the given element hook\n exports.find = function find(hook) {\n var app = state.apps.find(function (app) {\n return app.isAttachedTo(hook);\n });\n if (!app) {\n return null;\n }\n return createAppAPI(app);\n };\n\n // adds a plugin extension\n exports.registerPlugin = function registerPlugin() {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n // register plugins\n plugins.forEach(createAppPlugin);\n\n // update OptionTypes, each plugin might have extended the default options\n updateOptionTypes();\n };\n exports.getOptions = function getOptions$1() {\n var opts = {};\n forin(getOptions(), function (key, value) {\n opts[key] = value[0];\n });\n return opts;\n };\n exports.setOptions = function setOptions$1(opts) {\n if (isObject(opts)) {\n // update existing plugins\n state.apps.forEach(function (app) {\n app.setOptions(opts);\n });\n\n // override defaults\n setOptions(opts);\n }\n\n // return new options\n return exports.getOptions();\n };\n }\n exports.supported = supported;\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n});","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { a as elementParents, b as elementOffset } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Keyboard(_ref) {\n let swiper = _ref.swiper,\n extendParams = _ref.extendParams,\n on = _ref.on,\n emit = _ref.emit;\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true\n }\n });\n function handle(event) {\n if (!swiper.enabled) return;\n const rtl = swiper.rtlTranslate;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const el = swiper.el;\n const swiperWidth = el.clientWidth;\n const swiperHeight = el.clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = elementOffset(el);\n if (rtl) swiperOffset.left -= el.scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n document.addEventListener('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n document.removeEventListener('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n Object.assign(swiper.keyboard, {\n enable,\n disable\n });\n}\nexport { Keyboard as default };","import { e as elementChildren, c as createElement } from './utils.mjs';\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\nexport { createElementIfNotDefined as c };","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nfunction Navigation(_ref) {\n let swiper = _ref.swiper,\n extendParams = _ref.extendParams,\n on = _ref.on,\n emit = _ref.emit;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const _swiper$navigation = swiper.navigation,\n nextEl = _swiper$navigation.nextEl,\n prevEl = _swiper$navigation.prevEl;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let _swiper$navigation2 = swiper.navigation,\n nextEl = _swiper$navigation2.nextEl,\n prevEl = _swiper$navigation2.prevEl;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let _swiper$navigation3 = swiper.navigation,\n nextEl = _swiper$navigation3.nextEl,\n prevEl = _swiper$navigation3.prevEl;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (swiper.enabled) {\n update();\n return;\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let _swiper$navigation4 = swiper.navigation,\n nextEl = _swiper$navigation4.nextEl,\n prevEl = _swiper$navigation4.prevEl;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\nexport { Navigation as default };","function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\nexport { classesToSelector as c };","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { f as elementOuterSize, g as elementIndex, a as elementParents } from '../shared/utils.mjs';\nfunction Pagination(_ref) {\n let swiper = _ref.swiper,\n extendParams = _ref.extendParams,\n on = _ref.on,\n emit = _ref.emit;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const bulletActiveClass = swiper.params.pagination.bulletActiveClass;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n swiper.slideToLoop(index);\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n } else if (swiper.isElement) {\n bullet.setAttribute('part', 'bullet');\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (swiper.isElement) {\n bullets.forEach((bulletEl, bulletIndex) => {\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n });\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n }\n }\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `<span class=\"${params.currentClass}\"></span>` + ' / ' + `<span class=\"${params.totalClass}\"></span>`;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.filter(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n })[0];\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(...(params.clickableClass || '').split(' '));\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.classList.remove(...(params.clickableClass || '').split(' '));\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n }\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const el = makeElementsArray(swiper.pagination.el);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}\nexport { Pagination as default };","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { k as isObject, e as elementChildren } from '../shared/utils.mjs';\nfunction Thumb(_ref) {\n let swiper = _ref.swiper,\n extendParams = _ref.extendParams,\n on = _ref.on;\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n swiper.slideToLoop(slideToIndex);\n } else {\n swiper.slideTo(slideToIndex);\n }\n }\n function init() {\n const thumbsParams = swiper.params.thumbs;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper.update();\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach(slideEl => {\n slideEl.classList.add(thumbActiveClass);\n });\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n if (thumbsSwiper.slides[swiper.realIndex + i]) {\n thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\n }\n }\n }\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n const currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0];\n newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ;\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n on('beforeInit', () => {\n const thumbs = swiper.params.thumbs;\n if (!thumbs || !thumbs.swiper) return;\n if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {\n const document = getDocument();\n const getThumbsElementAndInit = () => {\n const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;\n if (thumbsElement && thumbsElement.swiper) {\n thumbs.swiper = thumbsElement.swiper;\n init();\n update(true);\n } else if (thumbsElement) {\n const onThumbsSwiper = e => {\n thumbs.swiper = e.detail[0];\n thumbsElement.removeEventListener('init', onThumbsSwiper);\n init();\n update(true);\n thumbs.swiper.update();\n swiper.update();\n };\n thumbsElement.addEventListener('init', onThumbsSwiper);\n }\n return thumbsElement;\n };\n const watchForThumbsToAppear = () => {\n if (swiper.destroyed) return;\n const thumbsElement = getThumbsElementAndInit();\n if (!thumbsElement) {\n requestAnimationFrame(watchForThumbsToAppear);\n }\n };\n requestAnimationFrame(watchForThumbsToAppear);\n } else {\n init();\n update(true);\n }\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}\nexport { Thumb as default };","import { displayFlashMessage } from '../../util/methods';\nimport { initializeBarRating } from './bar_rating';\nimport { initializeRatingsFormHandler } from './product_rating_form';\nimport { initializeRatingsPaginationHandler } from './product_ratings_pagination';\n\n$(document).on('turbolinks:load', function() {\n\n if ($('.js-product-info').length) {\n var $productTabs = $('.js-product-tabs a.nav-link');\n\n $productTabs.each(function() {\n $(this).on('click', function(e) {\n e.preventDefault();\n let $clickedTab = $(this);\n let $targetElement = $($clickedTab.data('target'));\n let targetURL = $clickedTab.attr('href');\n let $prevActiveTab = $productTabs.filter('.active');\n let $visibleElement = $($prevActiveTab.data('target'));\n\n // deactivate previous tab and hide its target content\n $prevActiveTab.removeClass('active');\n $visibleElement.hide();\n\n // activate clicked tab and show target element\n $clickedTab.addClass('active');\n $targetElement.show();\n\n // retrieve view partial if contents have not been previously loaded\n if (!$targetElement.hasClass('loaded')) {\n loadSectionContent($targetElement, targetURL);\n } \n });\n });\n }\n});\n\nexport function loadSectionContent($targetElement, targetURL, scrollToTop = false) {\n $targetElement.addClass('loading');\n\n if (scrollToTop) {\n $('html, body').animate({ scrollTop: $('.js-product-tabs').offset().top }, 500);\n }\n\n $.ajax({\n method:'GET',\n url: targetURL,\n dataType: 'json',\n success: function(response) {\n // replace target element with returned view partial\n let viewPartial = response['html'];\n let $viewPartial = $(viewPartial)\n $targetElement.replaceWith(viewPartial);\n\n if ($viewPartial.is('#js-tab-content-ratings')) {\n if ($viewPartial.find('.js-new-product-rating-form').length) {\n initializeBarRating('.js-bar-rating');\n initializeRatingsFormHandler();\n }\n\n if ($viewPartial.find('.js-pagyContainer').length) {\n initializeRatingsPaginationHandler();\n }\n }\n },\n error: function(xhr, status, error) {\n $targetElement.removeClass('loading').html('<p class=\"text-danger\">Failed to fetch and load section.</p>');\n displayFlashMessage('danger', error);\n }\n });\n}\n","import * as FilePond from 'filepond';\n\n$(document).on('turbolinks:load', function () {\n\n var $editForm = $('.edit_product');\n if ($editForm.length > 0) {\n checkProductFormCompletion();\n\n $editForm.on('change', 'input', function(e){\n checkProductFormCompletion();\n });\n }\n\n});\n\nexport function checkProductFormCompletion(){\n // 1. PRIMARY INFO\n updateFormCircle('.js-product-circle_primary', productFormPrimaryInfoComplete);\n\n // 2. CATEGORIES\n updateFormCircle('.js-product-circle_categories', productFormCategoriesComplete);\n\n // 3. PRODUCT PAGE (CONTENT)\n updateFormCircle('.js-product-circle_page', productFormPageComplete);\n\n // 4. GALLERY\n updateFormCircle('.js-product-circle_gallery', productFormGalleryComplete);\n\n // 5. FILES\n updateFormCircle('.js-product-circle_files', productFormFilesComplete);\n\n // 6. VARIANTS\n updateFormCircle('.js-product-circle_variations', productFormVariantsComplete);\n\n // 7. DOCUMENTATION\n updateFormCircle('.js-product-circle_documentation', productFormDocumentationComplete);\n\n // 8. COLLABORATORS\n updateFormCircle('.js-product-circle_collaborators', productFormCollaboratorsComplete);\n}\n\nfunction updateFormCircle(circleSelector, methodToCheck){\n var $circle = $(circleSelector);\n if (methodToCheck()){\n $circle.removeClass('far').addClass('fas');\n } else {\n $circle.removeClass('fas').addClass('far');\n }\n}\n\nfunction productFormPrimaryInfoComplete(){\n var title = $.trim($('.js-product-title').val());\n var slug = $.trim($('.js-product-slug').val());\n var price = $('.js-product-price').val();\n\n if (title && title.length > 0 && slug && slug.length > 0 && price && price >= 0) {\n return true;\n }\n return false;\n}\n\nfunction productFormCategoriesComplete(){\n var categoriesCount = $('.product_categories input:checked').length;\n var tagsValue = $('#product_tags').val();\n var versionsCount = $('.product_info_software_versions input:checked').length;\n var licensesCount = $('.product_info_license input:checked').length;\n\n if (categoriesCount > 0 && tagsValue && versionsCount > 0 && licensesCount > 0) {\n return true;\n }\n\n return false;\n}\n\nfunction productFormPageComplete(){\n var contentText = $('.js-product-content').summernote('code');\n if ($.trim(contentText).length > 0) {\n return true;\n }\n\n return false;\n}\n\nfunction productFormGalleryComplete(){\n var $imageInputFeatured = $('.js-imageInputFeatured');\n var $imageInputMulti = $('.js-imageInputMulti');\n var pond = FilePond.find($imageInputFeatured[0]);\n\n var dataFilesFeatured = $imageInputFeatured.data('files');\n var dataFilesMulti = $imageInputMulti.data('files');\n\n if (pond != null) {\n var files = pond.getFiles();\n if (files && files.length > 0) {\n return true;\n }\n }\n else if (pond == null && dataFilesFeatured && dataFilesMulti && dataFilesFeatured.length + dataFilesMulti.length > 4) {\n // FP may not be initialized yet, so check the data we give to it\n return true;\n }\n\n return false;\n}\n\nfunction productFormFilesComplete(){\n // First check if we have previously uploaded files\n var hasDownloads = $('.js-download-wrapper').length || $('.js-download-item').length;\n if (hasDownloads) {\n return true;\n } else {\n // check if we have recently uploaded files\n var pond = FilePond.find($('.js-fileInputDownload')[0]);\n if (pond != null) {\n var files = pond.getFiles();\n if (files && files.length > 0) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction productFormVariantsComplete(){\n var $variants = $('.product-variable-pricing .variant-nested-field');\n if ($variants.length == 0) { return true; }\n\n var validatedCount = 0;\n for (var i=0; i<$variants.length; i++){\n if (validateProductVariant($variants[i])){\n validatedCount++;\n }\n }\n\n if (validatedCount == $variants.length) {\n return true;\n }\n\n return false;\n}\n\nfunction validateProductVariant(container){\n var $container = $(container);\n var title = $container.find('.js-productVariant-title').val();\n var price = parseFloat($container.find('.js-productVariant-price').val());\n\n return (title != null && title.length > 0 && price >= 0);\n}\n\nfunction productFormDocumentationComplete(){\n var docsText = $('.js-product-documentation').summernote('code');\n if ($.trim(docsText).length > 0) {\n return true;\n }\n\n return false;\n}\n\nfunction productFormCollaboratorsComplete(){\n // TODO not sure what to validate, maybe collaborator amounts but we have\n // other handling for that on page load\n return true;\n}\n","export function isTouchDevice() {\n return (('ontouchstart' in window) ||\n (navigator.maxTouchPoints > 0) ||\n (navigator.msMaxTouchPoints > 0));\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 es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","$(document).on('turbolinks:load', function () {\n if ($('.js-bar-rating').length) initializeBarRating('.js-bar-rating');\n});\n\nexport function initializeBarRating(elementSelector) {\n $(elementSelector).barrating({\n \tdeselectable: false,\n theme: 'fontawesome-stars'\n });\n}\n","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, m as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, o as elementNextAll, p as elementPrevAll, i as getTranslate, q as animateCSSModeScroll, n as nextTick, r as showWarning, c as createElement, d as now, t as extend, g as elementIndex, u as deleteProps } from './utils.mjs';\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\nlet deviceCached;\nfunction calcDevice(_temp) {\n let _ref3 = _temp === void 0 ? {} : _temp,\n userAgent = _ref3.userAgent;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const _ua$split$1$split$0$s = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)),\n _ua$split$1$split$0$s2 = _slicedToArray(_ua$split$1$split$0$s, 2),\n major = _ua$split$1$split$0$s2[0],\n minor = _ua$split$1$split$0$s2[1];\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n return {\n isSafari: needPerspectiveFix || isSafari(),\n needPerspectiveFix,\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\nfunction Resize(_ref) {\n let swiper = _ref.swiper,\n on = _ref.on,\n emit = _ref.emit;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const width = swiper.width,\n height = swiper.height;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let contentBoxSize = _ref2.contentBoxSize,\n contentRect = _ref2.contentRect,\n target = _ref2.target;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\nfunction Observer(_ref) {\n let swiper = _ref.swiper,\n extendParams = _ref.extendParams,\n on = _ref.on,\n emit = _ref.emit;\n const observers = [];\n const window = getWindow();\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};\nfunction updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\nfunction updateSlides() {\n const swiper = this;\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const wrapperEl = swiper.wrapperEl,\n slidesEl = swiper.slidesEl,\n swiperSize = swiper.size,\n rtl = swiper.rtlTranslate,\n wrongRTL = swiper.wrongRTL;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slides);\n } else if (swiper.grid) {\n swiper.grid.unsetSlides();\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slides);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[swiper.getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const _slide = slide,\n clientWidth = _slide.clientWidth,\n offsetWidth = _slide.offsetWidth;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\nfunction updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\nfunction updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n const swiper = this;\n const params = swiper.params;\n const slides = swiper.slides,\n rtl = swiper.rtlTranslate,\n snapGrid = swiper.snapGrid;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass);\n });\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides[i].classList.add(params.slideVisibleClass);\n }\n if (isFullyVisible) {\n slides[i].classList.add(params.slideFullyVisibleClass);\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let progress = swiper.progress,\n isBeginning = swiper.isBeginning,\n isEnd = swiper.isEnd,\n progressLoop = swiper.progressLoop;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\nfunction updateSlidesClasses() {\n const swiper = this;\n const slides = swiper.slides,\n params = swiper.params,\n slidesEl = swiper.slidesEl,\n activeIndex = swiper.activeIndex;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n });\n let activeSlide;\n let prevSlide;\n let nextSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n if (gridEnabled) {\n activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0];\n nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0];\n prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0];\n } else {\n activeSlide = slides[activeIndex];\n }\n }\n if (activeSlide) {\n // Active classes\n activeSlide.classList.add(params.slideActiveClass);\n if (gridEnabled) {\n if (nextSlide) {\n nextSlide.classList.add(params.slideNextClass);\n }\n if (prevSlide) {\n prevSlide.classList.add(params.slidePrevClass);\n }\n } else {\n // Next Slide\n nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n if (nextSlide) {\n nextSlide.classList.add(params.slideNextClass);\n }\n\n // Prev Slide\n prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n if (prevSlide) {\n prevSlide.classList.add(params.slidePrevClass);\n }\n }\n }\n swiper.emitSlidesClasses();\n}\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n } else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n });\n }\n }\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\nfunction getActiveIndexByTranslate(swiper) {\n const slidesGrid = swiper.slidesGrid,\n params = swiper.params;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const snapGrid = swiper.snapGrid,\n params = swiper.params,\n previousIndex = swiper.activeIndex,\n previousRealIndex = swiper.realIndex,\n previousSnapIndex = swiper.snapIndex;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex && !swiper.params.loop) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n return;\n }\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (gridEnabled) {\n const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0];\n let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n if (Number.isNaN(activeSlideIndex)) {\n activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n }\n realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n } else if (swiper.slides[activeIndex]) {\n const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n if (slideIndex) {\n realIndex = parseInt(slideIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n}\nfunction updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\nfunction getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const params = swiper.params,\n rtl = swiper.rtlTranslate,\n translate = swiper.translate,\n wrapperEl = swiper.wrapperEl;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const rtl = swiper.rtlTranslate,\n params = swiper.params,\n wrapperEl = swiper.wrapperEl,\n progress = swiper.progress;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const params = swiper.params,\n wrapperEl = swiper.wrapperEl;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\nfunction transitionEmit(_ref) {\n let swiper = _ref.swiper,\n runCallbacks = _ref.runCallbacks,\n direction = _ref.direction,\n step = _ref.step;\n const activeIndex = swiper.activeIndex,\n previousIndex = swiper.previousIndex;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const params = swiper.params;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\nfunction transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const params = swiper.params;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const params = swiper.params,\n snapGrid = swiper.snapGrid,\n slidesGrid = swiper.slidesGrid,\n previousIndex = swiper.previousIndex,\n activeIndex = swiper.activeIndex,\n rtl = swiper.rtlTranslate,\n wrapperEl = swiper.wrapperEl,\n enabled = swiper.enabled;\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // Update Index\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n let targetSlideIndex;\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n } else {\n targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n }\n const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n const centeredSlides = swiper.params.centeredSlides;\n let slidesPerView = swiper.params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n let needLoopFix = cols - targetSlideIndex < slidesPerView;\n if (centeredSlides) {\n needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n }\n if (needLoopFix) {\n const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n swiper.loopFix({\n direction,\n slideTo: true,\n activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n });\n }\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n }\n requestAnimationFrame(() => {\n swiper.slideTo(newIndex, speed, runCallbacks, internal);\n });\n return swiper;\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const enabled = swiper.enabled,\n params = swiper.params,\n animating = swiper.animating;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const params = swiper.params,\n snapGrid = swiper.snapGrid,\n slidesGrid = swiper.slidesGrid,\n rtlTranslate = swiper.rtlTranslate,\n enabled = swiper.enabled,\n animating = swiper.animating;\n if (!enabled) return swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\nfunction slideToClickedSlide() {\n const swiper = this;\n const params = swiper.params,\n slidesEl = swiper.slidesEl;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};\nfunction loopCreate(slideRealIndex) {\n const swiper = this;\n const params = swiper.params,\n slidesEl = swiper.slidesEl;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const initSlides = () => {\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n };\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n const addBlankSlides = amountOfSlides => {\n for (let i = 0; i < amountOfSlides; i += 1) {\n const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\n swiper.slidesEl.append(slideEl);\n }\n };\n if (shouldFillGroup) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else if (shouldFillGrid) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else {\n initSlides();\n }\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}\nfunction loopFix(_temp) {\n let _ref4 = _temp === void 0 ? {} : _temp,\n slideRealIndex = _ref4.slideRealIndex,\n _ref4$slideTo = _ref4.slideTo,\n slideTo = _ref4$slideTo === void 0 ? true : _ref4$slideTo,\n direction = _ref4.direction,\n setTranslate = _ref4.setTranslate,\n activeSlideIndex = _ref4.activeSlideIndex,\n byController = _ref4.byController,\n byMousewheel = _ref4.byMousewheel;\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const slides = swiper.slides,\n allowSlidePrev = swiper.allowSlidePrev,\n allowSlideNext = swiper.allowSlideNext,\n slidesEl = swiper.slidesEl,\n params = swiper.params;\n const centeredSlides = params.centeredSlides;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n let slidesPerView = params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n let loopedSlides = slidesPerGroup;\n if (loopedSlides % slidesPerGroup !== 0) {\n loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n }\n swiper.loopedSlides = loopedSlides + params.loopAdditionalSlides;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n if (slides.length < slidesPerView + loopedSlides) {\n showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');\n } else if (gridEnabled && params.grid.fill === 'row') {\n showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\n }\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\n // prepend last slides before start\n if (activeColIndexWithShift < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n const colIndexToPrepend = cols - index - 1;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n }\n // slides.forEach((slide, slideIndex) => {\n // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n // });\n } else {\n prependSlidesIndexes.push(cols - index - 1);\n }\n }\n } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n slides.forEach((slide, slideIndex) => {\n if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n });\n } else {\n appendSlidesIndexes.push(index);\n }\n }\n }\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\n swiper.slides.forEach((slide, slideIndex) => {\n swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n });\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + slidesPrepended, 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n if (setTranslate) {\n const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix(_objectSpread(_objectSpread({}, loopParams), {}, {\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n }));\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix(_objectSpread(_objectSpread({}, loopParams), {}, {\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n }));\n }\n }\n swiper.emit('loopFix');\n}\nfunction loopDestroy() {\n const swiper = this;\n const params = swiper.params,\n slidesEl = swiper.slidesEl;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction preventEdgeSwipe(swiper, event, startX) {\n const window = getWindow();\n const params = swiper.params;\n const edgeSwipeDetection = params.edgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n return true;\n }\n return false;\n }\n return true;\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const data = swiper.touchEventsData;\n if (e.type === 'pointerdown') {\n if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n return;\n }\n data.pointerId = e.pointerId;\n } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n data.touchId = e.targetTouches[0].identifier;\n }\n if (e.type === 'touchstart') {\n // don't proceed touch event\n preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n return;\n }\n const params = swiper.params,\n touches = swiper.touches,\n enabled = swiper.enabled;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!swiper.wrapperEl.contains(targetEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = e.composedPath ? e.composedPath() : e.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n if (!preventEdgeSwipe(swiper, e, startX)) {\n return;\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const params = swiper.params,\n touches = swiper.touches,\n rtl = swiper.rtlTranslate,\n enabled = swiper.enabled;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (e.type === 'pointermove') {\n if (data.touchId !== null) return; // return from pointer if we use touch\n const id = e.pointerId;\n if (id !== data.pointerId) return;\n }\n let targetTouch;\n if (e.type === 'touchmove') {\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n } else {\n targetTouch = e;\n }\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n touches.previousX = touches.currentX;\n touches.previousY = touches.currentY;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || swiper.zoom && swiper.params.zoom && swiper.params.zoom.enabled) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n new Date().getTime();\n if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n startTranslate: data.currentTranslate\n });\n data.loopSwapReset = true;\n data.startTranslate = data.currentTranslate;\n return;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetTouch;\n const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n if (!isTouchEvent) {\n if (data.touchId !== null) return; // return from pointer if we use touch\n if (e.pointerId !== data.pointerId) return;\n targetTouch = e;\n } else {\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n data.pointerId = null;\n data.touchId = null;\n const params = swiper.params,\n touches = swiper.touches,\n rtl = swiper.rtlTranslate,\n slidesGrid = swiper.slidesGrid,\n enabled = swiper.enabled;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\nfunction onResize() {\n const swiper = this;\n const params = swiper.params,\n el = swiper.el;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const allowSlideNext = swiper.allowSlideNext,\n allowSlidePrev = swiper.allowSlidePrev,\n snapGrid = swiper.snapGrid;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\nfunction onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\nfunction onScroll() {\n const swiper = this;\n const wrapperEl = swiper.wrapperEl,\n rtlTranslate = swiper.rtlTranslate,\n enabled = swiper.enabled;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}\nfunction onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n}\nfunction onDocumentTouchStart() {\n const swiper = this;\n if (swiper.documentTouchHandlerProceeded) return;\n swiper.documentTouchHandlerProceeded = true;\n if (swiper.params.touchReleaseOnEdges) {\n swiper.el.style.touchAction = 'auto';\n }\n}\nconst events = (swiper, method) => {\n const document = getDocument();\n const params = swiper.params,\n el = swiper.el,\n wrapperEl = swiper.wrapperEl,\n device = swiper.device;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n passive: false,\n capture\n });\n el[domMethod]('touchstart', swiper.onTouchStart, {\n passive: false\n });\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('touchmove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('touchend', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('touchcancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const params = swiper.params;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const realIndex = swiper.realIndex,\n initialized = swiper.initialized,\n params = swiper.params,\n el = swiper.el;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n}\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const _points$i = points[i],\n point = _points$i.point,\n value = _points$i.value;\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const classNames = swiper.classNames,\n params = swiper.params,\n rtl = swiper.rtl,\n el = swiper.el,\n device = swiper.device;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\nfunction removeClasses() {\n const swiper = this;\n const el = swiper.el,\n classNames = swiper.classNames;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\nvar classes = {\n addClasses,\n removeClasses\n};\nfunction checkOverflow() {\n const swiper = this;\n const wasLocked = swiper.isLocked,\n params = swiper.params;\n const slidesOffsetBefore = params.slidesOffsetBefore;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n eventsPrefix: 'swiper',\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopAddBlankSlides: true,\n loopAdditionalSlides: 0,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-blank',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideFullyVisibleClass: 'swiper-slide-fully-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n el = args[0];\n params = args[1];\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n pointerId: null,\n touchId: null\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getDirectionLabel(property) {\n if (this.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n getSlideIndex(slideEl) {\n const slidesEl = this.slidesEl,\n params = this.params;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\n }\n recalcSlides() {\n const swiper = this;\n const slidesEl = swiper.slidesEl,\n params = swiper.params;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n if (exact === void 0) {\n exact = false;\n }\n const swiper = this;\n const params = swiper.params,\n slides = swiper.slides,\n slidesGrid = swiper.slidesGrid,\n slidesSizesGrid = swiper.slidesSizesGrid,\n swiperSize = swiper.size,\n activeIndex = swiper.activeIndex;\n let spv = 1;\n if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? slides[activeIndex].swiperSlideSize : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const snapGrid = swiper.snapGrid,\n params = swiper.params;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === 'SWIPER-CONTAINER') {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n const swiper = this;\n const params = swiper.params,\n el = swiper.el,\n wrapperEl = swiper.wrapperEl,\n slides = swiper.slides;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n el.removeAttribute('style');\n wrapperEl.removeAttribute('style');\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n swiper.el.swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport { Swiper as S, defaults as d };","import { displayFlashMessage, showLoadingMessage, hideLoadingMessage } from '../../util/methods';\nimport { loadSectionContent } from './product_page';\n\n$(document).on('turbolinks:load', function() {\n if ($('.js-new-product-rating-form').length) initializeRatingsFormHandler();\n});\n\nexport function initializeRatingsFormHandler() {\n $('.js-new-product-rating-form').on('submit', function(){\n showLoadingMessage('Submitting Rating...');\n }).on('ajax:success', function(e, data, status, xhr) {\n hideLoadingMessage();\n var parsedData = JSON.parse(data);\n\n if (parsedData['success']) {\n // refresh ratings list\n let $ratingsSection = $('#js-tab-content-ratings');\n loadSectionContent($ratingsSection, parsedData['ratings_path'], true);\n\n swal({\n title: \"Thanks!\",\n text: \"We appreciate your rating!\",\n icon: \"success\",\n buttons: {\n confirm: {\n text: \"OK\",\n value: true,\n visible: true,\n className: \"\",\n closeModal: true\n }\n }\n });\n } else {\n swal({\n title: \"Uh Oh!\",\n text: \"Review failed. You are not currently allowed to review products on Blender Market. Please contact support for more information.\",\n icon: \"warning\",\n buttons: {\n confirm: {\n text: \"OK\",\n value: true,\n visible: true,\n className: \"\",\n closeModal: true\n }\n }\n });\n }\n }).on('ajax:error', function(e, xhr, status, error) {\n hideLoadingMessage();\n displayFlashMessage('danger', error);\n });\n}\n","import { loadSectionContent } from './product_page';\n\n$(document).on('turbolinks:load', function() {\n if ($('#js-tab-content-ratings .js-pagyContainer').length) initializeRatingsPaginationHandler();\n});\n\nexport function initializeRatingsPaginationHandler() {\n let $pagyLinks = $('.js-pagyContainer').find('.page-link');\n let $ratingsSection = $('#js-tab-content-ratings');\n\n $pagyLinks.each(function() {\n $(this).on('click', function(e) {\n e.preventDefault();\n let $this = $(this);\n let paginatedRatingsURL = $this.attr('href');\n\n if (!$this.parent().hasClass('active')) {\n loadSectionContent($ratingsSection, paginatedRatingsURL, true);\n }\n });\n });\n}","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","/**!\n * Sortable 1.14.0\n * @author\tRubaXa <trash@rubaxa.org>\n * @author\towenm <owen23355@gmail.com>\n * @license MIT\n */\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n return _typeof(obj);\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nvar version = \"1.14.0\";\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !! /*@__PURE__*/navigator.userAgent.match(pattern);\n }\n}\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\nvar captureMode = {\n capture: false,\n passive: false\n};\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\nfunction matches( /**HTMLElement*/\nel, /**String*/\nselector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n return false;\n}\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\nfunction closest( /**HTMLElement*/\nel, /**String*/\nselector, /**HTMLElement*/\nctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n return null;\n}\nvar R_SPACE = /\\s+/g;\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\nfunction css(el, prop, val) {\n var style = el && el.style;\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n } while (!selfOnly && (el = el.parentNode));\n }\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n\n return matrixFn && new matrixFn(appliedTransforms);\n}\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n return list;\n }\n return [];\n}\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n/**\n * Returns the \"bounding client rect\" of given element\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\n * @param {[HTMLElement]} container The parent the element will be placed in\n * @return {Object} The boundingClientRect of el, with specified adjustments\n */\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n if (el !== window && el.parentNode && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n } while (container = container.parentNode);\n }\n }\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n/**\n * Checks if a side of an element is scrolled past a side of its parents\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\n */\n\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n /* jshint boss:true */\n\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n return false;\n}\n/**\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\n * and non-draggable elements\n * @param {HTMLElement} el The parent element\n * @param {Number} childNum The index of the child\n * @param {Object} options Parent Sortable's options\n * @return {HTMLElement} The child at index childNum, or null if not found\n */\n\nfunction getChild(el, childNum, options, includeDragEl) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && (includeDragEl || children[i] !== Sortable.dragged) && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n currentChild++;\n }\n i++;\n }\n return null;\n}\n/**\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\n * @param {HTMLElement} el Parent element\n * @param {selector} selector Any other elements that should be ignored\n * @return {HTMLElement} The last child, ignoring ghostEl\n */\n\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n return last || null;\n}\n/**\n * Returns the index of an element within its parent for a selected set of\n * elements\n * @param {HTMLElement} el\n * @param {selector} selector\n * @return {number}\n */\n\nfunction index(el, selector) {\n var index = 0;\n if (!el || !el.parentNode) {\n return -1;\n }\n /* jshint boss:true */\n\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n return index;\n}\n/**\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\n * The value is returned in real pixels.\n * @param {HTMLElement} el\n * @return {Array} Offsets in the format of [left, top]\n */\n\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n return [offsetLeft, offsetTop];\n}\n/**\n * Returns the index of the object within the given array\n * @param {Array} arr Array that may or may not hold the object\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\n * @return {Number} The index of the object in the array, or -1\n */\n\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n return -1;\n}\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n } while (elem = elem.parentNode);\n return getWindowScrollingElement();\n}\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n return dst;\n}\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\nvar _throttleTimeout;\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\nvar expando = 'Sortable' + new Date().getTime();\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n var fromRect = _objectSpread2({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n target.toRect = toRect;\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) &&\n // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n } // if fromRect != toRect: animate\n\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n if (!time) {\n time = _this.options.animation;\n }\n _this.animate(target, animatingRect, toRect, time);\n }\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n this.forRepaintDummy = repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\nfunction repaint(target) {\n return target.offsetWidth;\n}\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n plugins.forEach(function (p) {\n if (p.pluginName === plugin.pluginName) {\n throw \"Sortable: Cannot mount plugin \".concat(plugin.pluginName, \" more than once\");\n }\n });\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n this.eventCanceled = false;\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread2({\n sortable: sortable\n }, evt));\n } // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread2({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized; // Add default options from plugin\n\n _extends(defaults, initialized.defaults);\n });\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n var allEventProperties = _objectSpread2(_objectSpread2({}, extraEventProperties), PluginManager.getEventProperties(name, sortable));\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\nvar _excluded = [\"evt\"];\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, _excluded);\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread2({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread2({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\n ghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n _silent = false,\n savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\n supportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return; // false when <= IE11\n\n if (IE11OrLess) {\n return false;\n }\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n }(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n },\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n },\n /**\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\n * @param {Number} x X position\n * @param {Number} y Y position\n * @return {HTMLElement} Element of the first found nearest Sortable\n */\n _detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n var threshold = sortable[expando].options.emptyInsertThreshold;\n if (!threshold || lastChild(sortable)) return;\n var rect = getRect(sortable),\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n if (insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n },\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n var group = {};\n var originalGroup = options.group;\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n },\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n },\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n }; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\nif (documentExists) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n if (nearest) {\n // Create imitation event\n var event = {};\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n nearest[expando]._onDragOver(event);\n }\n }\n};\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n/**\n * @class Sortable\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n this.el = el; // root element\n\n this.options = options = _extends({}, options); // Export instance\n\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window && !Safari,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n _prepareGroup(options); // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n } // Setup drag mode\n\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n } // Bind events\n\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n sortables.push(this.el); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n _extends(this, AnimationStateManager());\n}\nSortable.prototype = /** @lends Sortable.prototype */\n{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart( /** Event|TouchEvent */\n evt) {\n if (!evt.cancelable) return;\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n if (dragEl) {\n return;\n }\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n } // cancel dnd if original target is content editable\n\n if (originalTarget.isContentEditable) {\n return;\n } // Safari ignores further event handling after mousedown\n\n if (!this.nativeDraggable && Safari && target && target.tagName.toUpperCase() === 'SELECT') {\n return;\n }\n target = closest(target, options.draggable, el, false);\n if (target && target.animated) {\n return;\n }\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n } // Get the index of the dragged element within its parent\n\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n } // Prepare `dragstart`\n\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart( /** Event */\n evt, /** Touch */\n touch, /** HTMLElement */\n target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n if (Sortable.eventCanceled) {\n _this._onDrop();\n return;\n } // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n\n _this._disableDelayedDragEvents();\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n } // Bind the events: dragstart/dragend\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n }); // Chosen item\n\n toggleClass(dragEl, options.chosenClass, true);\n }; // Disable \"draggable\"\n\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n pluginEvent('delayStart', this, {\n evt: evt\n }); // Delay is impossible for native DnD in Edge or IE\n\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n return;\n } // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler( /** TouchEvent|PointerEvent **/\n e) {\n var touch = e.touches ? e.touches[0] : e;\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart( /** Event */\n evt, /** Touch */\n touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n awaitingDragStarted = false;\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n var options = this.options; // Apply effect\n\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost(); // Drag start event\n\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n _hideGhostForTarget();\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n target = parent; // store last element\n }\n /* jshint boss:true */ while (parent = parent.parentNode);\n }\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove( /**TouchEvent*/\n evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n this._onDragStart(evt, true);\n }\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options; // Position absolutely\n\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl); // Set transform-origin\n\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart( /**Event*/\n evt, /**boolean*/\n fallback) {\n var _this = this;\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n if (Sortable.eventCanceled) {\n this._onDrop();\n return;\n }\n pluginEvent('setupClone', this);\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n this._hideClone();\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n } // #1143: IFrame support workaround\n\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n _this._hideClone();\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n on(document, 'drop', _this); // #1276 fix:\n\n css(dragEl, 'transform', 'translateZ(0)');\n }\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver( /**Event*/\n evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n if (_silent) return;\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread2({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n } // Capture animation state\n\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n _this.captureAnimationState();\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n } // Return invocation when dragEl is inserted (or completed)\n\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n } // Animation\n\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n } // Null lastTarget if it is not inside a previously swapped element\n\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n } // no bubbling and not fallback\n\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n } // Call when dragEl has been inserted\n\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n ignoreNextClick = false;\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = parentEl !== rootEl) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n if (revert) {\n parentEl = rootEl; // actualization\n\n capture();\n this._hideClone();\n dragOverEvent('revert');\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n return completed(true);\n }\n var elLastChild = lastChild(el, options.draggable);\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // Insert to end of list\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // if there is a last element, it is the target\n\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n if (target) {\n targetRect = getRect(target);\n }\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n el.appendChild(dragEl);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (elLastChild && _ghostIsFirst(evt, vertical, this)) {\n // Insert to start of list\n var firstChild = getChild(el, 0, options, true);\n if (firstChild === dragEl) {\n return completed(false);\n }\n target = firstChild;\n targetRect = getRect(target);\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, false) !== false) {\n capture();\n el.insertBefore(dragEl, firstChild);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n } // If dragEl is already beside target: Do not insert\n\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n parentEl = dragEl.parentNode; // actualization\n // must be done before animation\n\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n changed();\n return completed(true);\n }\n }\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop( /**Event*/\n evt) {\n var el = this.el,\n options = this.options; // Get the index of the dragged element within its parent\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n if (Sortable.eventCanceled) {\n this._nulling();\n return;\n }\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n _cancelNextTick(this.cloneId);\n _cancelNextTick(this._dragStartId); // Unbind events\n\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n this._offMoveEvents();\n this._offUpEvents();\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n css(dragEl, 'transform', '');\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n _disableDraggable(dragEl);\n dragEl.style['will-change'] = ''; // Remove classes\n // ghostClass is added in dragStarted\n\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n }); // Remove event\n\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n }); // drag from one list and drop into another\n\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n }); // Save sorting\n\n this.save();\n }\n }\n }\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent( /**Event*/\n evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n break;\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n _globalDragOver(evt);\n }\n break;\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n /**\n * Serializes the item into an array of string.\n * @returns {String[]}\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n for (; i < n; i++) {\n el = children[i];\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n return order;\n },\n /**\n * Sorts the elements according to the array.\n * @param {String[]} order order of the items\n */\n sort: function sort(order, useAnimation) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n useAnimation && this.captureAnimationState();\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n useAnimation && this.animateAll();\n },\n /**\n * Save the current sorting\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n /**\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\n * @param {HTMLElement} el\n * @param {String} [selector] default: `options.draggable`\n * @returns {HTMLElement|null}\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n /**\n * Set/get option\n * @param {string} name\n * @param {*} [value]\n * @returns {*}\n */\n option: function option(name, value) {\n var options = this.options;\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n /**\n * Destroy\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n } // Remove draggable attributes\n\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n this._onDrop();\n this._disableDelayedDragEvents();\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n return;\n }\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n if (dragEl.parentNode == rootEl && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\nfunction _globalDragOver( /**Event*/\nevt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n evt.cancelable && evt.preventDefault();\n}\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal; // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n return retVal;\n}\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\nfunction _unsilent() {\n _silent = false;\n}\nfunction _ghostIsFirst(evt, vertical, sortable) {\n var rect = getRect(getChild(sortable.el, 0, sortable.options, true));\n var spacer = 10;\n return vertical ? evt.clientX < rect.left - spacer || evt.clientY < rect.top && evt.clientX < rect.right : evt.clientY < rect.top - spacer || evt.clientY < rect.bottom && evt.clientX < rect.left;\n}\nfunction _ghostIsLast(evt, vertical, sortable) {\n var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var spacer = 10;\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n invert = invert || invertSwap;\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n return 0;\n}\n/**\n * Gets the direction dragEl must be swapped relative to target in order to make it\n * seem that dragEl has been \"inserted\" into that element's position\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\n * @return {Number} Direction dragEl must be swapped\n */\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\n * Generate id\n * @param {HTMLElement} el\n * @returns {String}\n * @private\n */\n\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n while (i--) {\n sum += str.charCodeAt(i);\n }\n return sum.toString(36);\n}\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n} // Fixed #973:\n\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n} // Export utils\n\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n/**\n * Get the Sortable instance of an element\n * @param {HTMLElement} element The element\n * @return {Sortable|undefined} The instance of Sortable\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\n * Mount a plugin to Sortable\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\n */\n\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n if (plugin.utils) Sortable.utils = _objectSpread2(_objectSpread2({}, Sortable.utils), plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\n * Create sortable instance\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n}; // Export\n\nSortable.version = version;\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n forceAutoScrollFallback: false,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n }; // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n\n if (fallback || this.options.forceAutoScrollFallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn; // New scroll root, set scrollEl\n\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n var layersOut = 0;\n var currentParent = scrollEl;\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n }\n\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\nfunction Revert() {}\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n this.sortable.animateAll();\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\nfunction Remove() {}\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\nvar lastSwapEl;\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\n multiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\n folding = false,\n // Folding any other time\n dragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n dataTransfer.setData('Text', data);\n }\n };\n }\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n sortable._hideClone();\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n }); // Sort multi-drag elements\n\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n sortable.captureAnimationState();\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n } // Remove all auxiliary multidrag items from el, if sorting enabled\n\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location\n\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden\n\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children; // Multi-drag selection\n\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvt: evt\n }); // Modifier activated, select from last to dragEl\n\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvt: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvt: evt\n });\n }\n } // Multi-drag drop\n\n if (dragStarted && this.isMultiDrag) {\n folding = false; // Do not \"unfold\" after around dragEl if reverted\n\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect; // Prepare unfold animation\n\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n multiDragIndex++;\n }); // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n if (update) {\n dispatchSortableEvent('update');\n }\n }\n } // Must be done after capturing individual rects (scroll bar)\n\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n multiDragSortable = toSortable;\n } // Remove clones if necessary\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return; // Only deselect if selection is in this sortable\n\n if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable\n\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click\n\n if (evt && evt.button !== 0) return;\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvt: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\n * Selects the provided multi-drag item\n * @param {HTMLElement} el The element to be selected\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n multiDragSortable = sortable;\n }\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n /**\n * Deselects the provided multi-drag item\n * @param {HTMLElement} el The element to be deselected\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n }); // multiDragElements will already be sorted if folding\n\n var newIndex;\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n return key;\n }\n }\n });\n}\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n/**\n * Insert multi-drag clones\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\n * @param {HTMLElement} rootEl\n */\n\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","import Swiper from 'swiper';\nimport { Keyboard, Navigation, Pagination, Thumbs } from 'swiper/modules';\n\nlet productImageSwiper;\nlet categorySwiper;\nlet productImageSwiperThumb;\n\n$(document).on('turbolinks:load', function(){\n\n // Image gallery thumbnail swiper initialization\n productImageSwiperThumb = new Swiper('.swiper-image-thumbnail', {\n lazy: true,\n spaceBetween: 8,\n slidesPerView: 8,\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n slideToClickedSlide: true,\n breakpoints: {\n 320: {\n slidesPerView: 3.5\n },\n 480: {\n slidesPerView: 5\n },\n 768: {\n slidesPerView: 8\n },\n },\n });\n\n // Image gallery main swiper initialization\n productImageSwiper = new Swiper ('.swiper-image-gallery', {\n modules: [Navigation, Pagination, Keyboard, Thumbs], // configure Swiper to use modules\n direction: 'horizontal',\n lazy: true,\n loop: true,\n spaceBetween: 0,\n keyboard: {\n enabled: true,\n onlyInViewport: true,\n },\n navigation: {\n prevEl: '.swiper-button-prev' ,\n nextEl: '.swiper-button-next' ,\n },\n thumbs: {\n swiper: productImageSwiperThumb,\n },\n on: {\n afterInit: function () {\n this.initialized = true;\n updateNavigationButtons(this);\n },\n slideChange: function () {\n if (this.initialized) {\n updateNavigationButtons(this);\n }\n }\n }\n });\n\n // Initializes the swiper on category show pages\n categorySwiper = new Swiper ('.swiper-container-category', {\n modules: [Navigation, Keyboard], // configure Swiper to use modules\n direction: 'horizontal',\n keyboard: {\n enabled: true,\n onlyInViewport: true,\n },\n slidesPerView: 1.5, \n spaceBetween: 20,\n breakpoints: {\n 400: {\n slidesPerView: 2\n },\n 768: {\n slidesPerView: 4\n },\n 1024: {\n slidesPerView: 6,\n spaceBetween: 24\n },\n },\n loop: false, // Enable loop mode\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev',\n },\n });\n\n // this is to hide the prev button when on the first slide\n function updateNavigationButtons(swiperInstance) {\n var $swiperPrevButton = $('.swiper-button-prev');\n if (swiperInstance.realIndex === 0) {\n $swiperPrevButton.addClass('d-none');\n } else {\n $swiperPrevButton.removeClass('d-none');\n }\n }\n\n})\n\nexport { productImageSwiper, categorySwiper }\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;\n(function (factory) {\n var registeredInModuleLoader;\n if (typeof define === 'function' && define.amd) {\n define(factory);\n registeredInModuleLoader = true;\n }\n if (typeof exports === 'object') {\n module.exports = factory();\n registeredInModuleLoader = true;\n }\n if (!registeredInModuleLoader) {\n var OldCookies = window.Cookies;\n var api = window.Cookies = factory();\n api.noConflict = function () {\n window.Cookies = OldCookies;\n return api;\n };\n }\n})(function () {\n function extend() {\n var i = 0;\n var result = {};\n for (; i < arguments.length; i++) {\n var attributes = arguments[i];\n for (var key in attributes) {\n result[key] = attributes[key];\n }\n }\n return result;\n }\n function decode(s) {\n return s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n }\n function init(converter) {\n function api() {}\n function set(key, value, attributes) {\n if (typeof document === 'undefined') {\n return;\n }\n attributes = extend({\n path: '/'\n }, api.defaults, attributes);\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n }\n\n // We're using \"expires\" because \"max-age\" is not supported by IE\n attributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n try {\n var result = JSON.stringify(value);\n if (/^[\\{\\[]/.test(result)) {\n value = result;\n }\n } catch (e) {}\n value = converter.write ? converter.write(value, key) : encodeURIComponent(String(value)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n key = encodeURIComponent(String(key)).replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent).replace(/[\\(\\)]/g, escape);\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue;\n }\n stringifiedAttributes += '; ' + attributeName;\n if (attributes[attributeName] === true) {\n continue;\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n return document.cookie = key + '=' + value + stringifiedAttributes;\n }\n function get(key, json) {\n if (typeof document === 'undefined') {\n return;\n }\n var jar = {};\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var i = 0;\n for (; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var cookie = parts.slice(1).join('=');\n if (!json && cookie.charAt(0) === '\"') {\n cookie = cookie.slice(1, -1);\n }\n try {\n var name = decode(parts[0]);\n cookie = (converter.read || converter)(cookie, name) || decode(cookie);\n if (json) {\n try {\n cookie = JSON.parse(cookie);\n } catch (e) {}\n }\n jar[name] = cookie;\n if (key === name) {\n break;\n }\n } catch (e) {}\n }\n return key ? jar[key] : jar;\n }\n api.set = set;\n api.get = function (key) {\n return get(key, false /* read as raw */);\n };\n\n api.getJSON = function (key) {\n return get(key, true /* read as json */);\n };\n\n api.remove = function (key, attributes) {\n set(key, '', extend(attributes, {\n expires: -1\n }));\n };\n api.defaults = {};\n api.withConverter = init;\n return api;\n }\n return init(function () {});\n});","import { displayFlashMessage, showLoadingMessage, hideLoadingMessage } from '../../../util/methods';\n\n$(document).on('turbolinks:load', function() {\n /*\n Besides creating/editing a version, we are combining the following capabilities in the version form without having to reload the page:\n - upload or delete product files\n - create or destroy folders\n - sort/reorganize folders\n - sort/reorganize product files in and out of folders\n */\n\n var $newVersionForm = $('.new_product_version');\n var $versionEditForm = $('.edit_product_version');\n\n if ($newVersionForm.length || $versionEditForm.length) {\n var $versionFilesContainer = $('#js-version-files-container');\n var $downloadsContainer = $('#js-downloads-container');\n var $addFilesBtn = $('#js-add-files');\n var $downloadFolders = $('.js-sortable-folder');\n var $downloadFolderForm = $('form#new_download_folder');\n var $downloadFoldersContainer = $('.js-download-folders-container');\n var $noFolderDownloadsContainer = $('#no-folder-downloads');\n var $addFolderBtn = $('#js-add-folder-btn');\n var $hideFolderFormBtn = $('#js-hide-folder-form-btn');\n var $downloadFormContainer = $('.download-form-container');\n var $folderFormContainer = $('.folder-form-container');\n var $downloadsModal = $('#js-downloads-modal');\n\n /* Nested version downloads -----------------------------------------------*/\n // Code in this section is a work around to make cocoon insert multiple nested fields in one click\n\n // set number of nested fields for cocoon to insert\n $addFilesBtn.data('count', 0);\n\n // queue for keeping track of selected downloads for cocoon insert\n var filesToAdd = new Map();\n\n // for keeping track of already added files\n var nestedFileIDs = [];\n\n $addFilesBtn.on('click', function() {\n showLoadingMessage('Adding selected downloads');\n });\n\n $versionFilesContainer.on('cocoon:before-insert', function(e, itemToInsert) {\n var $itemToInsert = $(itemToInsert);\n\n // get first inserted key-value pair in filesToAdd\n var firstEntry = filesToAdd.entries().next().value;\n\n if ($itemToInsert && firstEntry.length) {\n\n var fileID = firstEntry[0];\n var fileName = firstEntry[1];\n\n // display file name & store file id\n $itemToInsert.find('input.form-control').attr('placeholder', fileName);\n $itemToInsert.find('input[id*=\"download_id\"]').val(fileID);\n }\n }).on('cocoon:after-insert', function(e, insertedItem) {\n var $insertedItem = $(insertedItem);\n var downloadID = $insertedItem.find('input[id*=\"download_id\"]').val();\n\n // remove file from queue and track id\n filesToAdd.delete(downloadID);\n nestedFileIDs.push(downloadID);\n\n // when filesToAdd is empty\n if (!filesToAdd.size) {\n $downloadsModal.modal('hide');\n $addFilesBtn.data('count', filesToAdd.size).addClass('disabled');\n hideLoadingMessage();\n }\n });\n /* End of cocoon-related code -----------------------------------------------*/\n\n /* ---------------------------------------------------------------------------\n We populate and clean out nestedFileIDs on modal show & hide.\n This way we'll always have an updated reference to what's currently in the Version Files section of the form.\n ----------------------------------------------------------------------------*/\n $downloadsModal.on('show.bs.modal', function() {\n // iterate over nested version files to get download_ids of active ones\n $('input[id*=\"download_id\"]').each(function(){\n var $this = $(this);\n var hidden = $this.parent('div.nested-fields').css('display') === 'none';\n if (!hidden) {\n nestedFileIDs.push($this.val());\n }\n });\n\n // preselect downloads that are already added to the version files section\n nestedFileIDs.forEach((downloadID) => $(`.js-download-item-checkbox[value=${downloadID}]`).prop('checked', true)); \n });\n\n $downloadsModal.on('hide.bs.modal', function() {\n nestedFileIDs.forEach((downloadID) => $(`.js-download-item-checkbox[value=${downloadID}]`).prop('checked', false));\n\n // using the splice method to empty out the nestedFileIDs array so our checkbox listeners can still reference this object\n nestedFileIDs.splice(0, nestedFileIDs.length);\n });\n\n /* Download Folder ---------------------------------------------------------*/\n if ($downloadFolders.length) {\n $downloadFolders.each(function() {\n addFolderElementListeners(this, nestedFileIDs, filesToAdd);\n });\n }\n\n $addFolderBtn.on('click', function(e){\n e.preventDefault();\n var $this = $(this);\n $downloadFormContainer.hide();\n $folderFormContainer.show();\n $this.hide();\n $hideFolderFormBtn.show()\n });\n\n $hideFolderFormBtn.on('click', function(e) {\n e.preventDefault();\n var $this = $(this);\n $folderFormContainer.hide();\n $downloadFormContainer.show();\n $this.hide();\n $addFolderBtn.show();\n });\n\n // New folder form\n $downloadFolderForm.on('submit', function() {\n showLoadingMessage('Creating Folder...');\n }).on('ajax:success', function(e, data, status, xhr) {\n hideLoadingMessage();\n var parsedData = JSON.parse(data);\n if (parsedData['success']) {\n var $folder = $(parsedData['html']);\n addFolderElementListeners($folder[0], nestedFileIDs, filesToAdd);\n $downloadFoldersContainer.append($($folder));\n $downloadsContainer.animate({ scrollTop: $folder.offset().top }, 500);\n displayFlashMessage('success', 'Successfully created download folder!');\n $(this)[0].reset();\n $addFolderBtn.trigger('click');\n } else {\n displayFlashMessage('danger', 'Failed to create download folder!');\n }\n });\n /* End of Download Folder-related code --------------------------------------*/\n\n addCheckBoxListeners($noFolderDownloadsContainer, nestedFileIDs, filesToAdd);\n\n $('.js-sortable-download-item').each(function() {\n var $this = $(this);\n var $deleteBtn = $this.find('.js-delete-download');\n var elementName = $this.find('.js-file-name').text();\n addElementRemover($deleteBtn, $this, elementName);\n });\n\n $(document).one('turbolinks:before-cache', function() {\n // Bootstrap's modals break if Turbolinks caches them in their \"open\" state\n // the downloads modal needs to be manually taken down before navigating away\n // can’t rely on the modal('close') method because it’s asynchronous\n if ($('body').hasClass('modal-open')) {\n $downloadsModal.hide().removeAttr('aria-modal').attr('aria-hidden', 'true');\n $('.modal-backdrop').remove();\n $('body').removeClass('modal-open');\n }\n\n // destroy select2 dropdown to prevent duplication on reload\n $('#js-version-variant-select').select2('destroy');\n });\n }\n\n // for deletion of versions\n $('.js-delete-version').each(function() {\n var $this = $(this);\n var $parentElement = $this.closest('tr');\n var elementName = $parentElement.children('td:first').text();\n addElementRemover($this, $parentElement, elementName);\n });\n});\n\nfunction addFolderElementListeners(folderElement, nestedFileIDs, filesToAdd) {\n // sets up necessary listeners for folder nodes\n\n var $folder = $(folderElement);\n var $collapsibleDownloadsContainer = $folder.find('.js-download-items-container');\n var $folderToggler = $folder.find('.folder-toggler');\n var $folderIcon = $folder.find('.folder-icon');\n var $deleteFolderBtn = $folder.find('.js-delete-folder');\n var folderName = $folder.find('.js-folder-name').text();\n\n addCollapsibleListener($collapsibleDownloadsContainer, $folderToggler, $folderIcon);\n addCheckBoxListeners($collapsibleDownloadsContainer, nestedFileIDs, filesToAdd);\n addElementRemover($deleteFolderBtn, $folder, folderName);\n}\n\nfunction addCollapsibleListener($collapsibleDownloadsContainer, $folderToggler, $folderIcon) {\n $collapsibleDownloadsContainer.on('hidden.bs.collapse', function() {\n $folderToggler.html('Open Folder');\n $folderIcon.removeClass('fa-folder-open').addClass('fa-folder');\n });\n\n $collapsibleDownloadsContainer.on('shown.bs.collapse', function() {\n $folderToggler.html('Close Folder');\n $folderIcon.removeClass('fa-folder').addClass('fa-folder-open');\n });\n}\n\nfunction addCheckBoxListeners($downloadItemsContainer, nestedFileIDs, filesToAdd) {\n // takes in a parent node and adds listeners to its children checkboxes\n\n var $addFilesBtn = $('#js-add-files'); // this element keeps track of the number of nested fields cocoon will insert\n var $folderCheckBox = $downloadItemsContainer.closest('.js-sortable-folder').find('.js-download-folder-checkbox');\n\n $downloadItemsContainer.on('change', '.js-download-item-checkbox', function() {\n // every time a download item checkbox is checked/unchecked, we need to cross reference downloads that has already been added (nestedFileIDs)\n // if valid, add/remove file to the queue (filesToAdd) & increase/decrease cocoon counter ($addFilesBtn.data('count'))\n var $checkbox = $(this);\n var downloadID = $checkbox.val();\n var fileName = $checkbox.data('file-name');\n var count = parseInt($addFilesBtn.data('count'));\n if ($checkbox.is(':checked')) {\n if (!nestedFileIDs.includes(downloadID)) {\n filesToAdd.set(downloadID, fileName);\n $addFilesBtn.data('count', count += 1);\n }\n } else {\n // if a download checkbox is being unchecked, uncheck folder checkbox if it is currently checked\n if ($folderCheckBox.length && $folderCheckBox.is(':checked')) {\n $folderCheckBox.prop('checked', false);\n }\n if (count > 0 && !nestedFileIDs.includes(downloadID)) {\n filesToAdd.delete(downloadID);\n $addFilesBtn.data('count', count -= 1);\n }\n }\n\n count ? $addFilesBtn.removeClass('disabled') : $addFilesBtn.addClass('disabled');\n });\n\n if ($folderCheckBox.length) addFolderCheckBoxListener($folderCheckBox, $downloadItemsContainer);\n}\n\nfunction addFolderCheckBoxListener($folderCheckBox, $folderDownloadItemsContainer) {\n // adds a listener that will check/uncheck all download checkboxes when the folder checkbox is checked/unchecked\n\n $folderCheckBox.on('change', function() {\n var $downloadCheckboxes = $folderDownloadItemsContainer.find('.js-download-item-checkbox');\n if ($folderCheckBox.is(':checked')) {\n $downloadCheckboxes.each(function() {\n var $this = $(this);\n if ($this.is(':not(:checked)')) $this.trigger('click');\n })\n } else {\n $downloadCheckboxes.each(function() {\n var $this = $(this);\n if ($this.is(':checked')) $this.trigger('click');\n })\n }\n });\n}\n\nfunction addElementRemover($deleteBtn, $parentElement, elementName){\n $deleteBtn.on('click', function(e) {\n e.preventDefault();\n\n if ($parentElement.hasClass('js-sortable-folder') && folderHasDownloads($parentElement)) {\n swal({\n title: \"\",\n text: \"Can not delete a folder containing file(s)\",\n icon: \"warning\"\n });\n } else {\n swal({\n title: \"\",\n text: `Are you sure you want to delete ${elementName}?`,\n icon: \"warning\",\n buttons: {\n cancel: {\n text: \"Cancel\",\n value: false,\n visible: true,\n className: \"btn btn-dark\",\n closeModal: true,\n },\n confirm: {\n text: \"Delete\",\n value: true,\n visible: true,\n className: \"btn btn-primary\",\n closeModal: true,\n }\n }\n })\n .then((value) => {\n if (value) {\n showLoadingMessage('Deleting file');\n $.ajax({\n url: $deleteBtn.attr('href'),\n method: 'delete',\n dataType: 'json',\n success: function(data) {\n hideLoadingMessage();\n if (data['success']) {\n if ($parentElement.hasClass('js-sortable-download-item')) cleanUpFileReferences($parentElement);\n $parentElement.remove();\n displayFlashMessage('success', data['message']);\n } else {\n displayFlashMessage('danger', data['message']);\n }\n }\n });\n }\n });\n }\n });\n}\n\nfunction cleanUpFileReferences($fileElement) {\n var $checkbox = $fileElement.find('.js-download-item-checkbox');\n var downloadID = $fileElement.data('download-id');\n var $versionFiles = $(`input[id*='download_id'][value=${downloadID}]`);\n\n if ($checkbox.is(':checked')) {\n // trigger listeners to remove file from queue (filesToAdd) & update cocoon counter ($('#js-add-files').data('count'))\n $checkbox.trigger('click');\n }\n\n /*\n We need to remove version files (product_version_downloads) associated with the deleted download\n so it doesn't get sent to the backend and cause an ActiveRecord::RecordNotFound error.\n */\n $versionFiles.each(function() {\n var $this = $(this);\n var $parentElement = $this.parent('div.nested-fields');\n $parentElement.remove();\n })\n}\n\nfunction folderHasDownloads($folder) {\n return $folder.find('.js-sortable-download-item').length ? true : false;\n}\n\nexport function transferFileElementOutOfPond(pond, file, downloadHTML) {\n //newly uploaded files will be appended to a no-folder container\n\n var $downloadsContainer = $('#no-folder-downloads');\n var $downloadElement = $(downloadHTML);\n var $deleteBtn = $downloadElement.find('.js-delete-download');\n var fileName = $downloadElement.find('.js-file-name').text();\n\n addElementRemover($deleteBtn, $downloadElement, fileName);\n $downloadsContainer.append($downloadElement);\n\n //remove local FilePond instance of uploaded file\n if (pond) {\n pond.removeFile(file.id);\n }\n\n // preselect newly added download element\n $downloadElement.find('.js-download-item-checkbox').trigger('click');\n\n //scroll to the newly appended element\n $('#js-downloads-container').animate({ scrollTop: $downloadElement.offset().top }, 500);\n}\n","/*\n * Chartkick.js\n * Create beautiful charts with one line of JavaScript\n * https://github.com/ankane/chartkick.js\n * v3.2.1\n * MIT License\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = global || self, global.Chartkick = factory());\n})(this, function () {\n 'use strict';\n\n function isArray(variable) {\n return Object.prototype.toString.call(variable) === \"[object Array]\";\n }\n function isFunction(variable) {\n return variable instanceof Function;\n }\n function isPlainObject(variable) {\n // protect against prototype pollution, defense 2\n return Object.prototype.toString.call(variable) === \"[object Object]\" && !isFunction(variable) && variable instanceof Object;\n }\n\n // https://github.com/madrobby/zepto/blob/master/src/zepto.js\n function extend(target, source) {\n var key;\n for (key in source) {\n // protect against prototype pollution, defense 1\n if (key === \"__proto__\") {\n continue;\n }\n if (isPlainObject(source[key]) || isArray(source[key])) {\n if (isPlainObject(source[key]) && !isPlainObject(target[key])) {\n target[key] = {};\n }\n if (isArray(source[key]) && !isArray(target[key])) {\n target[key] = [];\n }\n extend(target[key], source[key]);\n } else if (source[key] !== undefined) {\n target[key] = source[key];\n }\n }\n }\n function merge(obj1, obj2) {\n var target = {};\n extend(target, obj1);\n extend(target, obj2);\n return target;\n }\n var DATE_PATTERN = /^(\\d\\d\\d\\d)(-)?(\\d\\d)(-)?(\\d\\d)$/i;\n\n // https://github.com/Do/iso8601.js\n var ISO8601_PATTERN = /(\\d\\d\\d\\d)(-)?(\\d\\d)(-)?(\\d\\d)(T)?(\\d\\d)(:)?(\\d\\d)?(:)?(\\d\\d)?([.,]\\d+)?($|Z|([+-])(\\d\\d)(:)?(\\d\\d)?)/i;\n var DECIMAL_SEPARATOR = String(1.5).charAt(1);\n function parseISO8601(input) {\n var day, hour, matches, milliseconds, minutes, month, offset, result, seconds, type, year;\n type = Object.prototype.toString.call(input);\n if (type === \"[object Date]\") {\n return input;\n }\n if (type !== \"[object String]\") {\n return;\n }\n matches = input.match(ISO8601_PATTERN);\n if (matches) {\n year = parseInt(matches[1], 10);\n month = parseInt(matches[3], 10) - 1;\n day = parseInt(matches[5], 10);\n hour = parseInt(matches[7], 10);\n minutes = matches[9] ? parseInt(matches[9], 10) : 0;\n seconds = matches[11] ? parseInt(matches[11], 10) : 0;\n milliseconds = matches[12] ? parseFloat(DECIMAL_SEPARATOR + matches[12].slice(1)) * 1000 : 0;\n result = Date.UTC(year, month, day, hour, minutes, seconds, milliseconds);\n if (matches[13] && matches[14]) {\n offset = matches[15] * 60;\n if (matches[17]) {\n offset += parseInt(matches[17], 10);\n }\n offset *= matches[14] === \"-\" ? -1 : 1;\n result -= offset * 60 * 1000;\n }\n return new Date(result);\n }\n }\n // end iso8601.js\n\n function negativeValues(series) {\n var i, j, data;\n for (i = 0; i < series.length; i++) {\n data = series[i].data;\n for (j = 0; j < data.length; j++) {\n if (data[j][1] < 0) {\n return true;\n }\n }\n }\n return false;\n }\n function toStr(n) {\n return \"\" + n;\n }\n function toFloat(n) {\n return parseFloat(n);\n }\n function toDate(n) {\n var matches, year, month, day;\n if (typeof n !== \"object\") {\n if (typeof n === \"number\") {\n n = new Date(n * 1000); // ms\n } else {\n n = toStr(n);\n if (matches = n.match(DATE_PATTERN)) {\n year = parseInt(matches[1], 10);\n month = parseInt(matches[3], 10) - 1;\n day = parseInt(matches[5], 10);\n return new Date(year, month, day);\n } else {\n // str\n // try our best to get the str into iso8601\n // TODO be smarter about this\n var str = n.replace(/ /, \"T\").replace(\" \", \"\").replace(\"UTC\", \"Z\");\n n = parseISO8601(str) || new Date(n);\n }\n }\n }\n return n;\n }\n function toArr(n) {\n if (!isArray(n)) {\n var arr = [],\n i;\n for (i in n) {\n if (n.hasOwnProperty(i)) {\n arr.push([i, n[i]]);\n }\n }\n n = arr;\n }\n return n;\n }\n function jsOptionsFunc(defaultOptions, hideLegend, setTitle, setMin, setMax, setStacked, setXtitle, setYtitle) {\n return function (chart, opts, chartOptions) {\n var series = chart.data;\n var options = merge({}, defaultOptions);\n options = merge(options, chartOptions || {});\n if (chart.hideLegend || \"legend\" in opts) {\n hideLegend(options, opts.legend, chart.hideLegend);\n }\n if (opts.title) {\n setTitle(options, opts.title);\n }\n\n // min\n if (\"min\" in opts) {\n setMin(options, opts.min);\n } else if (!negativeValues(series)) {\n setMin(options, 0);\n }\n\n // max\n if (opts.max) {\n setMax(options, opts.max);\n }\n if (\"stacked\" in opts) {\n setStacked(options, opts.stacked);\n }\n if (opts.colors) {\n options.colors = opts.colors;\n }\n if (opts.xtitle) {\n setXtitle(options, opts.xtitle);\n }\n if (opts.ytitle) {\n setYtitle(options, opts.ytitle);\n }\n\n // merge library last\n options = merge(options, opts.library || {});\n return options;\n };\n }\n function sortByTime(a, b) {\n return a[0].getTime() - b[0].getTime();\n }\n function sortByNumberSeries(a, b) {\n return a[0] - b[0];\n }\n function sortByNumber(a, b) {\n return a - b;\n }\n function isMinute(d) {\n return d.getMilliseconds() === 0 && d.getSeconds() === 0;\n }\n function isHour(d) {\n return isMinute(d) && d.getMinutes() === 0;\n }\n function isDay(d) {\n return isHour(d) && d.getHours() === 0;\n }\n function isWeek(d, dayOfWeek) {\n return isDay(d) && d.getDay() === dayOfWeek;\n }\n function isMonth(d) {\n return isDay(d) && d.getDate() === 1;\n }\n function isYear(d) {\n return isMonth(d) && d.getMonth() === 0;\n }\n function isDate(obj) {\n return !isNaN(toDate(obj)) && toStr(obj).length >= 6;\n }\n function isNumber(obj) {\n return typeof obj === \"number\";\n }\n var byteSuffixes = [\"bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\"];\n function formatValue(pre, value, options, axis) {\n pre = pre || \"\";\n if (options.prefix) {\n if (value < 0) {\n value = value * -1;\n pre += \"-\";\n }\n pre += options.prefix;\n }\n var suffix = options.suffix || \"\";\n var precision = options.precision;\n var round = options.round;\n if (options.byteScale) {\n var suffixIdx;\n var baseValue = axis ? options.byteScale : value;\n if (baseValue >= 1152921504606846976) {\n value /= 1152921504606846976;\n suffixIdx = 6;\n } else if (baseValue >= 1125899906842624) {\n value /= 1125899906842624;\n suffixIdx = 5;\n } else if (baseValue >= 1099511627776) {\n value /= 1099511627776;\n suffixIdx = 4;\n } else if (baseValue >= 1073741824) {\n value /= 1073741824;\n suffixIdx = 3;\n } else if (baseValue >= 1048576) {\n value /= 1048576;\n suffixIdx = 2;\n } else if (baseValue >= 1024) {\n value /= 1024;\n suffixIdx = 1;\n } else {\n suffixIdx = 0;\n }\n\n // TODO handle manual precision case\n if (precision === undefined && round === undefined) {\n if (value >= 1023.5) {\n if (suffixIdx < byteSuffixes.length - 1) {\n value = 1.0;\n suffixIdx += 1;\n }\n }\n precision = value >= 1000 ? 4 : 3;\n }\n suffix = \" \" + byteSuffixes[suffixIdx];\n }\n if (precision !== undefined && round !== undefined) {\n throw Error(\"Use either round or precision, not both\");\n }\n if (!axis) {\n if (precision !== undefined) {\n value = value.toPrecision(precision);\n if (!options.zeros) {\n value = parseFloat(value);\n }\n }\n if (round !== undefined) {\n if (round < 0) {\n var num = Math.pow(10, -1 * round);\n value = parseInt((1.0 * value / num).toFixed(0)) * num;\n } else {\n value = value.toFixed(round);\n if (!options.zeros) {\n value = parseFloat(value);\n }\n }\n }\n }\n if (options.thousands || options.decimal) {\n value = toStr(value);\n var parts = value.split(\".\");\n value = parts[0];\n if (options.thousands) {\n value = value.replace(/\\B(?=(\\d{3})+(?!\\d))/g, options.thousands);\n }\n if (parts.length > 1) {\n value += (options.decimal || \".\") + parts[1];\n }\n }\n return pre + value + suffix;\n }\n function seriesOption(chart, series, option) {\n if (option in series) {\n return series[option];\n } else if (option in chart.options) {\n return chart.options[option];\n }\n return null;\n }\n function allZeros(data) {\n var i, j, d;\n for (i = 0; i < data.length; i++) {\n d = data[i].data;\n for (j = 0; j < d.length; j++) {\n if (d[j][1] != 0) {\n return false;\n }\n }\n }\n return true;\n }\n var baseOptions = {\n maintainAspectRatio: false,\n animation: false,\n tooltips: {\n displayColors: false,\n callbacks: {}\n },\n legend: {},\n title: {\n fontSize: 20,\n fontColor: \"#333\"\n }\n };\n var defaultOptions = {\n scales: {\n yAxes: [{\n ticks: {\n maxTicksLimit: 4\n },\n scaleLabel: {\n fontSize: 16,\n // fontStyle: \"bold\",\n fontColor: \"#333\"\n }\n }],\n xAxes: [{\n gridLines: {\n drawOnChartArea: false\n },\n scaleLabel: {\n fontSize: 16,\n // fontStyle: \"bold\",\n fontColor: \"#333\"\n },\n time: {},\n ticks: {}\n }]\n }\n };\n\n // http://there4.io/2012/05/02/google-chart-color-list/\n var defaultColors = [\"#3366CC\", \"#DC3912\", \"#FF9900\", \"#109618\", \"#990099\", \"#3B3EAC\", \"#0099C6\", \"#DD4477\", \"#66AA00\", \"#B82E2E\", \"#316395\", \"#994499\", \"#22AA99\", \"#AAAA11\", \"#6633CC\", \"#E67300\", \"#8B0707\", \"#329262\", \"#5574A6\", \"#651067\"];\n var hideLegend = function (options, legend, hideLegend) {\n if (legend !== undefined) {\n options.legend.display = !!legend;\n if (legend && legend !== true) {\n options.legend.position = legend;\n }\n } else if (hideLegend) {\n options.legend.display = false;\n }\n };\n var setTitle = function (options, title) {\n options.title.display = true;\n options.title.text = title;\n };\n var setMin = function (options, min) {\n if (min !== null) {\n options.scales.yAxes[0].ticks.min = toFloat(min);\n }\n };\n var setMax = function (options, max) {\n options.scales.yAxes[0].ticks.max = toFloat(max);\n };\n var setBarMin = function (options, min) {\n if (min !== null) {\n options.scales.xAxes[0].ticks.min = toFloat(min);\n }\n };\n var setBarMax = function (options, max) {\n options.scales.xAxes[0].ticks.max = toFloat(max);\n };\n var setStacked = function (options, stacked) {\n options.scales.xAxes[0].stacked = !!stacked;\n options.scales.yAxes[0].stacked = !!stacked;\n };\n var setXtitle = function (options, title) {\n options.scales.xAxes[0].scaleLabel.display = true;\n options.scales.xAxes[0].scaleLabel.labelString = title;\n };\n var setYtitle = function (options, title) {\n options.scales.yAxes[0].scaleLabel.display = true;\n options.scales.yAxes[0].scaleLabel.labelString = title;\n };\n\n // https://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb\n var addOpacity = function (hex, opacity) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? \"rgba(\" + parseInt(result[1], 16) + \", \" + parseInt(result[2], 16) + \", \" + parseInt(result[3], 16) + \", \" + opacity + \")\" : hex;\n };\n\n // check if not null or undefined\n // https://stackoverflow.com/a/27757708/1177228\n var notnull = function (x) {\n return x != null;\n };\n var setLabelSize = function (chart, data, options) {\n var maxLabelSize = Math.ceil(chart.element.offsetWidth / 4.0 / data.labels.length);\n if (maxLabelSize > 25) {\n maxLabelSize = 25;\n } else if (maxLabelSize < 10) {\n maxLabelSize = 10;\n }\n if (!options.scales.xAxes[0].ticks.callback) {\n options.scales.xAxes[0].ticks.callback = function (value) {\n value = toStr(value);\n if (value.length > maxLabelSize) {\n return value.substring(0, maxLabelSize - 2) + \"...\";\n } else {\n return value;\n }\n };\n }\n };\n var setFormatOptions = function (chart, options, chartType) {\n var formatOptions = {\n prefix: chart.options.prefix,\n suffix: chart.options.suffix,\n thousands: chart.options.thousands,\n decimal: chart.options.decimal,\n precision: chart.options.precision,\n round: chart.options.round,\n zeros: chart.options.zeros\n };\n if (chart.options.bytes) {\n var series = chart.data;\n if (chartType === \"pie\") {\n series = [{\n data: series\n }];\n }\n\n // calculate max\n var max = 0;\n for (var i = 0; i < series.length; i++) {\n var s = series[i];\n for (var j = 0; j < s.data.length; j++) {\n if (s.data[j][1] > max) {\n max = s.data[j][1];\n }\n }\n }\n\n // calculate scale\n var scale = 1;\n while (max >= 1024) {\n scale *= 1024;\n max /= 1024;\n }\n\n // set step size\n formatOptions.byteScale = scale;\n }\n if (chartType !== \"pie\") {\n var myAxes = options.scales.yAxes;\n if (chartType === \"bar\") {\n myAxes = options.scales.xAxes;\n }\n if (formatOptions.byteScale) {\n if (!myAxes[0].ticks.stepSize) {\n myAxes[0].ticks.stepSize = formatOptions.byteScale / 2;\n }\n if (!myAxes[0].ticks.maxTicksLimit) {\n myAxes[0].ticks.maxTicksLimit = 4;\n }\n }\n if (!myAxes[0].ticks.callback) {\n myAxes[0].ticks.callback = function (value) {\n return formatValue(\"\", value, formatOptions, true);\n };\n }\n }\n if (!options.tooltips.callbacks.label) {\n if (chartType === \"scatter\") {\n options.tooltips.callbacks.label = function (item, data) {\n var label = data.datasets[item.datasetIndex].label || '';\n if (label) {\n label += ': ';\n }\n return label + '(' + item.xLabel + ', ' + item.yLabel + ')';\n };\n } else if (chartType === \"bubble\") {\n options.tooltips.callbacks.label = function (item, data) {\n var label = data.datasets[item.datasetIndex].label || '';\n if (label) {\n label += ': ';\n }\n var dataPoint = data.datasets[item.datasetIndex].data[item.index];\n return label + '(' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.v + ')';\n };\n } else if (chartType === \"pie\") {\n // need to use separate label for pie charts\n options.tooltips.callbacks.label = function (tooltipItem, data) {\n var dataLabel = data.labels[tooltipItem.index];\n var value = ': ';\n if (isArray(dataLabel)) {\n // show value on first line of multiline label\n // need to clone because we are changing the value\n dataLabel = dataLabel.slice();\n dataLabel[0] += value;\n } else {\n dataLabel += value;\n }\n return formatValue(dataLabel, data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index], formatOptions);\n };\n } else {\n var valueLabel = chartType === \"bar\" ? \"xLabel\" : \"yLabel\";\n options.tooltips.callbacks.label = function (tooltipItem, data) {\n var label = data.datasets[tooltipItem.datasetIndex].label || '';\n if (label) {\n label += ': ';\n }\n return formatValue(label, tooltipItem[valueLabel], formatOptions);\n };\n }\n }\n };\n var jsOptions = jsOptionsFunc(merge(baseOptions, defaultOptions), hideLegend, setTitle, setMin, setMax, setStacked, setXtitle, setYtitle);\n var createDataTable = function (chart, options, chartType, library) {\n var datasets = [];\n var labels = [];\n var colors = chart.options.colors || defaultColors;\n var day = true;\n var week = true;\n var dayOfWeek;\n var month = true;\n var year = true;\n var hour = true;\n var minute = true;\n var series = chart.data;\n var max = 0;\n if (chartType === \"bubble\") {\n for (var i$1 = 0; i$1 < series.length; i$1++) {\n var s$1 = series[i$1];\n for (var j$1 = 0; j$1 < s$1.data.length; j$1++) {\n if (s$1.data[j$1][2] > max) {\n max = s$1.data[j$1][2];\n }\n }\n }\n }\n var i,\n j,\n s,\n d,\n key,\n rows = [],\n rows2 = [];\n if (chartType === \"bar\" || chartType === \"column\" || chart.xtype !== \"number\" && chart.xtype !== \"bubble\") {\n var sortedLabels = [];\n for (i = 0; i < series.length; i++) {\n s = series[i];\n for (j = 0; j < s.data.length; j++) {\n d = s.data[j];\n key = chart.xtype == \"datetime\" ? d[0].getTime() : d[0];\n if (!rows[key]) {\n rows[key] = new Array(series.length);\n }\n rows[key][i] = toFloat(d[1]);\n if (sortedLabels.indexOf(key) === -1) {\n sortedLabels.push(key);\n }\n }\n }\n if (chart.xtype === \"datetime\" || chart.xtype === \"number\") {\n sortedLabels.sort(sortByNumber);\n }\n for (j = 0; j < series.length; j++) {\n rows2.push([]);\n }\n var value;\n var k;\n for (k = 0; k < sortedLabels.length; k++) {\n i = sortedLabels[k];\n if (chart.xtype === \"datetime\") {\n value = new Date(toFloat(i));\n // TODO make this efficient\n day = day && isDay(value);\n if (!dayOfWeek) {\n dayOfWeek = value.getDay();\n }\n week = week && isWeek(value, dayOfWeek);\n month = month && isMonth(value);\n year = year && isYear(value);\n hour = hour && isHour(value);\n minute = minute && isMinute(value);\n } else {\n value = i;\n }\n labels.push(value);\n for (j = 0; j < series.length; j++) {\n // Chart.js doesn't like undefined\n rows2[j].push(rows[i][j] === undefined ? null : rows[i][j]);\n }\n }\n } else {\n for (var i$2 = 0; i$2 < series.length; i$2++) {\n var s$2 = series[i$2];\n var d$1 = [];\n for (var j$2 = 0; j$2 < s$2.data.length; j$2++) {\n var point = {\n x: toFloat(s$2.data[j$2][0]),\n y: toFloat(s$2.data[j$2][1])\n };\n if (chartType === \"bubble\") {\n point.r = toFloat(s$2.data[j$2][2]) * 20 / max;\n // custom attribute, for tooltip\n point.v = s$2.data[j$2][2];\n }\n d$1.push(point);\n }\n rows2.push(d$1);\n }\n }\n for (i = 0; i < series.length; i++) {\n s = series[i];\n var color = s.color || colors[i];\n var backgroundColor = chartType !== \"line\" ? addOpacity(color, 0.5) : color;\n var dataset = {\n label: s.name || \"\",\n data: rows2[i],\n fill: chartType === \"area\",\n borderColor: color,\n backgroundColor: backgroundColor,\n pointBackgroundColor: color,\n borderWidth: 2,\n pointHoverBackgroundColor: color\n };\n if (s.stack) {\n dataset.stack = s.stack;\n }\n var curve = seriesOption(chart, s, \"curve\");\n if (curve === false) {\n dataset.lineTension = 0;\n }\n var points = seriesOption(chart, s, \"points\");\n if (points === false) {\n dataset.pointRadius = 0;\n dataset.pointHitRadius = 5;\n }\n dataset = merge(dataset, chart.options.dataset || {});\n dataset = merge(dataset, s.library || {});\n dataset = merge(dataset, s.dataset || {});\n datasets.push(dataset);\n }\n var xmin = chart.options.xmin;\n var xmax = chart.options.xmax;\n if (chart.xtype === \"datetime\") {\n // hacky check for Chart.js >= 2.9.0\n // https://github.com/chartjs/Chart.js/compare/v2.8.0...v2.9.0\n var gte29 = (\"math\" in library.helpers);\n var ticksKey = gte29 ? \"ticks\" : \"time\";\n if (notnull(xmin)) {\n options.scales.xAxes[0][ticksKey].min = toDate(xmin).getTime();\n }\n if (notnull(xmax)) {\n options.scales.xAxes[0][ticksKey].max = toDate(xmax).getTime();\n }\n } else if (chart.xtype === \"number\") {\n if (notnull(xmin)) {\n options.scales.xAxes[0].ticks.min = xmin;\n }\n if (notnull(xmax)) {\n options.scales.xAxes[0].ticks.max = xmax;\n }\n }\n\n // for empty datetime chart\n if (chart.xtype === \"datetime\" && labels.length === 0) {\n if (notnull(xmin)) {\n labels.push(toDate(xmin));\n }\n if (notnull(xmax)) {\n labels.push(toDate(xmax));\n }\n day = false;\n week = false;\n month = false;\n year = false;\n hour = false;\n minute = false;\n }\n if (chart.xtype === \"datetime\" && labels.length > 0) {\n var minTime = (notnull(xmin) ? toDate(xmin) : labels[0]).getTime();\n var maxTime = (notnull(xmax) ? toDate(xmax) : labels[0]).getTime();\n for (i = 1; i < labels.length; i++) {\n var value$1 = labels[i].getTime();\n if (value$1 < minTime) {\n minTime = value$1;\n }\n if (value$1 > maxTime) {\n maxTime = value$1;\n }\n }\n var timeDiff = (maxTime - minTime) / (86400 * 1000.0);\n if (!options.scales.xAxes[0].time.unit) {\n var step;\n if (year || timeDiff > 365 * 10) {\n options.scales.xAxes[0].time.unit = \"year\";\n step = 365;\n } else if (month || timeDiff > 30 * 10) {\n options.scales.xAxes[0].time.unit = \"month\";\n step = 30;\n } else if (day || timeDiff > 10) {\n options.scales.xAxes[0].time.unit = \"day\";\n step = 1;\n } else if (hour || timeDiff > 0.5) {\n options.scales.xAxes[0].time.displayFormats = {\n hour: \"MMM D, h a\"\n };\n options.scales.xAxes[0].time.unit = \"hour\";\n step = 1 / 24.0;\n } else if (minute) {\n options.scales.xAxes[0].time.displayFormats = {\n minute: \"h:mm a\"\n };\n options.scales.xAxes[0].time.unit = \"minute\";\n step = 1 / 24.0 / 60.0;\n }\n if (step && timeDiff > 0) {\n var unitStepSize = Math.ceil(timeDiff / step / (chart.element.offsetWidth / 100.0));\n if (week && step === 1) {\n unitStepSize = Math.ceil(unitStepSize / 7.0) * 7;\n }\n options.scales.xAxes[0].time.unitStepSize = unitStepSize;\n }\n }\n if (!options.scales.xAxes[0].time.tooltipFormat) {\n if (day) {\n options.scales.xAxes[0].time.tooltipFormat = \"ll\";\n } else if (hour) {\n options.scales.xAxes[0].time.tooltipFormat = \"MMM D, h a\";\n } else if (minute) {\n options.scales.xAxes[0].time.tooltipFormat = \"h:mm a\";\n }\n }\n }\n var data = {\n labels: labels,\n datasets: datasets\n };\n return data;\n };\n var defaultExport = function defaultExport(library) {\n this.name = \"chartjs\";\n this.library = library;\n };\n defaultExport.prototype.renderLineChart = function renderLineChart(chart, chartType) {\n var chartOptions = {};\n // fix for https://github.com/chartjs/Chart.js/issues/2441\n if (!chart.options.max && allZeros(chart.data)) {\n chartOptions.max = 1;\n }\n var options = jsOptions(chart, merge(chartOptions, chart.options));\n setFormatOptions(chart, options, chartType);\n var data = createDataTable(chart, options, chartType || \"line\", this.library);\n if (chart.xtype === \"number\") {\n options.scales.xAxes[0].type = \"linear\";\n options.scales.xAxes[0].position = \"bottom\";\n } else {\n options.scales.xAxes[0].type = chart.xtype === \"string\" ? \"category\" : \"time\";\n }\n this.drawChart(chart, \"line\", data, options);\n };\n defaultExport.prototype.renderPieChart = function renderPieChart(chart) {\n var options = merge({}, baseOptions);\n if (chart.options.donut) {\n options.cutoutPercentage = 50;\n }\n if (\"legend\" in chart.options) {\n hideLegend(options, chart.options.legend);\n }\n if (chart.options.title) {\n setTitle(options, chart.options.title);\n }\n options = merge(options, chart.options.library || {});\n setFormatOptions(chart, options, \"pie\");\n var labels = [];\n var values = [];\n for (var i = 0; i < chart.data.length; i++) {\n var point = chart.data[i];\n labels.push(point[0]);\n values.push(point[1]);\n }\n var dataset = {\n data: values,\n backgroundColor: chart.options.colors || defaultColors\n };\n dataset = merge(dataset, chart.options.dataset || {});\n var data = {\n labels: labels,\n datasets: [dataset]\n };\n this.drawChart(chart, \"pie\", data, options);\n };\n defaultExport.prototype.renderColumnChart = function renderColumnChart(chart, chartType) {\n var options;\n if (chartType === \"bar\") {\n var barOptions = merge(baseOptions, defaultOptions);\n delete barOptions.scales.yAxes[0].ticks.maxTicksLimit;\n options = jsOptionsFunc(barOptions, hideLegend, setTitle, setBarMin, setBarMax, setStacked, setXtitle, setYtitle)(chart, chart.options);\n } else {\n options = jsOptions(chart, chart.options);\n }\n setFormatOptions(chart, options, chartType);\n var data = createDataTable(chart, options, \"column\", this.library);\n if (chartType !== \"bar\") {\n setLabelSize(chart, data, options);\n }\n this.drawChart(chart, chartType === \"bar\" ? \"horizontalBar\" : \"bar\", data, options);\n };\n defaultExport.prototype.renderAreaChart = function renderAreaChart(chart) {\n this.renderLineChart(chart, \"area\");\n };\n defaultExport.prototype.renderBarChart = function renderBarChart(chart) {\n this.renderColumnChart(chart, \"bar\");\n };\n defaultExport.prototype.renderScatterChart = function renderScatterChart(chart, chartType) {\n chartType = chartType || \"scatter\";\n var options = jsOptions(chart, chart.options);\n setFormatOptions(chart, options, chartType);\n if (!(\"showLines\" in options)) {\n options.showLines = false;\n }\n var data = createDataTable(chart, options, chartType, this.library);\n options.scales.xAxes[0].type = \"linear\";\n options.scales.xAxes[0].position = \"bottom\";\n this.drawChart(chart, chartType, data, options);\n };\n defaultExport.prototype.renderBubbleChart = function renderBubbleChart(chart) {\n this.renderScatterChart(chart, \"bubble\");\n };\n defaultExport.prototype.destroy = function destroy(chart) {\n if (chart.chart) {\n chart.chart.destroy();\n }\n };\n defaultExport.prototype.drawChart = function drawChart(chart, type, data, options) {\n this.destroy(chart);\n var chartOptions = {\n type: type,\n data: data,\n options: options\n };\n if (chart.options.code) {\n window.console.log(\"new Chart(ctx, \" + JSON.stringify(chartOptions) + \");\");\n }\n chart.element.innerHTML = \"<canvas></canvas>\";\n var ctx = chart.element.getElementsByTagName(\"CANVAS\")[0];\n chart.chart = new this.library(ctx, chartOptions);\n };\n var defaultOptions$1 = {\n chart: {},\n xAxis: {\n title: {\n text: null\n },\n labels: {\n style: {\n fontSize: \"12px\"\n }\n }\n },\n yAxis: {\n title: {\n text: null\n },\n labels: {\n style: {\n fontSize: \"12px\"\n }\n }\n },\n title: {\n text: null\n },\n credits: {\n enabled: false\n },\n legend: {\n borderWidth: 0\n },\n tooltip: {\n style: {\n fontSize: \"12px\"\n }\n },\n plotOptions: {\n areaspline: {},\n area: {},\n series: {\n marker: {}\n }\n }\n };\n var hideLegend$1 = function (options, legend, hideLegend) {\n if (legend !== undefined) {\n options.legend.enabled = !!legend;\n if (legend && legend !== true) {\n if (legend === \"top\" || legend === \"bottom\") {\n options.legend.verticalAlign = legend;\n } else {\n options.legend.layout = \"vertical\";\n options.legend.verticalAlign = \"middle\";\n options.legend.align = legend;\n }\n }\n } else if (hideLegend) {\n options.legend.enabled = false;\n }\n };\n var setTitle$1 = function (options, title) {\n options.title.text = title;\n };\n var setMin$1 = function (options, min) {\n options.yAxis.min = min;\n };\n var setMax$1 = function (options, max) {\n options.yAxis.max = max;\n };\n var setStacked$1 = function (options, stacked) {\n var stackedValue = stacked ? stacked === true ? \"normal\" : stacked : null;\n options.plotOptions.series.stacking = stackedValue;\n options.plotOptions.area.stacking = stackedValue;\n options.plotOptions.areaspline.stacking = stackedValue;\n };\n var setXtitle$1 = function (options, title) {\n options.xAxis.title.text = title;\n };\n var setYtitle$1 = function (options, title) {\n options.yAxis.title.text = title;\n };\n var jsOptions$1 = jsOptionsFunc(defaultOptions$1, hideLegend$1, setTitle$1, setMin$1, setMax$1, setStacked$1, setXtitle$1, setYtitle$1);\n var setFormatOptions$1 = function (chart, options, chartType) {\n var formatOptions = {\n prefix: chart.options.prefix,\n suffix: chart.options.suffix,\n thousands: chart.options.thousands,\n decimal: chart.options.decimal,\n precision: chart.options.precision,\n round: chart.options.round,\n zeros: chart.options.zeros\n };\n if (chartType !== \"pie\" && !options.yAxis.labels.formatter) {\n options.yAxis.labels.formatter = function () {\n return formatValue(\"\", this.value, formatOptions);\n };\n }\n if (!options.tooltip.pointFormatter) {\n options.tooltip.pointFormatter = function () {\n return '<span style=\"color:' + this.color + '\">\\u25CF</span> ' + formatValue(this.series.name + ': <b>', this.y, formatOptions) + '</b><br/>';\n };\n }\n };\n var defaultExport$1 = function defaultExport(library) {\n this.name = \"highcharts\";\n this.library = library;\n };\n defaultExport$1.prototype.renderLineChart = function renderLineChart(chart, chartType) {\n chartType = chartType || \"spline\";\n var chartOptions = {};\n if (chartType === \"areaspline\") {\n chartOptions = {\n plotOptions: {\n areaspline: {\n stacking: \"normal\"\n },\n area: {\n stacking: \"normal\"\n },\n series: {\n marker: {\n enabled: false\n }\n }\n }\n };\n }\n if (chart.options.curve === false) {\n if (chartType === \"areaspline\") {\n chartType = \"area\";\n } else if (chartType === \"spline\") {\n chartType = \"line\";\n }\n }\n var options = jsOptions$1(chart, chart.options, chartOptions),\n data,\n i,\n j;\n options.xAxis.type = chart.xtype === \"string\" ? \"category\" : chart.xtype === \"number\" ? \"linear\" : \"datetime\";\n if (!options.chart.type) {\n options.chart.type = chartType;\n }\n setFormatOptions$1(chart, options, chartType);\n var series = chart.data;\n for (i = 0; i < series.length; i++) {\n series[i].name = series[i].name || \"Value\";\n data = series[i].data;\n if (chart.xtype === \"datetime\") {\n for (j = 0; j < data.length; j++) {\n data[j][0] = data[j][0].getTime();\n }\n }\n series[i].marker = {\n symbol: \"circle\"\n };\n if (chart.options.points === false) {\n series[i].marker.enabled = false;\n }\n }\n this.drawChart(chart, series, options);\n };\n defaultExport$1.prototype.renderScatterChart = function renderScatterChart(chart) {\n var options = jsOptions$1(chart, chart.options, {});\n options.chart.type = \"scatter\";\n this.drawChart(chart, chart.data, options);\n };\n defaultExport$1.prototype.renderPieChart = function renderPieChart(chart) {\n var chartOptions = merge(defaultOptions$1, {});\n if (chart.options.colors) {\n chartOptions.colors = chart.options.colors;\n }\n if (chart.options.donut) {\n chartOptions.plotOptions = {\n pie: {\n innerSize: \"50%\"\n }\n };\n }\n if (\"legend\" in chart.options) {\n hideLegend$1(chartOptions, chart.options.legend);\n }\n if (chart.options.title) {\n setTitle$1(chartOptions, chart.options.title);\n }\n var options = merge(chartOptions, chart.options.library || {});\n setFormatOptions$1(chart, options, \"pie\");\n var series = [{\n type: \"pie\",\n name: chart.options.label || \"Value\",\n data: chart.data\n }];\n this.drawChart(chart, series, options);\n };\n defaultExport$1.prototype.renderColumnChart = function renderColumnChart(chart, chartType) {\n chartType = chartType || \"column\";\n var series = chart.data;\n var options = jsOptions$1(chart, chart.options),\n i,\n j,\n s,\n d,\n rows = [],\n categories = [];\n options.chart.type = chartType;\n setFormatOptions$1(chart, options, chartType);\n for (i = 0; i < series.length; i++) {\n s = series[i];\n for (j = 0; j < s.data.length; j++) {\n d = s.data[j];\n if (!rows[d[0]]) {\n rows[d[0]] = new Array(series.length);\n categories.push(d[0]);\n }\n rows[d[0]][i] = d[1];\n }\n }\n if (chart.xtype === \"number\") {\n categories.sort(sortByNumber);\n }\n options.xAxis.categories = categories;\n var newSeries = [],\n d2;\n for (i = 0; i < series.length; i++) {\n d = [];\n for (j = 0; j < categories.length; j++) {\n d.push(rows[categories[j]][i] || 0);\n }\n d2 = {\n name: series[i].name || \"Value\",\n data: d\n };\n if (series[i].stack) {\n d2.stack = series[i].stack;\n }\n newSeries.push(d2);\n }\n this.drawChart(chart, newSeries, options);\n };\n defaultExport$1.prototype.renderBarChart = function renderBarChart(chart) {\n this.renderColumnChart(chart, \"bar\");\n };\n defaultExport$1.prototype.renderAreaChart = function renderAreaChart(chart) {\n this.renderLineChart(chart, \"areaspline\");\n };\n defaultExport$1.prototype.destroy = function destroy(chart) {\n if (chart.chart) {\n chart.chart.destroy();\n }\n };\n defaultExport$1.prototype.drawChart = function drawChart(chart, data, options) {\n this.destroy(chart);\n options.chart.renderTo = chart.element.id;\n options.series = data;\n if (chart.options.code) {\n window.console.log(\"new Highcharts.Chart(\" + JSON.stringify(options) + \");\");\n }\n chart.chart = new this.library.Chart(options);\n };\n var loaded = {};\n var callbacks = [];\n\n // Set chart options\n var defaultOptions$2 = {\n chartArea: {},\n fontName: \"'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif\",\n pointSize: 6,\n legend: {\n textStyle: {\n fontSize: 12,\n color: \"#444\"\n },\n alignment: \"center\",\n position: \"right\"\n },\n curveType: \"function\",\n hAxis: {\n textStyle: {\n color: \"#666\",\n fontSize: 12\n },\n titleTextStyle: {},\n gridlines: {\n color: \"transparent\"\n },\n baselineColor: \"#ccc\",\n viewWindow: {}\n },\n vAxis: {\n textStyle: {\n color: \"#666\",\n fontSize: 12\n },\n titleTextStyle: {},\n baselineColor: \"#ccc\",\n viewWindow: {}\n },\n tooltip: {\n textStyle: {\n color: \"#666\",\n fontSize: 12\n }\n }\n };\n var hideLegend$2 = function (options, legend, hideLegend) {\n if (legend !== undefined) {\n var position;\n if (!legend) {\n position = \"none\";\n } else if (legend === true) {\n position = \"right\";\n } else {\n position = legend;\n }\n options.legend.position = position;\n } else if (hideLegend) {\n options.legend.position = \"none\";\n }\n };\n var setTitle$2 = function (options, title) {\n options.title = title;\n options.titleTextStyle = {\n color: \"#333\",\n fontSize: \"20px\"\n };\n };\n var setMin$2 = function (options, min) {\n options.vAxis.viewWindow.min = min;\n };\n var setMax$2 = function (options, max) {\n options.vAxis.viewWindow.max = max;\n };\n var setBarMin$1 = function (options, min) {\n options.hAxis.viewWindow.min = min;\n };\n var setBarMax$1 = function (options, max) {\n options.hAxis.viewWindow.max = max;\n };\n var setStacked$2 = function (options, stacked) {\n options.isStacked = stacked ? stacked : false;\n };\n var setXtitle$2 = function (options, title) {\n options.hAxis.title = title;\n options.hAxis.titleTextStyle.italic = false;\n };\n var setYtitle$2 = function (options, title) {\n options.vAxis.title = title;\n options.vAxis.titleTextStyle.italic = false;\n };\n var jsOptions$2 = jsOptionsFunc(defaultOptions$2, hideLegend$2, setTitle$2, setMin$2, setMax$2, setStacked$2, setXtitle$2, setYtitle$2);\n var resize = function (callback) {\n if (window.attachEvent) {\n window.attachEvent(\"onresize\", callback);\n } else if (window.addEventListener) {\n window.addEventListener(\"resize\", callback, true);\n }\n callback();\n };\n var defaultExport$2 = function defaultExport(library) {\n this.name = \"google\";\n this.library = library;\n };\n defaultExport$2.prototype.renderLineChart = function renderLineChart(chart) {\n var this$1 = this;\n this.waitForLoaded(chart, function () {\n var chartOptions = {};\n if (chart.options.curve === false) {\n chartOptions.curveType = \"none\";\n }\n if (chart.options.points === false) {\n chartOptions.pointSize = 0;\n }\n var options = jsOptions$2(chart, chart.options, chartOptions);\n var data = this$1.createDataTable(chart.data, chart.xtype);\n this$1.drawChart(chart, \"LineChart\", data, options);\n });\n };\n defaultExport$2.prototype.renderPieChart = function renderPieChart(chart) {\n var this$1 = this;\n this.waitForLoaded(chart, function () {\n var chartOptions = {\n chartArea: {\n top: \"10%\",\n height: \"80%\"\n },\n legend: {}\n };\n if (chart.options.colors) {\n chartOptions.colors = chart.options.colors;\n }\n if (chart.options.donut) {\n chartOptions.pieHole = 0.5;\n }\n if (\"legend\" in chart.options) {\n hideLegend$2(chartOptions, chart.options.legend);\n }\n if (chart.options.title) {\n setTitle$2(chartOptions, chart.options.title);\n }\n var options = merge(merge(defaultOptions$2, chartOptions), chart.options.library || {});\n var data = new this$1.library.visualization.DataTable();\n data.addColumn(\"string\", \"\");\n data.addColumn(\"number\", \"Value\");\n data.addRows(chart.data);\n this$1.drawChart(chart, \"PieChart\", data, options);\n });\n };\n defaultExport$2.prototype.renderColumnChart = function renderColumnChart(chart) {\n var this$1 = this;\n this.waitForLoaded(chart, function () {\n var options = jsOptions$2(chart, chart.options);\n var data = this$1.createDataTable(chart.data, chart.xtype);\n this$1.drawChart(chart, \"ColumnChart\", data, options);\n });\n };\n defaultExport$2.prototype.renderBarChart = function renderBarChart(chart) {\n var this$1 = this;\n this.waitForLoaded(chart, function () {\n var chartOptions = {\n hAxis: {\n gridlines: {\n color: \"#ccc\"\n }\n }\n };\n var options = jsOptionsFunc(defaultOptions$2, hideLegend$2, setTitle$2, setBarMin$1, setBarMax$1, setStacked$2, setXtitle$2, setYtitle$2)(chart, chart.options, chartOptions);\n var data = this$1.createDataTable(chart.data, chart.xtype);\n this$1.drawChart(chart, \"BarChart\", data, options);\n });\n };\n defaultExport$2.prototype.renderAreaChart = function renderAreaChart(chart) {\n var this$1 = this;\n this.waitForLoaded(chart, function () {\n var chartOptions = {\n isStacked: true,\n pointSize: 0,\n areaOpacity: 0.5\n };\n var options = jsOptions$2(chart, chart.options, chartOptions);\n var data = this$1.createDataTable(chart.data, chart.xtype);\n this$1.drawChart(chart, \"AreaChart\", data, options);\n });\n };\n defaultExport$2.prototype.renderGeoChart = function renderGeoChart(chart) {\n var this$1 = this;\n this.waitForLoaded(chart, \"geochart\", function () {\n var chartOptions = {\n legend: \"none\",\n colorAxis: {\n colors: chart.options.colors || [\"#f6c7b6\", \"#ce502d\"]\n }\n };\n var options = merge(merge(defaultOptions$2, chartOptions), chart.options.library || {});\n var data = new this$1.library.visualization.DataTable();\n data.addColumn(\"string\", \"\");\n data.addColumn(\"number\", chart.options.label || \"Value\");\n data.addRows(chart.data);\n this$1.drawChart(chart, \"GeoChart\", data, options);\n });\n };\n defaultExport$2.prototype.renderScatterChart = function renderScatterChart(chart) {\n var this$1 = this;\n this.waitForLoaded(chart, function () {\n var chartOptions = {};\n var options = jsOptions$2(chart, chart.options, chartOptions);\n var series = chart.data,\n rows2 = [],\n i,\n j,\n data,\n d;\n for (i = 0; i < series.length; i++) {\n series[i].name = series[i].name || \"Value\";\n d = series[i].data;\n for (j = 0; j < d.length; j++) {\n var row = new Array(series.length + 1);\n row[0] = d[j][0];\n row[i + 1] = d[j][1];\n rows2.push(row);\n }\n }\n data = new this$1.library.visualization.DataTable();\n data.addColumn(\"number\", \"\");\n for (i = 0; i < series.length; i++) {\n data.addColumn(\"number\", series[i].name);\n }\n data.addRows(rows2);\n this$1.drawChart(chart, \"ScatterChart\", data, options);\n });\n };\n defaultExport$2.prototype.renderTimeline = function renderTimeline(chart) {\n var this$1 = this;\n this.waitForLoaded(chart, \"timeline\", function () {\n var chartOptions = {\n legend: \"none\"\n };\n if (chart.options.colors) {\n chartOptions.colors = chart.options.colors;\n }\n var options = merge(merge(defaultOptions$2, chartOptions), chart.options.library || {});\n var data = new this$1.library.visualization.DataTable();\n data.addColumn({\n type: \"string\",\n id: \"Name\"\n });\n data.addColumn({\n type: \"date\",\n id: \"Start\"\n });\n data.addColumn({\n type: \"date\",\n id: \"End\"\n });\n data.addRows(chart.data);\n chart.element.style.lineHeight = \"normal\";\n this$1.drawChart(chart, \"Timeline\", data, options);\n });\n };\n defaultExport$2.prototype.destroy = function destroy(chart) {\n if (chart.chart) {\n chart.chart.clearChart();\n }\n };\n defaultExport$2.prototype.drawChart = function drawChart(chart, type, data, options) {\n this.destroy(chart);\n if (chart.options.code) {\n window.console.log(\"var data = new google.visualization.DataTable(\" + data.toJSON() + \");\\nvar chart = new google.visualization.\" + type + \"(element);\\nchart.draw(data, \" + JSON.stringify(options) + \");\");\n }\n chart.chart = new this.library.visualization[type](chart.element);\n resize(function () {\n chart.chart.draw(data, options);\n });\n };\n defaultExport$2.prototype.waitForLoaded = function waitForLoaded(chart, pack, callback) {\n var this$1 = this;\n if (!callback) {\n callback = pack;\n pack = \"corechart\";\n }\n callbacks.push({\n pack: pack,\n callback: callback\n });\n if (loaded[pack]) {\n this.runCallbacks();\n } else {\n loaded[pack] = true;\n\n // https://groups.google.com/forum/#!topic/google-visualization-api/fMKJcyA2yyI\n var loadOptions = {\n packages: [pack],\n callback: function () {\n this$1.runCallbacks();\n }\n };\n var config = chart.__config();\n if (config.language) {\n loadOptions.language = config.language;\n }\n if (pack === \"geochart\" && config.mapsApiKey) {\n loadOptions.mapsApiKey = config.mapsApiKey;\n }\n this.library.charts.load(\"current\", loadOptions);\n }\n };\n defaultExport$2.prototype.runCallbacks = function runCallbacks() {\n var cb, call;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n call = this.library.visualization && (cb.pack === \"corechart\" && this.library.visualization.LineChart || cb.pack === \"timeline\" && this.library.visualization.Timeline || cb.pack === \"geochart\" && this.library.visualization.GeoChart);\n if (call) {\n cb.callback();\n callbacks.splice(i, 1);\n i--;\n }\n }\n };\n\n // cant use object as key\n defaultExport$2.prototype.createDataTable = function createDataTable(series, columnType) {\n var i,\n j,\n s,\n d,\n key,\n rows = [],\n sortedLabels = [];\n for (i = 0; i < series.length; i++) {\n s = series[i];\n series[i].name = series[i].name || \"Value\";\n for (j = 0; j < s.data.length; j++) {\n d = s.data[j];\n key = columnType === \"datetime\" ? d[0].getTime() : d[0];\n if (!rows[key]) {\n rows[key] = new Array(series.length);\n sortedLabels.push(key);\n }\n rows[key][i] = toFloat(d[1]);\n }\n }\n var rows2 = [];\n var day = true;\n var value;\n for (j = 0; j < sortedLabels.length; j++) {\n i = sortedLabels[j];\n if (columnType === \"datetime\") {\n value = new Date(toFloat(i));\n day = day && isDay(value);\n } else if (columnType === \"number\") {\n value = toFloat(i);\n } else {\n value = i;\n }\n rows2.push([value].concat(rows[i]));\n }\n if (columnType === \"datetime\") {\n rows2.sort(sortByTime);\n } else if (columnType === \"number\") {\n rows2.sort(sortByNumberSeries);\n for (i = 0; i < rows2.length; i++) {\n rows2[i][0] = toStr(rows2[i][0]);\n }\n columnType = \"string\";\n }\n\n // create datatable\n var data = new this.library.visualization.DataTable();\n columnType = columnType === \"datetime\" && day ? \"date\" : columnType;\n data.addColumn(columnType, \"\");\n for (i = 0; i < series.length; i++) {\n data.addColumn(\"number\", series[i].name);\n }\n data.addRows(rows2);\n return data;\n };\n var pendingRequests = [],\n runningRequests = 0,\n maxRequests = 4;\n function pushRequest(url, success, error) {\n pendingRequests.push([url, success, error]);\n runNext();\n }\n function runNext() {\n if (runningRequests < maxRequests) {\n var request = pendingRequests.shift();\n if (request) {\n runningRequests++;\n getJSON(request[0], request[1], request[2]);\n runNext();\n }\n }\n }\n function requestComplete() {\n runningRequests--;\n runNext();\n }\n function getJSON(url, success, error) {\n ajaxCall(url, success, function (jqXHR, textStatus, errorThrown) {\n var message = typeof errorThrown === \"string\" ? errorThrown : errorThrown.message;\n error(message);\n });\n }\n function ajaxCall(url, success, error) {\n var $ = window.jQuery || window.Zepto || window.$;\n if ($ && $.ajax) {\n $.ajax({\n dataType: \"json\",\n url: url,\n success: success,\n error: error,\n complete: requestComplete\n });\n } else {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n xhr.onload = function () {\n requestComplete();\n if (xhr.status === 200) {\n success(JSON.parse(xhr.responseText), xhr.statusText, xhr);\n } else {\n error(xhr, \"error\", xhr.statusText);\n }\n };\n xhr.send();\n }\n }\n var config = {};\n var adapters = [];\n\n // helpers\n\n function setText(element, text) {\n if (document.body.innerText) {\n element.innerText = text;\n } else {\n element.textContent = text;\n }\n }\n\n // TODO remove prefix for all messages\n function chartError(element, message, noPrefix) {\n if (!noPrefix) {\n message = \"Error Loading Chart: \" + message;\n }\n setText(element, message);\n element.style.color = \"#ff0000\";\n }\n function errorCatcher(chart) {\n try {\n chart.__render();\n } catch (err) {\n chartError(chart.element, err.message);\n throw err;\n }\n }\n function fetchDataSource(chart, dataSource) {\n if (typeof dataSource === \"string\") {\n pushRequest(dataSource, function (data) {\n chart.rawData = data;\n errorCatcher(chart);\n }, function (message) {\n chartError(chart.element, message);\n });\n } else if (typeof dataSource === \"function\") {\n try {\n dataSource(function (data) {\n chart.rawData = data;\n errorCatcher(chart);\n }, function (message) {\n chartError(chart.element, message, true);\n });\n } catch (err) {\n chartError(chart.element, err, true);\n }\n } else {\n chart.rawData = dataSource;\n errorCatcher(chart);\n }\n }\n function addDownloadButton(chart) {\n var element = chart.element;\n var link = document.createElement(\"a\");\n var download = chart.options.download;\n if (download === true) {\n download = {};\n } else if (typeof download === \"string\") {\n download = {\n filename: download\n };\n }\n link.download = download.filename || \"chart.png\"; // https://caniuse.com/download\n\n link.style.position = \"absolute\";\n link.style.top = \"20px\";\n link.style.right = \"20px\";\n link.style.zIndex = 1000;\n link.style.lineHeight = \"20px\";\n link.target = \"_blank\"; // for safari\n var image = document.createElement(\"img\");\n image.alt = \"Download\";\n image.style.border = \"none\";\n // icon from font-awesome\n // http://fa2png.io/\n image.src = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAMAAAC6V+0/AAABCFBMVEUAAADMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMywEsqxAAAAV3RSTlMAAQIDBggJCgsMDQ4PERQaHB0eISIjJCouLzE0OTo/QUJHSUpLTU5PUllhYmltcHh5foWLjI+SlaCio6atr7S1t7m6vsHHyM7R2tze5Obo7fHz9ff5+/1hlxK2AAAA30lEQVQYGUXBhVYCQQBA0TdYWAt2d3d3YWAHyur7/z9xgD16Lw0DW+XKx+1GgX+FRzM3HWQWrHl5N/oapW5RPe0PkBu+UYeICvozTWZVK23Ao04B79oJrOsJDOoxkZoQPWgX29pHpCZEk7rEvQYiNSFq1UMqvlCjJkRBS1R8hb00Vb/TajtBL7nTHE1X1vyMQF732dQhyF2o6SAwrzP06iUQzvwsArlnzcOdrgBhJyHa1QOgO9U1GsKuvjUTjavliZYQ8nNPapG6sap/3nrIdJ6bOWzmX/fy0XVpfzZP3S8OJT3g9EEiJwAAAABJRU5ErkJggg==\";\n link.appendChild(image);\n element.style.position = \"relative\";\n chart.__downloadAttached = true;\n\n // mouseenter\n chart.__enterEvent = addEvent(element, \"mouseover\", function (e) {\n var related = e.relatedTarget;\n // check download option again to ensure it wasn't changed\n if ((!related || related !== this && !childOf(this, related)) && chart.options.download) {\n link.href = chart.toImage(download);\n element.appendChild(link);\n }\n });\n\n // mouseleave\n chart.__leaveEvent = addEvent(element, \"mouseout\", function (e) {\n var related = e.relatedTarget;\n if (!related || related !== this && !childOf(this, related)) {\n if (link.parentNode) {\n link.parentNode.removeChild(link);\n }\n }\n });\n }\n\n // https://stackoverflow.com/questions/10149963/adding-event-listener-cross-browser\n function addEvent(elem, event, fn) {\n if (elem.addEventListener) {\n elem.addEventListener(event, fn, false);\n return fn;\n } else {\n var fn2 = function () {\n // set the this pointer same as addEventListener when fn is called\n return fn.call(elem, window.event);\n };\n elem.attachEvent(\"on\" + event, fn2);\n return fn2;\n }\n }\n function removeEvent(elem, event, fn) {\n if (elem.removeEventListener) {\n elem.removeEventListener(event, fn, false);\n } else {\n elem.detachEvent(\"on\" + event, fn);\n }\n }\n\n // https://gist.github.com/shawnbot/4166283\n function childOf(p, c) {\n if (p === c) {\n return false;\n }\n while (c && c !== p) {\n c = c.parentNode;\n }\n return c === p;\n }\n function getAdapterType(library) {\n if (library) {\n if (library.product === \"Highcharts\") {\n return defaultExport$1;\n } else if (library.charts) {\n return defaultExport$2;\n } else if (isFunction(library)) {\n return defaultExport;\n }\n }\n throw new Error(\"Unknown adapter\");\n }\n function addAdapter(library) {\n var adapterType = getAdapterType(library);\n var adapter = new adapterType(library);\n if (adapters.indexOf(adapter) === -1) {\n adapters.push(adapter);\n }\n }\n function loadAdapters() {\n if (\"Chart\" in window) {\n addAdapter(window.Chart);\n }\n if (\"Highcharts\" in window) {\n addAdapter(window.Highcharts);\n }\n if (window.google && window.google.charts) {\n addAdapter(window.google);\n }\n }\n function dataEmpty(data, chartType) {\n if (chartType === \"PieChart\" || chartType === \"GeoChart\" || chartType === \"Timeline\") {\n return data.length === 0;\n } else {\n for (var i = 0; i < data.length; i++) {\n if (data[i].data.length > 0) {\n return false;\n }\n }\n return true;\n }\n }\n function renderChart(chartType, chart) {\n if (chart.options.messages && chart.options.messages.empty && dataEmpty(chart.data, chartType)) {\n setText(chart.element, chart.options.messages.empty);\n } else {\n callAdapter(chartType, chart);\n if (chart.options.download && !chart.__downloadAttached && chart.adapter === \"chartjs\") {\n addDownloadButton(chart);\n }\n }\n }\n\n // TODO remove chartType if cross-browser way\n // to get the name of the chart class\n function callAdapter(chartType, chart) {\n var i, adapter, fnName, adapterName;\n fnName = \"render\" + chartType;\n adapterName = chart.options.adapter;\n loadAdapters();\n for (i = 0; i < adapters.length; i++) {\n adapter = adapters[i];\n if ((!adapterName || adapterName === adapter.name) && isFunction(adapter[fnName])) {\n chart.adapter = adapter.name;\n chart.__adapterObject = adapter;\n return adapter[fnName](chart);\n }\n }\n if (adapters.length > 0) {\n throw new Error(\"No charting library found for \" + chartType);\n } else {\n throw new Error(\"No charting libraries found - be sure to include one before your charts\");\n }\n }\n\n // process data\n\n var toFormattedKey = function (key, keyType) {\n if (keyType === \"number\") {\n key = toFloat(key);\n } else if (keyType === \"datetime\") {\n key = toDate(key);\n } else {\n key = toStr(key);\n }\n return key;\n };\n var formatSeriesData = function (data, keyType) {\n var r = [],\n key,\n j;\n for (j = 0; j < data.length; j++) {\n if (keyType === \"bubble\") {\n r.push([toFloat(data[j][0]), toFloat(data[j][1]), toFloat(data[j][2])]);\n } else {\n key = toFormattedKey(data[j][0], keyType);\n r.push([key, toFloat(data[j][1])]);\n }\n }\n if (keyType === \"datetime\") {\n r.sort(sortByTime);\n } else if (keyType === \"number\") {\n r.sort(sortByNumberSeries);\n }\n return r;\n };\n function detectXType(series, noDatetime, options) {\n if (dataEmpty(series)) {\n if ((options.xmin || options.xmax) && (!options.xmin || isDate(options.xmin)) && (!options.xmax || isDate(options.xmax))) {\n return \"datetime\";\n } else {\n return \"number\";\n }\n } else if (detectXTypeWithFunction(series, isNumber)) {\n return \"number\";\n } else if (!noDatetime && detectXTypeWithFunction(series, isDate)) {\n return \"datetime\";\n } else {\n return \"string\";\n }\n }\n function detectXTypeWithFunction(series, func) {\n var i, j, data;\n for (i = 0; i < series.length; i++) {\n data = toArr(series[i].data);\n for (j = 0; j < data.length; j++) {\n if (!func(data[j][0])) {\n return false;\n }\n }\n }\n return true;\n }\n\n // creates a shallow copy of each element of the array\n // elements are expected to be objects\n function copySeries(series) {\n var newSeries = [],\n i,\n j;\n for (i = 0; i < series.length; i++) {\n var copy = {};\n for (j in series[i]) {\n if (series[i].hasOwnProperty(j)) {\n copy[j] = series[i][j];\n }\n }\n newSeries.push(copy);\n }\n return newSeries;\n }\n function processSeries(chart, keyType, noDatetime) {\n var i;\n var opts = chart.options;\n var series = chart.rawData;\n\n // see if one series or multiple\n if (!isArray(series) || typeof series[0] !== \"object\" || isArray(series[0])) {\n series = [{\n name: opts.label,\n data: series\n }];\n chart.hideLegend = true;\n } else {\n chart.hideLegend = false;\n }\n\n // convert to array\n // must come before dataEmpty check\n series = copySeries(series);\n for (i = 0; i < series.length; i++) {\n series[i].data = toArr(series[i].data);\n }\n chart.xtype = keyType ? keyType : opts.discrete ? \"string\" : detectXType(series, noDatetime, opts);\n\n // right format\n for (i = 0; i < series.length; i++) {\n series[i].data = formatSeriesData(series[i].data, chart.xtype);\n }\n return series;\n }\n function processSimple(chart) {\n var perfectData = toArr(chart.rawData),\n i;\n for (i = 0; i < perfectData.length; i++) {\n perfectData[i] = [toStr(perfectData[i][0]), toFloat(perfectData[i][1])];\n }\n return perfectData;\n }\n\n // define classes\n\n var Chart = function Chart(element, dataSource, options) {\n var elementId;\n if (typeof element === \"string\") {\n elementId = element;\n element = document.getElementById(element);\n if (!element) {\n throw new Error(\"No element with id \" + elementId);\n }\n }\n this.element = element;\n this.options = merge(Chartkick.options, options || {});\n this.dataSource = dataSource;\n Chartkick.charts[element.id] = this;\n fetchDataSource(this, dataSource);\n if (this.options.refresh) {\n this.startRefresh();\n }\n };\n Chart.prototype.getElement = function getElement() {\n return this.element;\n };\n Chart.prototype.getDataSource = function getDataSource() {\n return this.dataSource;\n };\n Chart.prototype.getData = function getData() {\n return this.data;\n };\n Chart.prototype.getOptions = function getOptions() {\n return this.options;\n };\n Chart.prototype.getChartObject = function getChartObject() {\n return this.chart;\n };\n Chart.prototype.getAdapter = function getAdapter() {\n return this.adapter;\n };\n Chart.prototype.updateData = function updateData(dataSource, options) {\n this.dataSource = dataSource;\n if (options) {\n this.__updateOptions(options);\n }\n fetchDataSource(this, dataSource);\n };\n Chart.prototype.setOptions = function setOptions(options) {\n this.__updateOptions(options);\n this.redraw();\n };\n Chart.prototype.redraw = function redraw() {\n fetchDataSource(this, this.rawData);\n };\n Chart.prototype.refreshData = function refreshData() {\n if (typeof this.dataSource === \"string\") {\n // prevent browser from caching\n var sep = this.dataSource.indexOf(\"?\") === -1 ? \"?\" : \"&\";\n var url = this.dataSource + sep + \"_=\" + new Date().getTime();\n fetchDataSource(this, url);\n } else if (typeof this.dataSource === \"function\") {\n fetchDataSource(this, this.dataSource);\n }\n };\n Chart.prototype.startRefresh = function startRefresh() {\n var this$1 = this;\n var refresh = this.options.refresh;\n if (refresh && typeof this.dataSource !== \"string\" && typeof this.dataSource !== \"function\") {\n throw new Error(\"Data source must be a URL or callback for refresh\");\n }\n if (!this.intervalId) {\n if (refresh) {\n this.intervalId = setInterval(function () {\n this$1.refreshData();\n }, refresh * 1000);\n } else {\n throw new Error(\"No refresh interval\");\n }\n }\n };\n Chart.prototype.stopRefresh = function stopRefresh() {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n this.intervalId = null;\n }\n };\n Chart.prototype.toImage = function toImage(download) {\n if (this.adapter === \"chartjs\") {\n if (download && download.background && download.background !== \"transparent\") {\n // https://stackoverflow.com/questions/30464750/chartjs-line-chart-set-background-color\n var canvas = this.chart.chart.canvas;\n var ctx = this.chart.chart.ctx;\n var tmpCanvas = document.createElement(\"canvas\");\n var tmpCtx = tmpCanvas.getContext(\"2d\");\n tmpCanvas.width = ctx.canvas.width;\n tmpCanvas.height = ctx.canvas.height;\n tmpCtx.fillStyle = download.background;\n tmpCtx.fillRect(0, 0, tmpCanvas.width, tmpCanvas.height);\n tmpCtx.drawImage(canvas, 0, 0);\n return tmpCanvas.toDataURL(\"image/png\");\n } else {\n return this.chart.toBase64Image();\n }\n } else {\n // TODO throw error in next major version\n // throw new Error(\"Feature only available for Chart.js\");\n return null;\n }\n };\n Chart.prototype.destroy = function destroy() {\n if (this.__adapterObject) {\n this.__adapterObject.destroy(this);\n }\n if (this.__enterEvent) {\n removeEvent(this.element, \"mouseover\", this.__enterEvent);\n }\n if (this.__leaveEvent) {\n removeEvent(this.element, \"mouseout\", this.__leaveEvent);\n }\n };\n Chart.prototype.__updateOptions = function __updateOptions(options) {\n var updateRefresh = options.refresh && options.refresh !== this.options.refresh;\n this.options = merge(Chartkick.options, options);\n if (updateRefresh) {\n this.stopRefresh();\n this.startRefresh();\n }\n };\n Chart.prototype.__render = function __render() {\n this.data = this.__processData();\n renderChart(this.__chartName(), this);\n };\n Chart.prototype.__config = function __config() {\n return config;\n };\n var LineChart = /*@__PURE__*/function (Chart) {\n function LineChart() {\n Chart.apply(this, arguments);\n }\n if (Chart) LineChart.__proto__ = Chart;\n LineChart.prototype = Object.create(Chart && Chart.prototype);\n LineChart.prototype.constructor = LineChart;\n LineChart.prototype.__processData = function __processData() {\n return processSeries(this);\n };\n LineChart.prototype.__chartName = function __chartName() {\n return \"LineChart\";\n };\n return LineChart;\n }(Chart);\n var PieChart = /*@__PURE__*/function (Chart) {\n function PieChart() {\n Chart.apply(this, arguments);\n }\n if (Chart) PieChart.__proto__ = Chart;\n PieChart.prototype = Object.create(Chart && Chart.prototype);\n PieChart.prototype.constructor = PieChart;\n PieChart.prototype.__processData = function __processData() {\n return processSimple(this);\n };\n PieChart.prototype.__chartName = function __chartName() {\n return \"PieChart\";\n };\n return PieChart;\n }(Chart);\n var ColumnChart = /*@__PURE__*/function (Chart) {\n function ColumnChart() {\n Chart.apply(this, arguments);\n }\n if (Chart) ColumnChart.__proto__ = Chart;\n ColumnChart.prototype = Object.create(Chart && Chart.prototype);\n ColumnChart.prototype.constructor = ColumnChart;\n ColumnChart.prototype.__processData = function __processData() {\n return processSeries(this, null, true);\n };\n ColumnChart.prototype.__chartName = function __chartName() {\n return \"ColumnChart\";\n };\n return ColumnChart;\n }(Chart);\n var BarChart = /*@__PURE__*/function (Chart) {\n function BarChart() {\n Chart.apply(this, arguments);\n }\n if (Chart) BarChart.__proto__ = Chart;\n BarChart.prototype = Object.create(Chart && Chart.prototype);\n BarChart.prototype.constructor = BarChart;\n BarChart.prototype.__processData = function __processData() {\n return processSeries(this, null, true);\n };\n BarChart.prototype.__chartName = function __chartName() {\n return \"BarChart\";\n };\n return BarChart;\n }(Chart);\n var AreaChart = /*@__PURE__*/function (Chart) {\n function AreaChart() {\n Chart.apply(this, arguments);\n }\n if (Chart) AreaChart.__proto__ = Chart;\n AreaChart.prototype = Object.create(Chart && Chart.prototype);\n AreaChart.prototype.constructor = AreaChart;\n AreaChart.prototype.__processData = function __processData() {\n return processSeries(this);\n };\n AreaChart.prototype.__chartName = function __chartName() {\n return \"AreaChart\";\n };\n return AreaChart;\n }(Chart);\n var GeoChart = /*@__PURE__*/function (Chart) {\n function GeoChart() {\n Chart.apply(this, arguments);\n }\n if (Chart) GeoChart.__proto__ = Chart;\n GeoChart.prototype = Object.create(Chart && Chart.prototype);\n GeoChart.prototype.constructor = GeoChart;\n GeoChart.prototype.__processData = function __processData() {\n return processSimple(this);\n };\n GeoChart.prototype.__chartName = function __chartName() {\n return \"GeoChart\";\n };\n return GeoChart;\n }(Chart);\n var ScatterChart = /*@__PURE__*/function (Chart) {\n function ScatterChart() {\n Chart.apply(this, arguments);\n }\n if (Chart) ScatterChart.__proto__ = Chart;\n ScatterChart.prototype = Object.create(Chart && Chart.prototype);\n ScatterChart.prototype.constructor = ScatterChart;\n ScatterChart.prototype.__processData = function __processData() {\n return processSeries(this, \"number\");\n };\n ScatterChart.prototype.__chartName = function __chartName() {\n return \"ScatterChart\";\n };\n return ScatterChart;\n }(Chart);\n var BubbleChart = /*@__PURE__*/function (Chart) {\n function BubbleChart() {\n Chart.apply(this, arguments);\n }\n if (Chart) BubbleChart.__proto__ = Chart;\n BubbleChart.prototype = Object.create(Chart && Chart.prototype);\n BubbleChart.prototype.constructor = BubbleChart;\n BubbleChart.prototype.__processData = function __processData() {\n return processSeries(this, \"bubble\");\n };\n BubbleChart.prototype.__chartName = function __chartName() {\n return \"BubbleChart\";\n };\n return BubbleChart;\n }(Chart);\n var Timeline = /*@__PURE__*/function (Chart) {\n function Timeline() {\n Chart.apply(this, arguments);\n }\n if (Chart) Timeline.__proto__ = Chart;\n Timeline.prototype = Object.create(Chart && Chart.prototype);\n Timeline.prototype.constructor = Timeline;\n Timeline.prototype.__processData = function __processData() {\n var i,\n data = this.rawData;\n for (i = 0; i < data.length; i++) {\n data[i][1] = toDate(data[i][1]);\n data[i][2] = toDate(data[i][2]);\n }\n return data;\n };\n Timeline.prototype.__chartName = function __chartName() {\n return \"Timeline\";\n };\n return Timeline;\n }(Chart);\n var Chartkick = {\n LineChart: LineChart,\n PieChart: PieChart,\n ColumnChart: ColumnChart,\n BarChart: BarChart,\n AreaChart: AreaChart,\n GeoChart: GeoChart,\n ScatterChart: ScatterChart,\n BubbleChart: BubbleChart,\n Timeline: Timeline,\n charts: {},\n configure: function (options) {\n for (var key in options) {\n if (options.hasOwnProperty(key)) {\n config[key] = options[key];\n }\n }\n },\n setDefaultOptions: function (opts) {\n Chartkick.options = opts;\n },\n eachChart: function (callback) {\n for (var chartId in Chartkick.charts) {\n if (Chartkick.charts.hasOwnProperty(chartId)) {\n callback(Chartkick.charts[chartId]);\n }\n }\n },\n config: config,\n options: {},\n adapters: adapters,\n addAdapter: addAdapter,\n use: function (adapter) {\n addAdapter(adapter);\n return Chartkick;\n }\n };\n\n // not ideal, but allows for simpler integration\n if (typeof window !== \"undefined\" && !window.Chartkick) {\n window.Chartkick = Chartkick;\n }\n\n // backwards compatibility for esm require\n Chartkick.default = Chartkick;\n return Chartkick;\n});","/*\n Highcharts JS v7.2.2 (2020-08-24)\n\n (c) 2009-2018 Torstein Honsi\n\n License: www.highcharts.com/license\n*/\n(function (P, M) {\n \"object\" === typeof module && module.exports ? (M[\"default\"] = M, module.exports = P.document ? M(P) : M) : \"function\" === typeof define && define.amd ? define(\"highcharts/highcharts\", function () {\n return M(P);\n }) : (P.Highcharts && P.Highcharts.error(16, !0), P.Highcharts = M(P));\n})(\"undefined\" !== typeof window ? window : this, function (P) {\n function M(c, f, F, G) {\n c.hasOwnProperty(f) || (c[f] = G.apply(null, F));\n }\n var I = {};\n M(I, \"parts/Globals.js\", [], function () {\n var c = \"undefined\" !== typeof P ? P : \"undefined\" !== typeof window ? window : {},\n f = c.document,\n F = c.navigator && c.navigator.userAgent || \"\",\n G = f && f.createElementNS && !!f.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\").createSVGRect,\n z = /(edge|msie|trident)/i.test(F) && !c.opera,\n B = -1 !== F.indexOf(\"Firefox\"),\n t = -1 !== F.indexOf(\"Chrome\"),\n v = B && 4 > parseInt(F.split(\"Firefox/\")[1], 10);\n return {\n product: \"Highcharts\",\n version: \"7.2.2\",\n deg2rad: 2 * Math.PI / 360,\n doc: f,\n hasBidiBug: v,\n hasTouch: !!c.TouchEvent,\n isMS: z,\n isWebKit: -1 !== F.indexOf(\"AppleWebKit\"),\n isFirefox: B,\n isChrome: t,\n isSafari: !t && -1 !== F.indexOf(\"Safari\"),\n isTouchDevice: /(Mobile|Android|Windows Phone)/.test(F),\n SVG_NS: \"http://www.w3.org/2000/svg\",\n chartCount: 0,\n seriesTypes: {},\n symbolSizes: {},\n svg: G,\n win: c,\n marginNames: [\"plotTop\", \"marginRight\", \"marginBottom\", \"plotLeft\"],\n noop: function () {},\n charts: [],\n dateFormats: {}\n };\n });\n M(I, \"parts/Utilities.js\", [I[\"parts/Globals.js\"]], function (c) {\n function f(a, d) {\n return parseInt(a, d || 10);\n }\n function F(a) {\n return \"string\" === typeof a;\n }\n function G(a) {\n a = Object.prototype.toString.call(a);\n return \"[object Array]\" === a || \"[object Array Iterator]\" === a;\n }\n function z(a, d) {\n return !!a && \"object\" === typeof a && (!d || !G(a));\n }\n function B(a) {\n return z(a) && \"number\" === typeof a.nodeType;\n }\n function t(a) {\n var d = a && a.constructor;\n return !(!z(a, !0) || B(a) || !d || !d.name || \"Object\" === d.name);\n }\n function v(a) {\n return \"number\" === typeof a && !isNaN(a) && Infinity > a && -Infinity < a;\n }\n function C(a) {\n return \"undefined\" !== typeof a && null !== a;\n }\n function H(a, d, e) {\n var b;\n F(d) ? C(e) ? a.setAttribute(d, e) : a && a.getAttribute && ((b = a.getAttribute(d)) || \"class\" !== d || (b = a.getAttribute(d + \"Name\"))) : n(d, function (d, e) {\n a.setAttribute(e, d);\n });\n return b;\n }\n function y(a, d) {\n var e;\n a || (a = {});\n for (e in d) a[e] = d[e];\n return a;\n }\n function h() {\n for (var a = arguments, d = a.length, e = 0; e < d; e++) {\n var b = a[e];\n if (\"undefined\" !== typeof b && null !== b) return b;\n }\n }\n function n(a, d, e) {\n for (var b in a) Object.hasOwnProperty.call(a, b) && d.call(e || a[b], a[b], b, a);\n }\n c.timers = [];\n var q = c.charts,\n g = c.doc,\n b = c.win;\n c.error = function (a, d, e, l) {\n var g = v(a),\n h = g ? \"Highcharts error #\" + a + \": www.highcharts.com/errors/\" + a + \"/\" : a.toString(),\n p = function () {\n if (d) throw Error(h);\n b.console && console.log(h);\n };\n if (\"undefined\" !== typeof l) {\n var u = \"\";\n g && (h += \"?\");\n c.objectEach(l, function (a, d) {\n u += \"\\n\" + d + \": \" + a;\n g && (h += encodeURI(d) + \"=\" + encodeURI(a));\n });\n h += u;\n }\n e ? c.fireEvent(e, \"displayError\", {\n code: a,\n message: h,\n params: l\n }, p) : p();\n };\n c.Fx = function (a, d, e) {\n this.options = d;\n this.elem = a;\n this.prop = e;\n };\n c.Fx.prototype = {\n dSetter: function () {\n var a = this.paths[0],\n d = this.paths[1],\n e = [],\n b = this.now,\n g = a.length;\n if (1 === b) e = this.toD;else if (g === d.length && 1 > b) for (; g--;) {\n var c = parseFloat(a[g]);\n e[g] = isNaN(c) || \"A\" === d[g - 4] || \"A\" === d[g - 5] ? d[g] : b * parseFloat(\"\" + (d[g] - c)) + c;\n } else e = d;\n this.elem.attr(\"d\", e, null, !0);\n },\n update: function () {\n var a = this.elem,\n d = this.prop,\n e = this.now,\n b = this.options.step;\n if (this[d + \"Setter\"]) this[d + \"Setter\"]();else a.attr ? a.element && a.attr(d, e, null, !0) : a.style[d] = e + this.unit;\n b && b.call(a, e, this);\n },\n run: function (a, d, e) {\n var l = this,\n g = l.options,\n h = function (a) {\n return h.stopped ? !1 : l.step(a);\n },\n p = b.requestAnimationFrame || function (a) {\n setTimeout(a, 13);\n },\n u = function () {\n for (var a = 0; a < c.timers.length; a++) c.timers[a]() || c.timers.splice(a--, 1);\n c.timers.length && p(u);\n };\n a !== d || this.elem[\"forceAnimate:\" + this.prop] ? (this.startTime = +new Date(), this.start = a, this.end = d, this.unit = e, this.now = this.start, this.pos = 0, h.elem = this.elem, h.prop = this.prop, h() && 1 === c.timers.push(h) && p(u)) : (delete g.curAnim[this.prop], g.complete && 0 === Object.keys(g.curAnim).length && g.complete.call(this.elem));\n },\n step: function (a) {\n var d = +new Date(),\n e = this.options,\n b = this.elem,\n g = e.complete,\n c = e.duration,\n p = e.curAnim;\n if (b.attr && !b.element) a = !1;else if (a || d >= c + this.startTime) {\n this.now = this.end;\n this.pos = 1;\n this.update();\n var u = p[this.prop] = !0;\n n(p, function (a) {\n !0 !== a && (u = !1);\n });\n u && g && g.call(b);\n a = !1;\n } else this.pos = e.easing((d - this.startTime) / c), this.now = this.start + (this.end - this.start) * this.pos, this.update(), a = !0;\n return a;\n },\n initPath: function (a, d, e) {\n function b(a) {\n for (A = a.length; A--;) {\n var d = \"M\" === a[A] || \"L\" === a[A];\n var e = /[a-zA-Z]/.test(a[A + 3]);\n d && e && a.splice(A + 1, 0, a[A + 1], a[A + 2], a[A + 1], a[A + 2]);\n }\n }\n function g(a, d) {\n for (; a.length < h;) {\n a[0] = d[h - a.length];\n var e = a.slice(0, r);\n [].splice.apply(a, [0, 0].concat(e));\n w && (e = a.slice(a.length - r), [].splice.apply(a, [a.length, 0].concat(e)), A--);\n }\n a[0] = \"M\";\n }\n function c(a, d) {\n for (var e = (h - a.length) / r; 0 < e && e--;) x = a.slice().splice(a.length / m - r, r * m), x[0] = d[h - r - e * r], k && (x[r - 6] = x[r - 2], x[r - 5] = x[r - 1]), [].splice.apply(a, [a.length / m, 0].concat(x)), w && e--;\n }\n d = d || \"\";\n var p = a.startX,\n u = a.endX,\n k = -1 < d.indexOf(\"C\"),\n r = k ? 7 : 3,\n x,\n A;\n d = d.split(\" \");\n e = e.slice();\n var w = a.isArea,\n m = w ? 2 : 1;\n k && (b(d), b(e));\n if (p && u) {\n for (A = 0; A < p.length; A++) if (p[A] === u[0]) {\n var K = A;\n break;\n } else if (p[0] === u[u.length - p.length + A]) {\n K = A;\n var J = !0;\n break;\n } else if (p[p.length - 1] === u[u.length - p.length + A]) {\n K = p.length - A;\n break;\n }\n \"undefined\" === typeof K && (d = []);\n }\n if (d.length && v(K)) {\n var h = e.length + K * m * r;\n J ? (g(d, e), c(e, d)) : (g(e, d), c(d, e));\n }\n return [d, e];\n },\n fillSetter: function () {\n c.Fx.prototype.strokeSetter.apply(this, arguments);\n },\n strokeSetter: function () {\n this.elem.attr(this.prop, c.color(this.start).tweenTo(c.color(this.end), this.pos), null, !0);\n }\n };\n c.merge = function () {\n var a,\n d = arguments,\n e = {},\n b = function (a, d) {\n \"object\" !== typeof a && (a = {});\n n(d, function (e, k) {\n !z(e, !0) || t(e) || B(e) ? a[k] = d[k] : a[k] = b(a[k] || {}, e);\n });\n return a;\n };\n !0 === d[0] && (e = d[1], d = Array.prototype.slice.call(d, 2));\n var g = d.length;\n for (a = 0; a < g; a++) e = b(e, d[a]);\n return e;\n };\n c.clearTimeout = function (a) {\n C(a) && clearTimeout(a);\n };\n c.css = function (a, d) {\n c.isMS && !c.svg && d && \"undefined\" !== typeof d.opacity && (d.filter = \"alpha(opacity=\" + 100 * d.opacity + \")\");\n y(a.style, d);\n };\n c.createElement = function (a, d, e, b, L) {\n a = g.createElement(a);\n var l = c.css;\n d && y(a, d);\n L && l(a, {\n padding: \"0\",\n border: \"none\",\n margin: \"0\"\n });\n e && l(a, e);\n b && b.appendChild(a);\n return a;\n };\n c.extendClass = function (a, d) {\n var e = function () {};\n e.prototype = new a();\n y(e.prototype, d);\n return e;\n };\n c.pad = function (a, d, e) {\n return Array((d || 2) + 1 - String(a).replace(\"-\", \"\").length).join(e || \"0\") + a;\n };\n c.relativeLength = function (a, d, e) {\n return /%$/.test(a) ? d * parseFloat(a) / 100 + (e || 0) : parseFloat(a);\n };\n c.wrap = function (a, d, e) {\n var b = a[d];\n a[d] = function () {\n var a = Array.prototype.slice.call(arguments),\n d = arguments,\n l = this;\n l.proceed = function () {\n b.apply(l, arguments.length ? arguments : d);\n };\n a.unshift(b);\n a = e.apply(this, a);\n l.proceed = null;\n return a;\n };\n };\n c.datePropsToTimestamps = function (a) {\n n(a, function (d, e) {\n z(d) && \"function\" === typeof d.getTime ? a[e] = d.getTime() : (z(d) || G(d)) && c.datePropsToTimestamps(d);\n });\n };\n c.formatSingle = function (a, d, e) {\n var b = /\\.([0-9])/,\n g = c.defaultOptions.lang;\n /f$/.test(a) ? (e = (e = a.match(b)) ? e[1] : -1, null !== d && (d = c.numberFormat(d, e, g.decimalPoint, -1 < a.indexOf(\",\") ? g.thousandsSep : \"\"))) : d = (e || c.time).dateFormat(a, d);\n return d;\n };\n c.format = function (a, d, e) {\n for (var b = \"{\", g = !1, h, p, u, k, r = [], x; a;) {\n b = a.indexOf(b);\n if (-1 === b) break;\n h = a.slice(0, b);\n if (g) {\n h = h.split(\":\");\n p = h.shift().split(\".\");\n k = p.length;\n x = d;\n for (u = 0; u < k; u++) x && (x = x[p[u]]);\n h.length && (x = c.formatSingle(h.join(\":\"), x, e));\n r.push(x);\n } else r.push(h);\n a = a.slice(b + 1);\n b = (g = !g) ? \"}\" : \"{\";\n }\n r.push(a);\n return r.join(\"\");\n };\n c.getMagnitude = function (a) {\n return Math.pow(10, Math.floor(Math.log(a) / Math.LN10));\n };\n c.normalizeTickInterval = function (a, d, e, b, g) {\n var l = a;\n e = h(e, 1);\n var p = a / e;\n d || (d = g ? [1, 1.2, 1.5, 2, 2.5, 3, 4, 5, 6, 8, 10] : [1, 2, 2.5, 5, 10], !1 === b && (1 === e ? d = d.filter(function (a) {\n return 0 === a % 1;\n }) : .1 >= e && (d = [1 / e])));\n for (b = 0; b < d.length && !(l = d[b], g && l * e >= a || !g && p <= (d[b] + (d[b + 1] || d[b])) / 2); b++);\n return l = c.correctFloat(l * e, -Math.round(Math.log(.001) / Math.LN10));\n };\n c.stableSort = function (a, d) {\n var b = a.length,\n l,\n g;\n for (g = 0; g < b; g++) a[g].safeI = g;\n a.sort(function (a, b) {\n l = d(a, b);\n return 0 === l ? a.safeI - b.safeI : l;\n });\n for (g = 0; g < b; g++) delete a[g].safeI;\n };\n c.correctFloat = function (a, d) {\n return parseFloat(a.toPrecision(d || 14));\n };\n c.animObject = function (a) {\n return z(a) ? c.merge(a) : {\n duration: a ? 500 : 0\n };\n };\n c.timeUnits = {\n millisecond: 1,\n second: 1E3,\n minute: 6E4,\n hour: 36E5,\n day: 864E5,\n week: 6048E5,\n month: 24192E5,\n year: 314496E5\n };\n c.numberFormat = function (a, d, b, l) {\n a = +a || 0;\n d = +d;\n var e = c.defaultOptions.lang,\n g = (a.toString().split(\".\")[1] || \"\").split(\"e\")[0].length,\n p = a.toString().split(\"e\");\n if (-1 === d) d = Math.min(g, 20);else if (!v(d)) d = 2;else if (d && p[1] && 0 > p[1]) {\n var u = d + +p[1];\n 0 <= u ? (p[0] = (+p[0]).toExponential(u).split(\"e\")[0], d = u) : (p[0] = p[0].split(\".\")[0] || 0, a = 20 > d ? (p[0] * Math.pow(10, p[1])).toFixed(d) : 0, p[1] = 0);\n }\n var k = (Math.abs(p[1] ? p[0] : a) + Math.pow(10, -Math.max(d, g) - 1)).toFixed(d);\n g = String(f(k));\n u = 3 < g.length ? g.length % 3 : 0;\n b = h(b, e.decimalPoint);\n l = h(l, e.thousandsSep);\n a = (0 > a ? \"-\" : \"\") + (u ? g.substr(0, u) + l : \"\");\n a += g.substr(u).replace(/(\\d{3})(?=\\d)/g, \"$1\" + l);\n d && (a += b + k.slice(-d));\n p[1] && 0 !== +a && (a += \"e\" + p[1]);\n return a;\n };\n Math.easeInOutSine = function (a) {\n return -.5 * (Math.cos(Math.PI * a) - 1);\n };\n c.getStyle = function (a, d, e) {\n if (\"width\" === d) return d = Math.min(a.offsetWidth, a.scrollWidth), e = a.getBoundingClientRect && a.getBoundingClientRect().width, e < d && e >= d - 1 && (d = Math.floor(e)), Math.max(0, d - c.getStyle(a, \"padding-left\") - c.getStyle(a, \"padding-right\"));\n if (\"height\" === d) return Math.max(0, Math.min(a.offsetHeight, a.scrollHeight) - c.getStyle(a, \"padding-top\") - c.getStyle(a, \"padding-bottom\"));\n b.getComputedStyle || c.error(27, !0);\n if (a = b.getComputedStyle(a, void 0)) a = a.getPropertyValue(d), h(e, \"opacity\" !== d) && (a = f(a));\n return a;\n };\n c.inArray = function (a, d, b) {\n return d.indexOf(a, b);\n };\n c.find = Array.prototype.find ? function (a, d) {\n return a.find(d);\n } : function (a, d) {\n var b,\n l = a.length;\n for (b = 0; b < l; b++) if (d(a[b], b)) return a[b];\n };\n c.keys = Object.keys;\n c.offset = function (a) {\n var d = g.documentElement;\n a = a.parentElement || a.parentNode ? a.getBoundingClientRect() : {\n top: 0,\n left: 0\n };\n return {\n top: a.top + (b.pageYOffset || d.scrollTop) - (d.clientTop || 0),\n left: a.left + (b.pageXOffset || d.scrollLeft) - (d.clientLeft || 0)\n };\n };\n c.stop = function (a, b) {\n for (var d = c.timers.length; d--;) c.timers[d].elem !== a || b && b !== c.timers[d].prop || (c.timers[d].stopped = !0);\n };\n n({\n map: \"map\",\n each: \"forEach\",\n grep: \"filter\",\n reduce: \"reduce\",\n some: \"some\"\n }, function (a, b) {\n c[b] = function (b) {\n return Array.prototype[a].apply(b, [].slice.call(arguments, 1));\n };\n });\n c.addEvent = function (a, b, e, l) {\n void 0 === l && (l = {});\n var d = a.addEventListener || c.addEventListenerPolyfill;\n var g = \"function\" === typeof a && a.prototype ? a.prototype.protoEvents = a.prototype.protoEvents || {} : a.hcEvents = a.hcEvents || {};\n c.Point && a instanceof c.Point && a.series && a.series.chart && (a.series.chart.runTrackerClick = !0);\n d && d.call(a, b, e, !1);\n g[b] || (g[b] = []);\n g[b].push({\n fn: e,\n order: \"number\" === typeof l.order ? l.order : Infinity\n });\n g[b].sort(function (a, b) {\n return a.order - b.order;\n });\n return function () {\n c.removeEvent(a, b, e);\n };\n };\n c.removeEvent = function (a, b, e) {\n function d(b, d) {\n var e = a.removeEventListener || c.removeEventListenerPolyfill;\n e && e.call(a, b, d, !1);\n }\n function g(e) {\n var l;\n if (a.nodeName) {\n if (b) {\n var k = {};\n k[b] = !0;\n } else k = e;\n n(k, function (a, b) {\n if (e[b]) for (l = e[b].length; l--;) d(b, e[b][l].fn);\n });\n }\n }\n var h;\n [\"protoEvents\", \"hcEvents\"].forEach(function (l, c) {\n var k = (c = c ? a : a.prototype) && c[l];\n k && (b ? (h = k[b] || [], e ? (k[b] = h.filter(function (a) {\n return e !== a.fn;\n }), d(b, e)) : (g(k), k[b] = [])) : (g(k), c[l] = {}));\n });\n };\n c.fireEvent = function (a, b, e, l) {\n var d;\n e = e || {};\n if (g.createEvent && (a.dispatchEvent || a.fireEvent)) {\n var c = g.createEvent(\"Events\");\n c.initEvent(b, !0, !0);\n y(c, e);\n a.dispatchEvent ? a.dispatchEvent(c) : a.fireEvent(b, c);\n } else e.target || y(e, {\n preventDefault: function () {\n e.defaultPrevented = !0;\n },\n target: a,\n type: b\n }), function (b, l) {\n void 0 === b && (b = []);\n void 0 === l && (l = []);\n var k = 0,\n r = 0,\n g = b.length + l.length;\n for (d = 0; d < g; d++) !1 === (b[k] ? l[r] ? b[k].order <= l[r].order ? b[k++] : l[r++] : b[k++] : l[r++]).fn.call(a, e) && e.preventDefault();\n }(a.protoEvents && a.protoEvents[b], a.hcEvents && a.hcEvents[b]);\n l && !e.defaultPrevented && l.call(a, e);\n };\n c.animate = function (a, b, e) {\n var d,\n g = \"\",\n h,\n p;\n if (!z(e)) {\n var u = arguments;\n e = {\n duration: u[2],\n easing: u[3],\n complete: u[4]\n };\n }\n v(e.duration) || (e.duration = 400);\n e.easing = \"function\" === typeof e.easing ? e.easing : Math[e.easing] || Math.easeInOutSine;\n e.curAnim = c.merge(b);\n n(b, function (k, l) {\n c.stop(a, l);\n p = new c.Fx(a, e, l);\n h = null;\n \"d\" === l ? (p.paths = p.initPath(a, a.d, b.d), p.toD = b.d, d = 0, h = 1) : a.attr ? d = a.attr(l) : (d = parseFloat(c.getStyle(a, l)) || 0, \"opacity\" !== l && (g = \"px\"));\n h || (h = k);\n h && h.match && h.match(\"px\") && (h = h.replace(/px/g, \"\"));\n p.run(d, h, g);\n });\n };\n c.seriesType = function (a, b, e, l, g) {\n var d = c.getOptions(),\n p = c.seriesTypes;\n d.plotOptions[a] = c.merge(d.plotOptions[b], e);\n p[a] = c.extendClass(p[b] || function () {}, l);\n p[a].prototype.type = a;\n g && (p[a].prototype.pointClass = c.extendClass(c.Point, g));\n return p[a];\n };\n c.uniqueKey = function () {\n var a = Math.random().toString(36).substring(2, 9),\n b = 0;\n return function () {\n return \"highcharts-\" + a + \"-\" + b++;\n };\n }();\n c.isFunction = function (a) {\n return \"function\" === typeof a;\n };\n b.jQuery && (b.jQuery.fn.highcharts = function () {\n var a = [].slice.call(arguments);\n if (this[0]) return a[0] ? (new c[F(a[0]) ? a.shift() : \"Chart\"](this[0], a[0], a[1]), this) : q[H(this[0], \"data-highcharts-chart\")];\n });\n return {\n arrayMax: function (a) {\n for (var b = a.length, e = a[0]; b--;) a[b] > e && (e = a[b]);\n return e;\n },\n arrayMin: function (a) {\n for (var b = a.length, e = a[0]; b--;) a[b] < e && (e = a[b]);\n return e;\n },\n attr: H,\n defined: C,\n destroyObjectProperties: function (a, b) {\n n(a, function (d, l) {\n d && d !== b && d.destroy && d.destroy();\n delete a[l];\n });\n },\n discardElement: function (a) {\n var b = c.garbageBin;\n b || (b = c.createElement(\"div\"));\n a && b.appendChild(a);\n b.innerHTML = \"\";\n },\n erase: function (a, b) {\n for (var d = a.length; d--;) if (a[d] === b) {\n a.splice(d, 1);\n break;\n }\n },\n extend: y,\n isArray: G,\n isClass: t,\n isDOMElement: B,\n isNumber: v,\n isObject: z,\n isString: F,\n objectEach: n,\n pick: h,\n pInt: f,\n setAnimation: function (a, b) {\n b.renderer.globalAnimation = h(a, b.options.chart.animation, !0);\n },\n splat: function (a) {\n return G(a) ? a : [a];\n },\n syncTimeout: function (a, b, e) {\n if (0 < b) return setTimeout(a, b, e);\n a.call(0, e);\n return -1;\n }\n };\n });\n M(I, \"parts/Color.js\", [I[\"parts/Globals.js\"], I[\"parts/Utilities.js\"]], function (c, f) {\n var F = f.isNumber,\n G = f.pInt,\n z = c.merge;\n c.Color = function (f) {\n if (!(this instanceof c.Color)) return new c.Color(f);\n this.init(f);\n };\n c.Color.prototype = {\n parsers: [{\n regex: /rgba\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]?(?:\\.[0-9]+)?)\\s*\\)/,\n parse: function (c) {\n return [G(c[1]), G(c[2]), G(c[3]), parseFloat(c[4], 10)];\n }\n }, {\n regex: /rgb\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)/,\n parse: function (c) {\n return [G(c[1]), G(c[2]), G(c[3]), 1];\n }\n }],\n names: {\n white: \"#ffffff\",\n black: \"#000000\"\n },\n init: function (f) {\n var t, v;\n if ((this.input = f = this.names[f && f.toLowerCase ? f.toLowerCase() : \"\"] || f) && f.stops) this.stops = f.stops.map(function (f) {\n return new c.Color(f[1]);\n });else {\n if (f && f.charAt && \"#\" === f.charAt()) {\n var C = f.length;\n f = parseInt(f.substr(1), 16);\n 7 === C ? t = [(f & 16711680) >> 16, (f & 65280) >> 8, f & 255, 1] : 4 === C && (t = [(f & 3840) >> 4 | (f & 3840) >> 8, (f & 240) >> 4 | f & 240, (f & 15) << 4 | f & 15, 1]);\n }\n if (!t) for (v = this.parsers.length; v-- && !t;) {\n var B = this.parsers[v];\n (C = B.regex.exec(f)) && (t = B.parse(C));\n }\n }\n this.rgba = t || [];\n },\n get: function (c) {\n var f = this.input,\n v = this.rgba;\n if (this.stops) {\n var C = z(f);\n C.stops = [].concat(C.stops);\n this.stops.forEach(function (f, v) {\n C.stops[v] = [C.stops[v][0], f.get(c)];\n });\n } else C = v && F(v[0]) ? \"rgb\" === c || !c && 1 === v[3] ? \"rgb(\" + v[0] + \",\" + v[1] + \",\" + v[2] + \")\" : \"a\" === c ? v[3] : \"rgba(\" + v.join(\",\") + \")\" : f;\n return C;\n },\n brighten: function (c) {\n var f,\n v = this.rgba;\n if (this.stops) this.stops.forEach(function (f) {\n f.brighten(c);\n });else if (F(c) && 0 !== c) for (f = 0; 3 > f; f++) v[f] += G(255 * c), 0 > v[f] && (v[f] = 0), 255 < v[f] && (v[f] = 255);\n return this;\n },\n setOpacity: function (c) {\n this.rgba[3] = c;\n return this;\n },\n tweenTo: function (c, f) {\n var v = this.rgba,\n t = c.rgba;\n t.length && v && v.length ? (c = 1 !== t[3] || 1 !== v[3], f = (c ? \"rgba(\" : \"rgb(\") + Math.round(t[0] + (v[0] - t[0]) * (1 - f)) + \",\" + Math.round(t[1] + (v[1] - t[1]) * (1 - f)) + \",\" + Math.round(t[2] + (v[2] - t[2]) * (1 - f)) + (c ? \",\" + (t[3] + (v[3] - t[3]) * (1 - f)) : \"\") + \")\") : f = c.input || \"none\";\n return f;\n }\n };\n c.color = function (f) {\n return new c.Color(f);\n };\n });\n M(I, \"parts/SvgRenderer.js\", [I[\"parts/Globals.js\"], I[\"parts/Utilities.js\"]], function (c, f) {\n var F = f.attr,\n G = f.defined,\n z = f.destroyObjectProperties,\n B = f.erase,\n t = f.extend,\n v = f.isArray,\n C = f.isNumber,\n H = f.isObject,\n y = f.isString,\n h = f.objectEach,\n n = f.pick,\n q = f.pInt,\n g = f.splat,\n b = c.addEvent,\n a = c.animate,\n d = c.charts,\n e = c.color,\n l = c.css,\n L = c.createElement,\n E = c.deg2rad,\n p = c.doc,\n u = c.hasTouch,\n k = c.isFirefox,\n r = c.isMS,\n x = c.isWebKit,\n A = c.merge,\n w = c.noop,\n m = c.removeEvent,\n K = c.stop,\n J = c.svg,\n U = c.SVG_NS,\n S = c.symbolSizes,\n Q = c.win;\n var O = c.SVGElement = function () {\n return this;\n };\n t(O.prototype, {\n opacity: 1,\n SVG_NS: U,\n textProps: \"direction fontSize fontWeight fontFamily fontStyle color lineHeight width textAlign textDecoration textOverflow textOutline cursor\".split(\" \"),\n init: function (a, b) {\n this.element = \"span\" === b ? L(b) : p.createElementNS(this.SVG_NS, b);\n this.renderer = a;\n c.fireEvent(this, \"afterInit\");\n },\n animate: function (b, d, m) {\n var D = c.animObject(n(d, this.renderer.globalAnimation, !0));\n n(p.hidden, p.msHidden, p.webkitHidden, !1) && (D.duration = 0);\n 0 !== D.duration ? (m && (D.complete = m), a(this, b, D)) : (this.attr(b, void 0, m), h(b, function (a, b) {\n D.step && D.step.call(this, a, {\n prop: b,\n pos: 1\n });\n }, this));\n return this;\n },\n complexColor: function (a, b, d) {\n var D = this.renderer,\n m,\n e,\n w,\n N,\n k,\n l,\n g,\n r,\n x,\n p,\n K,\n J = [],\n T;\n c.fireEvent(this.renderer, \"complexColor\", {\n args: arguments\n }, function () {\n a.radialGradient ? e = \"radialGradient\" : a.linearGradient && (e = \"linearGradient\");\n e && (w = a[e], k = D.gradients, g = a.stops, p = d.radialReference, v(w) && (a[e] = w = {\n x1: w[0],\n y1: w[1],\n x2: w[2],\n y2: w[3],\n gradientUnits: \"userSpaceOnUse\"\n }), \"radialGradient\" === e && p && !G(w.gradientUnits) && (N = w, w = A(w, D.getRadialAttr(p, N), {\n gradientUnits: \"userSpaceOnUse\"\n })), h(w, function (a, b) {\n \"id\" !== b && J.push(b, a);\n }), h(g, function (a) {\n J.push(a);\n }), J = J.join(\",\"), k[J] ? K = k[J].attr(\"id\") : (w.id = K = c.uniqueKey(), k[J] = l = D.createElement(e).attr(w).add(D.defs), l.radAttr = N, l.stops = [], g.forEach(function (a) {\n 0 === a[1].indexOf(\"rgba\") ? (m = c.color(a[1]), r = m.get(\"rgb\"), x = m.get(\"a\")) : (r = a[1], x = 1);\n a = D.createElement(\"stop\").attr({\n offset: a[0],\n \"stop-color\": r,\n \"stop-opacity\": x\n }).add(l);\n l.stops.push(a);\n })), T = \"url(\" + D.url + \"#\" + K + \")\", d.setAttribute(b, T), d.gradient = J, a.toString = function () {\n return T;\n });\n });\n },\n applyTextOutline: function (a) {\n var b = this.element,\n D;\n -1 !== a.indexOf(\"contrast\") && (a = a.replace(/contrast/g, this.renderer.getContrast(b.style.fill)));\n a = a.split(\" \");\n var d = a[a.length - 1];\n if ((D = a[0]) && \"none\" !== D && c.svg) {\n this.fakeTS = !0;\n a = [].slice.call(b.getElementsByTagName(\"tspan\"));\n this.ySetter = this.xSetter;\n D = D.replace(/(^[\\d\\.]+)(.*?)$/g, function (a, b, D) {\n return 2 * b + D;\n });\n this.removeTextOutline(a);\n var m = b.firstChild;\n a.forEach(function (a, e) {\n 0 === e && (a.setAttribute(\"x\", b.getAttribute(\"x\")), e = b.getAttribute(\"y\"), a.setAttribute(\"y\", e || 0), null === e && b.setAttribute(\"y\", 0));\n a = a.cloneNode(1);\n F(a, {\n \"class\": \"highcharts-text-outline\",\n fill: d,\n stroke: d,\n \"stroke-width\": D,\n \"stroke-linejoin\": \"round\"\n });\n b.insertBefore(a, m);\n });\n }\n },\n removeTextOutline: function (a) {\n for (var b = a.length, D; b--;) D = a[b], \"highcharts-text-outline\" === D.getAttribute(\"class\") && B(a, this.element.removeChild(D));\n },\n symbolCustomAttribs: \"x y width height r start end innerR anchorX anchorY rounded\".split(\" \"),\n attr: function (a, b, d, e) {\n var D = this.element,\n m,\n w = this,\n N,\n k,\n l = this.symbolCustomAttribs;\n if (\"string\" === typeof a && void 0 !== b) {\n var g = a;\n a = {};\n a[g] = b;\n }\n \"string\" === typeof a ? w = (this[a + \"Getter\"] || this._defaultGetter).call(this, a, D) : (h(a, function (b, d) {\n N = !1;\n e || K(this, d);\n this.symbolName && -1 !== c.inArray(d, l) && (m || (this.symbolAttr(a), m = !0), N = !0);\n !this.rotation || \"x\" !== d && \"y\" !== d || (this.doTransform = !0);\n N || (k = this[d + \"Setter\"] || this._defaultSetter, k.call(this, b, d, D), !this.styledMode && this.shadows && /^(width|height|visibility|x|y|d|transform|cx|cy|r)$/.test(d) && this.updateShadows(d, b, k));\n }, this), this.afterSetters());\n d && d.call(this);\n return w;\n },\n afterSetters: function () {\n this.doTransform && (this.updateTransform(), this.doTransform = !1);\n },\n updateShadows: function (a, b, d) {\n for (var D = this.shadows, e = D.length; e--;) d.call(D[e], \"height\" === a ? Math.max(b - (D[e].cutHeight || 0), 0) : \"d\" === a ? this.d : b, a, D[e]);\n },\n addClass: function (a, b) {\n var D = b ? \"\" : this.attr(\"class\") || \"\";\n a = (a || \"\").split(/ /g).reduce(function (a, b) {\n -1 === D.indexOf(b) && a.push(b);\n return a;\n }, D ? [D] : []).join(\" \");\n a !== D && this.attr(\"class\", a);\n return this;\n },\n hasClass: function (a) {\n return -1 !== (this.attr(\"class\") || \"\").split(\" \").indexOf(a);\n },\n removeClass: function (a) {\n return this.attr(\"class\", (this.attr(\"class\") || \"\").replace(y(a) ? new RegExp(\" ?\" + a + \" ?\") : a, \"\"));\n },\n symbolAttr: function (a) {\n var b = this;\n \"x y r start end width height innerR anchorX anchorY clockwise\".split(\" \").forEach(function (D) {\n b[D] = n(a[D], b[D]);\n });\n b.attr({\n d: b.renderer.symbols[b.symbolName](b.x, b.y, b.width, b.height, b)\n });\n },\n clip: function (a) {\n return this.attr(\"clip-path\", a ? \"url(\" + this.renderer.url + \"#\" + a.id + \")\" : \"none\");\n },\n crisp: function (a, b) {\n b = b || a.strokeWidth || 0;\n var D = Math.round(b) % 2 / 2;\n a.x = Math.floor(a.x || this.x || 0) + D;\n a.y = Math.floor(a.y || this.y || 0) + D;\n a.width = Math.floor((a.width || this.width || 0) - 2 * D);\n a.height = Math.floor((a.height || this.height || 0) - 2 * D);\n G(a.strokeWidth) && (a.strokeWidth = b);\n return a;\n },\n css: function (a) {\n var b = this.styles,\n D = {},\n d = this.element,\n e = \"\",\n m = !b,\n w = [\"textOutline\", \"textOverflow\", \"width\"];\n a && a.color && (a.fill = a.color);\n b && h(a, function (a, d) {\n a !== b[d] && (D[d] = a, m = !0);\n });\n if (m) {\n b && (a = t(b, D));\n if (a) if (null === a.width || \"auto\" === a.width) delete this.textWidth;else if (\"text\" === d.nodeName.toLowerCase() && a.width) var k = this.textWidth = q(a.width);\n this.styles = a;\n k && !J && this.renderer.forExport && delete a.width;\n if (d.namespaceURI === this.SVG_NS) {\n var g = function (a, b) {\n return \"-\" + b.toLowerCase();\n };\n h(a, function (a, b) {\n -1 === w.indexOf(b) && (e += b.replace(/([A-Z])/g, g) + \":\" + a + \";\");\n });\n e && F(d, \"style\", e);\n } else l(d, a);\n this.added && (\"text\" === this.element.nodeName && this.renderer.buildText(this), a && a.textOutline && this.applyTextOutline(a.textOutline));\n }\n return this;\n },\n getStyle: function (a) {\n return Q.getComputedStyle(this.element || this, \"\").getPropertyValue(a);\n },\n strokeWidth: function () {\n if (!this.renderer.styledMode) return this[\"stroke-width\"] || 0;\n var a = this.getStyle(\"stroke-width\");\n if (a.indexOf(\"px\") === a.length - 2) a = q(a);else {\n var b = p.createElementNS(U, \"rect\");\n F(b, {\n width: a,\n \"stroke-width\": 0\n });\n this.element.parentNode.appendChild(b);\n a = b.getBBox().width;\n b.parentNode.removeChild(b);\n }\n return a;\n },\n on: function (a, b) {\n var d = this,\n D = d.element;\n u && \"click\" === a ? (D.ontouchstart = function (a) {\n d.touchEventFired = Date.now();\n a.preventDefault();\n b.call(D, a);\n }, D.onclick = function (a) {\n (-1 === Q.navigator.userAgent.indexOf(\"Android\") || 1100 < Date.now() - (d.touchEventFired || 0)) && b.call(D, a);\n }) : D[\"on\" + a] = b;\n return this;\n },\n setRadialReference: function (a) {\n var b = this.renderer.gradients[this.element.gradient];\n this.element.radialReference = a;\n b && b.radAttr && b.animate(this.renderer.getRadialAttr(a, b.radAttr));\n return this;\n },\n translate: function (a, b) {\n return this.attr({\n translateX: a,\n translateY: b\n });\n },\n invert: function (a) {\n this.inverted = a;\n this.updateTransform();\n return this;\n },\n updateTransform: function () {\n var a = this.translateX || 0,\n b = this.translateY || 0,\n d = this.scaleX,\n e = this.scaleY,\n m = this.inverted,\n w = this.rotation,\n k = this.matrix,\n l = this.element;\n m && (a += this.width, b += this.height);\n a = [\"translate(\" + a + \",\" + b + \")\"];\n G(k) && a.push(\"matrix(\" + k.join(\",\") + \")\");\n m ? a.push(\"rotate(90) scale(-1,1)\") : w && a.push(\"rotate(\" + w + \" \" + n(this.rotationOriginX, l.getAttribute(\"x\"), 0) + \" \" + n(this.rotationOriginY, l.getAttribute(\"y\") || 0) + \")\");\n (G(d) || G(e)) && a.push(\"scale(\" + n(d, 1) + \" \" + n(e, 1) + \")\");\n a.length && l.setAttribute(\"transform\", a.join(\" \"));\n },\n toFront: function () {\n var a = this.element;\n a.parentNode.appendChild(a);\n return this;\n },\n align: function (a, b, d) {\n var e,\n m = {};\n var D = this.renderer;\n var w = D.alignedObjects;\n var k, l;\n if (a) {\n if (this.alignOptions = a, this.alignByTranslate = b, !d || y(d)) this.alignTo = e = d || \"renderer\", B(w, this), w.push(this), d = null;\n } else a = this.alignOptions, b = this.alignByTranslate, e = this.alignTo;\n d = n(d, D[e], D);\n e = a.align;\n D = a.verticalAlign;\n w = (d.x || 0) + (a.x || 0);\n var N = (d.y || 0) + (a.y || 0);\n \"right\" === e ? k = 1 : \"center\" === e && (k = 2);\n k && (w += (d.width - (a.width || 0)) / k);\n m[b ? \"translateX\" : \"x\"] = Math.round(w);\n \"bottom\" === D ? l = 1 : \"middle\" === D && (l = 2);\n l && (N += (d.height - (a.height || 0)) / l);\n m[b ? \"translateY\" : \"y\"] = Math.round(N);\n this[this.placed ? \"animate\" : \"attr\"](m);\n this.placed = !0;\n this.alignAttr = m;\n return this;\n },\n getBBox: function (a, b) {\n var d,\n e = this.renderer,\n m = this.element,\n D = this.styles,\n w = this.textStr,\n k,\n l = e.cache,\n N = e.cacheKeys,\n g = m.namespaceURI === this.SVG_NS;\n b = n(b, this.rotation, 0);\n var r = e.styledMode ? m && O.prototype.getStyle.call(m, \"font-size\") : D && D.fontSize;\n if (G(w)) {\n var c = w.toString();\n -1 === c.indexOf(\"<\") && (c = c.replace(/[0-9]/g, \"0\"));\n c += [\"\", b, r, this.textWidth, D && D.textOverflow].join();\n }\n c && !a && (d = l[c]);\n if (!d) {\n if (g || e.forExport) {\n try {\n (k = this.fakeTS && function (a) {\n [].forEach.call(m.querySelectorAll(\".highcharts-text-outline\"), function (b) {\n b.style.display = a;\n });\n }) && k(\"none\"), d = m.getBBox ? t({}, m.getBBox()) : {\n width: m.offsetWidth,\n height: m.offsetHeight\n }, k && k(\"\");\n } catch (aa) {\n \"\";\n }\n if (!d || 0 > d.width) d = {\n width: 0,\n height: 0\n };\n } else d = this.htmlGetBBox();\n e.isSVG && (a = d.width, e = d.height, g && (d.height = e = {\n \"11px,17\": 14,\n \"13px,20\": 16\n }[D && D.fontSize + \",\" + Math.round(e)] || e), b && (D = b * E, d.width = Math.abs(e * Math.sin(D)) + Math.abs(a * Math.cos(D)), d.height = Math.abs(e * Math.cos(D)) + Math.abs(a * Math.sin(D))));\n if (c && 0 < d.height) {\n for (; 250 < N.length;) delete l[N.shift()];\n l[c] || N.push(c);\n l[c] = d;\n }\n }\n return d;\n },\n show: function (a) {\n return this.attr({\n visibility: a ? \"inherit\" : \"visible\"\n });\n },\n hide: function (a) {\n a ? this.attr({\n y: -9999\n }) : this.attr({\n visibility: \"hidden\"\n });\n return this;\n },\n fadeOut: function (a) {\n var b = this;\n b.animate({\n opacity: 0\n }, {\n duration: a || 150,\n complete: function () {\n b.attr({\n y: -9999\n });\n }\n });\n },\n add: function (a) {\n var b = this.renderer,\n d = this.element;\n a && (this.parentGroup = a);\n this.parentInverted = a && a.inverted;\n void 0 !== this.textStr && b.buildText(this);\n this.added = !0;\n if (!a || a.handleZ || this.zIndex) var e = this.zIndexSetter();\n e || (a ? a.element : b.box).appendChild(d);\n if (this.onAdd) this.onAdd();\n return this;\n },\n safeRemoveChild: function (a) {\n var b = a.parentNode;\n b && b.removeChild(a);\n },\n destroy: function () {\n var a = this,\n b = a.element || {},\n d = a.renderer,\n e = d.isSVG && \"SPAN\" === b.nodeName && a.parentGroup,\n m = b.ownerSVGElement,\n w = a.clipPath;\n b.onclick = b.onmouseout = b.onmouseover = b.onmousemove = b.point = null;\n K(a);\n w && m && ([].forEach.call(m.querySelectorAll(\"[clip-path],[CLIP-PATH]\"), function (a) {\n -1 < a.getAttribute(\"clip-path\").indexOf(w.element.id) && a.removeAttribute(\"clip-path\");\n }), a.clipPath = w.destroy());\n if (a.stops) {\n for (m = 0; m < a.stops.length; m++) a.stops[m] = a.stops[m].destroy();\n a.stops = null;\n }\n a.safeRemoveChild(b);\n for (d.styledMode || a.destroyShadows(); e && e.div && 0 === e.div.childNodes.length;) b = e.parentGroup, a.safeRemoveChild(e.div), delete e.div, e = b;\n a.alignTo && B(d.alignedObjects, a);\n h(a, function (b, d) {\n a[d] && a[d].parentGroup === a && a[d].destroy && a[d].destroy();\n delete a[d];\n });\n },\n shadow: function (a, b, d) {\n var e = [],\n m,\n w = this.element;\n if (!a) this.destroyShadows();else if (!this.shadows) {\n var D = n(a.width, 3);\n var k = (a.opacity || .15) / D;\n var l = this.parentInverted ? \"(-1,-1)\" : \"(\" + n(a.offsetX, 1) + \", \" + n(a.offsetY, 1) + \")\";\n for (m = 1; m <= D; m++) {\n var g = w.cloneNode(0);\n var r = 2 * D + 1 - 2 * m;\n F(g, {\n stroke: a.color || \"#000000\",\n \"stroke-opacity\": k * m,\n \"stroke-width\": r,\n transform: \"translate\" + l,\n fill: \"none\"\n });\n g.setAttribute(\"class\", (g.getAttribute(\"class\") || \"\") + \" highcharts-shadow\");\n d && (F(g, \"height\", Math.max(F(g, \"height\") - r, 0)), g.cutHeight = r);\n b ? b.element.appendChild(g) : w.parentNode && w.parentNode.insertBefore(g, w);\n e.push(g);\n }\n this.shadows = e;\n }\n return this;\n },\n destroyShadows: function () {\n (this.shadows || []).forEach(function (a) {\n this.safeRemoveChild(a);\n }, this);\n this.shadows = void 0;\n },\n xGetter: function (a) {\n \"circle\" === this.element.nodeName && (\"x\" === a ? a = \"cx\" : \"y\" === a && (a = \"cy\"));\n return this._defaultGetter(a);\n },\n _defaultGetter: function (a) {\n a = n(this[a + \"Value\"], this[a], this.element ? this.element.getAttribute(a) : null, 0);\n /^[\\-0-9\\.]+$/.test(a) && (a = parseFloat(a));\n return a;\n },\n dSetter: function (a, b, d) {\n a && a.join && (a = a.join(\" \"));\n /(NaN| {2}|^$)/.test(a) && (a = \"M 0 0\");\n this[b] !== a && (d.setAttribute(b, a), this[b] = a);\n },\n dashstyleSetter: function (a) {\n var b,\n d = this[\"stroke-width\"];\n \"inherit\" === d && (d = 1);\n if (a = a && a.toLowerCase()) {\n a = a.replace(\"shortdashdotdot\", \"3,1,1,1,1,1,\").replace(\"shortdashdot\", \"3,1,1,1\").replace(\"shortdot\", \"1,1,\").replace(\"shortdash\", \"3,1,\").replace(\"longdash\", \"8,3,\").replace(/dot/g, \"1,3,\").replace(\"dash\", \"4,3,\").replace(/,$/, \"\").split(\",\");\n for (b = a.length; b--;) a[b] = q(a[b]) * d;\n a = a.join(\",\").replace(/NaN/g, \"none\");\n this.element.setAttribute(\"stroke-dasharray\", a);\n }\n },\n alignSetter: function (a) {\n var b = {\n left: \"start\",\n center: \"middle\",\n right: \"end\"\n };\n b[a] && (this.alignValue = a, this.element.setAttribute(\"text-anchor\", b[a]));\n },\n opacitySetter: function (a, b, d) {\n this[b] = a;\n d.setAttribute(b, a);\n },\n titleSetter: function (a) {\n var b = this.element.getElementsByTagName(\"title\")[0];\n b || (b = p.createElementNS(this.SVG_NS, \"title\"), this.element.appendChild(b));\n b.firstChild && b.removeChild(b.firstChild);\n b.appendChild(p.createTextNode(String(n(a, \"\")).replace(/<[^>]*>/g, \"\").replace(/</g, \"<\").replace(/>/g, \">\")));\n },\n textSetter: function (a) {\n a !== this.textStr && (delete this.bBox, delete this.textPxLength, this.textStr = a, this.added && this.renderer.buildText(this));\n },\n setTextPath: function (a, b) {\n var d = this.element,\n e = {\n textAnchor: \"text-anchor\"\n },\n m = !1,\n D = this.textPathWrapper,\n k = !D;\n b = A(!0, {\n enabled: !0,\n attributes: {\n dy: -5,\n startOffset: \"50%\",\n textAnchor: \"middle\"\n }\n }, b);\n var l = b.attributes;\n if (a && b && b.enabled) {\n this.options && this.options.padding && (l.dx = -this.options.padding);\n D || (this.textPathWrapper = D = this.renderer.createElement(\"textPath\"), m = !0);\n var g = D.element;\n (b = a.element.getAttribute(\"id\")) || a.element.setAttribute(\"id\", b = c.uniqueKey());\n if (k) for (a = d.getElementsByTagName(\"tspan\"); a.length;) a[0].setAttribute(\"y\", 0), g.appendChild(a[0]);\n m && D.add({\n element: this.text ? this.text.element : d\n });\n g.setAttributeNS(\"http://www.w3.org/1999/xlink\", \"href\", this.renderer.url + \"#\" + b);\n G(l.dy) && (g.parentNode.setAttribute(\"dy\", l.dy), delete l.dy);\n G(l.dx) && (g.parentNode.setAttribute(\"dx\", l.dx), delete l.dx);\n h(l, function (a, b) {\n g.setAttribute(e[b] || b, a);\n });\n d.removeAttribute(\"transform\");\n this.removeTextOutline.call(D, [].slice.call(d.getElementsByTagName(\"tspan\")));\n this.text && !this.renderer.styledMode && this.attr({\n fill: \"none\",\n \"stroke-width\": 0\n });\n this.applyTextOutline = this.updateTransform = w;\n } else D && (delete this.updateTransform, delete this.applyTextOutline, this.destroyTextPath(d, a));\n return this;\n },\n destroyTextPath: function (a, b) {\n var d;\n b.element.setAttribute(\"id\", \"\");\n for (d = this.textPathWrapper.element.childNodes; d.length;) a.firstChild.appendChild(d[0]);\n a.firstChild.removeChild(this.textPathWrapper.element);\n delete b.textPathWrapper;\n },\n fillSetter: function (a, b, d) {\n \"string\" === typeof a ? d.setAttribute(b, a) : a && this.complexColor(a, b, d);\n },\n visibilitySetter: function (a, b, d) {\n \"inherit\" === a ? d.removeAttribute(b) : this[b] !== a && d.setAttribute(b, a);\n this[b] = a;\n },\n zIndexSetter: function (a, b) {\n var d = this.renderer,\n e = this.parentGroup,\n m = (e || d).element || d.box,\n w = this.element,\n k = !1;\n d = m === d.box;\n var D = this.added;\n var l;\n G(a) ? (w.setAttribute(\"data-z-index\", a), a = +a, this[b] === a && (D = !1)) : G(this[b]) && w.removeAttribute(\"data-z-index\");\n this[b] = a;\n if (D) {\n (a = this.zIndex) && e && (e.handleZ = !0);\n b = m.childNodes;\n for (l = b.length - 1; 0 <= l && !k; l--) {\n e = b[l];\n D = e.getAttribute(\"data-z-index\");\n var g = !G(D);\n if (e !== w) if (0 > a && g && !d && !l) m.insertBefore(w, b[l]), k = !0;else if (q(D) <= a || g && (!G(a) || 0 <= a)) m.insertBefore(w, b[l + 1] || null), k = !0;\n }\n k || (m.insertBefore(w, b[d ? 3 : 0] || null), k = !0);\n }\n return k;\n },\n _defaultSetter: function (a, b, d) {\n d.setAttribute(b, a);\n }\n });\n O.prototype.yGetter = O.prototype.xGetter;\n O.prototype.translateXSetter = O.prototype.translateYSetter = O.prototype.rotationSetter = O.prototype.verticalAlignSetter = O.prototype.rotationOriginXSetter = O.prototype.rotationOriginYSetter = O.prototype.scaleXSetter = O.prototype.scaleYSetter = O.prototype.matrixSetter = function (a, b) {\n this[b] = a;\n this.doTransform = !0;\n };\n O.prototype[\"stroke-widthSetter\"] = O.prototype.strokeSetter = function (a, b, d) {\n this[b] = a;\n this.stroke && this[\"stroke-width\"] ? (O.prototype.fillSetter.call(this, this.stroke, \"stroke\", d), d.setAttribute(\"stroke-width\", this[\"stroke-width\"]), this.hasStroke = !0) : \"stroke-width\" === b && 0 === a && this.hasStroke ? (d.removeAttribute(\"stroke\"), this.hasStroke = !1) : this.renderer.styledMode && this[\"stroke-width\"] && (d.setAttribute(\"stroke-width\", this[\"stroke-width\"]), this.hasStroke = !0);\n };\n f = c.SVGRenderer = function () {\n this.init.apply(this, arguments);\n };\n t(f.prototype, {\n Element: O,\n SVG_NS: U,\n init: function (a, d, e, m, w, g, r) {\n var D = this.createElement(\"svg\").attr({\n version: \"1.1\",\n \"class\": \"highcharts-root\"\n });\n r || D.css(this.getStyle(m));\n m = D.element;\n a.appendChild(m);\n F(a, \"dir\", \"ltr\");\n -1 === a.innerHTML.indexOf(\"xmlns\") && F(m, \"xmlns\", this.SVG_NS);\n this.isSVG = !0;\n this.box = m;\n this.boxWrapper = D;\n this.alignedObjects = [];\n this.url = (k || x) && p.getElementsByTagName(\"base\").length ? Q.location.href.split(\"#\")[0].replace(/<[^>]*>/g, \"\").replace(/([\\('\\)])/g, \"\\\\$1\").replace(/ /g, \"%20\") : \"\";\n this.createElement(\"desc\").add().element.appendChild(p.createTextNode(\"Created with Highcharts 7.2.2\"));\n this.defs = this.createElement(\"defs\").add();\n this.allowHTML = g;\n this.forExport = w;\n this.styledMode = r;\n this.gradients = {};\n this.cache = {};\n this.cacheKeys = [];\n this.imgCount = 0;\n this.setSize(d, e, !1);\n var c;\n k && a.getBoundingClientRect && (d = function () {\n l(a, {\n left: 0,\n top: 0\n });\n c = a.getBoundingClientRect();\n l(a, {\n left: Math.ceil(c.left) - c.left + \"px\",\n top: Math.ceil(c.top) - c.top + \"px\"\n });\n }, d(), this.unSubPixelFix = b(Q, \"resize\", d));\n },\n definition: function (a) {\n function b(a, e) {\n var m;\n g(a).forEach(function (a) {\n var w = d.createElement(a.tagName),\n k = {};\n h(a, function (a, b) {\n \"tagName\" !== b && \"children\" !== b && \"textContent\" !== b && (k[b] = a);\n });\n w.attr(k);\n w.add(e || d.defs);\n a.textContent && w.element.appendChild(p.createTextNode(a.textContent));\n b(a.children || [], w);\n m = w;\n });\n return m;\n }\n var d = this;\n return b(a);\n },\n getStyle: function (a) {\n return this.style = t({\n fontFamily: '\"Lucida Grande\", \"Lucida Sans Unicode\", Arial, Helvetica, sans-serif',\n fontSize: \"12px\"\n }, a);\n },\n setStyle: function (a) {\n this.boxWrapper.css(this.getStyle(a));\n },\n isHidden: function () {\n return !this.boxWrapper.getBBox().width;\n },\n destroy: function () {\n var a = this.defs;\n this.box = null;\n this.boxWrapper = this.boxWrapper.destroy();\n z(this.gradients || {});\n this.gradients = null;\n a && (this.defs = a.destroy());\n this.unSubPixelFix && this.unSubPixelFix();\n return this.alignedObjects = null;\n },\n createElement: function (a) {\n var b = new this.Element();\n b.init(this, a);\n return b;\n },\n draw: w,\n getRadialAttr: function (a, b) {\n return {\n cx: a[0] - a[2] / 2 + b.cx * a[2],\n cy: a[1] - a[2] / 2 + b.cy * a[2],\n r: b.r * a[2]\n };\n },\n truncate: function (a, b, d, e, m, w, k) {\n var l = this,\n D = a.rotation,\n g,\n r = e ? 1 : 0,\n c = (d || e).length,\n x = c,\n J = [],\n K = function (a) {\n b.firstChild && b.removeChild(b.firstChild);\n a && b.appendChild(p.createTextNode(a));\n },\n N = function (w, D) {\n D = D || w;\n if (void 0 === J[D]) if (b.getSubStringLength) try {\n J[D] = m + b.getSubStringLength(0, e ? D + 1 : D);\n } catch (ba) {\n \"\";\n } else l.getSpanWidth && (K(k(d || e, w)), J[D] = m + l.getSpanWidth(a, b));\n return J[D];\n },\n A;\n a.rotation = 0;\n var h = N(b.textContent.length);\n if (A = m + h > w) {\n for (; r <= c;) x = Math.ceil((r + c) / 2), e && (g = k(e, x)), h = N(x, g && g.length - 1), r === c ? r = c + 1 : h > w ? c = x - 1 : r = x;\n 0 === c ? K(\"\") : d && c === d.length - 1 || K(g || k(d || e, x));\n }\n e && e.splice(0, x);\n a.actualWidth = h;\n a.rotation = D;\n return A;\n },\n escapes: {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n \"'\": \"'\",\n '\"': \""\"\n },\n buildText: function (a) {\n var b = a.element,\n d = this,\n e = d.forExport,\n m = n(a.textStr, \"\").toString(),\n w = -1 !== m.indexOf(\"<\"),\n k = b.childNodes,\n D,\n g = F(b, \"x\"),\n r = a.styles,\n c = a.textWidth,\n x = r && r.lineHeight,\n K = r && r.textOutline,\n A = r && \"ellipsis\" === r.textOverflow,\n u = r && \"nowrap\" === r.whiteSpace,\n L = r && r.fontSize,\n E,\n f = k.length;\n r = c && !a.added && this.box;\n var S = function (a) {\n var m;\n d.styledMode || (m = /(px|em)$/.test(a && a.style.fontSize) ? a.style.fontSize : L || d.style.fontSize || 12);\n return x ? q(x) : d.fontMetrics(m, a.getAttribute(\"style\") ? a : b).h;\n },\n v = function (a, b) {\n h(d.escapes, function (d, m) {\n b && -1 !== b.indexOf(d) || (a = a.toString().replace(new RegExp(d, \"g\"), m));\n });\n return a;\n },\n O = function (a, b) {\n var d = a.indexOf(\"<\");\n a = a.substring(d, a.indexOf(\">\") - d);\n d = a.indexOf(b + \"=\");\n if (-1 !== d && (d = d + b.length + 1, b = a.charAt(d), '\"' === b || \"'\" === b)) return a = a.substring(d + 1), a.substring(0, a.indexOf(b));\n },\n Q = /<br.*?>/g;\n var t = [m, A, u, x, K, L, c].join();\n if (t !== a.textCache) {\n for (a.textCache = t; f--;) b.removeChild(k[f]);\n w || K || A || c || -1 !== m.indexOf(\" \") && (!u || Q.test(m)) ? (r && r.appendChild(b), w ? (m = d.styledMode ? m.replace(/<(b|strong)>/g, '<span class=\"highcharts-strong\">').replace(/<(i|em)>/g, '<span class=\"highcharts-emphasized\">') : m.replace(/<(b|strong)>/g, '<span style=\"font-weight:bold\">').replace(/<(i|em)>/g, '<span style=\"font-style:italic\">'), m = m.replace(/<a/g, \"<span\").replace(/<\\/(b|strong|i|em|a)>/g, \"</span>\").split(Q)) : m = [m], m = m.filter(function (a) {\n return \"\" !== a;\n }), m.forEach(function (m, w) {\n var k = 0,\n r = 0;\n m = m.replace(/^\\s+|\\s+$/g, \"\").replace(/<span/g, \"|||<span\").replace(/<\\/span>/g, \"</span>|||\");\n var x = m.split(\"|||\");\n x.forEach(function (m) {\n if (\"\" !== m || 1 === x.length) {\n var K = {},\n N = p.createElementNS(d.SVG_NS, \"tspan\"),\n h,\n n;\n (h = O(m, \"class\")) && F(N, \"class\", h);\n if (h = O(m, \"style\")) h = h.replace(/(;| |^)color([ :])/, \"$1fill$2\"), F(N, \"style\", h);\n if ((n = O(m, \"href\")) && !e && -1 === n.split(\":\")[0].toLowerCase().indexOf(\"javascript\")) {\n var T = p.createElementNS(d.SVG_NS, \"a\");\n F(T, \"href\", n);\n F(N, \"class\", \"highcharts-anchor\");\n T.appendChild(N);\n d.styledMode || l(N, {\n cursor: \"pointer\"\n });\n }\n m = v(m.replace(/<[a-zA-Z\\/](.|\\n)*?>/g, \"\") || \" \");\n if (\" \" !== m) {\n N.appendChild(p.createTextNode(m));\n k ? K.dx = 0 : w && null !== g && (K.x = g);\n F(N, K);\n b.appendChild(T || N);\n !k && E && (!J && e && l(N, {\n display: \"block\"\n }), F(N, \"dy\", S(N)));\n if (c) {\n var f = m.replace(/([^\\^])-/g, \"$1- \").split(\" \");\n K = !u && (1 < x.length || w || 1 < f.length);\n T = 0;\n n = S(N);\n if (A) D = d.truncate(a, N, m, void 0, 0, Math.max(0, c - parseInt(L || 12, 10)), function (a, b) {\n return a.substring(0, b) + \"\\u2026\";\n });else if (K) for (; f.length;) f.length && !u && 0 < T && (N = p.createElementNS(U, \"tspan\"), F(N, {\n dy: n,\n x: g\n }), h && F(N, \"style\", h), N.appendChild(p.createTextNode(f.join(\" \").replace(/- /g, \"-\"))), b.appendChild(N)), d.truncate(a, N, null, f, 0 === T ? r : 0, c, function (a, b) {\n return f.slice(0, b).join(\" \").replace(/- /g, \"-\");\n }), r = a.actualWidth, T++;\n }\n k++;\n }\n }\n });\n E = E || b.childNodes.length;\n }), A && D && a.attr(\"title\", v(a.textStr, [\"<\", \">\"])), r && r.removeChild(b), K && a.applyTextOutline && a.applyTextOutline(K)) : b.appendChild(p.createTextNode(v(m)));\n }\n },\n getContrast: function (a) {\n a = e(a).rgba;\n a[0] *= 1;\n a[1] *= 1.2;\n a[2] *= .5;\n return 459 < a[0] + a[1] + a[2] ? \"#000000\" : \"#FFFFFF\";\n },\n button: function (a, d, m, e, w, k, l, g, c, x) {\n var D = this.label(a, d, m, c, null, null, x, null, \"button\"),\n p = 0,\n K = this.styledMode;\n D.attr(A({\n padding: 8,\n r: 2\n }, w));\n if (!K) {\n w = A({\n fill: \"#f7f7f7\",\n stroke: \"#cccccc\",\n \"stroke-width\": 1,\n style: {\n color: \"#333333\",\n cursor: \"pointer\",\n fontWeight: \"normal\"\n }\n }, w);\n var J = w.style;\n delete w.style;\n k = A(w, {\n fill: \"#e6e6e6\"\n }, k);\n var N = k.style;\n delete k.style;\n l = A(w, {\n fill: \"#e6ebf5\",\n style: {\n color: \"#000000\",\n fontWeight: \"bold\"\n }\n }, l);\n var h = l.style;\n delete l.style;\n g = A(w, {\n style: {\n color: \"#cccccc\"\n }\n }, g);\n var u = g.style;\n delete g.style;\n }\n b(D.element, r ? \"mouseover\" : \"mouseenter\", function () {\n 3 !== p && D.setState(1);\n });\n b(D.element, r ? \"mouseout\" : \"mouseleave\", function () {\n 3 !== p && D.setState(p);\n });\n D.setState = function (a) {\n 1 !== a && (D.state = p = a);\n D.removeClass(/highcharts-button-(normal|hover|pressed|disabled)/).addClass(\"highcharts-button-\" + [\"normal\", \"hover\", \"pressed\", \"disabled\"][a || 0]);\n K || D.attr([w, k, l, g][a || 0]).css([J, N, h, u][a || 0]);\n };\n K || D.attr(w).css(t({\n cursor: \"default\"\n }, J));\n return D.on(\"click\", function (a) {\n 3 !== p && e.call(D, a);\n });\n },\n crispLine: function (a, b) {\n a[1] === a[4] && (a[1] = a[4] = Math.round(a[1]) - b % 2 / 2);\n a[2] === a[5] && (a[2] = a[5] = Math.round(a[2]) + b % 2 / 2);\n return a;\n },\n path: function (a) {\n var b = this.styledMode ? {} : {\n fill: \"none\"\n };\n v(a) ? b.d = a : H(a) && t(b, a);\n return this.createElement(\"path\").attr(b);\n },\n circle: function (a, b, d) {\n a = H(a) ? a : void 0 === a ? {} : {\n x: a,\n y: b,\n r: d\n };\n b = this.createElement(\"circle\");\n b.xSetter = b.ySetter = function (a, b, d) {\n d.setAttribute(\"c\" + b, a);\n };\n return b.attr(a);\n },\n arc: function (a, b, d, m, e, w) {\n H(a) ? (m = a, b = m.y, d = m.r, a = m.x) : m = {\n innerR: m,\n start: e,\n end: w\n };\n a = this.symbol(\"arc\", a, b, d, d, m);\n a.r = d;\n return a;\n },\n rect: function (a, b, d, m, e, w) {\n e = H(a) ? a.r : e;\n var k = this.createElement(\"rect\");\n a = H(a) ? a : void 0 === a ? {} : {\n x: a,\n y: b,\n width: Math.max(d, 0),\n height: Math.max(m, 0)\n };\n this.styledMode || (void 0 !== w && (a.strokeWidth = w, a = k.crisp(a)), a.fill = \"none\");\n e && (a.r = e);\n k.rSetter = function (a, b, d) {\n k.r = a;\n F(d, {\n rx: a,\n ry: a\n });\n };\n k.rGetter = function () {\n return k.r;\n };\n return k.attr(a);\n },\n setSize: function (a, b, d) {\n var m = this.alignedObjects,\n e = m.length;\n this.width = a;\n this.height = b;\n for (this.boxWrapper.animate({\n width: a,\n height: b\n }, {\n step: function () {\n this.attr({\n viewBox: \"0 0 \" + this.attr(\"width\") + \" \" + this.attr(\"height\")\n });\n },\n duration: n(d, !0) ? void 0 : 0\n }); e--;) m[e].align();\n },\n g: function (a) {\n var b = this.createElement(\"g\");\n return a ? b.attr({\n \"class\": \"highcharts-\" + a\n }) : b;\n },\n image: function (a, d, m, e, w, k) {\n var l = {\n preserveAspectRatio: \"none\"\n },\n g = function (a, b) {\n a.setAttributeNS ? a.setAttributeNS(\"http://www.w3.org/1999/xlink\", \"href\", b) : a.setAttribute(\"hc-svg-href\", b);\n },\n r = function (b) {\n g(c.element, a);\n k.call(c, b);\n };\n 1 < arguments.length && t(l, {\n x: d,\n y: m,\n width: e,\n height: w\n });\n var c = this.createElement(\"image\").attr(l);\n k ? (g(c.element, \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\"), l = new Q.Image(), b(l, \"load\", r), l.src = a, l.complete && r({})) : g(c.element, a);\n return c;\n },\n symbol: function (a, b, m, e, w, k) {\n var g = this,\n r = /^url\\((.*?)\\)$/,\n c = r.test(a),\n D = !c && (this.symbols[a] ? a : \"circle\"),\n x = D && this.symbols[D],\n K = G(b) && x && x.call(this.symbols, Math.round(b), Math.round(m), e, w, k);\n if (x) {\n var J = this.path(K);\n g.styledMode || J.attr(\"fill\", \"none\");\n t(J, {\n symbolName: D,\n x: b,\n y: m,\n width: e,\n height: w\n });\n k && t(J, k);\n } else if (c) {\n var A = a.match(r)[1];\n J = this.image(A);\n J.imgwidth = n(S[A] && S[A].width, k && k.width);\n J.imgheight = n(S[A] && S[A].height, k && k.height);\n var h = function () {\n J.attr({\n width: J.width,\n height: J.height\n });\n };\n [\"width\", \"height\"].forEach(function (a) {\n J[a + \"Setter\"] = function (a, b) {\n var d = {},\n m = this[\"img\" + b],\n e = \"width\" === b ? \"translateX\" : \"translateY\";\n this[b] = a;\n G(m) && (k && \"within\" === k.backgroundSize && this.width && this.height && (m = Math.round(m * Math.min(this.width / this.imgwidth, this.height / this.imgheight))), this.element && this.element.setAttribute(b, m), this.alignByTranslate || (d[e] = ((this[b] || 0) - m) / 2, this.attr(d)));\n };\n });\n G(b) && J.attr({\n x: b,\n y: m\n });\n J.isImg = !0;\n G(J.imgwidth) && G(J.imgheight) ? h() : (J.attr({\n width: 0,\n height: 0\n }), L(\"img\", {\n onload: function () {\n var a = d[g.chartIndex];\n 0 === this.width && (l(this, {\n position: \"absolute\",\n top: \"-999em\"\n }), p.body.appendChild(this));\n S[A] = {\n width: this.width,\n height: this.height\n };\n J.imgwidth = this.width;\n J.imgheight = this.height;\n J.element && h();\n this.parentNode && this.parentNode.removeChild(this);\n g.imgCount--;\n if (!g.imgCount && a && a.onload) a.onload();\n },\n src: A\n }), this.imgCount++);\n }\n return J;\n },\n symbols: {\n circle: function (a, b, d, m) {\n return this.arc(a + d / 2, b + m / 2, d / 2, m / 2, {\n start: .5 * Math.PI,\n end: 2.5 * Math.PI,\n open: !1\n });\n },\n square: function (a, b, d, m) {\n return [\"M\", a, b, \"L\", a + d, b, a + d, b + m, a, b + m, \"Z\"];\n },\n triangle: function (a, b, d, m) {\n return [\"M\", a + d / 2, b, \"L\", a + d, b + m, a, b + m, \"Z\"];\n },\n \"triangle-down\": function (a, b, d, m) {\n return [\"M\", a, b, \"L\", a + d, b, a + d / 2, b + m, \"Z\"];\n },\n diamond: function (a, b, d, m) {\n return [\"M\", a + d / 2, b, \"L\", a + d, b + m / 2, a + d / 2, b + m, a, b + m / 2, \"Z\"];\n },\n arc: function (a, b, d, m, e) {\n var w = e.start,\n k = e.r || d,\n l = e.r || m || d,\n g = e.end - .001;\n d = e.innerR;\n m = n(e.open, .001 > Math.abs(e.end - e.start - 2 * Math.PI));\n var r = Math.cos(w),\n c = Math.sin(w),\n x = Math.cos(g);\n g = Math.sin(g);\n w = .001 > e.end - w - Math.PI ? 0 : 1;\n e = [\"M\", a + k * r, b + l * c, \"A\", k, l, 0, w, n(e.clockwise, 1), a + k * x, b + l * g];\n G(d) && e.push(m ? \"M\" : \"L\", a + d * x, b + d * g, \"A\", d, d, 0, w, 0, a + d * r, b + d * c);\n e.push(m ? \"\" : \"Z\");\n return e;\n },\n callout: function (a, b, d, m, e) {\n var w = Math.min(e && e.r || 0, d, m),\n k = w + 6,\n l = e && e.anchorX;\n e = e && e.anchorY;\n var g = [\"M\", a + w, b, \"L\", a + d - w, b, \"C\", a + d, b, a + d, b, a + d, b + w, \"L\", a + d, b + m - w, \"C\", a + d, b + m, a + d, b + m, a + d - w, b + m, \"L\", a + w, b + m, \"C\", a, b + m, a, b + m, a, b + m - w, \"L\", a, b + w, \"C\", a, b, a, b, a + w, b];\n l && l > d ? e > b + k && e < b + m - k ? g.splice(13, 3, \"L\", a + d, e - 6, a + d + 6, e, a + d, e + 6, a + d, b + m - w) : g.splice(13, 3, \"L\", a + d, m / 2, l, e, a + d, m / 2, a + d, b + m - w) : l && 0 > l ? e > b + k && e < b + m - k ? g.splice(33, 3, \"L\", a, e + 6, a - 6, e, a, e - 6, a, b + w) : g.splice(33, 3, \"L\", a, m / 2, l, e, a, m / 2, a, b + w) : e && e > m && l > a + k && l < a + d - k ? g.splice(23, 3, \"L\", l + 6, b + m, l, b + m + 6, l - 6, b + m, a + w, b + m) : e && 0 > e && l > a + k && l < a + d - k && g.splice(3, 3, \"L\", l - 6, b, l, b - 6, l + 6, b, d - w, b);\n return g;\n }\n },\n clipRect: function (a, b, d, m) {\n var e = c.uniqueKey() + \"-\",\n w = this.createElement(\"clipPath\").attr({\n id: e\n }).add(this.defs);\n a = this.rect(a, b, d, m, 0).add(w);\n a.id = e;\n a.clipPath = w;\n a.count = 0;\n return a;\n },\n text: function (a, b, d, m) {\n var e = {};\n if (m && (this.allowHTML || !this.forExport)) return this.html(a, b, d);\n e.x = Math.round(b || 0);\n d && (e.y = Math.round(d));\n G(a) && (e.text = a);\n a = this.createElement(\"text\").attr(e);\n m || (a.xSetter = function (a, b, d) {\n var m = d.getElementsByTagName(\"tspan\"),\n e = d.getAttribute(b),\n w;\n for (w = 0; w < m.length; w++) {\n var k = m[w];\n k.getAttribute(b) === e && k.setAttribute(b, a);\n }\n d.setAttribute(b, a);\n });\n return a;\n },\n fontMetrics: function (a, b) {\n a = !this.styledMode && /px/.test(a) || !Q.getComputedStyle ? a || b && b.style && b.style.fontSize || this.style && this.style.fontSize : b && O.prototype.getStyle.call(b, \"font-size\");\n a = /px/.test(a) ? q(a) : 12;\n b = 24 > a ? a + 3 : Math.round(1.2 * a);\n return {\n h: b,\n b: Math.round(.8 * b),\n f: a\n };\n },\n rotCorr: function (a, b, d) {\n var m = a;\n b && d && (m = Math.max(m * Math.cos(b * E), 4));\n return {\n x: -a / 3 * Math.sin(b * E),\n y: m\n };\n },\n label: function (a, b, d, e, w, k, l, g, r) {\n var c = this,\n x = c.styledMode,\n J = c.g(\"button\" !== r && \"label\"),\n p = J.text = c.text(\"\", 0, 0, l).attr({\n zIndex: 1\n }),\n K,\n h,\n D = 0,\n u = 3,\n L = 0,\n n,\n N,\n E,\n U,\n f,\n q = {},\n T,\n S,\n v = /^url\\((.*?)\\)$/.test(e),\n Q = x || v,\n y = function () {\n return x ? K.strokeWidth() % 2 / 2 : (T ? parseInt(T, 10) : 0) % 2 / 2;\n };\n r && J.addClass(\"highcharts-\" + r);\n var R = function () {\n var a = p.element.style,\n b = {};\n h = (void 0 === n || void 0 === N || f) && G(p.textStr) && p.getBBox();\n J.width = (n || h.width || 0) + 2 * u + L;\n J.height = (N || h.height || 0) + 2 * u;\n S = u + Math.min(c.fontMetrics(a && a.fontSize, p).b, h ? h.height : Infinity);\n Q && (K || (J.box = K = c.symbols[e] || v ? c.symbol(e) : c.rect(), K.addClass((\"button\" === r ? \"\" : \"highcharts-label-box\") + (r ? \" highcharts-\" + r + \"-box\" : \"\")), K.add(J), a = y(), b.x = a, b.y = (g ? -S : 0) + a), b.width = Math.round(J.width), b.height = Math.round(J.height), K.attr(t(b, q)), q = {});\n };\n var B = function () {\n var a = L + u;\n var b = g ? 0 : S;\n G(n) && h && (\"center\" === f || \"right\" === f) && (a += {\n center: .5,\n right: 1\n }[f] * (n - h.width));\n if (a !== p.x || b !== p.y) p.attr(\"x\", a), p.hasBoxWidthChanged && (h = p.getBBox(!0), R()), void 0 !== b && p.attr(\"y\", b);\n p.x = a;\n p.y = b;\n };\n var V = function (a, b) {\n K ? K.attr(a, b) : q[a] = b;\n };\n J.onAdd = function () {\n p.add(J);\n J.attr({\n text: a || 0 === a ? a : \"\",\n x: b,\n y: d\n });\n K && G(w) && J.attr({\n anchorX: w,\n anchorY: k\n });\n };\n J.widthSetter = function (a) {\n n = C(a) ? a : null;\n };\n J.heightSetter = function (a) {\n N = a;\n };\n J[\"text-alignSetter\"] = function (a) {\n f = a;\n };\n J.paddingSetter = function (a) {\n G(a) && a !== u && (u = J.padding = a, B());\n };\n J.paddingLeftSetter = function (a) {\n G(a) && a !== L && (L = a, B());\n };\n J.alignSetter = function (a) {\n a = {\n left: 0,\n center: .5,\n right: 1\n }[a];\n a !== D && (D = a, h && J.attr({\n x: E\n }));\n };\n J.textSetter = function (a) {\n void 0 !== a && p.attr({\n text: a\n });\n R();\n B();\n };\n J[\"stroke-widthSetter\"] = function (a, b) {\n a && (Q = !0);\n T = this[\"stroke-width\"] = a;\n V(b, a);\n };\n x ? J.rSetter = function (a, b) {\n V(b, a);\n } : J.strokeSetter = J.fillSetter = J.rSetter = function (a, b) {\n \"r\" !== b && (\"fill\" === b && a && (Q = !0), J[b] = a);\n V(b, a);\n };\n J.anchorXSetter = function (a, b) {\n w = J.anchorX = a;\n V(b, Math.round(a) - y() - E);\n };\n J.anchorYSetter = function (a, b) {\n k = J.anchorY = a;\n V(b, a - U);\n };\n J.xSetter = function (a) {\n J.x = a;\n D && (a -= D * ((n || h.width) + 2 * u), J[\"forceAnimate:x\"] = !0);\n E = Math.round(a);\n J.attr(\"translateX\", E);\n };\n J.ySetter = function (a) {\n U = J.y = Math.round(a);\n J.attr(\"translateY\", U);\n };\n var H = J.css;\n l = {\n css: function (a) {\n if (a) {\n var b = {};\n a = A(a);\n J.textProps.forEach(function (d) {\n void 0 !== a[d] && (b[d] = a[d], delete a[d]);\n });\n p.css(b);\n \"width\" in b && R();\n \"fontSize\" in b && (R(), B());\n }\n return H.call(J, a);\n },\n getBBox: function () {\n return {\n width: h.width + 2 * u,\n height: h.height + 2 * u,\n x: h.x - u,\n y: h.y - u\n };\n },\n destroy: function () {\n m(J.element, \"mouseenter\");\n m(J.element, \"mouseleave\");\n p && (p = p.destroy());\n K && (K = K.destroy());\n O.prototype.destroy.call(J);\n J = c = R = B = V = null;\n }\n };\n x || (l.shadow = function (a) {\n a && (R(), K && K.shadow(a));\n return J;\n });\n return t(J, l);\n }\n });\n c.Renderer = f;\n });\n M(I, \"parts/Html.js\", [I[\"parts/Globals.js\"], I[\"parts/Utilities.js\"]], function (c, f) {\n var F = f.attr,\n G = f.defined,\n z = f.extend,\n B = f.pick,\n t = f.pInt,\n v = c.createElement,\n C = c.css,\n H = c.isFirefox,\n y = c.isMS,\n h = c.isWebKit,\n n = c.SVGElement;\n f = c.SVGRenderer;\n var q = c.win;\n z(n.prototype, {\n htmlCss: function (g) {\n var b = \"SPAN\" === this.element.tagName && g && \"width\" in g,\n a = B(b && g.width, void 0);\n if (b) {\n delete g.width;\n this.textWidth = a;\n var d = !0;\n }\n g && \"ellipsis\" === g.textOverflow && (g.whiteSpace = \"nowrap\", g.overflow = \"hidden\");\n this.styles = z(this.styles, g);\n C(this.element, g);\n d && this.htmlUpdateTransform();\n return this;\n },\n htmlGetBBox: function () {\n var g = this.element;\n return {\n x: g.offsetLeft,\n y: g.offsetTop,\n width: g.offsetWidth,\n height: g.offsetHeight\n };\n },\n htmlUpdateTransform: function () {\n if (this.added) {\n var g = this.renderer,\n b = this.element,\n a = this.translateX || 0,\n d = this.translateY || 0,\n e = this.x || 0,\n l = this.y || 0,\n c = this.textAlign || \"left\",\n h = {\n left: 0,\n center: .5,\n right: 1\n }[c],\n p = this.styles,\n u = p && p.whiteSpace;\n C(b, {\n marginLeft: a,\n marginTop: d\n });\n !g.styledMode && this.shadows && this.shadows.forEach(function (b) {\n C(b, {\n marginLeft: a + 1,\n marginTop: d + 1\n });\n });\n this.inverted && [].forEach.call(b.childNodes, function (a) {\n g.invertChild(a, b);\n });\n if (\"SPAN\" === b.tagName) {\n p = this.rotation;\n var k = this.textWidth && t(this.textWidth),\n r = [p, c, b.innerHTML, this.textWidth, this.textAlign].join(),\n x;\n (x = k !== this.oldTextWidth) && !(x = k > this.oldTextWidth) && ((x = this.textPxLength) || (C(b, {\n width: \"\",\n whiteSpace: u || \"nowrap\"\n }), x = b.offsetWidth), x = x > k);\n x && (/[ \\-]/.test(b.textContent || b.innerText) || \"ellipsis\" === b.style.textOverflow) ? (C(b, {\n width: k + \"px\",\n display: \"block\",\n whiteSpace: u || \"normal\"\n }), this.oldTextWidth = k, this.hasBoxWidthChanged = !0) : this.hasBoxWidthChanged = !1;\n r !== this.cTT && (u = g.fontMetrics(b.style.fontSize, b).b, !G(p) || p === (this.oldRotation || 0) && c === this.oldAlign || this.setSpanRotation(p, h, u), this.getSpanCorrection(!G(p) && this.textPxLength || b.offsetWidth, u, h, p, c));\n C(b, {\n left: e + (this.xCorr || 0) + \"px\",\n top: l + (this.yCorr || 0) + \"px\"\n });\n this.cTT = r;\n this.oldRotation = p;\n this.oldAlign = c;\n }\n } else this.alignOnAdd = !0;\n },\n setSpanRotation: function (g, b, a) {\n var d = {},\n e = this.renderer.getTransformKey();\n d[e] = d.transform = \"rotate(\" + g + \"deg)\";\n d[e + (H ? \"Origin\" : \"-origin\")] = d.transformOrigin = 100 * b + \"% \" + a + \"px\";\n C(this.element, d);\n },\n getSpanCorrection: function (g, b, a) {\n this.xCorr = -g * a;\n this.yCorr = -b;\n }\n });\n z(f.prototype, {\n getTransformKey: function () {\n return y && !/Edge/.test(q.navigator.userAgent) ? \"-ms-transform\" : h ? \"-webkit-transform\" : H ? \"MozTransform\" : q.opera ? \"-o-transform\" : \"\";\n },\n html: function (g, b, a) {\n var d = this.createElement(\"span\"),\n e = d.element,\n l = d.renderer,\n c = l.isSVG,\n h = function (a, b) {\n [\"opacity\", \"visibility\"].forEach(function (d) {\n a[d + \"Setter\"] = function (e, k, l) {\n var w = a.div ? a.div.style : b;\n n.prototype[d + \"Setter\"].call(this, e, k, l);\n w && (w[k] = e);\n };\n });\n a.addedSetters = !0;\n };\n d.textSetter = function (a) {\n a !== e.innerHTML && (delete this.bBox, delete this.oldTextWidth);\n this.textStr = a;\n e.innerHTML = B(a, \"\");\n d.doTransform = !0;\n };\n c && h(d, d.element.style);\n d.xSetter = d.ySetter = d.alignSetter = d.rotationSetter = function (a, b) {\n \"align\" === b && (b = \"textAlign\");\n d[b] = a;\n d.doTransform = !0;\n };\n d.afterSetters = function () {\n this.doTransform && (this.htmlUpdateTransform(), this.doTransform = !1);\n };\n d.attr({\n text: g,\n x: Math.round(b),\n y: Math.round(a)\n }).css({\n position: \"absolute\"\n });\n l.styledMode || d.css({\n fontFamily: this.style.fontFamily,\n fontSize: this.style.fontSize\n });\n e.style.whiteSpace = \"nowrap\";\n d.css = d.htmlCss;\n c && (d.add = function (a) {\n var b = l.box.parentNode,\n k = [];\n if (this.parentGroup = a) {\n var g = a.div;\n if (!g) {\n for (; a;) k.push(a), a = a.parentGroup;\n k.reverse().forEach(function (a) {\n function e(b, d) {\n a[d] = b;\n \"translateX\" === d ? m.left = b + \"px\" : m.top = b + \"px\";\n a.doTransform = !0;\n }\n var w = F(a.element, \"class\");\n g = a.div = a.div || v(\"div\", w ? {\n className: w\n } : void 0, {\n position: \"absolute\",\n left: (a.translateX || 0) + \"px\",\n top: (a.translateY || 0) + \"px\",\n display: a.display,\n opacity: a.opacity,\n pointerEvents: a.styles && a.styles.pointerEvents\n }, g || b);\n var m = g.style;\n z(a, {\n classSetter: function (a) {\n return function (b) {\n this.element.setAttribute(\"class\", b);\n a.className = b;\n };\n }(g),\n on: function () {\n k[0].div && d.on.apply({\n element: k[0].div\n }, arguments);\n return a;\n },\n translateXSetter: e,\n translateYSetter: e\n });\n a.addedSetters || h(a);\n });\n }\n } else g = b;\n g.appendChild(e);\n d.added = !0;\n d.alignOnAdd && d.htmlUpdateTransform();\n return d;\n });\n return d;\n }\n });\n });\n M(I, \"parts/Time.js\", [I[\"parts/Globals.js\"], I[\"parts/Utilities.js\"]], function (c, f) {\n var F = f.defined,\n G = f.extend,\n z = f.isObject,\n B = f.objectEach,\n t = f.pick,\n v = f.splat,\n C = c.merge,\n H = c.timeUnits,\n y = c.win;\n c.Time = function (c) {\n this.update(c, !1);\n };\n c.Time.prototype = {\n defaultOptions: {\n Date: void 0,\n getTimezoneOffset: void 0,\n timezone: void 0,\n timezoneOffset: 0,\n useUTC: !0\n },\n update: function (c) {\n var h = t(c && c.useUTC, !0),\n f = this;\n this.options = c = C(!0, this.options || {}, c);\n this.Date = c.Date || y.Date || Date;\n this.timezoneOffset = (this.useUTC = h) && c.timezoneOffset;\n this.getTimezoneOffset = this.timezoneOffsetFunction();\n (this.variableTimezone = !(h && !c.getTimezoneOffset && !c.timezone)) || this.timezoneOffset ? (this.get = function (g, b) {\n var a = b.getTime(),\n d = a - f.getTimezoneOffset(b);\n b.setTime(d);\n g = b[\"getUTC\" + g]();\n b.setTime(a);\n return g;\n }, this.set = function (g, b, a) {\n if (\"Milliseconds\" === g || \"Seconds\" === g || \"Minutes\" === g && 0 === b.getTimezoneOffset() % 60) b[\"set\" + g](a);else {\n var d = f.getTimezoneOffset(b);\n d = b.getTime() - d;\n b.setTime(d);\n b[\"setUTC\" + g](a);\n g = f.getTimezoneOffset(b);\n d = b.getTime() + g;\n b.setTime(d);\n }\n }) : h ? (this.get = function (g, b) {\n return b[\"getUTC\" + g]();\n }, this.set = function (g, b, a) {\n return b[\"setUTC\" + g](a);\n }) : (this.get = function (g, b) {\n return b[\"get\" + g]();\n }, this.set = function (g, b, a) {\n return b[\"set\" + g](a);\n });\n },\n makeTime: function (h, n, f, g, b, a) {\n if (this.useUTC) {\n var d = this.Date.UTC.apply(0, arguments);\n var e = this.getTimezoneOffset(d);\n d += e;\n var l = this.getTimezoneOffset(d);\n e !== l ? d += l - e : e - 36E5 !== this.getTimezoneOffset(d - 36E5) || c.isSafari || (d -= 36E5);\n } else d = new this.Date(h, n, t(f, 1), t(g, 0), t(b, 0), t(a, 0)).getTime();\n return d;\n },\n timezoneOffsetFunction: function () {\n var h = this,\n n = this.options,\n f = y.moment;\n if (!this.useUTC) return function (g) {\n return 6E4 * new Date(g).getTimezoneOffset();\n };\n if (n.timezone) {\n if (f) return function (g) {\n return 6E4 * -f.tz(g, n.timezone).utcOffset();\n };\n c.error(25);\n }\n return this.useUTC && n.getTimezoneOffset ? function (g) {\n return 6E4 * n.getTimezoneOffset(g);\n } : function () {\n return 6E4 * (h.timezoneOffset || 0);\n };\n },\n dateFormat: function (h, n, f) {\n if (!F(n) || isNaN(n)) return c.defaultOptions.lang.invalidDate || \"\";\n h = t(h, \"%Y-%m-%d %H:%M:%S\");\n var g = this,\n b = new this.Date(n),\n a = this.get(\"Hours\", b),\n d = this.get(\"Day\", b),\n e = this.get(\"Date\", b),\n l = this.get(\"Month\", b),\n L = this.get(\"FullYear\", b),\n E = c.defaultOptions.lang,\n p = E.weekdays,\n u = E.shortWeekdays,\n k = c.pad;\n b = G({\n a: u ? u[d] : p[d].substr(0, 3),\n A: p[d],\n d: k(e),\n e: k(e, 2, \" \"),\n w: d,\n b: E.shortMonths[l],\n B: E.months[l],\n m: k(l + 1),\n o: l + 1,\n y: L.toString().substr(2, 2),\n Y: L,\n H: k(a),\n k: a,\n I: k(a % 12 || 12),\n l: a % 12 || 12,\n M: k(g.get(\"Minutes\", b)),\n p: 12 > a ? \"AM\" : \"PM\",\n P: 12 > a ? \"am\" : \"pm\",\n S: k(b.getSeconds()),\n L: k(Math.floor(n % 1E3), 3)\n }, c.dateFormats);\n B(b, function (a, b) {\n for (; -1 !== h.indexOf(\"%\" + b);) h = h.replace(\"%\" + b, \"function\" === typeof a ? a.call(g, n) : a);\n });\n return f ? h.substr(0, 1).toUpperCase() + h.substr(1) : h;\n },\n resolveDTLFormat: function (c) {\n return z(c, !0) ? c : (c = v(c), {\n main: c[0],\n from: c[1],\n to: c[2]\n });\n },\n getTimeTicks: function (c, n, f, g) {\n var b = this,\n a = [],\n d = {};\n var e = new b.Date(n);\n var l = c.unitRange,\n h = c.count || 1,\n E;\n g = t(g, 1);\n if (F(n)) {\n b.set(\"Milliseconds\", e, l >= H.second ? 0 : h * Math.floor(b.get(\"Milliseconds\", e) / h));\n l >= H.second && b.set(\"Seconds\", e, l >= H.minute ? 0 : h * Math.floor(b.get(\"Seconds\", e) / h));\n l >= H.minute && b.set(\"Minutes\", e, l >= H.hour ? 0 : h * Math.floor(b.get(\"Minutes\", e) / h));\n l >= H.hour && b.set(\"Hours\", e, l >= H.day ? 0 : h * Math.floor(b.get(\"Hours\", e) / h));\n l >= H.day && b.set(\"Date\", e, l >= H.month ? 1 : Math.max(1, h * Math.floor(b.get(\"Date\", e) / h)));\n if (l >= H.month) {\n b.set(\"Month\", e, l >= H.year ? 0 : h * Math.floor(b.get(\"Month\", e) / h));\n var p = b.get(\"FullYear\", e);\n }\n l >= H.year && b.set(\"FullYear\", e, p - p % h);\n l === H.week && (p = b.get(\"Day\", e), b.set(\"Date\", e, b.get(\"Date\", e) - p + g + (p < g ? -7 : 0)));\n p = b.get(\"FullYear\", e);\n g = b.get(\"Month\", e);\n var u = b.get(\"Date\", e),\n k = b.get(\"Hours\", e);\n n = e.getTime();\n b.variableTimezone && (E = f - n > 4 * H.month || b.getTimezoneOffset(n) !== b.getTimezoneOffset(f));\n n = e.getTime();\n for (e = 1; n < f;) a.push(n), n = l === H.year ? b.makeTime(p + e * h, 0) : l === H.month ? b.makeTime(p, g + e * h) : !E || l !== H.day && l !== H.week ? E && l === H.hour && 1 < h ? b.makeTime(p, g, u, k + e * h) : n + l * h : b.makeTime(p, g, u + e * h * (l === H.day ? 1 : 7)), e++;\n a.push(n);\n l <= H.hour && 1E4 > a.length && a.forEach(function (a) {\n 0 === a % 18E5 && \"000000000\" === b.dateFormat(\"%H%M%S%L\", a) && (d[a] = \"day\");\n });\n }\n a.info = G(c, {\n higherRanks: d,\n totalRange: l * h\n });\n return a;\n }\n };\n });\n M(I, \"parts/Options.js\", [I[\"parts/Globals.js\"]], function (c) {\n var f = c.color,\n F = c.merge;\n c.defaultOptions = {\n colors: \"#7cb5ec #434348 #90ed7d #f7a35c #8085e9 #f15c80 #e4d354 #2b908f #f45b5b #91e8e1\".split(\" \"),\n symbols: [\"circle\", \"diamond\", \"square\", \"triangle\", \"triangle-down\"],\n lang: {\n loading: \"Loading...\",\n months: \"January February March April May June July August September October November December\".split(\" \"),\n shortMonths: \"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec\".split(\" \"),\n weekdays: \"Sunday Monday Tuesday Wednesday Thursday Friday Saturday\".split(\" \"),\n decimalPoint: \".\",\n numericSymbols: \"kMGTPE\".split(\"\"),\n resetZoom: \"Reset zoom\",\n resetZoomTitle: \"Reset zoom level 1:1\",\n thousandsSep: \" \"\n },\n global: {},\n time: c.Time.prototype.defaultOptions,\n chart: {\n styledMode: !1,\n borderRadius: 0,\n colorCount: 10,\n defaultSeriesType: \"line\",\n ignoreHiddenSeries: !0,\n spacing: [10, 10, 15, 10],\n resetZoomButton: {\n theme: {\n zIndex: 6\n },\n position: {\n align: \"right\",\n x: -10,\n y: 10\n }\n },\n width: null,\n height: null,\n borderColor: \"#335cad\",\n backgroundColor: \"#ffffff\",\n plotBorderColor: \"#cccccc\"\n },\n title: {\n text: \"Chart title\",\n align: \"center\",\n margin: 15,\n widthAdjust: -44\n },\n subtitle: {\n text: \"\",\n align: \"center\",\n widthAdjust: -44\n },\n caption: {\n margin: 15,\n text: \"\",\n align: \"left\",\n verticalAlign: \"bottom\"\n },\n plotOptions: {},\n labels: {\n style: {\n position: \"absolute\",\n color: \"#333333\"\n }\n },\n legend: {\n enabled: !0,\n align: \"center\",\n alignColumns: !0,\n layout: \"horizontal\",\n labelFormatter: function () {\n return this.name;\n },\n borderColor: \"#999999\",\n borderRadius: 0,\n navigation: {\n activeColor: \"#003399\",\n inactiveColor: \"#cccccc\"\n },\n itemStyle: {\n color: \"#333333\",\n cursor: \"pointer\",\n fontSize: \"12px\",\n fontWeight: \"bold\",\n textOverflow: \"ellipsis\"\n },\n itemHoverStyle: {\n color: \"#000000\"\n },\n itemHiddenStyle: {\n color: \"#cccccc\"\n },\n shadow: !1,\n itemCheckboxStyle: {\n position: \"absolute\",\n width: \"13px\",\n height: \"13px\"\n },\n squareSymbol: !0,\n symbolPadding: 5,\n verticalAlign: \"bottom\",\n x: 0,\n y: 0,\n title: {\n style: {\n fontWeight: \"bold\"\n }\n }\n },\n loading: {\n labelStyle: {\n fontWeight: \"bold\",\n position: \"relative\",\n top: \"45%\"\n },\n style: {\n position: \"absolute\",\n backgroundColor: \"#ffffff\",\n opacity: .5,\n textAlign: \"center\"\n }\n },\n tooltip: {\n enabled: !0,\n animation: c.svg,\n borderRadius: 3,\n dateTimeLabelFormats: {\n millisecond: \"%A, %b %e, %H:%M:%S.%L\",\n second: \"%A, %b %e, %H:%M:%S\",\n minute: \"%A, %b %e, %H:%M\",\n hour: \"%A, %b %e, %H:%M\",\n day: \"%A, %b %e, %Y\",\n week: \"Week from %A, %b %e, %Y\",\n month: \"%B %Y\",\n year: \"%Y\"\n },\n footerFormat: \"\",\n padding: 8,\n snap: c.isTouchDevice ? 25 : 10,\n headerFormat: '<span style=\"font-size: 10px\">{point.key}</span><br/>',\n pointFormat: '<span style=\"color:{point.color}\">\\u25cf</span> {series.name}: <b>{point.y}</b><br/>',\n backgroundColor: f(\"#f7f7f7\").setOpacity(.85).get(),\n borderWidth: 1,\n shadow: !0,\n style: {\n color: \"#333333\",\n cursor: \"default\",\n fontSize: \"12px\",\n pointerEvents: \"none\",\n whiteSpace: \"nowrap\"\n }\n },\n credits: {\n enabled: !0,\n href: \"https://www.highcharts.com?credits\",\n position: {\n align: \"right\",\n x: -10,\n verticalAlign: \"bottom\",\n y: -5\n },\n style: {\n cursor: \"pointer\",\n color: \"#999999\",\n fontSize: \"9px\"\n },\n text: \"Highcharts.com\"\n }\n };\n c.setOptions = function (f) {\n c.defaultOptions = F(!0, c.defaultOptions, f);\n (f.time || f.global) && c.time.update(F(c.defaultOptions.global, c.defaultOptions.time, f.global, f.time));\n return c.defaultOptions;\n };\n c.getOptions = function () {\n return c.defaultOptions;\n };\n c.defaultPlotOptions = c.defaultOptions.plotOptions;\n c.time = new c.Time(F(c.defaultOptions.global, c.defaultOptions.time));\n c.dateFormat = function (f, z, B) {\n return c.time.dateFormat(f, z, B);\n };\n \"\";\n });\n M(I, \"parts/Tick.js\", [I[\"parts/Globals.js\"], I[\"parts/Utilities.js\"]], function (c, f) {\n var F = f.defined,\n G = f.destroyObjectProperties,\n z = f.extend,\n B = f.isNumber,\n t = f.pick,\n v = c.correctFloat,\n C = c.fireEvent,\n H = c.merge,\n y = c.deg2rad;\n c.Tick = function (c, n, f, g, b) {\n this.axis = c;\n this.pos = n;\n this.type = f || \"\";\n this.isNewLabel = this.isNew = !0;\n this.parameters = b || {};\n this.tickmarkOffset = this.parameters.tickmarkOffset;\n this.options = this.parameters.options;\n f || g || this.addLabel();\n };\n c.Tick.prototype = {\n addLabel: function () {\n var c = this,\n n = c.axis,\n f = n.options,\n g = n.chart,\n b = n.categories,\n a = n.names,\n d = c.pos,\n e = t(c.options && c.options.labels, f.labels),\n l = n.tickPositions,\n L = d === l[0],\n E = d === l[l.length - 1];\n b = this.parameters.category || (b ? t(b[d], a[d], d) : d);\n var p = c.label;\n l = l.info;\n var u, k;\n if (n.isDatetimeAxis && l) {\n var r = g.time.resolveDTLFormat(f.dateTimeLabelFormats[!f.grid && l.higherRanks[d] || l.unitName]);\n var x = r.main;\n }\n c.isFirst = L;\n c.isLast = E;\n c.formatCtx = {\n axis: n,\n chart: g,\n isFirst: L,\n isLast: E,\n dateTimeLabelFormat: x,\n tickPositionInfo: l,\n value: n.isLog ? v(n.lin2log(b)) : b,\n pos: d\n };\n f = n.labelFormatter.call(c.formatCtx, this.formatCtx);\n if (k = r && r.list) c.shortenLabel = function () {\n for (u = 0; u < k.length; u++) if (p.attr({\n text: n.labelFormatter.call(z(c.formatCtx, {\n dateTimeLabelFormat: k[u]\n }))\n }), p.getBBox().width < n.getSlotWidth(c) - 2 * t(e.padding, 5)) return;\n p.attr({\n text: \"\"\n });\n };\n if (F(p)) p && p.textStr !== f && (!p.textWidth || e.style && e.style.width || p.styles.width || p.css({\n width: null\n }), p.attr({\n text: f\n }), p.textPxLength = p.getBBox().width);else {\n if (c.label = p = F(f) && e.enabled ? g.renderer.text(f, 0, 0, e.useHTML).add(n.labelGroup) : null) g.styledMode || p.css(H(e.style)), p.textPxLength = p.getBBox().width;\n c.rotation = 0;\n }\n },\n getLabelSize: function () {\n return this.label ? this.label.getBBox()[this.axis.horiz ? \"height\" : \"width\"] : 0;\n },\n handleOverflow: function (c) {\n var h = this.axis,\n f = h.options.labels,\n g = c.x,\n b = h.chart.chartWidth,\n a = h.chart.spacing,\n d = t(h.labelLeft, Math.min(h.pos, a[3]));\n a = t(h.labelRight, Math.max(h.isRadial ? 0 : h.pos + h.len, b - a[1]));\n var e = this.label,\n l = this.rotation,\n L = {\n left: 0,\n center: .5,\n right: 1\n }[h.labelAlign || e.attr(\"align\")],\n E = e.getBBox().width,\n p = h.getSlotWidth(this),\n u = p,\n k = 1,\n r,\n x = {};\n if (l || \"justify\" !== t(f.overflow, \"justify\")) 0 > l && g - L * E < d ? r = Math.round(g / Math.cos(l * y) - d) : 0 < l && g + L * E > a && (r = Math.round((b - g) / Math.cos(l * y)));else if (b = g + (1 - L) * E, g - L * E < d ? u = c.x + u * (1 - L) - d : b > a && (u = a - c.x + u * L, k = -1), u = Math.min(p, u), u < p && \"center\" === h.labelAlign && (c.x += k * (p - u - L * (p - Math.min(E, u)))), E > u || h.autoRotation && (e.styles || {}).width) r = u;\n r && (this.shortenLabel ? this.shortenLabel() : (x.width = Math.floor(r), (f.style || {}).textOverflow || (x.textOverflow = \"ellipsis\"), e.css(x)));\n },\n getPosition: function (h, n, f, g) {\n var b = this.axis,\n a = b.chart,\n d = g && a.oldChartHeight || a.chartHeight;\n h = {\n x: h ? c.correctFloat(b.translate(n + f, null, null, g) + b.transB) : b.left + b.offset + (b.opposite ? (g && a.oldChartWidth || a.chartWidth) - b.right - b.left : 0),\n y: h ? d - b.bottom + b.offset - (b.opposite ? b.height : 0) : c.correctFloat(d - b.translate(n + f, null, null, g) - b.transB)\n };\n h.y = Math.max(Math.min(h.y, 1E5), -1E5);\n C(this, \"afterGetPosition\", {\n pos: h\n });\n return h;\n },\n getLabelPosition: function (c, n, f, g, b, a, d, e) {\n var l = this.axis,\n h = l.transA,\n E = l.isLinked && l.linkedParent ? l.linkedParent.reversed : l.reversed,\n p = l.staggerLines,\n u = l.tickRotCorr || {\n x: 0,\n y: 0\n },\n k = b.y,\n r = g || l.reserveSpaceDefault ? 0 : -l.labelOffset * (\"center\" === l.labelAlign ? .5 : 1),\n x = {};\n F(k) || (k = 0 === l.side ? f.rotation ? -8 : -f.getBBox().height : 2 === l.side ? u.y + 8 : Math.cos(f.rotation * y) * (u.y - f.getBBox(!1, 0).height / 2));\n c = c + b.x + r + u.x - (a && g ? a * h * (E ? -1 : 1) : 0);\n n = n + k - (a && !g ? a * h * (E ? 1 : -1) : 0);\n p && (f = d / (e || 1) % p, l.opposite && (f = p - f - 1), n += l.labelOffset / p * f);\n x.x = c;\n x.y = Math.round(n);\n C(this, \"afterGetLabelPosition\", {\n pos: x,\n tickmarkOffset: a,\n index: d\n });\n return x;\n },\n getMarkPath: function (c, n, f, g, b, a) {\n return a.crispLine([\"M\", c, n, \"L\", c + (b ? 0 : -f), n + (b ? f : 0)], g);\n },\n renderGridLine: function (c, n, f) {\n var g = this.axis,\n b = g.options,\n a = this.gridLine,\n d = {},\n e = this.pos,\n l = this.type,\n h = t(this.tickmarkOffset, g.tickmarkOffset),\n E = g.chart.renderer,\n p = l ? l + \"Grid\" : \"grid\",\n u = b[p + \"LineWidth\"],\n k = b[p + \"LineColor\"];\n b = b[p + \"LineDashStyle\"];\n a || (g.chart.styledMode || (d.stroke = k, d[\"stroke-width\"] = u, b && (d.dashstyle = b)), l || (d.zIndex = 1), c && (n = 0), this.gridLine = a = E.path().attr(d).addClass(\"highcharts-\" + (l ? l + \"-\" : \"\") + \"grid-line\").add(g.gridGroup));\n if (a && (f = g.getPlotLinePath({\n value: e + h,\n lineWidth: a.strokeWidth() * f,\n force: \"pass\",\n old: c\n }))) a[c || this.isNew ? \"attr\" : \"animate\"]({\n d: f,\n opacity: n\n });\n },\n renderMark: function (c, n, f) {\n var g = this.axis,\n b = g.options,\n a = g.chart.renderer,\n d = this.type,\n e = d ? d + \"Tick\" : \"tick\",\n l = g.tickSize(e),\n h = this.mark,\n E = !h,\n p = c.x;\n c = c.y;\n var u = t(b[e + \"Width\"], !d && g.isXAxis ? 1 : 0);\n b = b[e + \"Color\"];\n l && (g.opposite && (l[0] = -l[0]), E && (this.mark = h = a.path().addClass(\"highcharts-\" + (d ? d + \"-\" : \"\") + \"tick\").add(g.axisGroup), g.chart.styledMode || h.attr({\n stroke: b,\n \"stroke-width\": u\n })), h[E ? \"attr\" : \"animate\"]({\n d: this.getMarkPath(p, c, l[0], h.strokeWidth() * f, g.horiz, a),\n opacity: n\n }));\n },\n renderLabel: function (c, n, f, g) {\n var b = this.axis,\n a = b.horiz,\n d = b.options,\n e = this.label,\n l = d.labels,\n h = l.step;\n b = t(this.tickmarkOffset, b.tickmarkOffset);\n var E = !0,\n p = c.x;\n c = c.y;\n e && B(p) && (e.xy = c = this.getLabelPosition(p, c, e, a, l, b, g, h), this.isFirst && !this.isLast && !t(d.showFirstLabel, 1) || this.isLast && !this.isFirst && !t(d.showLastLabel, 1) ? E = !1 : !a || l.step || l.rotation || n || 0 === f || this.handleOverflow(c), h && g % h && (E = !1), E && B(c.y) ? (c.opacity = f, e[this.isNewLabel ? \"attr\" : \"animate\"](c), this.isNewLabel = !1) : (e.attr(\"y\", -9999), this.isNewLabel = !0));\n },\n render: function (h, n, f) {\n var g = this.axis,\n b = g.horiz,\n a = this.pos,\n d = t(this.tickmarkOffset, g.tickmarkOffset);\n a = this.getPosition(b, a, d, n);\n d = a.x;\n var e = a.y;\n g = b && d === g.pos + g.len || !b && e === g.pos ? -1 : 1;\n f = t(f, 1);\n this.isActive = !0;\n this.renderGridLine(n, f, g);\n this.renderMark(a, f, g);\n this.renderLabel(a, n, f, h);\n this.isNew = !1;\n c.fireEvent(this, \"afterRender\");\n },\n destroy: function () {\n G(this, this.axis);\n }\n };\n });\n M(I, \"parts/Axis.js\", [I[\"parts/Globals.js\"], I[\"parts/Utilities.js\"]], function (c, f) {\n var F = f.arrayMax,\n G = f.arrayMin,\n z = f.defined,\n B = f.destroyObjectProperties,\n t = f.extend,\n v = f.isArray,\n C = f.isNumber,\n H = f.isString,\n y = f.objectEach,\n h = f.pick,\n n = f.splat,\n q = f.syncTimeout,\n g = c.addEvent,\n b = c.animObject,\n a = c.color,\n d = c.correctFloat,\n e = c.defaultOptions,\n l = c.deg2rad,\n L = c.fireEvent,\n E = c.format,\n p = c.getMagnitude,\n u = c.merge,\n k = c.normalizeTickInterval,\n r = c.removeEvent,\n x = c.seriesTypes,\n A = c.Tick;\n f = function () {\n this.init.apply(this, arguments);\n };\n t(f.prototype, {\n defaultOptions: {\n dateTimeLabelFormats: {\n millisecond: {\n main: \"%H:%M:%S.%L\",\n range: !1\n },\n second: {\n main: \"%H:%M:%S\",\n range: !1\n },\n minute: {\n main: \"%H:%M\",\n range: !1\n },\n hour: {\n main: \"%H:%M\",\n range: !1\n },\n day: {\n main: \"%e. %b\"\n },\n week: {\n main: \"%e. %b\"\n },\n month: {\n main: \"%b '%y\"\n },\n year: {\n main: \"%Y\"\n }\n },\n endOnTick: !1,\n labels: {\n enabled: !0,\n indentation: 10,\n x: 0,\n style: {\n color: \"#666666\",\n cursor: \"default\",\n fontSize: \"11px\"\n }\n },\n maxPadding: .01,\n minorTickLength: 2,\n minorTickPosition: \"outside\",\n minPadding: .01,\n showEmpty: !0,\n startOfWeek: 1,\n startOnTick: !1,\n tickLength: 10,\n tickPixelInterval: 100,\n tickmarkPlacement: \"between\",\n tickPosition: \"outside\",\n title: {\n align: \"middle\",\n style: {\n color: \"#666666\"\n }\n },\n type: \"linear\",\n minorGridLineColor: \"#f2f2f2\",\n minorGridLineWidth: 1,\n minorTickColor: \"#999999\",\n lineColor: \"#ccd6eb\",\n lineWidth: 1,\n gridLineColor: \"#e6e6e6\",\n tickColor: \"#ccd6eb\"\n },\n defaultYAxisOptions: {\n endOnTick: !0,\n maxPadding: .05,\n minPadding: .05,\n tickPixelInterval: 72,\n showLastLabel: !0,\n labels: {\n x: -8\n },\n startOnTick: !0,\n title: {\n rotation: 270,\n text: \"Values\"\n },\n stackLabels: {\n allowOverlap: !1,\n enabled: !1,\n crop: !0,\n overflow: \"justify\",\n formatter: function () {\n return c.numberFormat(this.total, -1);\n },\n style: {\n color: \"#000000\",\n fontSize: \"11px\",\n fontWeight: \"bold\",\n textOutline: \"1px contrast\"\n }\n },\n gridLineWidth: 1,\n lineWidth: 0\n },\n defaultLeftAxisOptions: {\n labels: {\n x: -15\n },\n title: {\n rotation: 270\n }\n },\n defaultRightAxisOptions: {\n labels: {\n x: 15\n },\n title: {\n rotation: 90\n }\n },\n defaultBottomAxisOptions: {\n labels: {\n autoRotation: [-45],\n x: 0\n },\n margin: 15,\n title: {\n rotation: 0\n }\n },\n defaultTopAxisOptions: {\n labels: {\n autoRotation: [-45],\n x: 0\n },\n margin: 15,\n title: {\n rotation: 0\n }\n },\n init: function (a, b) {\n var d = b.isX,\n m = this;\n m.chart = a;\n m.horiz = a.inverted && !m.isZAxis ? !d : d;\n m.isXAxis = d;\n m.coll = m.coll || (d ? \"xAxis\" : \"yAxis\");\n L(this, \"init\", {\n userOptions: b\n });\n m.opposite = b.opposite;\n m.side = b.side || (m.horiz ? m.opposite ? 0 : 2 : m.opposite ? 1 : 3);\n m.setOptions(b);\n var e = this.options,\n w = e.type;\n m.labelFormatter = e.labels.formatter || m.defaultLabelFormatter;\n m.userOptions = b;\n m.minPixelPadding = 0;\n m.reversed = e.reversed;\n m.visible = !1 !== e.visible;\n m.zoomEnabled = !1 !== e.zoomEnabled;\n m.hasNames = \"category\" === w || !0 === e.categories;\n m.categories = e.categories || m.hasNames;\n m.names || (m.names = [], m.names.keys = {});\n m.plotLinesAndBandsGroups = {};\n m.isLog = \"logarithmic\" === w;\n m.isDatetimeAxis = \"datetime\" === w;\n m.positiveValuesOnly = m.isLog && !m.allowNegativeLog;\n m.isLinked = z(e.linkedTo);\n m.ticks = {};\n m.labelEdge = [];\n m.minorTicks = {};\n m.plotLinesAndBands = [];\n m.alternateBands = {};\n m.len = 0;\n m.minRange = m.userMinRange = e.minRange || e.maxZoom;\n m.range = e.range;\n m.offset = e.offset || 0;\n m.stacks = {};\n m.oldStacks = {};\n m.stacksTouched = 0;\n m.max = null;\n m.min = null;\n m.crosshair = h(e.crosshair, n(a.options.tooltip.crosshairs)[d ? 0 : 1], !1);\n b = m.options.events;\n -1 === a.axes.indexOf(m) && (d ? a.axes.splice(a.xAxis.length, 0, m) : a.axes.push(m), a[m.coll].push(m));\n m.series = m.series || [];\n a.inverted && !m.isZAxis && d && void 0 === m.reversed && (m.reversed = !0);\n y(b, function (a, b) {\n c.isFunction(a) && g(m, b, a);\n });\n m.lin2log = e.linearToLogConverter || m.lin2log;\n m.isLog && (m.val2lin = m.log2lin, m.lin2val = m.lin2log);\n L(this, \"afterInit\");\n },\n setOptions: function (a) {\n this.options = u(this.defaultOptions, \"yAxis\" === this.coll && this.defaultYAxisOptions, [this.defaultTopAxisOptions, this.defaultRightAxisOptions, this.defaultBottomAxisOptions, this.defaultLeftAxisOptions][this.side], u(e[this.coll], a));\n L(this, \"afterSetOptions\", {\n userOptions: a\n });\n },\n defaultLabelFormatter: function () {\n var a = this.axis,\n b = this.value,\n d = a.chart.time,\n k = a.categories,\n l = this.dateTimeLabelFormat,\n g = e.lang,\n r = g.numericSymbols;\n g = g.numericSymbolMagnitude || 1E3;\n var x = r && r.length,\n p = a.options.labels.format;\n a = a.isLog ? Math.abs(b) : a.tickInterval;\n if (p) var h = E(p, this, d);else if (k) h = b;else if (l) h = d.dateFormat(l, b);else if (x && 1E3 <= a) for (; x-- && void 0 === h;) d = Math.pow(g, x + 1), a >= d && 0 === 10 * b % d && null !== r[x] && 0 !== b && (h = c.numberFormat(b / d, -1) + r[x]);\n void 0 === h && (h = 1E4 <= Math.abs(b) ? c.numberFormat(b, -1) : c.numberFormat(b, -1, void 0, \"\"));\n return h;\n },\n getSeriesExtremes: function () {\n var a = this,\n b = a.chart,\n d;\n L(this, \"getSeriesExtremes\", null, function () {\n a.hasVisibleSeries = !1;\n a.dataMin = a.dataMax = a.threshold = null;\n a.softThreshold = !a.isXAxis;\n a.buildStacks && a.buildStacks();\n a.series.forEach(function (m) {\n if (m.visible || !b.options.chart.ignoreHiddenSeries) {\n var e = m.options,\n w = e.threshold;\n a.hasVisibleSeries = !0;\n a.positiveValuesOnly && 0 >= w && (w = null);\n if (a.isXAxis) {\n if (e = m.xData, e.length) {\n d = m.getXExtremes(e);\n var k = d.min;\n var c = d.max;\n C(k) || k instanceof Date || (e = e.filter(C), d = m.getXExtremes(e), k = d.min, c = d.max);\n e.length && (a.dataMin = Math.min(h(a.dataMin, k), k), a.dataMax = Math.max(h(a.dataMax, c), c));\n }\n } else if (m.getExtremes(), c = m.dataMax, k = m.dataMin, z(k) && z(c) && (a.dataMin = Math.min(h(a.dataMin, k), k), a.dataMax = Math.max(h(a.dataMax, c), c)), z(w) && (a.threshold = w), !e.softThreshold || a.positiveValuesOnly) a.softThreshold = !1;\n }\n });\n });\n L(this, \"afterGetSeriesExtremes\");\n },\n translate: function (a, b, d, e, k, c) {\n var m = this.linkedParent || this,\n w = 1,\n l = 0,\n g = e ? m.oldTransA : m.transA;\n e = e ? m.oldMin : m.min;\n var r = m.minPixelPadding;\n k = (m.isOrdinal || m.isBroken || m.isLog && k) && m.lin2val;\n g || (g = m.transA);\n d && (w *= -1, l = m.len);\n m.reversed && (w *= -1, l -= w * (m.sector || m.len));\n b ? (a = (a * w + l - r) / g + e, k && (a = m.lin2val(a))) : (k && (a = m.val2lin(a)), a = C(e) ? w * (a - e) * g + l + w * r + (C(c) ? g * c : 0) : void 0);\n return a;\n },\n toPixels: function (a, b) {\n return this.translate(a, !1, !this.horiz, null, !0) + (b ? 0 : this.pos);\n },\n toValue: function (a, b) {\n return this.translate(a - (b ? 0 : this.pos), !0, !this.horiz, null, !0);\n },\n getPlotLinePath: function (a) {\n var b = this,\n d = b.chart,\n e = b.left,\n w = b.top,\n k = a.old,\n c = a.value,\n l = a.translatedValue,\n g = a.lineWidth,\n r = a.force,\n x,\n p,\n A,\n u,\n f = k && d.oldChartHeight || d.chartHeight,\n n = k && d.oldChartWidth || d.chartWidth,\n E,\n q = b.transB,\n v = function (a, b, d) {\n if (\"pass\" !== r && a < b || a > d) r ? a = Math.min(Math.max(b, a), d) : E = !0;\n return a;\n };\n a = {\n value: c,\n lineWidth: g,\n old: k,\n force: r,\n acrossPanes: a.acrossPanes,\n translatedValue: l\n };\n L(this, \"getPlotLinePath\", a, function (a) {\n l = h(l, b.translate(c, null, null, k));\n l = Math.min(Math.max(-1E5, l), 1E5);\n x = A = Math.round(l + q);\n p = u = Math.round(f - l - q);\n C(l) ? b.horiz ? (p = w, u = f - b.bottom, x = A = v(x, e, e + b.width)) : (x = e, A = n - b.right, p = u = v(p, w, w + b.height)) : (E = !0, r = !1);\n a.path = E && !r ? null : d.renderer.crispLine([\"M\", x, p, \"L\", A, u], g || 1);\n });\n return a.path;\n },\n getLinearTickPositions: function (a, b, e) {\n var m = d(Math.floor(b / a) * a);\n e = d(Math.ceil(e / a) * a);\n var w = [],\n k;\n d(m + a) === m && (k = 20);\n if (this.single) return [b];\n for (b = m; b <= e;) {\n w.push(b);\n b = d(b + a, k);\n if (b === c) break;\n var c = b;\n }\n return w;\n },\n getMinorTickInterval: function () {\n var a = this.options;\n return !0 === a.minorTicks ? h(a.minorTickInterval, \"auto\") : !1 === a.minorTicks ? null : a.minorTickInterval;\n },\n getMinorTickPositions: function () {\n var a = this,\n b = a.options,\n d = a.tickPositions,\n e = a.minorTickInterval,\n k = [],\n c = a.pointRangePadding || 0,\n l = a.min - c;\n c = a.max + c;\n var g = c - l;\n if (g && g / e < a.len / 3) if (a.isLog) this.paddedTicks.forEach(function (b, d, m) {\n d && k.push.apply(k, a.getLogTickPositions(e, m[d - 1], m[d], !0));\n });else if (a.isDatetimeAxis && \"auto\" === this.getMinorTickInterval()) k = k.concat(a.getTimeTicks(a.normalizeTimeTickInterval(e), l, c, b.startOfWeek));else for (b = l + (d[0] - l) % e; b <= c && b !== k[0]; b += e) k.push(b);\n 0 !== k.length && a.trimTicks(k);\n return k;\n },\n adjustForMinRange: function () {\n var a = this.options,\n b = this.min,\n d = this.max,\n e,\n k,\n c,\n l,\n g;\n this.isXAxis && void 0 === this.minRange && !this.isLog && (z(a.min) || z(a.max) ? this.minRange = null : (this.series.forEach(function (a) {\n l = a.xData;\n for (k = g = a.xIncrement ? 1 : l.length - 1; 0 < k; k--) if (c = l[k] - l[k - 1], void 0 === e || c < e) e = c;\n }), this.minRange = Math.min(5 * e, this.dataMax - this.dataMin)));\n if (d - b < this.minRange) {\n var r = this.dataMax - this.dataMin >= this.minRange;\n var x = this.minRange;\n var p = (x - d + b) / 2;\n p = [b - p, h(a.min, b - p)];\n r && (p[2] = this.isLog ? this.log2lin(this.dataMin) : this.dataMin);\n b = F(p);\n d = [b + x, h(a.max, b + x)];\n r && (d[2] = this.isLog ? this.log2lin(this.dataMax) : this.dataMax);\n d = G(d);\n d - b < x && (p[0] = d - x, p[1] = h(a.min, d - x), b = F(p));\n }\n this.min = b;\n this.max = d;\n },\n getClosest: function () {\n var a;\n this.categories ? a = 1 : this.series.forEach(function (b) {\n var d = b.closestPointRange,\n m = b.visible || !b.chart.options.chart.ignoreHiddenSeries;\n !b.noSharedTooltip && z(d) && m && (a = z(a) ? Math.min(a, d) : d);\n });\n return a;\n },\n nameToX: function (a) {\n var b = v(this.categories),\n d = b ? this.categories : this.names,\n e = a.options.x;\n a.series.requireSorting = !1;\n z(e) || (e = !1 === this.options.uniqueNames ? a.series.autoIncrement() : b ? d.indexOf(a.name) : h(d.keys[a.name], -1));\n if (-1 === e) {\n if (!b) var k = d.length;\n } else k = e;\n void 0 !== k && (this.names[k] = a.name, this.names.keys[a.name] = k);\n return k;\n },\n updateNames: function () {\n var a = this,\n b = this.names;\n 0 < b.length && (Object.keys(b.keys).forEach(function (a) {\n delete b.keys[a];\n }), b.length = 0, this.minRange = this.userMinRange, (this.series || []).forEach(function (b) {\n b.xIncrement = null;\n if (!b.points || b.isDirtyData) a.max = Math.max(a.max, b.xData.length - 1), b.processData(), b.generatePoints();\n b.data.forEach(function (d, e) {\n if (d && d.options && void 0 !== d.name) {\n var m = a.nameToX(d);\n void 0 !== m && m !== d.x && (d.x = m, b.xData[e] = m);\n }\n });\n }));\n },\n setAxisTranslation: function (a) {\n var b = this,\n d = b.max - b.min,\n e = b.axisPointRange || 0,\n k = 0,\n w = 0,\n c = b.linkedParent,\n l = !!b.categories,\n g = b.transA,\n r = b.isXAxis;\n if (r || l || e) {\n var p = b.getClosest();\n c ? (k = c.minPointOffset, w = c.pointRangePadding) : b.series.forEach(function (a) {\n var d = l ? 1 : r ? h(a.options.pointRange, p, 0) : b.axisPointRange || 0,\n m = a.options.pointPlacement;\n e = Math.max(e, d);\n if (!b.single || l) a = x.xrange && a instanceof x.xrange ? !r : r, k = Math.max(k, a && H(m) ? 0 : d / 2), w = Math.max(w, a && \"on\" === m ? 0 : d);\n });\n c = b.ordinalSlope && p ? b.ordinalSlope / p : 1;\n b.minPointOffset = k *= c;\n b.pointRangePadding = w *= c;\n b.pointRange = Math.min(e, b.single && l ? 1 : d);\n r && (b.closestPointRange = p);\n }\n a && (b.oldTransA = g);\n b.translationSlope = b.transA = g = b.staticScale || b.len / (d + w || 1);\n b.transB = b.horiz ? b.left : b.bottom;\n b.minPixelPadding = g * k;\n L(this, \"afterSetAxisTranslation\");\n },\n minFromRange: function () {\n return this.max - this.range;\n },\n setTickInterval: function (a) {\n var b = this,\n e = b.chart,\n w = b.options,\n l = b.isLog,\n g = b.isDatetimeAxis,\n r = b.isXAxis,\n x = b.isLinked,\n A = w.maxPadding,\n u = w.minPadding,\n f = w.tickInterval,\n n = w.tickPixelInterval,\n E = b.categories,\n q = C(b.threshold) ? b.threshold : null,\n v = b.softThreshold;\n g || E || x || this.getTickAmount();\n var t = h(b.userMin, w.min);\n var y = h(b.userMax, w.max);\n if (x) {\n b.linkedParent = e[b.coll][w.linkedTo];\n var B = b.linkedParent.getExtremes();\n b.min = h(B.min, B.dataMin);\n b.max = h(B.max, B.dataMax);\n w.type !== b.linkedParent.options.type && c.error(11, 1, e);\n } else {\n if (!v && z(q)) if (b.dataMin >= q) B = q, u = 0;else if (b.dataMax <= q) {\n var H = q;\n A = 0;\n }\n b.min = h(t, B, b.dataMin);\n b.max = h(y, H, b.dataMax);\n }\n l && (b.positiveValuesOnly && !a && 0 >= Math.min(b.min, h(b.dataMin, b.min)) && c.error(10, 1, e), b.min = d(b.log2lin(b.min), 16), b.max = d(b.log2lin(b.max), 16));\n b.range && z(b.max) && (b.userMin = b.min = t = Math.max(b.dataMin, b.minFromRange()), b.userMax = y = b.max, b.range = null);\n L(b, \"foundExtremes\");\n b.beforePadding && b.beforePadding();\n b.adjustForMinRange();\n !(E || b.axisPointRange || b.usePercentage || x) && z(b.min) && z(b.max) && (e = b.max - b.min) && (!z(t) && u && (b.min -= e * u), !z(y) && A && (b.max += e * A));\n C(w.softMin) && !C(b.userMin) && w.softMin < b.min && (b.min = t = w.softMin);\n C(w.softMax) && !C(b.userMax) && w.softMax > b.max && (b.max = y = w.softMax);\n C(w.floor) && (b.min = Math.min(Math.max(b.min, w.floor), Number.MAX_VALUE));\n C(w.ceiling) && (b.max = Math.max(Math.min(b.max, w.ceiling), h(b.userMax, -Number.MAX_VALUE)));\n v && z(b.dataMin) && (q = q || 0, !z(t) && b.min < q && b.dataMin >= q ? b.min = b.options.minRange ? Math.min(q, b.max - b.minRange) : q : !z(y) && b.max > q && b.dataMax <= q && (b.max = b.options.minRange ? Math.max(q, b.min + b.minRange) : q));\n b.tickInterval = b.min === b.max || void 0 === b.min || void 0 === b.max ? 1 : x && !f && n === b.linkedParent.options.tickPixelInterval ? f = b.linkedParent.tickInterval : h(f, this.tickAmount ? (b.max - b.min) / Math.max(this.tickAmount - 1, 1) : void 0, E ? 1 : (b.max - b.min) * n / Math.max(b.len, n));\n r && !a && b.series.forEach(function (a) {\n a.processData(b.min !== b.oldMin || b.max !== b.oldMax);\n });\n b.setAxisTranslation(!0);\n b.beforeSetTickPositions && b.beforeSetTickPositions();\n b.postProcessTickInterval && (b.tickInterval = b.postProcessTickInterval(b.tickInterval));\n b.pointRange && !f && (b.tickInterval = Math.max(b.pointRange, b.tickInterval));\n a = h(w.minTickInterval, b.isDatetimeAxis && b.closestPointRange);\n !f && b.tickInterval < a && (b.tickInterval = a);\n g || l || f || (b.tickInterval = k(b.tickInterval, null, p(b.tickInterval), h(w.allowDecimals, !(.5 < b.tickInterval && 5 > b.tickInterval && 1E3 < b.max && 9999 > b.max)), !!this.tickAmount));\n this.tickAmount || (b.tickInterval = b.unsquish());\n this.setTickPositions();\n },\n setTickPositions: function () {\n var a = this.options,\n b = a.tickPositions;\n var d = this.getMinorTickInterval();\n var e = a.tickPositioner,\n k = a.startOnTick,\n l = a.endOnTick;\n this.tickmarkOffset = this.categories && \"between\" === a.tickmarkPlacement && 1 === this.tickInterval ? .5 : 0;\n this.minorTickInterval = \"auto\" === d && this.tickInterval ? this.tickInterval / 5 : d;\n this.single = this.min === this.max && z(this.min) && !this.tickAmount && (parseInt(this.min, 10) === this.min || !1 !== a.allowDecimals);\n this.tickPositions = d = b && b.slice();\n !d && (!this.ordinalPositions && (this.max - this.min) / this.tickInterval > Math.max(2 * this.len, 200) ? (d = [this.min, this.max], c.error(19, !1, this.chart)) : d = this.isDatetimeAxis ? this.getTimeTicks(this.normalizeTimeTickInterval(this.tickInterval, a.units), this.min, this.max, a.startOfWeek, this.ordinalPositions, this.closestPointRange, !0) : this.isLog ? this.getLogTickPositions(this.tickInterval, this.min, this.max) : this.getLinearTickPositions(this.tickInterval, this.min, this.max), d.length > this.len && (d = [d[0], d.pop()], d[0] === d[1] && (d.length = 1)), this.tickPositions = d, e && (e = e.apply(this, [this.min, this.max]))) && (this.tickPositions = d = e);\n this.paddedTicks = d.slice(0);\n this.trimTicks(d, k, l);\n this.isLinked || (this.single && 2 > d.length && !this.categories && (this.min -= .5, this.max += .5), b || e || this.adjustTickAmount());\n L(this, \"afterSetTickPositions\");\n },\n trimTicks: function (a, b, d) {\n var e = a[0],\n m = a[a.length - 1],\n k = this.minPointOffset || 0;\n L(this, \"trimTicks\");\n if (!this.isLinked) {\n if (b && -Infinity !== e) this.min = e;else for (; this.min - k > a[0];) a.shift();\n if (d) this.max = m;else for (; this.max + k < a[a.length - 1];) a.pop();\n 0 === a.length && z(e) && !this.options.tickPositions && a.push((m + e) / 2);\n }\n },\n alignToOthers: function () {\n var a = {},\n b,\n d = this.options;\n !1 === this.chart.options.chart.alignTicks || !1 === d.alignTicks || !1 === d.startOnTick || !1 === d.endOnTick || this.isLog || this.chart[this.coll].forEach(function (d) {\n var e = d.options;\n e = [d.horiz ? e.left : e.top, e.width, e.height, e.pane].join();\n d.series.length && (a[e] ? b = !0 : a[e] = 1);\n });\n return b;\n },\n getTickAmount: function () {\n var a = this.options,\n b = a.tickAmount,\n d = a.tickPixelInterval;\n !z(a.tickInterval) && this.len < d && !this.isRadial && !this.isLog && a.startOnTick && a.endOnTick && (b = 2);\n !b && this.alignToOthers() && (b = Math.ceil(this.len / d) + 1);\n 4 > b && (this.finalTickAmt = b, b = 5);\n this.tickAmount = b;\n },\n adjustTickAmount: function () {\n var a = this.options,\n b = this.tickInterval,\n e = this.tickPositions,\n k = this.tickAmount,\n c = this.finalTickAmt,\n l = e && e.length,\n g = h(this.threshold, this.softThreshold ? 0 : null),\n r;\n if (this.hasData()) {\n if (l < k) {\n for (r = this.min; e.length < k;) e.length % 2 || r === g ? e.push(d(e[e.length - 1] + b)) : e.unshift(d(e[0] - b));\n this.transA *= (l - 1) / (k - 1);\n this.min = a.startOnTick ? e[0] : Math.min(this.min, e[0]);\n this.max = a.endOnTick ? e[e.length - 1] : Math.max(this.max, e[e.length - 1]);\n } else l > k && (this.tickInterval *= 2, this.setTickPositions());\n if (z(c)) {\n for (b = a = e.length; b--;) (3 === c && 1 === b % 2 || 2 >= c && 0 < b && b < a - 1) && e.splice(b, 1);\n this.finalTickAmt = void 0;\n }\n }\n },\n setScale: function () {\n var a = this.series.some(function (a) {\n return a.isDirtyData || a.isDirty || a.xAxis && a.xAxis.isDirty;\n }),\n b;\n this.oldMin = this.min;\n this.oldMax = this.max;\n this.oldAxisLength = this.len;\n this.setAxisSize();\n (b = this.len !== this.oldAxisLength) || a || this.isLinked || this.forceRedraw || this.userMin !== this.oldUserMin || this.userMax !== this.oldUserMax || this.alignToOthers() ? (this.resetStacks && this.resetStacks(), this.forceRedraw = !1, this.getSeriesExtremes(), this.setTickInterval(), this.oldUserMin = this.userMin, this.oldUserMax = this.userMax, this.isDirty || (this.isDirty = b || this.min !== this.oldMin || this.max !== this.oldMax)) : this.cleanStacks && this.cleanStacks();\n L(this, \"afterSetScale\");\n },\n setExtremes: function (a, b, d, e, k) {\n var m = this,\n w = m.chart;\n d = h(d, !0);\n m.series.forEach(function (a) {\n delete a.kdTree;\n });\n k = t(k, {\n min: a,\n max: b\n });\n L(m, \"setExtremes\", k, function () {\n m.userMin = a;\n m.userMax = b;\n m.eventArgs = k;\n d && w.redraw(e);\n });\n },\n zoom: function (a, b) {\n var d = this.dataMin,\n e = this.dataMax,\n m = this.options,\n k = Math.min(d, h(m.min, d)),\n w = Math.max(e, h(m.max, e));\n a = {\n newMin: a,\n newMax: b\n };\n L(this, \"zoom\", a, function (a) {\n var b = a.newMin,\n m = a.newMax;\n if (b !== this.min || m !== this.max) this.allowZoomOutside || (z(d) && (b < k && (b = k), b > w && (b = w)), z(e) && (m < k && (m = k), m > w && (m = w))), this.displayBtn = void 0 !== b || void 0 !== m, this.setExtremes(b, m, !1, void 0, {\n trigger: \"zoom\"\n });\n a.zoomed = !0;\n });\n return a.zoomed;\n },\n setAxisSize: function () {\n var a = this.chart,\n b = this.options,\n d = b.offsets || [0, 0, 0, 0],\n e = this.horiz,\n k = this.width = Math.round(c.relativeLength(h(b.width, a.plotWidth - d[3] + d[1]), a.plotWidth)),\n l = this.height = Math.round(c.relativeLength(h(b.height, a.plotHeight - d[0] + d[2]), a.plotHeight)),\n g = this.top = Math.round(c.relativeLength(h(b.top, a.plotTop + d[0]), a.plotHeight, a.plotTop));\n b = this.left = Math.round(c.relativeLength(h(b.left, a.plotLeft + d[3]), a.plotWidth, a.plotLeft));\n this.bottom = a.chartHeight - l - g;\n this.right = a.chartWidth - k - b;\n this.len = Math.max(e ? k : l, 0);\n this.pos = e ? b : g;\n },\n getExtremes: function () {\n var a = this.isLog;\n return {\n min: a ? d(this.lin2log(this.min)) : this.min,\n max: a ? d(this.lin2log(this.max)) : this.max,\n dataMin: this.dataMin,\n dataMax: this.dataMax,\n userMin: this.userMin,\n userMax: this.userMax\n };\n },\n getThreshold: function (a) {\n var b = this.isLog,\n d = b ? this.lin2log(this.min) : this.min;\n b = b ? this.lin2log(this.max) : this.max;\n null === a || -Infinity === a ? a = d : Infinity === a ? a = b : d > a ? a = d : b < a && (a = b);\n return this.translate(a, 0, 1, 0, 1);\n },\n autoLabelAlign: function (a) {\n var b = (h(a, 0) - 90 * this.side + 720) % 360;\n a = {\n align: \"center\"\n };\n L(this, \"autoLabelAlign\", a, function (a) {\n 15 < b && 165 > b ? a.align = \"right\" : 195 < b && 345 > b && (a.align = \"left\");\n });\n return a.align;\n },\n tickSize: function (a) {\n var b = this.options,\n d = b[a + \"Length\"],\n e = h(b[a + \"Width\"], \"tick\" === a && this.isXAxis && !this.categories ? 1 : 0);\n if (e && d) {\n \"inside\" === b[a + \"Position\"] && (d = -d);\n var k = [d, e];\n }\n a = {\n tickSize: k\n };\n L(this, \"afterTickSize\", a);\n return a.tickSize;\n },\n labelMetrics: function () {\n var a = this.tickPositions && this.tickPositions[0] || 0;\n return this.chart.renderer.fontMetrics(this.options.labels.style && this.options.labels.style.fontSize, this.ticks[a] && this.ticks[a].label);\n },\n unsquish: function () {\n var a = this.options.labels,\n b = this.horiz,\n e = this.tickInterval,\n k = e,\n c = this.len / (((this.categories ? 1 : 0) + this.max - this.min) / e),\n g,\n r = a.rotation,\n x = this.labelMetrics(),\n p,\n A = Number.MAX_VALUE,\n u,\n f = this.max - this.min,\n n = function (a) {\n var b = a / (c || 1);\n b = 1 < b ? Math.ceil(b) : 1;\n b * e > f && Infinity !== a && Infinity !== c && f && (b = Math.ceil(f / e));\n return d(b * e);\n };\n b ? (u = !a.staggerLines && !a.step && (z(r) ? [r] : c < h(a.autoRotationLimit, 80) && a.autoRotation)) && u.forEach(function (a) {\n if (a === r || a && -90 <= a && 90 >= a) {\n p = n(Math.abs(x.h / Math.sin(l * a)));\n var b = p + Math.abs(a / 360);\n b < A && (A = b, g = a, k = p);\n }\n }) : a.step || (k = n(x.h));\n this.autoRotation = u;\n this.labelRotation = h(g, r);\n return k;\n },\n getSlotWidth: function (a) {\n var b = this.chart,\n d = this.horiz,\n e = this.options.labels,\n k = Math.max(this.tickPositions.length - (this.categories ? 0 : 1), 1),\n c = b.margin[3];\n return a && a.slotWidth || d && 2 > (e.step || 0) && !e.rotation && (this.staggerLines || 1) * this.len / k || !d && (e.style && parseInt(e.style.width, 10) || c && c - b.spacing[3] || .33 * b.chartWidth);\n },\n renderUnsquish: function () {\n var a = this.chart,\n b = a.renderer,\n d = this.tickPositions,\n e = this.ticks,\n k = this.options.labels,\n c = k && k.style || {},\n l = this.horiz,\n g = this.getSlotWidth(),\n r = Math.max(1, Math.round(g - 2 * (k.padding || 5))),\n x = {},\n p = this.labelMetrics(),\n h = k.style && k.style.textOverflow,\n A = 0;\n H(k.rotation) || (x.rotation = k.rotation || 0);\n d.forEach(function (a) {\n (a = e[a]) && a.label && a.label.textPxLength > A && (A = a.label.textPxLength);\n });\n this.maxLabelLength = A;\n if (this.autoRotation) A > r && A > p.h ? x.rotation = this.labelRotation : this.labelRotation = 0;else if (g) {\n var u = r;\n if (!h) {\n var f = \"clip\";\n for (r = d.length; !l && r--;) {\n var n = d[r];\n if (n = e[n].label) n.styles && \"ellipsis\" === n.styles.textOverflow ? n.css({\n textOverflow: \"clip\"\n }) : n.textPxLength > g && n.css({\n width: g + \"px\"\n }), n.getBBox().height > this.len / d.length - (p.h - p.f) && (n.specificTextOverflow = \"ellipsis\");\n }\n }\n }\n x.rotation && (u = A > .5 * a.chartHeight ? .33 * a.chartHeight : A, h || (f = \"ellipsis\"));\n if (this.labelAlign = k.align || this.autoLabelAlign(this.labelRotation)) x.align = this.labelAlign;\n d.forEach(function (a) {\n var b = (a = e[a]) && a.label,\n d = c.width,\n k = {};\n b && (b.attr(x), a.shortenLabel ? a.shortenLabel() : u && !d && \"nowrap\" !== c.whiteSpace && (u < b.textPxLength || \"SPAN\" === b.element.tagName) ? (k.width = u, h || (k.textOverflow = b.specificTextOverflow || f), b.css(k)) : b.styles && b.styles.width && !k.width && !d && b.css({\n width: null\n }), delete b.specificTextOverflow, a.rotation = x.rotation);\n }, this);\n this.tickRotCorr = b.rotCorr(p.b, this.labelRotation || 0, 0 !== this.side);\n },\n hasData: function () {\n return this.series.some(function (a) {\n return a.hasData();\n }) || this.options.showEmpty && z(this.min) && z(this.max);\n },\n addTitle: function (a) {\n var b = this.chart.renderer,\n d = this.horiz,\n e = this.opposite,\n k = this.options.title,\n c,\n l = this.chart.styledMode;\n this.axisTitle || ((c = k.textAlign) || (c = (d ? {\n low: \"left\",\n middle: \"center\",\n high: \"right\"\n } : {\n low: e ? \"right\" : \"left\",\n middle: \"center\",\n high: e ? \"left\" : \"right\"\n })[k.align]), this.axisTitle = b.text(k.text, 0, 0, k.useHTML).attr({\n zIndex: 7,\n rotation: k.rotation || 0,\n align: c\n }).addClass(\"highcharts-axis-title\"), l || this.axisTitle.css(u(k.style)), this.axisTitle.add(this.axisGroup), this.axisTitle.isNew = !0);\n l || k.style.width || this.isRadial || this.axisTitle.css({\n width: this.len\n });\n this.axisTitle[a ? \"show\" : \"hide\"](a);\n },\n generateTick: function (a) {\n var b = this.ticks;\n b[a] ? b[a].addLabel() : b[a] = new A(this, a);\n },\n getOffset: function () {\n var a = this,\n b = a.chart,\n d = b.renderer,\n e = a.options,\n k = a.tickPositions,\n c = a.ticks,\n l = a.horiz,\n g = a.side,\n r = b.inverted && !a.isZAxis ? [1, 0, 3, 2][g] : g,\n x,\n p = 0,\n A = 0,\n u = e.title,\n n = e.labels,\n f = 0,\n E = b.axisOffset;\n b = b.clipOffset;\n var q = [-1, 1, 1, -1][g],\n v = e.className,\n t = a.axisParent;\n var C = a.hasData();\n a.showAxis = x = C || h(e.showEmpty, !0);\n a.staggerLines = a.horiz && n.staggerLines;\n a.axisGroup || (a.gridGroup = d.g(\"grid\").attr({\n zIndex: e.gridZIndex || 1\n }).addClass(\"highcharts-\" + this.coll.toLowerCase() + \"-grid \" + (v || \"\")).add(t), a.axisGroup = d.g(\"axis\").attr({\n zIndex: e.zIndex || 2\n }).addClass(\"highcharts-\" + this.coll.toLowerCase() + \" \" + (v || \"\")).add(t), a.labelGroup = d.g(\"axis-labels\").attr({\n zIndex: n.zIndex || 7\n }).addClass(\"highcharts-\" + a.coll.toLowerCase() + \"-labels \" + (v || \"\")).add(t));\n C || a.isLinked ? (k.forEach(function (b, d) {\n a.generateTick(b, d);\n }), a.renderUnsquish(), a.reserveSpaceDefault = 0 === g || 2 === g || {\n 1: \"left\",\n 3: \"right\"\n }[g] === a.labelAlign, h(n.reserveSpace, \"center\" === a.labelAlign ? !0 : null, a.reserveSpaceDefault) && k.forEach(function (a) {\n f = Math.max(c[a].getLabelSize(), f);\n }), a.staggerLines && (f *= a.staggerLines), a.labelOffset = f * (a.opposite ? -1 : 1)) : y(c, function (a, b) {\n a.destroy();\n delete c[b];\n });\n if (u && u.text && !1 !== u.enabled && (a.addTitle(x), x && !1 !== u.reserveSpace)) {\n a.titleOffset = p = a.axisTitle.getBBox()[l ? \"height\" : \"width\"];\n var B = u.offset;\n A = z(B) ? 0 : h(u.margin, l ? 5 : 10);\n }\n a.renderLine();\n a.offset = q * h(e.offset, E[g] ? E[g] + (e.margin || 0) : 0);\n a.tickRotCorr = a.tickRotCorr || {\n x: 0,\n y: 0\n };\n d = 0 === g ? -a.labelMetrics().h : 2 === g ? a.tickRotCorr.y : 0;\n A = Math.abs(f) + A;\n f && (A = A - d + q * (l ? h(n.y, a.tickRotCorr.y + 8 * q) : n.x));\n a.axisTitleMargin = h(B, A);\n a.getMaxLabelDimensions && (a.maxLabelDimensions = a.getMaxLabelDimensions(c, k));\n l = this.tickSize(\"tick\");\n E[g] = Math.max(E[g], a.axisTitleMargin + p + q * a.offset, A, k && k.length && l ? l[0] + q * a.offset : 0);\n e = e.offset ? 0 : 2 * Math.floor(a.axisLine.strokeWidth() / 2);\n b[r] = Math.max(b[r], e);\n L(this, \"afterGetOffset\");\n },\n getLinePath: function (a) {\n var b = this.chart,\n d = this.opposite,\n e = this.offset,\n k = this.horiz,\n c = this.left + (d ? this.width : 0) + e;\n e = b.chartHeight - this.bottom - (d ? this.height : 0) + e;\n d && (a *= -1);\n return b.renderer.crispLine([\"M\", k ? this.left : c, k ? e : this.top, \"L\", k ? b.chartWidth - this.right : c, k ? e : b.chartHeight - this.bottom], a);\n },\n renderLine: function () {\n this.axisLine || (this.axisLine = this.chart.renderer.path().addClass(\"highcharts-axis-line\").add(this.axisGroup), this.chart.styledMode || this.axisLine.attr({\n stroke: this.options.lineColor,\n \"stroke-width\": this.options.lineWidth,\n zIndex: 7\n }));\n },\n getTitlePosition: function () {\n var a = this.horiz,\n b = this.left,\n d = this.top,\n e = this.len,\n k = this.options.title,\n c = a ? b : d,\n l = this.opposite,\n g = this.offset,\n r = k.x || 0,\n x = k.y || 0,\n p = this.axisTitle,\n A = this.chart.renderer.fontMetrics(k.style && k.style.fontSize, p);\n p = Math.max(p.getBBox(null, 0).height - A.h - 1, 0);\n e = {\n low: c + (a ? 0 : e),\n middle: c + e / 2,\n high: c + (a ? e : 0)\n }[k.align];\n b = (a ? d + this.height : b) + (a ? 1 : -1) * (l ? -1 : 1) * this.axisTitleMargin + [-p, p, A.f, -p][this.side];\n a = {\n x: a ? e + r : b + (l ? this.width : 0) + g + r,\n y: a ? b + x - (l ? this.height : 0) + g : e + x\n };\n L(this, \"afterGetTitlePosition\", {\n titlePosition: a\n });\n return a;\n },\n renderMinorTick: function (a) {\n var b = this.chart.hasRendered && C(this.oldMin),\n d = this.minorTicks;\n d[a] || (d[a] = new A(this, a, \"minor\"));\n b && d[a].isNew && d[a].render(null, !0);\n d[a].render(null, !1, 1);\n },\n renderTick: function (a, b) {\n var d = this.isLinked,\n e = this.ticks,\n k = this.chart.hasRendered && C(this.oldMin);\n if (!d || a >= this.min && a <= this.max) e[a] || (e[a] = new A(this, a)), k && e[a].isNew && e[a].render(b, !0, -1), e[a].render(b);\n },\n render: function () {\n var a = this,\n d = a.chart,\n e = a.options,\n k = a.isLog,\n l = a.isLinked,\n g = a.tickPositions,\n r = a.axisTitle,\n x = a.ticks,\n p = a.minorTicks,\n h = a.alternateBands,\n u = e.stackLabels,\n f = e.alternateGridColor,\n n = a.tickmarkOffset,\n E = a.axisLine,\n v = a.showAxis,\n t = b(d.renderer.globalAnimation),\n B,\n H;\n a.labelEdge.length = 0;\n a.overlap = !1;\n [x, p, h].forEach(function (a) {\n y(a, function (a) {\n a.isActive = !1;\n });\n });\n if (a.hasData() || l) a.minorTickInterval && !a.categories && a.getMinorTickPositions().forEach(function (b) {\n a.renderMinorTick(b);\n }), g.length && (g.forEach(function (b, d) {\n a.renderTick(b, d);\n }), n && (0 === a.min || a.single) && (x[-1] || (x[-1] = new A(a, -1, null, !0)), x[-1].render(-1))), f && g.forEach(function (b, e) {\n H = void 0 !== g[e + 1] ? g[e + 1] + n : a.max - n;\n 0 === e % 2 && b < a.max && H <= a.max + (d.polar ? -n : n) && (h[b] || (h[b] = new c.PlotLineOrBand(a)), B = b + n, h[b].options = {\n from: k ? a.lin2log(B) : B,\n to: k ? a.lin2log(H) : H,\n color: f\n }, h[b].render(), h[b].isActive = !0);\n }), a._addedPlotLB || ((e.plotLines || []).concat(e.plotBands || []).forEach(function (b) {\n a.addPlotBandOrLine(b);\n }), a._addedPlotLB = !0);\n [x, p, h].forEach(function (a) {\n var b,\n e = [],\n k = t.duration;\n y(a, function (a, b) {\n a.isActive || (a.render(b, !1, 0), a.isActive = !1, e.push(b));\n });\n q(function () {\n for (b = e.length; b--;) a[e[b]] && !a[e[b]].isActive && (a[e[b]].destroy(), delete a[e[b]]);\n }, a !== h && d.hasRendered && k ? k : 0);\n });\n E && (E[E.isPlaced ? \"animate\" : \"attr\"]({\n d: this.getLinePath(E.strokeWidth())\n }), E.isPlaced = !0, E[v ? \"show\" : \"hide\"](v));\n r && v && (e = a.getTitlePosition(), C(e.y) ? (r[r.isNew ? \"attr\" : \"animate\"](e), r.isNew = !1) : (r.attr(\"y\", -9999), r.isNew = !0));\n u && u.enabled && a.renderStackTotals();\n a.isDirty = !1;\n L(this, \"afterRender\");\n },\n redraw: function () {\n this.visible && (this.render(), this.plotLinesAndBands.forEach(function (a) {\n a.render();\n }));\n this.series.forEach(function (a) {\n a.isDirty = !0;\n });\n },\n keepProps: \"extKey hcEvents names series userMax userMin\".split(\" \"),\n destroy: function (a) {\n var b = this,\n d = b.stacks,\n e = b.plotLinesAndBands,\n k;\n L(this, \"destroy\", {\n keepEvents: a\n });\n a || r(b);\n y(d, function (a, b) {\n B(a);\n d[b] = null;\n });\n [b.ticks, b.minorTicks, b.alternateBands].forEach(function (a) {\n B(a);\n });\n if (e) for (a = e.length; a--;) e[a].destroy();\n \"stackTotalGroup axisLine axisTitle axisGroup gridGroup labelGroup cross scrollbar\".split(\" \").forEach(function (a) {\n b[a] && (b[a] = b[a].destroy());\n });\n for (k in b.plotLinesAndBandsGroups) b.plotLinesAndBandsGroups[k] = b.plotLinesAndBandsGroups[k].destroy();\n y(b, function (a, d) {\n -1 === b.keepProps.indexOf(d) && delete b[d];\n });\n },\n drawCrosshair: function (b, d) {\n var e,\n k = this.crosshair,\n c = h(k.snap, !0),\n l,\n g = this.cross;\n L(this, \"drawCrosshair\", {\n e: b,\n point: d\n });\n b || (b = this.cross && this.cross.e);\n if (this.crosshair && !1 !== (z(d) || !c)) {\n c ? z(d) && (l = h(\"colorAxis\" !== this.coll ? d.crosshairPos : null, this.isXAxis ? d.plotX : this.len - d.plotY)) : l = b && (this.horiz ? b.chartX - this.pos : this.len - b.chartY + this.pos);\n z(l) && (e = this.getPlotLinePath({\n value: d && (this.isXAxis ? d.x : h(d.stackY, d.y)),\n translatedValue: l\n }) || null);\n if (!z(e)) {\n this.hideCrosshair();\n return;\n }\n c = this.categories && !this.isRadial;\n g || (this.cross = g = this.chart.renderer.path().addClass(\"highcharts-crosshair highcharts-crosshair-\" + (c ? \"category \" : \"thin \") + k.className).attr({\n zIndex: h(k.zIndex, 2)\n }).add(), this.chart.styledMode || (g.attr({\n stroke: k.color || (c ? a(\"#ccd6eb\").setOpacity(.25).get() : \"#cccccc\"),\n \"stroke-width\": h(k.width, 1)\n }).css({\n \"pointer-events\": \"none\"\n }), k.dashStyle && g.attr({\n dashstyle: k.dashStyle\n })));\n g.show().attr({\n d: e\n });\n c && !k.width && g.attr({\n \"stroke-width\": this.transA\n });\n this.cross.e = b;\n } else this.hideCrosshair();\n L(this, \"afterDrawCrosshair\", {\n e: b,\n point: d\n });\n },\n hideCrosshair: function () {\n this.cross && this.cross.hide();\n L(this, \"afterHideCrosshair\");\n }\n });\n return c.Axis = f;\n });\n M(I, \"parts/DateTimeAxis.js\", [I[\"parts/Globals.js\"]], function (c) {\n var f = c.Axis,\n F = c.getMagnitude,\n G = c.normalizeTickInterval,\n z = c.timeUnits;\n f.prototype.getTimeTicks = function () {\n return this.chart.time.getTimeTicks.apply(this.chart.time, arguments);\n };\n f.prototype.normalizeTimeTickInterval = function (c, f) {\n var v = f || [[\"millisecond\", [1, 2, 5, 10, 20, 25, 50, 100, 200, 500]], [\"second\", [1, 2, 5, 10, 15, 30]], [\"minute\", [1, 2, 5, 10, 15, 30]], [\"hour\", [1, 2, 3, 4, 6, 8, 12]], [\"day\", [1, 2]], [\"week\", [1, 2]], [\"month\", [1, 2, 3, 4, 6]], [\"year\", null]];\n f = v[v.length - 1];\n var t = z[f[0]],\n B = f[1],\n y;\n for (y = 0; y < v.length && !(f = v[y], t = z[f[0]], B = f[1], v[y + 1] && c <= (t * B[B.length - 1] + z[v[y + 1][0]]) / 2); y++);\n t === z.year && c < 5 * t && (B = [1, 2, 5]);\n c = G(c / t, B, \"year\" === f[0] ? Math.max(F(c / t), 1) : 1);\n return {\n unitRange: t,\n count: c,\n unitName: f[0]\n };\n };\n });\n M(I, \"parts/LogarithmicAxis.js\", [I[\"parts/Globals.js\"], I[\"parts/Utilities.js\"]], function (c, f) {\n var F = f.pick;\n f = c.Axis;\n var G = c.getMagnitude,\n z = c.normalizeTickInterval;\n f.prototype.getLogTickPositions = function (c, f, v, C) {\n var t = this.options,\n y = this.len,\n h = [];\n C || (this._minorAutoInterval = null);\n if (.5 <= c) c = Math.round(c), h = this.getLinearTickPositions(c, f, v);else if (.08 <= c) {\n y = Math.floor(f);\n var n, q;\n for (t = .3 < c ? [1, 2, 4] : .15 < c ? [1, 2, 4, 6, 8] : [1, 2, 3, 4, 5, 6, 7, 8, 9]; y < v + 1 && !q; y++) {\n var g = t.length;\n for (n = 0; n < g && !q; n++) {\n var b = this.log2lin(this.lin2log(y) * t[n]);\n b > f && (!C || a <= v) && void 0 !== a && h.push(a);\n a > v && (q = !0);\n var a = b;\n }\n }\n } else f = this.lin2log(f), v = this.lin2log(v), c = C ? this.getMinorTickInterval() : t.tickInterval, c = F(\"auto\" === c ? null : c, this._minorAutoInterval, t.tickPixelInterval / (C ? 5 : 1) * (v - f) / ((C ? y / this.tickPositions.length : y) || 1)), c = z(c, null, G(c)), h = this.getLinearTickPositions(c, f, v).map(this.log2lin), C || (this._minorAutoInterval = c / 5);\n C || (this.tickInterval = c);\n return h;\n };\n f.prototype.log2lin = function (c) {\n return Math.log(c) / Math.LN10;\n };\n f.prototype.lin2log = function (c) {\n return Math.pow(10, c);\n };\n });\n M(I, \"parts/PlotLineOrBand.js\", [I[\"parts/Globals.js\"], I[\"parts/Axis.js\"], I[\"parts/Utilities.js\"]], function (c, f, F) {\n var G = F.arrayMax,\n z = F.arrayMin,\n B = F.defined,\n t = F.destroyObjectProperties,\n v = F.erase,\n C = F.extend,\n H = F.objectEach,\n y = F.pick,\n h = c.merge;\n c.PlotLineOrBand = function (c, h) {\n this.axis = c;\n h && (this.options = h, this.id = h.id);\n };\n c.PlotLineOrBand.prototype = {\n render: function () {\n c.fireEvent(this, \"render\");\n var f = this,\n q = f.axis,\n g = q.horiz,\n b = f.options,\n a = b.label,\n d = f.label,\n e = b.to,\n l = b.from,\n L = b.value,\n E = B(l) && B(e),\n p = B(L),\n u = f.svgElem,\n k = !u,\n r = [],\n x = b.color,\n A = y(b.zIndex, 0),\n w = b.events;\n r = {\n \"class\": \"highcharts-plot-\" + (E ? \"band \" : \"line \") + (b.className || \"\")\n };\n var m = {},\n K = q.chart.renderer,\n J = E ? \"bands\" : \"lines\";\n q.isLog && (l = q.log2lin(l), e = q.log2lin(e), L = q.log2lin(L));\n q.chart.styledMode || (p ? (r.stroke = x || \"#999999\", r[\"stroke-width\"] = y(b.width, 1), b.dashStyle && (r.dashstyle = b.dashStyle)) : E && (r.fill = x || \"#e6ebf5\", b.borderWidth && (r.stroke = b.borderColor, r[\"stroke-width\"] = b.borderWidth)));\n m.zIndex = A;\n J += \"-\" + A;\n (x = q.plotLinesAndBandsGroups[J]) || (q.plotLinesAndBandsGroups[J] = x = K.g(\"plot-\" + J).attr(m).add());\n k && (f.svgElem = u = K.path().attr(r).add(x));\n if (p) r = q.getPlotLinePath({\n value: L,\n lineWidth: u.strokeWidth(),\n acrossPanes: b.acrossPanes\n });else if (E) r = q.getPlotBandPath(l, e, b);else return;\n (k || !u.d) && r && r.length ? (u.attr({\n d: r\n }), w && H(w, function (a, b) {\n u.on(b, function (a) {\n w[b].apply(f, [a]);\n });\n })) : u && (r ? (u.show(!0), u.animate({\n d: r\n })) : u.d && (u.hide(), d && (f.label = d = d.destroy())));\n a && (B(a.text) || B(a.formatter)) && r && r.length && 0 < q.width && 0 < q.height && !r.isFlat ? (a = h({\n align: g && E && \"center\",\n x: g ? !E && 4 : 10,\n verticalAlign: !g && E && \"middle\",\n y: g ? E ? 16 : 10 : E ? 6 : -4,\n rotation: g && !E && 90\n }, a), this.renderLabel(a, r, E, A)) : d && d.hide();\n return f;\n },\n renderLabel: function (c, h, g, b) {\n var a = this.label,\n d = this.axis.chart.renderer;\n a || (a = {\n align: c.textAlign || c.align,\n rotation: c.rotation,\n \"class\": \"highcharts-plot-\" + (g ? \"band\" : \"line\") + \"-label \" + (c.className || \"\")\n }, a.zIndex = b, b = this.getLabelText(c), this.label = a = d.text(b, 0, 0, c.useHTML).attr(a).add(), this.axis.chart.styledMode || a.css(c.style));\n d = h.xBounds || [h[1], h[4], g ? h[6] : h[1]];\n h = h.yBounds || [h[2], h[5], g ? h[7] : h[2]];\n g = z(d);\n b = z(h);\n a.align(c, !1, {\n x: g,\n y: b,\n width: G(d) - g,\n height: G(h) - b\n });\n a.show(!0);\n },\n getLabelText: function (c) {\n return B(c.formatter) ? c.formatter.call(this) : c.text;\n },\n destroy: function () {\n v(this.axis.plotLinesAndBands, this);\n delete this.axis;\n t(this);\n }\n };\n C(f.prototype, {\n getPlotBandPath: function (c, h) {\n var g = this.getPlotLinePath({\n value: h,\n force: !0,\n acrossPanes: this.options.acrossPanes\n }),\n b = this.getPlotLinePath({\n value: c,\n force: !0,\n acrossPanes: this.options.acrossPanes\n }),\n a = [],\n d = this.horiz,\n e = 1;\n c = c < this.min && h < this.min || c > this.max && h > this.max;\n if (b && g) {\n if (c) {\n var l = b.toString() === g.toString();\n e = 0;\n }\n for (c = 0; c < b.length; c += 6) d && g[c + 1] === b[c + 1] ? (g[c + 1] += e, g[c + 4] += e) : d || g[c + 2] !== b[c + 2] || (g[c + 2] += e, g[c + 5] += e), a.push(\"M\", b[c + 1], b[c + 2], \"L\", b[c + 4], b[c + 5], g[c + 4], g[c + 5], g[c + 1], g[c + 2], \"z\"), a.isFlat = l;\n }\n return a;\n },\n addPlotBand: function (c) {\n return this.addPlotBandOrLine(c, \"plotBands\");\n },\n addPlotLine: function (c) {\n return this.addPlotBandOrLine(c, \"plotLines\");\n },\n addPlotBandOrLine: function (h, f) {\n var g = new c.PlotLineOrBand(this, h).render(),\n b = this.userOptions;\n if (g) {\n if (f) {\n var a = b[f] || [];\n a.push(h);\n b[f] = a;\n }\n this.plotLinesAndBands.push(g);\n }\n return g;\n },\n removePlotBandOrLine: function (c) {\n for (var h = this.plotLinesAndBands, g = this.options, b = this.userOptions, a = h.length; a--;) h[a].id === c && h[a].destroy();\n [g.plotLines || [], b.plotLines || [], g.plotBands || [], b.plotBands || []].forEach(function (b) {\n for (a = b.length; a--;) b[a].id === c && v(b, b[a]);\n });\n },\n removePlotBand: function (c) {\n this.removePlotBandOrLine(c);\n },\n removePlotLine: function (c) {\n this.removePlotBandOrLine(c);\n }\n });\n });\n M(I, \"parts/Tooltip.js\", [I[\"parts/Globals.js\"], I[\"parts/Utilities.js\"]], function (c, f) {\n var F = f.defined,\n G = f.discardElement,\n z = f.extend,\n B = f.isNumber,\n t = f.isString,\n v = f.pick,\n C = f.splat,\n H = f.syncTimeout;\n \"\";\n var y = c.doc,\n h = c.format,\n n = c.merge,\n q = c.timeUnits;\n c.Tooltip = function () {\n this.init.apply(this, arguments);\n };\n c.Tooltip.prototype = {\n init: function (c, b) {\n this.chart = c;\n this.options = b;\n this.crosshairs = [];\n this.now = {\n x: 0,\n y: 0\n };\n this.isHidden = !0;\n this.split = b.split && !c.inverted;\n this.shared = b.shared || this.split;\n this.outside = v(b.outside, !(!c.scrollablePixelsX && !c.scrollablePixelsY));\n },\n cleanSplit: function (c) {\n this.chart.series.forEach(function (b) {\n var a = b && b.tt;\n a && (!a.isActive || c ? b.tt = a.destroy() : a.isActive = !1);\n });\n },\n applyFilter: function () {\n var c = this.chart;\n c.renderer.definition({\n tagName: \"filter\",\n id: \"drop-shadow-\" + c.index,\n opacity: .5,\n children: [{\n tagName: \"feGaussianBlur\",\n \"in\": \"SourceAlpha\",\n stdDeviation: 1\n }, {\n tagName: \"feOffset\",\n dx: 1,\n dy: 1\n }, {\n tagName: \"feComponentTransfer\",\n children: [{\n tagName: \"feFuncA\",\n type: \"linear\",\n slope: .3\n }]\n }, {\n tagName: \"feMerge\",\n children: [{\n tagName: \"feMergeNode\"\n }, {\n tagName: \"feMergeNode\",\n \"in\": \"SourceGraphic\"\n }]\n }]\n });\n c.renderer.definition({\n tagName: \"style\",\n textContent: \".highcharts-tooltip-\" + c.index + \"{filter:url(#drop-shadow-\" + c.index + \")}\"\n });\n },\n getLabel: function () {\n var g = this,\n b = this.chart.renderer,\n a = this.chart.styledMode,\n d = this.options,\n e = \"tooltip\" + (F(d.className) ? \" \" + d.className : \"\"),\n l;\n if (!this.label) {\n this.outside && (this.container = l = c.doc.createElement(\"div\"), l.className = \"highcharts-tooltip-container\", c.css(l, {\n position: \"absolute\",\n top: \"1px\",\n pointerEvents: d.style && d.style.pointerEvents,\n zIndex: 3\n }), c.doc.body.appendChild(l), this.renderer = b = new c.Renderer(l, 0, 0, {}, void 0, void 0, b.styledMode));\n this.split ? this.label = b.g(e) : (this.label = b.label(\"\", 0, 0, d.shape || \"callout\", null, null, d.useHTML, null, e).attr({\n padding: d.padding,\n r: d.borderRadius\n }), a || this.label.attr({\n fill: d.backgroundColor,\n \"stroke-width\": d.borderWidth\n }).css(d.style).shadow(d.shadow));\n a && (this.applyFilter(), this.label.addClass(\"highcharts-tooltip-\" + this.chart.index));\n if (g.outside && !g.split) {\n var h = {\n x: this.label.xSetter,\n y: this.label.ySetter\n };\n this.label.xSetter = function (a, b) {\n h[b].call(this.label, g.distance);\n l.style.left = a + \"px\";\n };\n this.label.ySetter = function (a, b) {\n h[b].call(this.label, g.distance);\n l.style.top = a + \"px\";\n };\n }\n this.label.attr({\n zIndex: 8\n }).add();\n }\n return this.label;\n },\n update: function (c) {\n this.destroy();\n n(!0, this.chart.options.tooltip.userOptions, c);\n this.init(this.chart, n(!0, this.options, c));\n },\n destroy: function () {\n this.label && (this.label = this.label.destroy());\n this.split && this.tt && (this.cleanSplit(this.chart, !0), this.tt = this.tt.destroy());\n this.renderer && (this.renderer = this.renderer.destroy(), G(this.container));\n c.clearTimeout(this.hideTimer);\n c.clearTimeout(this.tooltipTimeout);\n },\n move: function (g, b, a, d) {\n var e = this,\n l = e.now,\n h = !1 !== e.options.animation && !e.isHidden && (1 < Math.abs(g - l.x) || 1 < Math.abs(b - l.y)),\n f = e.followPointer || 1 < e.len;\n z(l, {\n x: h ? (2 * l.x + g) / 3 : g,\n y: h ? (l.y + b) / 2 : b,\n anchorX: f ? void 0 : h ? (2 * l.anchorX + a) / 3 : a,\n anchorY: f ? void 0 : h ? (l.anchorY + d) / 2 : d\n });\n e.getLabel().attr(l);\n h && (c.clearTimeout(this.tooltipTimeout), this.tooltipTimeout = setTimeout(function () {\n e && e.move(g, b, a, d);\n }, 32));\n },\n hide: function (g) {\n var b = this;\n c.clearTimeout(this.hideTimer);\n g = v(g, this.options.hideDelay, 500);\n this.isHidden || (this.hideTimer = H(function () {\n b.getLabel()[g ? \"fadeOut\" : \"hide\"]();\n b.isHidden = !0;\n }, g));\n },\n getAnchor: function (c, b) {\n var a = this.chart,\n d = a.pointer,\n e = a.inverted,\n l = a.plotTop,\n g = a.plotLeft,\n h = 0,\n p = 0,\n f,\n k;\n c = C(c);\n this.followPointer && b ? (void 0 === b.chartX && (b = d.normalize(b)), c = [b.chartX - a.plotLeft, b.chartY - l]) : c[0].tooltipPos ? c = c[0].tooltipPos : (c.forEach(function (a) {\n f = a.series.yAxis;\n k = a.series.xAxis;\n h += a.plotX + (!e && k ? k.left - g : 0);\n p += (a.plotLow ? (a.plotLow + a.plotHigh) / 2 : a.plotY) + (!e && f ? f.top - l : 0);\n }), h /= c.length, p /= c.length, c = [e ? a.plotWidth - p : h, this.shared && !e && 1 < c.length && b ? b.chartY - l : e ? a.plotHeight - h : p]);\n return c.map(Math.round);\n },\n getPosition: function (c, b, a) {\n var d = this.chart,\n e = this.distance,\n l = {},\n g = d.inverted && a.h || 0,\n h,\n p = this.outside,\n f = p ? y.documentElement.clientWidth - 2 * e : d.chartWidth,\n k = p ? Math.max(y.body.scrollHeight, y.documentElement.scrollHeight, y.body.offsetHeight, y.documentElement.offsetHeight, y.documentElement.clientHeight) : d.chartHeight,\n r = d.pointer.getChartPosition(),\n x = d.containerScaling,\n A = function (a) {\n return x ? a * x.scaleX : a;\n },\n w = function (a) {\n return x ? a * x.scaleY : a;\n },\n m = function (l) {\n var m = \"x\" === l;\n return [l, m ? f : k, m ? c : b].concat(p ? [m ? A(c) : w(b), m ? r.left - e + A(a.plotX + d.plotLeft) : r.top - e + w(a.plotY + d.plotTop), 0, m ? f : k] : [m ? c : b, m ? a.plotX + d.plotLeft : a.plotY + d.plotTop, m ? d.plotLeft : d.plotTop, m ? d.plotLeft + d.plotWidth : d.plotTop + d.plotHeight]);\n },\n n = m(\"y\"),\n J = m(\"x\"),\n q = !this.followPointer && v(a.ttBelow, !d.inverted === !!a.negative),\n t = function (a, b, d, c, k, m, r) {\n var x = \"y\" === a ? w(e) : A(e),\n p = (d - c) / 2,\n h = c < k - e,\n f = k + e + c < b,\n u = k - x - d + p;\n k = k + x - p;\n if (q && f) l[a] = k;else if (!q && h) l[a] = u;else if (h) l[a] = Math.min(r - c, 0 > u - g ? u : u - g);else if (f) l[a] = Math.max(m, k + g + d > b ? k : k + g);else return !1;\n },\n C = function (a, b, d, k, c) {\n var m;\n c < e || c > b - e ? m = !1 : l[a] = c < d / 2 ? 1 : c > b - k / 2 ? b - k - 2 : c - d / 2;\n return m;\n },\n O = function (a) {\n var b = n;\n n = J;\n J = b;\n h = a;\n },\n D = function () {\n !1 !== t.apply(0, n) ? !1 !== C.apply(0, J) || h || (O(!0), D()) : h ? l.x = l.y = 0 : (O(!0), D());\n };\n (d.inverted || 1 < this.len) && O();\n D();\n return l;\n },\n defaultFormatter: function (c) {\n var b = this.points || C(this);\n var a = [c.tooltipFooterHeaderFormatter(b[0])];\n a = a.concat(c.bodyFormatter(b));\n a.push(c.tooltipFooterHeaderFormatter(b[0], !0));\n return a;\n },\n refresh: function (g, b) {\n var a = this.chart,\n d = this.options,\n e = g,\n l = {},\n h = [],\n f = d.formatter || this.defaultFormatter;\n l = this.shared;\n var p = a.styledMode;\n if (d.enabled) {\n c.clearTimeout(this.hideTimer);\n this.followPointer = C(e)[0].series.tooltipOptions.followPointer;\n var u = this.getAnchor(e, b);\n b = u[0];\n var k = u[1];\n !l || e.series && e.series.noSharedTooltip ? l = e.getLabelConfig() : (a.pointer.applyInactiveState(e), e.forEach(function (a) {\n a.setState(\"hover\");\n h.push(a.getLabelConfig());\n }), l = {\n x: e[0].category,\n y: e[0].y\n }, l.points = h, e = e[0]);\n this.len = h.length;\n a = f.call(l, this);\n f = e.series;\n this.distance = v(f.tooltipOptions.distance, 16);\n !1 === a ? this.hide() : (this.split ? this.renderSplit(a, C(g)) : (g = this.getLabel(), d.style.width && !p || g.css({\n width: this.chart.spacingBox.width\n }), g.attr({\n text: a && a.join ? a.join(\"\") : a\n }), g.removeClass(/highcharts-color-[\\d]+/g).addClass(\"highcharts-color-\" + v(e.colorIndex, f.colorIndex)), p || g.attr({\n stroke: d.borderColor || e.color || f.color || \"#666666\"\n }), this.updatePosition({\n plotX: b,\n plotY: k,\n negative: e.negative,\n ttBelow: e.ttBelow,\n h: u[2] || 0\n })), this.isHidden && this.label && this.label.attr({\n opacity: 1\n }).show(), this.isHidden = !1);\n c.fireEvent(this, \"refresh\");\n }\n },\n renderSplit: function (g, b) {\n var a = this,\n d = [],\n e = this.chart,\n l = e.renderer,\n h = !0,\n f = this.options,\n p = 0,\n u,\n k = this.getLabel(),\n r = e.plotTop;\n t(g) && (g = [!1, g]);\n g.slice(0, b.length + 1).forEach(function (c, m) {\n if (!1 !== c && \"\" !== c) {\n m = b[m - 1] || {\n isHeader: !0,\n plotX: b[0].plotX,\n plotY: e.plotHeight\n };\n var g = m.series || a,\n x = g.tt,\n w = m.series || {},\n A = \"highcharts-color-\" + v(m.colorIndex, w.colorIndex, \"none\");\n x || (x = {\n padding: f.padding,\n r: f.borderRadius\n }, e.styledMode || (x.fill = f.backgroundColor, x[\"stroke-width\"] = f.borderWidth), g.tt = x = l.label(null, null, null, (m.isHeader ? f.headerShape : f.shape) || \"callout\", null, null, f.useHTML).addClass(m.isHeader ? \"highcharts-tooltip-header \" : \"highcharts-tooltip-box \" + A).attr(x).add(k));\n x.isActive = !0;\n x.attr({\n text: c\n });\n e.styledMode || x.css(f.style).shadow(f.shadow).attr({\n stroke: f.borderColor || m.color || w.color || \"#333333\"\n });\n c = x.getBBox();\n A = c.width + x.strokeWidth();\n m.isHeader ? (p = c.height, e.xAxis[0].opposite && (u = !0, r -= p), c = Math.max(0, Math.min(m.plotX + e.plotLeft - A / 2, e.chartWidth + (e.scrollablePixelsX ? e.scrollablePixelsX - e.marginRight : 0) - A))) : c = m.plotX + e.plotLeft - v(f.distance, 16) - A;\n 0 > c && (h = !1);\n m.isHeader ? w = u ? -p : e.plotHeight + p : (w = w.yAxis, w = w.pos - r + Math.max(0, Math.min(m.plotY || 0, w.len)));\n d.push({\n target: w,\n rank: m.isHeader ? 1 : 0,\n size: g.tt.getBBox().height + 1,\n point: m,\n x: c,\n tt: x\n });\n }\n });\n this.cleanSplit();\n f.positioner && d.forEach(function (b) {\n var d = f.positioner.call(a, b.tt.getBBox().width, b.size, b.point);\n b.x = d.x;\n b.align = 0;\n b.target = d.y;\n b.rank = v(d.rank, b.rank);\n });\n c.distribute(d, e.plotHeight + p);\n d.forEach(function (b) {\n var d = b.point,\n c = d.series,\n k = c && c.yAxis;\n b.tt.attr({\n visibility: void 0 === b.pos ? \"hidden\" : \"inherit\",\n x: h || d.isHeader || f.positioner ? b.x : d.plotX + e.plotLeft + a.distance,\n y: b.pos + r,\n anchorX: d.isHeader ? d.plotX + e.plotLeft : d.plotX + c.xAxis.pos,\n anchorY: d.isHeader ? e.plotTop + e.plotHeight / 2 : k.pos + Math.max(0, Math.min(d.plotY, k.len))\n });\n });\n var x = a.container;\n g = a.renderer;\n if (a.outside && x && g) {\n var A = e.pointer.getChartPosition();\n x.style.left = A.left + \"px\";\n x.style.top = A.top + \"px\";\n x = k.getBBox();\n g.setSize(x.width + x.x, x.height + x.y, !1);\n }\n },\n updatePosition: function (g) {\n var b = this.chart,\n a = b.pointer,\n d = this.getLabel(),\n e = g.plotX + b.plotLeft,\n l = g.plotY + b.plotTop;\n a = a.getChartPosition();\n g = (this.options.positioner || this.getPosition).call(this, d.width, d.height, g);\n if (this.outside) {\n var h = (this.options.borderWidth || 0) + 2 * this.distance;\n this.renderer.setSize(d.width + h, d.height + h, !1);\n if (b = b.containerScaling) c.css(this.container, {\n transform: \"scale(\" + b.scaleX + \", \" + b.scaleY + \")\"\n }), e *= b.scaleX, l *= b.scaleY;\n e += a.left - g.x;\n l += a.top - g.y;\n }\n this.move(Math.round(g.x), Math.round(g.y || 0), e, l);\n },\n getDateFormat: function (c, b, a, d) {\n var e = this.chart.time,\n l = e.dateFormat(\"%m-%d %H:%M:%S.%L\", b),\n g = {\n millisecond: 15,\n second: 12,\n minute: 9,\n hour: 6,\n day: 3\n },\n h = \"millisecond\";\n for (p in q) {\n if (c === q.week && +e.dateFormat(\"%w\", b) === a && \"00:00:00.000\" === l.substr(6)) {\n var p = \"week\";\n break;\n }\n if (q[p] > c) {\n p = h;\n break;\n }\n if (g[p] && l.substr(g[p]) !== \"01-01 00:00:00.000\".substr(g[p])) break;\n \"week\" !== p && (h = p);\n }\n if (p) var f = e.resolveDTLFormat(d[p]).main;\n return f;\n },\n getXDateFormat: function (c, b, a) {\n b = b.dateTimeLabelFormats;\n var d = a && a.closestPointRange;\n return (d ? this.getDateFormat(d, c.x, a.options.startOfWeek, b) : b.day) || b.year;\n },\n tooltipFooterHeaderFormatter: function (g, b) {\n var a = b ? \"footer\" : \"header\",\n d = g.series,\n e = d.tooltipOptions,\n l = e.xDateFormat,\n f = d.xAxis,\n n = f && \"datetime\" === f.options.type && B(g.key),\n p = e[a + \"Format\"];\n b = {\n isFooter: b,\n labelConfig: g\n };\n c.fireEvent(this, \"headerFormatter\", b, function (a) {\n n && !l && (l = this.getXDateFormat(g, e, f));\n n && l && (g.point && g.point.tooltipDateKeys || [\"key\"]).forEach(function (a) {\n p = p.replace(\"{point.\" + a + \"}\", \"{point.\" + a + \":\" + l + \"}\");\n });\n d.chart.styledMode && (p = this.styledModeFormat(p));\n a.text = h(p, {\n point: g,\n series: d\n }, this.chart.time);\n });\n return b.text;\n },\n bodyFormatter: function (c) {\n return c.map(function (b) {\n var a = b.series.tooltipOptions;\n return (a[(b.point.formatPrefix || \"point\") + \"Formatter\"] || b.point.tooltipFormatter).call(b.point, a[(b.point.formatPrefix || \"point\") + \"Format\"] || \"\");\n });\n },\n styledModeFormat: function (c) {\n return c.replace('style=\"font-size: 10px\"', 'class=\"highcharts-header\"').replace(/style=\"color:{(point|series)\\.color}\"/g, 'class=\"highcharts-color-{$1.colorIndex}\"');\n }\n };\n });\n M(I, \"parts/Pointer.js\", [I[\"parts/Globals.js\"], I[\"parts/Utilities.js\"]], function (c, f) {\n var F = f.attr,\n G = f.defined,\n z = f.extend,\n B = f.isNumber,\n t = f.isObject,\n v = f.objectEach,\n C = f.pick,\n H = f.splat,\n y = c.addEvent,\n h = c.charts,\n n = c.color,\n q = c.css,\n g = c.find,\n b = c.fireEvent,\n a = c.offset,\n d = c.Tooltip;\n c.Pointer = function (a, b) {\n this.init(a, b);\n };\n c.Pointer.prototype = {\n init: function (a, b) {\n this.options = b;\n this.chart = a;\n this.runChartClick = b.chart.events && !!b.chart.events.click;\n this.pinchDown = [];\n this.lastValidTouch = {};\n d && (a.tooltip = new d(a, b.tooltip), this.followTouchMove = C(b.tooltip.followTouchMove, !0));\n this.setDOMEvents();\n },\n zoomOption: function (a) {\n var b = this.chart,\n d = b.options.chart,\n e = d.zoomType || \"\";\n b = b.inverted;\n /touch/.test(a.type) && (e = C(d.pinchType, e));\n this.zoomX = a = /x/.test(e);\n this.zoomY = e = /y/.test(e);\n this.zoomHor = a && !b || e && b;\n this.zoomVert = e && !b || a && b;\n this.hasZoom = a || e;\n },\n getChartPosition: function () {\n return this.chartPosition || (this.chartPosition = a(this.chart.container));\n },\n normalize: function (a, b) {\n var d = a.touches ? a.touches.length ? a.touches.item(0) : a.changedTouches[0] : a;\n b || (b = this.getChartPosition());\n var e = d.pageX - b.left;\n b = d.pageY - b.top;\n if (d = this.chart.containerScaling) e /= d.scaleX, b /= d.scaleY;\n return z(a, {\n chartX: Math.round(e),\n chartY: Math.round(b)\n });\n },\n getCoordinates: function (a) {\n var b = {\n xAxis: [],\n yAxis: []\n };\n this.chart.axes.forEach(function (d) {\n b[d.isXAxis ? \"xAxis\" : \"yAxis\"].push({\n axis: d,\n value: d.toValue(a[d.horiz ? \"chartX\" : \"chartY\"])\n });\n });\n return b;\n },\n findNearestKDPoint: function (a, b, d) {\n var e;\n a.forEach(function (a) {\n var c = !(a.noSharedTooltip && b) && 0 > a.options.findNearestPointBy.indexOf(\"y\");\n a = a.searchPoint(d, c);\n if ((c = t(a, !0)) && !(c = !t(e, !0))) {\n c = e.distX - a.distX;\n var k = e.dist - a.dist,\n l = (a.series.group && a.series.group.zIndex) - (e.series.group && e.series.group.zIndex);\n c = 0 < (0 !== c && b ? c : 0 !== k ? k : 0 !== l ? l : e.series.index > a.series.index ? -1 : 1);\n }\n c && (e = a);\n });\n return e;\n },\n getPointFromEvent: function (a) {\n a = a.target;\n for (var b; a && !b;) b = a.point, a = a.parentNode;\n return b;\n },\n getChartCoordinatesFromPoint: function (a, b) {\n var d = a.series,\n e = d.xAxis;\n d = d.yAxis;\n var c = C(a.clientX, a.plotX),\n l = a.shapeArgs;\n if (e && d) return b ? {\n chartX: e.len + e.pos - c,\n chartY: d.len + d.pos - a.plotY\n } : {\n chartX: c + e.pos,\n chartY: a.plotY + d.pos\n };\n if (l && l.x && l.y) return {\n chartX: l.x,\n chartY: l.y\n };\n },\n getHoverData: function (a, b, d, c, h, f) {\n var e,\n l = [];\n c = !(!c || !a);\n var x = b && !b.stickyTracking ? [b] : d.filter(function (a) {\n return a.visible && !(!h && a.directTouch) && C(a.options.enableMouseTracking, !0) && a.stickyTracking;\n });\n b = (e = c || !f ? a : this.findNearestKDPoint(x, h, f)) && e.series;\n e && (h && !b.noSharedTooltip ? (x = d.filter(function (a) {\n return a.visible && !(!h && a.directTouch) && C(a.options.enableMouseTracking, !0) && !a.noSharedTooltip;\n }), x.forEach(function (a) {\n var b = g(a.points, function (a) {\n return a.x === e.x && !a.isNull;\n });\n t(b) && (a.chart.isBoosting && (b = a.getPoint(b)), l.push(b));\n })) : l.push(e));\n return {\n hoverPoint: e,\n hoverSeries: b,\n hoverPoints: l\n };\n },\n runPointActions: function (a, b) {\n var d = this.chart,\n e = d.tooltip && d.tooltip.options.enabled ? d.tooltip : void 0,\n l = e ? e.shared : !1,\n g = b || d.hoverPoint,\n k = g && g.series || d.hoverSeries;\n k = this.getHoverData(g, k, d.series, (!a || \"touchmove\" !== a.type) && (!!b || k && k.directTouch && this.isDirectTouch), l, a);\n g = k.hoverPoint;\n var r = k.hoverPoints;\n b = (k = k.hoverSeries) && k.tooltipOptions.followPointer;\n l = l && k && !k.noSharedTooltip;\n if (g && (g !== d.hoverPoint || e && e.isHidden)) {\n (d.hoverPoints || []).forEach(function (a) {\n -1 === r.indexOf(a) && a.setState();\n });\n if (d.hoverSeries !== k) k.onMouseOver();\n this.applyInactiveState(r);\n (r || []).forEach(function (a) {\n a.setState(\"hover\");\n });\n d.hoverPoint && d.hoverPoint.firePointEvent(\"mouseOut\");\n if (!g.series) return;\n g.firePointEvent(\"mouseOver\");\n d.hoverPoints = r;\n d.hoverPoint = g;\n e && e.refresh(l ? r : g, a);\n } else b && e && !e.isHidden && (g = e.getAnchor([{}], a), e.updatePosition({\n plotX: g[0],\n plotY: g[1]\n }));\n this.unDocMouseMove || (this.unDocMouseMove = y(d.container.ownerDocument, \"mousemove\", function (a) {\n var b = h[c.hoverChartIndex];\n if (b) b.pointer.onDocumentMouseMove(a);\n }));\n d.axes.forEach(function (b) {\n var d = C(b.crosshair.snap, !0),\n e = d ? c.find(r, function (a) {\n return a.series[b.coll] === b;\n }) : void 0;\n e || !d ? b.drawCrosshair(a, e) : b.hideCrosshair();\n });\n },\n applyInactiveState: function (a) {\n var b = [],\n d;\n (a || []).forEach(function (a) {\n d = a.series;\n b.push(d);\n d.linkedParent && b.push(d.linkedParent);\n d.linkedSeries && (b = b.concat(d.linkedSeries));\n d.navigatorSeries && b.push(d.navigatorSeries);\n });\n this.chart.series.forEach(function (a) {\n -1 === b.indexOf(a) ? a.setState(\"inactive\", !0) : a.options.inactiveOtherPoints && a.setAllPointsToState(\"inactive\");\n });\n },\n reset: function (a, b) {\n var d = this.chart,\n e = d.hoverSeries,\n c = d.hoverPoint,\n g = d.hoverPoints,\n k = d.tooltip,\n l = k && k.shared ? g : c;\n a && l && H(l).forEach(function (b) {\n b.series.isCartesian && void 0 === b.plotX && (a = !1);\n });\n if (a) k && l && H(l).length && (k.refresh(l), k.shared && g ? g.forEach(function (a) {\n a.setState(a.state, !0);\n a.series.isCartesian && (a.series.xAxis.crosshair && a.series.xAxis.drawCrosshair(null, a), a.series.yAxis.crosshair && a.series.yAxis.drawCrosshair(null, a));\n }) : c && (c.setState(c.state, !0), d.axes.forEach(function (a) {\n a.crosshair && a.drawCrosshair(null, c);\n })));else {\n if (c) c.onMouseOut();\n g && g.forEach(function (a) {\n a.setState();\n });\n if (e) e.onMouseOut();\n k && k.hide(b);\n this.unDocMouseMove && (this.unDocMouseMove = this.unDocMouseMove());\n d.axes.forEach(function (a) {\n a.hideCrosshair();\n });\n this.hoverX = d.hoverPoints = d.hoverPoint = null;\n }\n },\n scaleGroups: function (a, b) {\n var d = this.chart,\n e;\n d.series.forEach(function (c) {\n e = a || c.getPlotBox();\n c.xAxis && c.xAxis.zoomEnabled && c.group && (c.group.attr(e), c.markerGroup && (c.markerGroup.attr(e), c.markerGroup.clip(b ? d.clipRect : null)), c.dataLabelsGroup && c.dataLabelsGroup.attr(e));\n });\n d.clipRect.attr(b || d.clipBox);\n },\n dragStart: function (a) {\n var b = this.chart;\n b.mouseIsDown = a.type;\n b.cancelClick = !1;\n b.mouseDownX = this.mouseDownX = a.chartX;\n b.mouseDownY = this.mouseDownY = a.chartY;\n },\n drag: function (a) {\n var b = this.chart,\n d = b.options.chart,\n e = a.chartX,\n c = a.chartY,\n g = this.zoomHor,\n k = this.zoomVert,\n r = b.plotLeft,\n h = b.plotTop,\n A = b.plotWidth,\n w = b.plotHeight,\n m = this.selectionMarker,\n f = this.mouseDownX,\n J = this.mouseDownY,\n v = d.panKey && a[d.panKey + \"Key\"];\n if (!m || !m.touch) if (e < r ? e = r : e > r + A && (e = r + A), c < h ? c = h : c > h + w && (c = h + w), this.hasDragged = Math.sqrt(Math.pow(f - e, 2) + Math.pow(J - c, 2)), 10 < this.hasDragged) {\n var q = b.isInsidePlot(f - r, J - h);\n b.hasCartesianSeries && (this.zoomX || this.zoomY) && q && !v && !m && (this.selectionMarker = m = b.renderer.rect(r, h, g ? 1 : A, k ? 1 : w, 0).attr({\n \"class\": \"highcharts-selection-marker\",\n zIndex: 7\n }).add(), b.styledMode || m.attr({\n fill: d.selectionMarkerFill || n(\"#335cad\").setOpacity(.25).get()\n }));\n m && g && (e -= f, m.attr({\n width: Math.abs(e),\n x: (0 < e ? 0 : e) + f\n }));\n m && k && (e = c - J, m.attr({\n height: Math.abs(e),\n y: (0 < e ? 0 : e) + J\n }));\n q && !m && d.panning && b.pan(a, d.panning);\n }\n },\n drop: function (a) {\n var d = this,\n e = this.chart,\n c = this.hasPinched;\n if (this.selectionMarker) {\n var g = {\n originalEvent: a,\n xAxis: [],\n yAxis: []\n },\n h = this.selectionMarker,\n k = h.attr ? h.attr(\"x\") : h.x,\n r = h.attr ? h.attr(\"y\") : h.y,\n x = h.attr ? h.attr(\"width\") : h.width,\n A = h.attr ? h.attr(\"height\") : h.height,\n w;\n if (this.hasDragged || c) e.axes.forEach(function (b) {\n if (b.zoomEnabled && G(b.min) && (c || d[{\n xAxis: \"zoomX\",\n yAxis: \"zoomY\"\n }[b.coll]])) {\n var e = b.horiz,\n m = \"touchend\" === a.type ? b.minPixelPadding : 0,\n l = b.toValue((e ? k : r) + m);\n e = b.toValue((e ? k + x : r + A) - m);\n g[b.coll].push({\n axis: b,\n min: Math.min(l, e),\n max: Math.max(l, e)\n });\n w = !0;\n }\n }), w && b(e, \"selection\", g, function (a) {\n e.zoom(z(a, c ? {\n animation: !1\n } : null));\n });\n B(e.index) && (this.selectionMarker = this.selectionMarker.destroy());\n c && this.scaleGroups();\n }\n e && B(e.index) && (q(e.container, {\n cursor: e._cursor\n }), e.cancelClick = 10 < this.hasDragged, e.mouseIsDown = this.hasDragged = this.hasPinched = !1, this.pinchDown = []);\n },\n onContainerMouseDown: function (a) {\n a = this.normalize(a);\n 2 !== a.button && (this.zoomOption(a), a.preventDefault && a.preventDefault(), this.dragStart(a));\n },\n onDocumentMouseUp: function (a) {\n h[c.hoverChartIndex] && h[c.hoverChartIndex].pointer.drop(a);\n },\n onDocumentMouseMove: function (a) {\n var b = this.chart,\n d = this.chartPosition;\n a = this.normalize(a, d);\n !d || this.inClass(a.target, \"highcharts-tracker\") || b.isInsidePlot(a.chartX - b.plotLeft, a.chartY - b.plotTop) || this.reset();\n },\n onContainerMouseLeave: function (a) {\n var b = h[c.hoverChartIndex];\n b && (a.relatedTarget || a.toElement) && (b.pointer.reset(), b.pointer.chartPosition = void 0);\n },\n onContainerMouseMove: function (a) {\n var b = this.chart;\n G(c.hoverChartIndex) && h[c.hoverChartIndex] && h[c.hoverChartIndex].mouseIsDown || (c.hoverChartIndex = b.index);\n a = this.normalize(a);\n a.preventDefault || (a.returnValue = !1);\n \"mousedown\" === b.mouseIsDown && this.drag(a);\n !this.inClass(a.target, \"highcharts-tracker\") && !b.isInsidePlot(a.chartX - b.plotLeft, a.chartY - b.plotTop) || b.openMenu || this.runPointActions(a);\n },\n inClass: function (a, b) {\n for (var d; a;) {\n if (d = F(a, \"class\")) {\n if (-1 !== d.indexOf(b)) return !0;\n if (-1 !== d.indexOf(\"highcharts-container\")) return !1;\n }\n a = a.parentNode;\n }\n },\n onTrackerMouseOut: function (a) {\n var b = this.chart.hoverSeries;\n a = a.relatedTarget || a.toElement;\n this.isDirectTouch = !1;\n if (!(!b || !a || b.stickyTracking || this.inClass(a, \"highcharts-tooltip\") || this.inClass(a, \"highcharts-series-\" + b.index) && this.inClass(a, \"highcharts-tracker\"))) b.onMouseOut();\n },\n onContainerClick: function (a) {\n var d = this.chart,\n e = d.hoverPoint,\n c = d.plotLeft,\n g = d.plotTop;\n a = this.normalize(a);\n d.cancelClick || (e && this.inClass(a.target, \"highcharts-tracker\") ? (b(e.series, \"click\", z(a, {\n point: e\n })), d.hoverPoint && e.firePointEvent(\"click\", a)) : (z(a, this.getCoordinates(a)), d.isInsidePlot(a.chartX - c, a.chartY - g) && b(d, \"click\", a)));\n },\n setDOMEvents: function () {\n var a = this,\n b = a.chart.container,\n d = b.ownerDocument;\n b.onmousedown = function (b) {\n a.onContainerMouseDown(b);\n };\n b.onmousemove = function (b) {\n a.onContainerMouseMove(b);\n };\n b.onclick = function (b) {\n a.onContainerClick(b);\n };\n this.unbindContainerMouseLeave = y(b, \"mouseleave\", a.onContainerMouseLeave);\n c.unbindDocumentMouseUp || (c.unbindDocumentMouseUp = y(d, \"mouseup\", a.onDocumentMouseUp));\n c.hasTouch && (y(b, \"touchstart\", function (b) {\n a.onContainerTouchStart(b);\n }), y(b, \"touchmove\", function (b) {\n a.onContainerTouchMove(b);\n }), c.unbindDocumentTouchEnd || (c.unbindDocumentTouchEnd = y(d, \"touchend\", a.onDocumentTouchEnd)));\n },\n destroy: function () {\n var a = this;\n a.unDocMouseMove && a.unDocMouseMove();\n this.unbindContainerMouseLeave();\n c.chartCount || (c.unbindDocumentMouseUp && (c.unbindDocumentMouseUp = c.unbindDocumentMouseUp()), c.unbindDocumentTouchEnd && (c.unbindDocumentTouchEnd = c.unbindDocumentTouchEnd()));\n clearInterval(a.tooltipTimeout);\n v(a, function (b, d) {\n a[d] = null;\n });\n }\n };\n });\n M(I, \"parts/TouchPointer.js\", [I[\"parts/Globals.js\"], I[\"parts/Utilities.js\"]], function (c, f) {\n var F = f.extend,\n G = f.pick,\n z = c.charts,\n B = c.noop;\n F(c.Pointer.prototype, {\n pinchTranslate: function (c, f, C, B, y, h) {\n this.zoomHor && this.pinchTranslateDirection(!0, c, f, C, B, y, h);\n this.zoomVert && this.pinchTranslateDirection(!1, c, f, C, B, y, h);\n },\n pinchTranslateDirection: function (c, f, C, B, y, h, n, q) {\n var g = this.chart,\n b = c ? \"x\" : \"y\",\n a = c ? \"X\" : \"Y\",\n d = \"chart\" + a,\n e = c ? \"width\" : \"height\",\n l = g[\"plot\" + (c ? \"Left\" : \"Top\")],\n v,\n t,\n p = q || 1,\n u = g.inverted,\n k = g.bounds[c ? \"h\" : \"v\"],\n r = 1 === f.length,\n x = f[0][d],\n A = C[0][d],\n w = !r && f[1][d],\n m = !r && C[1][d];\n C = function () {\n !r && 20 < Math.abs(x - w) && (p = q || Math.abs(A - m) / Math.abs(x - w));\n t = (l - A) / p + x;\n v = g[\"plot\" + (c ? \"Width\" : \"Height\")] / p;\n };\n C();\n f = t;\n if (f < k.min) {\n f = k.min;\n var K = !0;\n } else f + v > k.max && (f = k.max - v, K = !0);\n K ? (A -= .8 * (A - n[b][0]), r || (m -= .8 * (m - n[b][1])), C()) : n[b] = [A, m];\n u || (h[b] = t - l, h[e] = v);\n h = u ? 1 / p : p;\n y[e] = v;\n y[b] = f;\n B[u ? c ? \"scaleY\" : \"scaleX\" : \"scale\" + a] = p;\n B[\"translate\" + a] = h * l + (A - h * x);\n },\n pinch: function (c) {\n var f = this,\n t = f.chart,\n z = f.pinchDown,\n y = c.touches,\n h = y.length,\n n = f.lastValidTouch,\n q = f.hasZoom,\n g = f.selectionMarker,\n b = {},\n a = 1 === h && (f.inClass(c.target, \"highcharts-tracker\") && t.runTrackerClick || f.runChartClick),\n d = {};\n 1 < h && (f.initiated = !0);\n q && f.initiated && !a && c.preventDefault();\n [].map.call(y, function (a) {\n return f.normalize(a);\n });\n \"touchstart\" === c.type ? ([].forEach.call(y, function (a, b) {\n z[b] = {\n chartX: a.chartX,\n chartY: a.chartY\n };\n }), n.x = [z[0].chartX, z[1] && z[1].chartX], n.y = [z[0].chartY, z[1] && z[1].chartY], t.axes.forEach(function (a) {\n if (a.zoomEnabled) {\n var b = t.bounds[a.horiz ? \"h\" : \"v\"],\n d = a.minPixelPadding,\n e = a.toPixels(Math.min(G(a.options.min, a.dataMin), a.dataMin)),\n c = a.toPixels(Math.max(G(a.options.max, a.dataMax), a.dataMax)),\n g = Math.max(e, c);\n b.min = Math.min(a.pos, Math.min(e, c) - d);\n b.max = Math.max(a.pos + a.len, g + d);\n }\n }), f.res = !0) : f.followTouchMove && 1 === h ? this.runPointActions(f.normalize(c)) : z.length && (g || (f.selectionMarker = g = F({\n destroy: B,\n touch: !0\n }, t.plotBox)), f.pinchTranslate(z, y, b, g, d, n), f.hasPinched = q, f.scaleGroups(b, d), f.res && (f.res = !1, this.reset(!1, 0)));\n },\n touch: function (f, v) {\n var t = this.chart,\n z;\n if (t.index !== c.hoverChartIndex) this.onContainerMouseLeave({\n relatedTarget: !0\n });\n c.hoverChartIndex = t.index;\n if (1 === f.touches.length) {\n if (f = this.normalize(f), (z = t.isInsidePlot(f.chartX - t.plotLeft, f.chartY - t.plotTop)) && !t.openMenu) {\n v && this.runPointActions(f);\n if (\"touchmove\" === f.type) {\n v = this.pinchDown;\n var y = v[0] ? 4 <= Math.sqrt(Math.pow(v[0].chartX - f.chartX, 2) + Math.pow(v[0].chartY - f.chartY, 2)) : !1;\n }\n G(y, !0) && this.pinch(f);\n } else v && this.reset();\n } else 2 === f.touches.length && this.pinch(f);\n },\n onContainerTouchStart: function (c) {\n this.zoomOption(c);\n this.touch(c, !0);\n },\n onContainerTouchMove: function (c) {\n this.touch(c);\n },\n onDocumentTouchEnd: function (f) {\n z[c.hoverChartIndex] && z[c.hoverChartIndex].pointer.drop(f);\n }\n });\n });\n M(I, \"parts/MSPointer.js\", [I[\"parts/Globals.js\"], I[\"parts/Utilities.js\"]], function (c, f) {\n var F = f.extend,\n G = f.objectEach,\n z = c.addEvent,\n B = c.charts,\n t = c.css,\n v = c.doc,\n C = c.noop;\n f = c.Pointer;\n var H = c.removeEvent,\n y = c.win,\n h = c.wrap;\n if (!c.hasTouch && (y.PointerEvent || y.MSPointerEvent)) {\n var n = {},\n q = !!y.PointerEvent,\n g = function () {\n var a = [];\n a.item = function (a) {\n return this[a];\n };\n G(n, function (b) {\n a.push({\n pageX: b.pageX,\n pageY: b.pageY,\n target: b.target\n });\n });\n return a;\n },\n b = function (a, b, e, l) {\n \"touch\" !== a.pointerType && a.pointerType !== a.MSPOINTER_TYPE_TOUCH || !B[c.hoverChartIndex] || (l(a), l = B[c.hoverChartIndex].pointer, l[b]({\n type: e,\n target: a.currentTarget,\n preventDefault: C,\n touches: g()\n }));\n };\n F(f.prototype, {\n onContainerPointerDown: function (a) {\n b(a, \"onContainerTouchStart\", \"touchstart\", function (a) {\n n[a.pointerId] = {\n pageX: a.pageX,\n pageY: a.pageY,\n target: a.currentTarget\n };\n });\n },\n onContainerPointerMove: function (a) {\n b(a, \"onContainerTouchMove\", \"touchmove\", function (a) {\n n[a.pointerId] = {\n pageX: a.pageX,\n pageY: a.pageY\n };\n n[a.pointerId].target || (n[a.pointerId].target = a.currentTarget);\n });\n },\n onDocumentPointerUp: function (a) {\n b(a, \"onDocumentTouchEnd\", \"touchend\", function (a) {\n delete n[a.pointerId];\n });\n },\n batchMSEvents: function (a) {\n a(this.chart.container, q ? \"pointerdown\" : \"MSPointerDown\", this.onContainerPointerDown);\n a(this.chart.container, q ? \"pointermove\" : \"MSPointerMove\", this.onContainerPointerMove);\n a(v, q ? \"pointerup\" : \"MSPointerUp\", this.onDocumentPointerUp);\n }\n });\n h(f.prototype, \"init\", function (a, b, e) {\n a.call(this, b, e);\n this.hasZoom && t(b.container, {\n \"-ms-touch-action\": \"none\",\n \"touch-action\": \"none\"\n });\n });\n h(f.prototype, \"setDOMEvents\", function (a) {\n a.apply(this);\n (this.hasZoom || this.followTouchMove) && this.batchMSEvents(z);\n });\n h(f.prototype, \"destroy\", function (a) {\n this.batchMSEvents(H);\n a.call(this);\n });\n }\n });\n M(I, \"parts/Legend.js\", [I[\"parts/Globals.js\"], I[\"parts/Utilities.js\"]], function (c, f) {\n var F = f.defined,\n G = f.discardElement,\n z = f.isNumber,\n B = f.pick,\n t = f.setAnimation,\n v = c.addEvent,\n C = c.css,\n H = c.fireEvent;\n f = c.isFirefox;\n var y = c.marginNames,\n h = c.merge,\n n = c.stableSort,\n q = c.win,\n g = c.wrap;\n c.Legend = function (b, a) {\n this.init(b, a);\n };\n c.Legend.prototype = {\n init: function (b, a) {\n this.chart = b;\n this.setOptions(a);\n a.enabled && (this.render(), v(this.chart, \"endResize\", function () {\n this.legend.positionCheckboxes();\n }), this.proximate ? this.unchartrender = v(this.chart, \"render\", function () {\n this.legend.proximatePositions();\n this.legend.positionItems();\n }) : this.unchartrender && this.unchartrender());\n },\n setOptions: function (b) {\n var a = B(b.padding, 8);\n this.options = b;\n this.chart.styledMode || (this.itemStyle = b.itemStyle, this.itemHiddenStyle = h(this.itemStyle, b.itemHiddenStyle));\n this.itemMarginTop = b.itemMarginTop || 0;\n this.itemMarginBottom = b.itemMarginBottom || 0;\n this.padding = a;\n this.initialItemY = a - 5;\n this.symbolWidth = B(b.symbolWidth, 16);\n this.pages = [];\n this.proximate = \"proximate\" === b.layout && !this.chart.inverted;\n },\n update: function (b, a) {\n var d = this.chart;\n this.setOptions(h(!0, this.options, b));\n this.destroy();\n d.isDirtyLegend = d.isDirtyBox = !0;\n B(a, !0) && d.redraw();\n H(this, \"afterUpdate\");\n },\n colorizeItem: function (b, a) {\n b.legendGroup[a ? \"removeClass\" : \"addClass\"](\"highcharts-legend-item-hidden\");\n if (!this.chart.styledMode) {\n var d = this.options,\n e = b.legendItem,\n c = b.legendLine,\n g = b.legendSymbol,\n h = this.itemHiddenStyle.color;\n d = a ? d.itemStyle.color : h;\n var f = a ? b.color || h : h,\n u = b.options && b.options.marker,\n k = {\n fill: f\n };\n e && e.css({\n fill: d,\n color: d\n });\n c && c.attr({\n stroke: f\n });\n g && (u && g.isMarker && (k = b.pointAttribs(), a || (k.stroke = k.fill = h)), g.attr(k));\n }\n H(this, \"afterColorizeItem\", {\n item: b,\n visible: a\n });\n },\n positionItems: function () {\n this.allItems.forEach(this.positionItem, this);\n this.chart.isResizing || this.positionCheckboxes();\n },\n positionItem: function (b) {\n var a = this.options,\n d = a.symbolPadding;\n a = !a.rtl;\n var e = b._legendItemPos,\n c = e[0];\n e = e[1];\n var g = b.checkbox;\n if ((b = b.legendGroup) && b.element) b[F(b.translateY) ? \"animate\" : \"attr\"]({\n translateX: a ? c : this.legendWidth - c - 2 * d - 4,\n translateY: e\n });\n g && (g.x = c, g.y = e);\n },\n destroyItem: function (b) {\n var a = b.checkbox;\n [\"legendItem\", \"legendLine\", \"legendSymbol\", \"legendGroup\"].forEach(function (a) {\n b[a] && (b[a] = b[a].destroy());\n });\n a && G(b.checkbox);\n },\n destroy: function () {\n function b(a) {\n this[a] && (this[a] = this[a].destroy());\n }\n this.getAllItems().forEach(function (a) {\n [\"legendItem\", \"legendGroup\"].forEach(b, a);\n });\n \"clipRect up down pager nav box title group\".split(\" \").forEach(b, this);\n this.display = null;\n },\n positionCheckboxes: function () {\n var b = this.group && this.group.alignAttr,\n a = this.clipHeight || this.legendHeight,\n d = this.titleHeight;\n if (b) {\n var e = b.translateY;\n this.allItems.forEach(function (c) {\n var g = c.checkbox;\n if (g) {\n var l = e + d + g.y + (this.scrollOffset || 0) + 3;\n C(g, {\n left: b.translateX + c.checkboxOffset + g.x - 20 + \"px\",\n top: l + \"px\",\n display: this.proximate || l > e - 6 && l < e + a - 6 ? \"\" : \"none\"\n });\n }\n }, this);\n }\n },\n renderTitle: function () {\n var b = this.options,\n a = this.padding,\n d = b.title,\n e = 0;\n d.text && (this.title || (this.title = this.chart.renderer.label(d.text, a - 3, a - 4, null, null, null, b.useHTML, null, \"legend-title\").attr({\n zIndex: 1\n }), this.chart.styledMode || this.title.css(d.style), this.title.add(this.group)), d.width || this.title.css({\n width: this.maxLegendWidth + \"px\"\n }), b = this.title.getBBox(), e = b.height, this.offsetWidth = b.width, this.contentGroup.attr({\n translateY: e\n }));\n this.titleHeight = e;\n },\n setText: function (b) {\n var a = this.options;\n b.legendItem.attr({\n text: a.labelFormat ? c.format(a.labelFormat, b, this.chart.time) : a.labelFormatter.call(b)\n });\n },\n renderItem: function (b) {\n var a = this.chart,\n d = a.renderer,\n e = this.options,\n c = this.symbolWidth,\n g = e.symbolPadding,\n f = this.itemStyle,\n p = this.itemHiddenStyle,\n u = \"horizontal\" === e.layout ? B(e.itemDistance, 20) : 0,\n k = !e.rtl,\n r = b.legendItem,\n x = !b.series,\n A = !x && b.series.drawLegendSymbol ? b.series : b,\n w = A.options;\n w = this.createCheckboxForItem && w && w.showCheckbox;\n u = c + g + u + (w ? 20 : 0);\n var m = e.useHTML,\n n = b.options.className;\n r || (b.legendGroup = d.g(\"legend-item\").addClass(\"highcharts-\" + A.type + \"-series highcharts-color-\" + b.colorIndex + (n ? \" \" + n : \"\") + (x ? \" highcharts-series-\" + b.index : \"\")).attr({\n zIndex: 1\n }).add(this.scrollGroup), b.legendItem = r = d.text(\"\", k ? c + g : -g, this.baseline || 0, m), a.styledMode || r.css(h(b.visible ? f : p)), r.attr({\n align: k ? \"left\" : \"right\",\n zIndex: 2\n }).add(b.legendGroup), this.baseline || (this.fontMetrics = d.fontMetrics(a.styledMode ? 12 : f.fontSize, r), this.baseline = this.fontMetrics.f + 3 + this.itemMarginTop, r.attr(\"y\", this.baseline)), this.symbolHeight = e.symbolHeight || this.fontMetrics.f, A.drawLegendSymbol(this, b), this.setItemEvents && this.setItemEvents(b, r, m));\n w && !b.checkbox && this.createCheckboxForItem(b);\n this.colorizeItem(b, b.visible);\n !a.styledMode && f.width || r.css({\n width: (e.itemWidth || this.widthOption || a.spacingBox.width) - u\n });\n this.setText(b);\n a = r.getBBox();\n b.itemWidth = b.checkboxOffset = e.itemWidth || b.legendItemWidth || a.width + u;\n this.maxItemWidth = Math.max(this.maxItemWidth, b.itemWidth);\n this.totalItemWidth += b.itemWidth;\n this.itemHeight = b.itemHeight = Math.round(b.legendItemHeight || a.height || this.symbolHeight);\n },\n layoutItem: function (b) {\n var a = this.options,\n d = this.padding,\n e = \"horizontal\" === a.layout,\n c = b.itemHeight,\n g = this.itemMarginBottom,\n h = this.itemMarginTop,\n f = e ? B(a.itemDistance, 20) : 0,\n u = this.maxLegendWidth;\n a = a.alignColumns && this.totalItemWidth > u ? this.maxItemWidth : b.itemWidth;\n e && this.itemX - d + a > u && (this.itemX = d, this.lastLineHeight && (this.itemY += h + this.lastLineHeight + g), this.lastLineHeight = 0);\n this.lastItemY = h + this.itemY + g;\n this.lastLineHeight = Math.max(c, this.lastLineHeight);\n b._legendItemPos = [this.itemX, this.itemY];\n e ? this.itemX += a : (this.itemY += h + c + g, this.lastLineHeight = c);\n this.offsetWidth = this.widthOption || Math.max((e ? this.itemX - d - (b.checkbox ? 0 : f) : a) + d, this.offsetWidth);\n },\n getAllItems: function () {\n var b = [];\n this.chart.series.forEach(function (a) {\n var d = a && a.options;\n a && B(d.showInLegend, F(d.linkedTo) ? !1 : void 0, !0) && (b = b.concat(a.legendItems || (\"point\" === d.legendType ? a.data : a)));\n });\n H(this, \"afterGetAllItems\", {\n allItems: b\n });\n return b;\n },\n getAlignment: function () {\n var b = this.options;\n return this.proximate ? b.align.charAt(0) + \"tv\" : b.floating ? \"\" : b.align.charAt(0) + b.verticalAlign.charAt(0) + b.layout.charAt(0);\n },\n adjustMargins: function (b, a) {\n var d = this.chart,\n e = this.options,\n c = this.getAlignment();\n c && [/(lth|ct|rth)/, /(rtv|rm|rbv)/, /(rbh|cb|lbh)/, /(lbv|lm|ltv)/].forEach(function (g, l) {\n g.test(c) && !F(b[l]) && (d[y[l]] = Math.max(d[y[l]], d.legend[(l + 1) % 2 ? \"legendHeight\" : \"legendWidth\"] + [1, -1, -1, 1][l] * e[l % 2 ? \"x\" : \"y\"] + B(e.margin, 12) + a[l] + (d.titleOffset[l] || 0)));\n });\n },\n proximatePositions: function () {\n var b = this.chart,\n a = [],\n d = \"left\" === this.options.align;\n this.allItems.forEach(function (e) {\n var g = d;\n if (e.yAxis && e.points) {\n e.xAxis.options.reversed && (g = !g);\n var h = c.find(g ? e.points : e.points.slice(0).reverse(), function (a) {\n return z(a.plotY);\n });\n g = this.itemMarginTop + e.legendItem.getBBox().height + this.itemMarginBottom;\n var f = e.yAxis.top - b.plotTop;\n e.visible ? (h = h ? h.plotY : e.yAxis.height, h += f - .3 * g) : h = f + e.yAxis.height;\n a.push({\n target: h,\n size: g,\n item: e\n });\n }\n }, this);\n c.distribute(a, b.plotHeight);\n a.forEach(function (a) {\n a.item._legendItemPos[1] = b.plotTop - b.spacing[0] + a.pos;\n });\n },\n render: function () {\n var b = this.chart,\n a = b.renderer,\n d = this.group,\n e,\n g = this.box,\n f = this.options,\n q = this.padding;\n this.itemX = q;\n this.itemY = this.initialItemY;\n this.lastItemY = this.offsetWidth = 0;\n this.widthOption = c.relativeLength(f.width, b.spacingBox.width - q);\n var p = b.spacingBox.width - 2 * q - f.x;\n -1 < [\"rm\", \"lm\"].indexOf(this.getAlignment().substring(0, 2)) && (p /= 2);\n this.maxLegendWidth = this.widthOption || p;\n d || (this.group = d = a.g(\"legend\").attr({\n zIndex: 7\n }).add(), this.contentGroup = a.g().attr({\n zIndex: 1\n }).add(d), this.scrollGroup = a.g().add(this.contentGroup));\n this.renderTitle();\n p = this.getAllItems();\n n(p, function (a, b) {\n return (a.options && a.options.legendIndex || 0) - (b.options && b.options.legendIndex || 0);\n });\n f.reversed && p.reverse();\n this.allItems = p;\n this.display = e = !!p.length;\n this.itemHeight = this.totalItemWidth = this.maxItemWidth = this.lastLineHeight = 0;\n p.forEach(this.renderItem, this);\n p.forEach(this.layoutItem, this);\n p = (this.widthOption || this.offsetWidth) + q;\n var u = this.lastItemY + this.lastLineHeight + this.titleHeight;\n u = this.handleOverflow(u);\n u += q;\n g || (this.box = g = a.rect().addClass(\"highcharts-legend-box\").attr({\n r: f.borderRadius\n }).add(d), g.isNew = !0);\n b.styledMode || g.attr({\n stroke: f.borderColor,\n \"stroke-width\": f.borderWidth || 0,\n fill: f.backgroundColor || \"none\"\n }).shadow(f.shadow);\n 0 < p && 0 < u && (g[g.isNew ? \"attr\" : \"animate\"](g.crisp.call({}, {\n x: 0,\n y: 0,\n width: p,\n height: u\n }, g.strokeWidth())), g.isNew = !1);\n g[e ? \"show\" : \"hide\"]();\n b.styledMode && \"none\" === d.getStyle(\"display\") && (p = u = 0);\n this.legendWidth = p;\n this.legendHeight = u;\n e && (a = b.spacingBox, g = a.y, /(lth|ct|rth)/.test(this.getAlignment()) && 0 < b.titleOffset[0] ? g += b.titleOffset[0] : /(lbh|cb|rbh)/.test(this.getAlignment()) && 0 < b.titleOffset[2] && (g -= b.titleOffset[2]), g !== a.y && (a = h(a, {\n y: g\n })), d.align(h(f, {\n width: p,\n height: u,\n verticalAlign: this.proximate ? \"top\" : f.verticalAlign\n }), !0, a));\n this.proximate || this.positionItems();\n H(this, \"afterRender\");\n },\n handleOverflow: function (b) {\n var a = this,\n d = this.chart,\n e = d.renderer,\n c = this.options,\n g = c.y,\n h = this.padding;\n g = d.spacingBox.height + (\"top\" === c.verticalAlign ? -g : g) - h;\n var f = c.maxHeight,\n u,\n k = this.clipRect,\n r = c.navigation,\n x = B(r.animation, !0),\n A = r.arrowSize || 12,\n w = this.nav,\n m = this.pages,\n n,\n J = this.allItems,\n q = function (b) {\n \"number\" === typeof b ? k.attr({\n height: b\n }) : k && (a.clipRect = k.destroy(), a.contentGroup.clip());\n a.contentGroup.div && (a.contentGroup.div.style.clip = b ? \"rect(\" + h + \"px,9999px,\" + (h + b) + \"px,0)\" : \"auto\");\n },\n v = function (b) {\n a[b] = e.circle(0, 0, 1.3 * A).translate(A / 2, A / 2).add(w);\n d.styledMode || a[b].attr(\"fill\", \"rgba(0,0,0,0.0001)\");\n return a[b];\n };\n \"horizontal\" !== c.layout || \"middle\" === c.verticalAlign || c.floating || (g /= 2);\n f && (g = Math.min(g, f));\n m.length = 0;\n b > g && !1 !== r.enabled ? (this.clipHeight = u = Math.max(g - 20 - this.titleHeight - h, 0), this.currentPage = B(this.currentPage, 1), this.fullHeight = b, J.forEach(function (a, b) {\n var d = a._legendItemPos[1],\n e = Math.round(a.legendItem.getBBox().height),\n c = m.length;\n if (!c || d - m[c - 1] > u && (n || d) !== m[c - 1]) m.push(n || d), c++;\n a.pageIx = c - 1;\n n && (J[b - 1].pageIx = c - 1);\n b === J.length - 1 && d + e - m[c - 1] > u && d !== n && (m.push(d), a.pageIx = c);\n d !== n && (n = d);\n }), k || (k = a.clipRect = e.clipRect(0, h, 9999, 0), a.contentGroup.clip(k)), q(u), w || (this.nav = w = e.g().attr({\n zIndex: 1\n }).add(this.group), this.up = e.symbol(\"triangle\", 0, 0, A, A).add(w), v(\"upTracker\").on(\"click\", function () {\n a.scroll(-1, x);\n }), this.pager = e.text(\"\", 15, 10).addClass(\"highcharts-legend-navigation\"), d.styledMode || this.pager.css(r.style), this.pager.add(w), this.down = e.symbol(\"triangle-down\", 0, 0, A, A).add(w), v(\"downTracker\").on(\"click\", function () {\n a.scroll(1, x);\n })), a.scroll(0), b = g) : w && (q(), this.nav = w.destroy(), this.scrollGroup.attr({\n translateY: 1\n }), this.clipHeight = 0);\n return b;\n },\n scroll: function (b, a) {\n var d = this.pages,\n e = d.length,\n c = this.currentPage + b;\n b = this.clipHeight;\n var g = this.options.navigation,\n h = this.pager,\n f = this.padding;\n c > e && (c = e);\n 0 < c && (void 0 !== a && t(a, this.chart), this.nav.attr({\n translateX: f,\n translateY: b + this.padding + 7 + this.titleHeight,\n visibility: \"visible\"\n }), [this.up, this.upTracker].forEach(function (a) {\n a.attr({\n \"class\": 1 === c ? \"highcharts-legend-nav-inactive\" : \"highcharts-legend-nav-active\"\n });\n }), h.attr({\n text: c + \"/\" + e\n }), [this.down, this.downTracker].forEach(function (a) {\n a.attr({\n x: 18 + this.pager.getBBox().width,\n \"class\": c === e ? \"highcharts-legend-nav-inactive\" : \"highcharts-legend-nav-active\"\n });\n }, this), this.chart.styledMode || (this.up.attr({\n fill: 1 === c ? g.inactiveColor : g.activeColor\n }), this.upTracker.css({\n cursor: 1 === c ? \"default\" : \"pointer\"\n }), this.down.attr({\n fill: c === e ? g.inactiveColor : g.activeColor\n }), this.downTracker.css({\n cursor: c === e ? \"default\" : \"pointer\"\n })), this.scrollOffset = -d[c - 1] + this.initialItemY, this.scrollGroup.animate({\n translateY: this.scrollOffset\n }), this.currentPage = c, this.positionCheckboxes());\n }\n };\n c.LegendSymbolMixin = {\n drawRectangle: function (b, a) {\n var d = b.symbolHeight,\n e = b.options.squareSymbol;\n a.legendSymbol = this.chart.renderer.rect(e ? (b.symbolWidth - d) / 2 : 0, b.baseline - d + 1, e ? d : b.symbolWidth, d, B(b.options.symbolRadius, d / 2)).addClass(\"highcharts-point\").attr({\n zIndex: 3\n }).add(a.legendGroup);\n },\n drawLineMarker: function (b) {\n var a = this.options,\n d = a.marker,\n e = b.symbolWidth,\n c = b.symbolHeight,\n g = c / 2,\n f = this.chart.renderer,\n p = this.legendGroup;\n b = b.baseline - Math.round(.3 * b.fontMetrics.b);\n var u = {};\n this.chart.styledMode || (u = {\n \"stroke-width\": a.lineWidth || 0\n }, a.dashStyle && (u.dashstyle = a.dashStyle));\n this.legendLine = f.path([\"M\", 0, b, \"L\", e, b]).addClass(\"highcharts-graph\").attr(u).add(p);\n d && !1 !== d.enabled && e && (a = Math.min(B(d.radius, g), g), 0 === this.symbol.indexOf(\"url\") && (d = h(d, {\n width: c,\n height: c\n }), a = 0), this.legendSymbol = d = f.symbol(this.symbol, e / 2 - a, b - a, 2 * a, 2 * a, d).addClass(\"highcharts-point\").add(p), d.isMarker = !0);\n }\n };\n (/Trident\\/7\\.0/.test(q.navigator && q.navigator.userAgent) || f) && g(c.Legend.prototype, \"positionItem\", function (b, a) {\n var d = this,\n e = function () {\n a._legendItemPos && b.call(d, a);\n };\n e();\n d.bubbleLegend || setTimeout(e);\n });\n });\n M(I, \"parts/Chart.js\", [I[\"parts/Globals.js\"], I[\"parts/Utilities.js\"]], function (c, f) {\n var F = f.attr,\n G = f.defined,\n z = f.discardElement,\n B = f.erase,\n t = f.extend,\n v = f.isArray,\n C = f.isNumber,\n H = f.isObject,\n y = f.isString,\n h = f.objectEach,\n n = f.pick,\n q = f.pInt,\n g = f.setAnimation,\n b = f.splat,\n a = f.syncTimeout,\n d = c.addEvent,\n e = c.animate,\n l = c.animObject,\n L = c.doc,\n E = c.Axis,\n p = c.createElement,\n u = c.defaultOptions,\n k = c.charts,\n r = c.css,\n x = c.find,\n A = c.fireEvent,\n w = c.Legend,\n m = c.marginNames,\n K = c.merge,\n J = c.Pointer,\n U = c.removeEvent,\n S = c.seriesTypes,\n Q = c.win,\n O = c.Chart = function () {\n this.getArgs.apply(this, arguments);\n };\n c.chart = function (a, b, d) {\n return new O(a, b, d);\n };\n t(O.prototype, {\n callbacks: [],\n getArgs: function () {\n var a = [].slice.call(arguments);\n if (y(a[0]) || a[0].nodeName) this.renderTo = a.shift();\n this.init(a[0], a[1]);\n },\n init: function (a, b) {\n var e,\n g = a.series,\n m = a.plotOptions || {};\n A(this, \"init\", {\n args: arguments\n }, function () {\n a.series = null;\n e = K(u, a);\n h(e.plotOptions, function (a, b) {\n H(a) && (a.tooltip = m[b] && K(m[b].tooltip) || void 0);\n });\n e.tooltip.userOptions = a.chart && a.chart.forExport && a.tooltip.userOptions || a.tooltip;\n e.series = a.series = g;\n this.userOptions = a;\n var r = e.chart,\n l = r.events;\n this.margin = [];\n this.spacing = [];\n this.bounds = {\n h: {},\n v: {}\n };\n this.labelCollectors = [];\n this.callback = b;\n this.isResizing = 0;\n this.options = e;\n this.axes = [];\n this.series = [];\n this.time = a.time && Object.keys(a.time).length ? new c.Time(a.time) : c.time;\n this.styledMode = r.styledMode;\n this.hasCartesianSeries = r.showAxes;\n var f = this;\n f.index = k.length;\n k.push(f);\n c.chartCount++;\n l && h(l, function (a, b) {\n c.isFunction(a) && d(f, b, a);\n });\n f.xAxis = [];\n f.yAxis = [];\n f.pointCount = f.colorCounter = f.symbolCounter = 0;\n A(f, \"afterInit\");\n f.firstRender();\n });\n },\n initSeries: function (a) {\n var b = this.options.chart;\n b = a.type || b.type || b.defaultSeriesType;\n var d = S[b];\n d || c.error(17, !0, this, {\n missingModuleFor: b\n });\n b = new d();\n b.init(this, a);\n return b;\n },\n orderSeries: function (a) {\n var b = this.series;\n for (a = a || 0; a < b.length; a++) b[a] && (b[a].index = a, b[a].name = b[a].getName());\n },\n isInsidePlot: function (a, b, d) {\n var e = d ? b : a;\n a = d ? a : b;\n return 0 <= e && e <= this.plotWidth && 0 <= a && a <= this.plotHeight;\n },\n redraw: function (a) {\n A(this, \"beforeRedraw\");\n var b = this.axes,\n d = this.series,\n e = this.pointer,\n c = this.legend,\n k = this.userOptions.legend,\n m = this.isDirtyLegend,\n r = this.hasCartesianSeries,\n h = this.isDirtyBox,\n l = this.renderer,\n f = l.isHidden(),\n x = [];\n this.setResponsive && this.setResponsive(!1);\n g(a, this);\n f && this.temporaryDisplay();\n this.layOutTitles();\n for (a = d.length; a--;) {\n var w = d[a];\n if (w.options.stacking) {\n var p = !0;\n if (w.isDirty) {\n var u = !0;\n break;\n }\n }\n }\n if (u) for (a = d.length; a--;) w = d[a], w.options.stacking && (w.isDirty = !0);\n d.forEach(function (a) {\n a.isDirty && (\"point\" === a.options.legendType ? (a.updateTotals && a.updateTotals(), m = !0) : k && (k.labelFormatter || k.labelFormat) && (m = !0));\n a.isDirtyData && A(a, \"updatedData\");\n });\n m && c && c.options.enabled && (c.render(), this.isDirtyLegend = !1);\n p && this.getStacks();\n r && b.forEach(function (a) {\n a.updateNames();\n a.setScale();\n });\n this.getMargins();\n r && (b.forEach(function (a) {\n a.isDirty && (h = !0);\n }), b.forEach(function (a) {\n var b = a.min + \",\" + a.max;\n a.extKey !== b && (a.extKey = b, x.push(function () {\n A(a, \"afterSetExtremes\", t(a.eventArgs, a.getExtremes()));\n delete a.eventArgs;\n }));\n (h || p) && a.redraw();\n }));\n h && this.drawChartBox();\n A(this, \"predraw\");\n d.forEach(function (a) {\n (h || a.isDirty) && a.visible && a.redraw();\n a.isDirtyData = !1;\n });\n e && e.reset(!0);\n l.draw();\n A(this, \"redraw\");\n A(this, \"render\");\n f && this.temporaryDisplay(!0);\n x.forEach(function (a) {\n a.call();\n });\n },\n get: function (a) {\n function b(b) {\n return b.id === a || b.options && b.options.id === a;\n }\n var d = this.series,\n e;\n var c = x(this.axes, b) || x(this.series, b);\n for (e = 0; !c && e < d.length; e++) c = x(d[e].points || [], b);\n return c;\n },\n getAxes: function () {\n var a = this,\n d = this.options,\n e = d.xAxis = b(d.xAxis || {});\n d = d.yAxis = b(d.yAxis || {});\n A(this, \"getAxes\");\n e.forEach(function (a, b) {\n a.index = b;\n a.isX = !0;\n });\n d.forEach(function (a, b) {\n a.index = b;\n });\n e.concat(d).forEach(function (b) {\n new E(a, b);\n });\n A(this, \"afterGetAxes\");\n },\n getSelectedPoints: function () {\n var a = [];\n this.series.forEach(function (b) {\n a = a.concat((b[b.hasGroupedData ? \"points\" : \"data\"] || []).filter(function (a) {\n return n(a.selectedStaging, a.selected);\n }));\n });\n return a;\n },\n getSelectedSeries: function () {\n return this.series.filter(function (a) {\n return a.selected;\n });\n },\n setTitle: function (a, b, d) {\n this.applyDescription(\"title\", a);\n this.applyDescription(\"subtitle\", b);\n this.applyDescription(\"caption\", void 0);\n this.layOutTitles(d);\n },\n applyDescription: function (a, b) {\n var d = this,\n e = \"title\" === a ? {\n color: \"#333333\",\n fontSize: this.options.isStock ? \"16px\" : \"18px\"\n } : {\n color: \"#666666\"\n };\n e = this.options[a] = K(!this.styledMode && {\n style: e\n }, this.options[a], b);\n var c = this[a];\n c && b && (this[a] = c = c.destroy());\n e && !c && (c = this.renderer.text(e.text, 0, 0, e.useHTML).attr({\n align: e.align,\n \"class\": \"highcharts-\" + a,\n zIndex: e.zIndex || 4\n }).add(), c.update = function (b) {\n d[{\n title: \"setTitle\",\n subtitle: \"setSubtitle\",\n caption: \"setCaption\"\n }[a]](b);\n }, this.styledMode || c.css(e.style), this[a] = c);\n },\n layOutTitles: function (a) {\n var b = [0, 0, 0],\n d = this.renderer,\n e = this.spacingBox;\n [\"title\", \"subtitle\", \"caption\"].forEach(function (a) {\n var c = this[a],\n k = this.options[a],\n g = k.verticalAlign || \"top\";\n a = \"title\" === a ? -3 : \"top\" === g ? b[0] + 2 : 0;\n if (c) {\n if (!this.styledMode) var m = k.style.fontSize;\n m = d.fontMetrics(m, c).b;\n c.css({\n width: (k.width || e.width + (k.widthAdjust || 0)) + \"px\"\n });\n var r = Math.round(c.getBBox(k.useHTML).height);\n c.align(t({\n y: \"bottom\" === g ? m : a + m,\n height: r\n }, k), !1, \"spacingBox\");\n k.floating || (\"top\" === g ? b[0] = Math.ceil(b[0] + r) : \"bottom\" === g && (b[2] = Math.ceil(b[2] + r)));\n }\n }, this);\n b[0] && \"top\" === (this.options.title.verticalAlign || \"top\") && (b[0] += this.options.title.margin);\n b[2] && \"bottom\" === this.options.caption.verticalAlign && (b[2] += this.options.caption.margin);\n var c = !this.titleOffset || this.titleOffset.join(\",\") !== b.join(\",\");\n this.titleOffset = b;\n A(this, \"afterLayOutTitles\");\n !this.isDirtyBox && c && (this.isDirtyBox = this.isDirtyLegend = c, this.hasRendered && n(a, !0) && this.isDirtyBox && this.redraw());\n },\n getChartSize: function () {\n var a = this.options.chart,\n b = a.width;\n a = a.height;\n var d = this.renderTo;\n G(b) || (this.containerWidth = c.getStyle(d, \"width\"));\n G(a) || (this.containerHeight = c.getStyle(d, \"height\"));\n this.chartWidth = Math.max(0, b || this.containerWidth || 600);\n this.chartHeight = Math.max(0, c.relativeLength(a, this.chartWidth) || (1 < this.containerHeight ? this.containerHeight : 400));\n },\n temporaryDisplay: function (a) {\n var b = this.renderTo;\n if (a) for (; b && b.style;) b.hcOrigStyle && (c.css(b, b.hcOrigStyle), delete b.hcOrigStyle), b.hcOrigDetached && (L.body.removeChild(b), b.hcOrigDetached = !1), b = b.parentNode;else for (; b && b.style;) {\n L.body.contains(b) || b.parentNode || (b.hcOrigDetached = !0, L.body.appendChild(b));\n if (\"none\" === c.getStyle(b, \"display\", !1) || b.hcOricDetached) b.hcOrigStyle = {\n display: b.style.display,\n height: b.style.height,\n overflow: b.style.overflow\n }, a = {\n display: \"block\",\n overflow: \"hidden\"\n }, b !== this.renderTo && (a.height = 0), c.css(b, a), b.offsetWidth || b.style.setProperty(\"display\", \"block\", \"important\");\n b = b.parentNode;\n if (b === L.body) break;\n }\n },\n setClassName: function (a) {\n this.container.className = \"highcharts-container \" + (a || \"\");\n },\n getContainer: function () {\n var a = this.options,\n b = a.chart;\n var d = this.renderTo;\n var e = c.uniqueKey(),\n g,\n m;\n d || (this.renderTo = d = b.renderTo);\n y(d) && (this.renderTo = d = L.getElementById(d));\n d || c.error(13, !0, this);\n var h = q(F(d, \"data-highcharts-chart\"));\n C(h) && k[h] && k[h].hasRendered && k[h].destroy();\n F(d, \"data-highcharts-chart\", this.index);\n d.innerHTML = \"\";\n b.skipClone || d.offsetWidth || this.temporaryDisplay();\n this.getChartSize();\n h = this.chartWidth;\n var l = this.chartHeight;\n r(d, {\n overflow: \"hidden\"\n });\n this.styledMode || (g = t({\n position: \"relative\",\n overflow: \"hidden\",\n width: h + \"px\",\n height: l + \"px\",\n textAlign: \"left\",\n lineHeight: \"normal\",\n zIndex: 0,\n \"-webkit-tap-highlight-color\": \"rgba(0,0,0,0)\"\n }, b.style));\n this.container = d = p(\"div\", {\n id: e\n }, g, d);\n this._cursor = d.style.cursor;\n this.renderer = new (c[b.renderer] || c.Renderer)(d, h, l, null, b.forExport, a.exporting && a.exporting.allowHTML, this.styledMode);\n this.setClassName(b.className);\n if (this.styledMode) for (m in a.defs) this.renderer.definition(a.defs[m]);else this.renderer.setStyle(b.style);\n this.renderer.chartIndex = this.index;\n A(this, \"afterGetContainer\");\n },\n getMargins: function (a) {\n var b = this.spacing,\n d = this.margin,\n e = this.titleOffset;\n this.resetMargins();\n e[0] && !G(d[0]) && (this.plotTop = Math.max(this.plotTop, e[0] + b[0]));\n e[2] && !G(d[2]) && (this.marginBottom = Math.max(this.marginBottom, e[2] + b[2]));\n this.legend && this.legend.display && this.legend.adjustMargins(d, b);\n A(this, \"getMargins\");\n a || this.getAxisMargins();\n },\n getAxisMargins: function () {\n var a = this,\n b = a.axisOffset = [0, 0, 0, 0],\n d = a.colorAxis,\n e = a.margin,\n c = function (a) {\n a.forEach(function (a) {\n a.visible && a.getOffset();\n });\n };\n a.hasCartesianSeries ? c(a.axes) : d && d.length && c(d);\n m.forEach(function (d, c) {\n G(e[c]) || (a[d] += b[c]);\n });\n a.setChartSize();\n },\n reflow: function (b) {\n var d = this,\n e = d.options.chart,\n k = d.renderTo,\n g = G(e.width) && G(e.height),\n m = e.width || c.getStyle(k, \"width\");\n e = e.height || c.getStyle(k, \"height\");\n k = b ? b.target : Q;\n if (!g && !d.isPrinting && m && e && (k === Q || k === L)) {\n if (m !== d.containerWidth || e !== d.containerHeight) c.clearTimeout(d.reflowTimeout), d.reflowTimeout = a(function () {\n d.container && d.setSize(void 0, void 0, !1);\n }, b ? 100 : 0);\n d.containerWidth = m;\n d.containerHeight = e;\n }\n },\n setReflow: function (a) {\n var b = this;\n !1 === a || this.unbindReflow ? !1 === a && this.unbindReflow && (this.unbindReflow = this.unbindReflow()) : (this.unbindReflow = d(Q, \"resize\", function (a) {\n b.options && b.reflow(a);\n }), d(this, \"destroy\", this.unbindReflow));\n },\n setSize: function (b, d, c) {\n var k = this,\n m = k.renderer;\n k.isResizing += 1;\n g(c, k);\n k.oldChartHeight = k.chartHeight;\n k.oldChartWidth = k.chartWidth;\n void 0 !== b && (k.options.chart.width = b);\n void 0 !== d && (k.options.chart.height = d);\n k.getChartSize();\n if (!k.styledMode) {\n var h = m.globalAnimation;\n (h ? e : r)(k.container, {\n width: k.chartWidth + \"px\",\n height: k.chartHeight + \"px\"\n }, h);\n }\n k.setChartSize(!0);\n m.setSize(k.chartWidth, k.chartHeight, c);\n k.axes.forEach(function (a) {\n a.isDirty = !0;\n a.setScale();\n });\n k.isDirtyLegend = !0;\n k.isDirtyBox = !0;\n k.layOutTitles();\n k.getMargins();\n k.redraw(c);\n k.oldChartHeight = null;\n A(k, \"resize\");\n a(function () {\n k && A(k, \"endResize\", null, function () {\n --k.isResizing;\n });\n }, l(h).duration || 0);\n },\n setChartSize: function (a) {\n var b = this.inverted,\n d = this.renderer,\n e = this.chartWidth,\n c = this.chartHeight,\n k = this.options.chart,\n g = this.spacing,\n m = this.clipOffset,\n r,\n h,\n l,\n f;\n this.plotLeft = r = Math.round(this.plotLeft);\n this.plotTop = h = Math.round(this.plotTop);\n this.plotWidth = l = Math.max(0, Math.round(e - r - this.marginRight));\n this.plotHeight = f = Math.max(0, Math.round(c - h - this.marginBottom));\n this.plotSizeX = b ? f : l;\n this.plotSizeY = b ? l : f;\n this.plotBorderWidth = k.plotBorderWidth || 0;\n this.spacingBox = d.spacingBox = {\n x: g[3],\n y: g[0],\n width: e - g[3] - g[1],\n height: c - g[0] - g[2]\n };\n this.plotBox = d.plotBox = {\n x: r,\n y: h,\n width: l,\n height: f\n };\n e = 2 * Math.floor(this.plotBorderWidth / 2);\n b = Math.ceil(Math.max(e, m[3]) / 2);\n d = Math.ceil(Math.max(e, m[0]) / 2);\n this.clipBox = {\n x: b,\n y: d,\n width: Math.floor(this.plotSizeX - Math.max(e, m[1]) / 2 - b),\n height: Math.max(0, Math.floor(this.plotSizeY - Math.max(e, m[2]) / 2 - d))\n };\n a || this.axes.forEach(function (a) {\n a.setAxisSize();\n a.setAxisTranslation();\n });\n A(this, \"afterSetChartSize\", {\n skipAxes: a\n });\n },\n resetMargins: function () {\n A(this, \"resetMargins\");\n var a = this,\n b = a.options.chart;\n [\"margin\", \"spacing\"].forEach(function (d) {\n var e = b[d],\n c = H(e) ? e : [e, e, e, e];\n [\"Top\", \"Right\", \"Bottom\", \"Left\"].forEach(function (e, k) {\n a[d][k] = n(b[d + e], c[k]);\n });\n });\n m.forEach(function (b, d) {\n a[b] = n(a.margin[d], a.spacing[d]);\n });\n a.axisOffset = [0, 0, 0, 0];\n a.clipOffset = [0, 0, 0, 0];\n },\n drawChartBox: function () {\n var a = this.options.chart,\n b = this.renderer,\n d = this.chartWidth,\n e = this.chartHeight,\n c = this.chartBackground,\n k = this.plotBackground,\n g = this.plotBorder,\n m = this.styledMode,\n r = this.plotBGImage,\n h = a.backgroundColor,\n l = a.plotBackgroundColor,\n f = a.plotBackgroundImage,\n x,\n w = this.plotLeft,\n p = this.plotTop,\n u = this.plotWidth,\n n = this.plotHeight,\n J = this.plotBox,\n K = this.clipRect,\n q = this.clipBox,\n v = \"animate\";\n c || (this.chartBackground = c = b.rect().addClass(\"highcharts-background\").add(), v = \"attr\");\n if (m) var y = x = c.strokeWidth();else {\n y = a.borderWidth || 0;\n x = y + (a.shadow ? 8 : 0);\n h = {\n fill: h || \"none\"\n };\n if (y || c[\"stroke-width\"]) h.stroke = a.borderColor, h[\"stroke-width\"] = y;\n c.attr(h).shadow(a.shadow);\n }\n c[v]({\n x: x / 2,\n y: x / 2,\n width: d - x - y % 2,\n height: e - x - y % 2,\n r: a.borderRadius\n });\n v = \"animate\";\n k || (v = \"attr\", this.plotBackground = k = b.rect().addClass(\"highcharts-plot-background\").add());\n k[v](J);\n m || (k.attr({\n fill: l || \"none\"\n }).shadow(a.plotShadow), f && (r ? r.animate(J) : this.plotBGImage = b.image(f, w, p, u, n).add()));\n K ? K.animate({\n width: q.width,\n height: q.height\n }) : this.clipRect = b.clipRect(q);\n v = \"animate\";\n g || (v = \"attr\", this.plotBorder = g = b.rect().addClass(\"highcharts-plot-border\").attr({\n zIndex: 1\n }).add());\n m || g.attr({\n stroke: a.plotBorderColor,\n \"stroke-width\": a.plotBorderWidth || 0,\n fill: \"none\"\n });\n g[v](g.crisp({\n x: w,\n y: p,\n width: u,\n height: n\n }, -g.strokeWidth()));\n this.isDirtyBox = !1;\n A(this, \"afterDrawChartBox\");\n },\n propFromSeries: function () {\n var a = this,\n b = a.options.chart,\n d,\n e = a.options.series,\n c,\n k;\n [\"inverted\", \"angular\", \"polar\"].forEach(function (g) {\n d = S[b.type || b.defaultSeriesType];\n k = b[g] || d && d.prototype[g];\n for (c = e && e.length; !k && c--;) (d = S[e[c].type]) && d.prototype[g] && (k = !0);\n a[g] = k;\n });\n },\n linkSeries: function () {\n var a = this,\n b = a.series;\n b.forEach(function (a) {\n a.linkedSeries.length = 0;\n });\n b.forEach(function (b) {\n var d = b.options.linkedTo;\n y(d) && (d = \":previous\" === d ? a.series[b.index - 1] : a.get(d)) && d.linkedParent !== b && (d.linkedSeries.push(b), b.linkedParent = d, b.visible = n(b.options.visible, d.options.visible, b.visible));\n });\n A(this, \"afterLinkSeries\");\n },\n renderSeries: function () {\n this.series.forEach(function (a) {\n a.translate();\n a.render();\n });\n },\n renderLabels: function () {\n var a = this,\n b = a.options.labels;\n b.items && b.items.forEach(function (d) {\n var e = t(b.style, d.style),\n c = q(e.left) + a.plotLeft,\n k = q(e.top) + a.plotTop + 12;\n delete e.left;\n delete e.top;\n a.renderer.text(d.html, c, k).attr({\n zIndex: 2\n }).css(e).add();\n });\n },\n render: function () {\n var a = this.axes,\n b = this.colorAxis,\n d = this.renderer,\n e = this.options,\n c = 0,\n k = function (a) {\n a.forEach(function (a) {\n a.visible && a.render();\n });\n };\n this.setTitle();\n this.legend = new w(this, e.legend);\n this.getStacks && this.getStacks();\n this.getMargins(!0);\n this.setChartSize();\n e = this.plotWidth;\n a.some(function (a) {\n if (a.horiz && a.visible && a.options.labels.enabled && a.series.length) return c = 21, !0;\n });\n var g = this.plotHeight = Math.max(this.plotHeight - c, 0);\n a.forEach(function (a) {\n a.setScale();\n });\n this.getAxisMargins();\n var m = 1.1 < e / this.plotWidth;\n var r = 1.05 < g / this.plotHeight;\n if (m || r) a.forEach(function (a) {\n (a.horiz && m || !a.horiz && r) && a.setTickInterval(!0);\n }), this.getMargins();\n this.drawChartBox();\n this.hasCartesianSeries ? k(a) : b && b.length && k(b);\n this.seriesGroup || (this.seriesGroup = d.g(\"series-group\").attr({\n zIndex: 3\n }).add());\n this.renderSeries();\n this.renderLabels();\n this.addCredits();\n this.setResponsive && this.setResponsive();\n this.updateContainerScaling();\n this.hasRendered = !0;\n },\n addCredits: function (a) {\n var b = this;\n a = K(!0, this.options.credits, a);\n a.enabled && !this.credits && (this.credits = this.renderer.text(a.text + (this.mapCredits || \"\"), 0, 0).addClass(\"highcharts-credits\").on(\"click\", function () {\n a.href && (Q.location.href = a.href);\n }).attr({\n align: a.position.align,\n zIndex: 8\n }), b.styledMode || this.credits.css(a.style), this.credits.add().align(a.position), this.credits.update = function (a) {\n b.credits = b.credits.destroy();\n b.addCredits(a);\n });\n },\n updateContainerScaling: function () {\n var a = this.container;\n if (a.offsetWidth && a.offsetHeight && a.getBoundingClientRect) {\n var b = a.getBoundingClientRect(),\n d = b.width / a.offsetWidth;\n a = b.height / a.offsetHeight;\n 1 !== d || 1 !== a ? this.containerScaling = {\n scaleX: d,\n scaleY: a\n } : delete this.containerScaling;\n }\n },\n destroy: function () {\n var a = this,\n b = a.axes,\n d = a.series,\n e = a.container,\n g,\n m = e && e.parentNode;\n A(a, \"destroy\");\n a.renderer.forExport ? B(k, a) : k[a.index] = void 0;\n c.chartCount--;\n a.renderTo.removeAttribute(\"data-highcharts-chart\");\n U(a);\n for (g = b.length; g--;) b[g] = b[g].destroy();\n this.scroller && this.scroller.destroy && this.scroller.destroy();\n for (g = d.length; g--;) d[g] = d[g].destroy();\n \"title subtitle chartBackground plotBackground plotBGImage plotBorder seriesGroup clipRect credits pointer rangeSelector legend resetZoomButton tooltip renderer\".split(\" \").forEach(function (b) {\n var d = a[b];\n d && d.destroy && (a[b] = d.destroy());\n });\n e && (e.innerHTML = \"\", U(e), m && z(e));\n h(a, function (b, d) {\n delete a[d];\n });\n },\n firstRender: function () {\n var a = this,\n b = a.options;\n if (!a.isReadyToRender || a.isReadyToRender()) {\n a.getContainer();\n a.resetMargins();\n a.setChartSize();\n a.propFromSeries();\n a.getAxes();\n (v(b.series) ? b.series : []).forEach(function (b) {\n a.initSeries(b);\n });\n a.linkSeries();\n A(a, \"beforeRender\");\n J && (a.pointer = new J(a, b));\n a.render();\n if (!a.renderer.imgCount && a.onload) a.onload();\n a.temporaryDisplay(!0);\n }\n },\n onload: function () {\n this.callbacks.concat([this.callback]).forEach(function (a) {\n a && void 0 !== this.index && a.apply(this, [this]);\n }, this);\n A(this, \"load\");\n A(this, \"render\");\n G(this.index) && this.setReflow(this.options.chart.reflow);\n this.onload = null;\n }\n });\n });\n M(I, \"parts/ScrollablePlotArea.js\", [I[\"parts/Globals.js\"], I[\"parts/Utilities.js\"]], function (c, f) {\n var F = f.pick,\n G = c.addEvent;\n f = c.Chart;\n \"\";\n G(f, \"afterSetChartSize\", function (f) {\n var z = this.options.chart.scrollablePlotArea,\n t = z && z.minWidth;\n z = z && z.minHeight;\n if (!this.renderer.forExport) {\n if (t) {\n if (this.scrollablePixelsX = t = Math.max(0, t - this.chartWidth)) {\n this.plotWidth += t;\n this.inverted ? (this.clipBox.height += t, this.plotBox.height += t) : (this.clipBox.width += t, this.plotBox.width += t);\n var v = {\n 1: {\n name: \"right\",\n value: t\n }\n };\n }\n } else z && (this.scrollablePixelsY = t = Math.max(0, z - this.chartHeight)) && (this.plotHeight += t, this.inverted ? (this.clipBox.width += t, this.plotBox.width += t) : (this.clipBox.height += t, this.plotBox.height += t), v = {\n 2: {\n name: \"bottom\",\n value: t\n }\n });\n v && !f.skipAxes && this.axes.forEach(function (f) {\n v[f.side] ? f.getPlotLinePath = function () {\n var t = v[f.side].name,\n y = this[t];\n this[t] = y - v[f.side].value;\n var h = c.Axis.prototype.getPlotLinePath.apply(this, arguments);\n this[t] = y;\n return h;\n } : (f.setAxisSize(), f.setAxisTranslation());\n });\n }\n });\n G(f, \"render\", function () {\n this.scrollablePixelsX || this.scrollablePixelsY ? (this.setUpScrolling && this.setUpScrolling(), this.applyFixed()) : this.fixedDiv && this.applyFixed();\n });\n f.prototype.setUpScrolling = function () {\n var f = {\n WebkitOverflowScrolling: \"touch\",\n overflowX: \"hidden\",\n overflowY: \"hidden\"\n };\n this.scrollablePixelsX && (f.overflowX = \"auto\");\n this.scrollablePixelsY && (f.overflowY = \"auto\");\n this.scrollingContainer = c.createElement(\"div\", {\n className: \"highcharts-scrolling\"\n }, f, this.renderTo);\n this.innerContainer = c.createElement(\"div\", {\n className: \"highcharts-inner-container\"\n }, null, this.scrollingContainer);\n this.innerContainer.appendChild(this.container);\n this.setUpScrolling = null;\n };\n f.prototype.moveFixedElements = function () {\n var c = this.container,\n f = this.fixedRenderer,\n t = \".highcharts-contextbutton .highcharts-credits .highcharts-legend .highcharts-legend-checkbox .highcharts-navigator-series .highcharts-navigator-xaxis .highcharts-navigator-yaxis .highcharts-navigator .highcharts-reset-zoom .highcharts-scrollbar .highcharts-subtitle .highcharts-title\".split(\" \"),\n v;\n this.scrollablePixelsX && !this.inverted ? v = \".highcharts-yaxis\" : this.scrollablePixelsX && this.inverted ? v = \".highcharts-xaxis\" : this.scrollablePixelsY && !this.inverted ? v = \".highcharts-xaxis\" : this.scrollablePixelsY && this.inverted && (v = \".highcharts-yaxis\");\n t.push(v, v + \"-labels\");\n t.forEach(function (v) {\n [].forEach.call(c.querySelectorAll(v), function (c) {\n (c.namespaceURI === f.SVG_NS ? f.box : f.box.parentNode).appendChild(c);\n c.style.pointerEvents = \"auto\";\n });\n });\n };\n f.prototype.applyFixed = function () {\n var f,\n B = !this.fixedDiv,\n t = this.options.chart.scrollablePlotArea;\n B ? (this.fixedDiv = c.createElement(\"div\", {\n className: \"highcharts-fixed\"\n }, {\n position: \"absolute\",\n overflow: \"hidden\",\n pointerEvents: \"none\",\n zIndex: 2\n }, null, !0), this.renderTo.insertBefore(this.fixedDiv, this.renderTo.firstChild), this.renderTo.style.overflow = \"visible\", this.fixedRenderer = f = new c.Renderer(this.fixedDiv, this.chartWidth, this.chartHeight), this.scrollableMask = f.path().attr({\n fill: c.color(this.options.chart.backgroundColor || \"#fff\").setOpacity(F(t.opacity, .85)).get(),\n zIndex: -1\n }).addClass(\"highcharts-scrollable-mask\").add(), this.moveFixedElements(), G(this, \"afterShowResetZoom\", this.moveFixedElements), G(this, \"afterLayOutTitles\", this.moveFixedElements)) : this.fixedRenderer.setSize(this.chartWidth, this.chartHeight);\n f = this.chartWidth + (this.scrollablePixelsX || 0);\n var v = this.chartHeight + (this.scrollablePixelsY || 0);\n c.stop(this.container);\n this.container.style.width = f + \"px\";\n this.container.style.height = v + \"px\";\n this.renderer.boxWrapper.attr({\n width: f,\n height: v,\n viewBox: [0, 0, f, v].join(\" \")\n });\n this.chartBackground.attr({\n width: f,\n height: v\n });\n this.scrollablePixelsY && (this.scrollingContainer.style.height = this.chartHeight + \"px\");\n B && (t.scrollPositionX && (this.scrollingContainer.scrollLeft = this.scrollablePixelsX * t.scrollPositionX), t.scrollPositionY && (this.scrollingContainer.scrollTop = this.scrollablePixelsY * t.scrollPositionY));\n v = this.axisOffset;\n B = this.plotTop - v[0] - 1;\n t = this.plotLeft - v[3] - 1;\n f = this.plotTop + this.plotHeight + v[2] + 1;\n v = this.plotLeft + this.plotWidth + v[1] + 1;\n var C = this.plotLeft + this.plotWidth - (this.scrollablePixelsX || 0),\n H = this.plotTop + this.plotHeight - (this.scrollablePixelsY || 0);\n B = this.scrollablePixelsX ? [\"M\", 0, B, \"L\", this.plotLeft - 1, B, \"L\", this.plotLeft - 1, f, \"L\", 0, f, \"Z\", \"M\", C, B, \"L\", this.chartWidth, B, \"L\", this.chartWidth, f, \"L\", C, f, \"Z\"] : this.scrollablePixelsY ? [\"M\", t, 0, \"L\", t, this.plotTop - 1, \"L\", v, this.plotTop - 1, \"L\", v, 0, \"Z\", \"M\", t, H, \"L\", t, this.chartHeight, \"L\", v, this.chartHeight, \"L\", v, H, \"Z\"] : [\"M\", 0, 0];\n \"adjustHeight\" !== this.redrawTrigger && this.scrollableMask.attr({\n d: B\n });\n };\n });\n M(I, \"parts/Point.js\", [I[\"parts/Globals.js\"], I[\"parts/Utilities.js\"]], function (c, f) {\n var F = f.defined,\n G = f.erase,\n z = f.extend,\n B = f.isArray,\n t = f.isNumber,\n v = f.isObject,\n C = f.pick,\n H,\n y = c.fireEvent,\n h = c.format,\n n = c.uniqueKey,\n q = c.removeEvent;\n c.Point = H = function () {};\n c.Point.prototype = {\n init: function (c, b, a) {\n this.series = c;\n this.applyOptions(b, a);\n this.id = F(this.id) ? this.id : n();\n this.resolveColor();\n c.chart.pointCount++;\n y(this, \"afterInit\");\n return this;\n },\n resolveColor: function () {\n var c = this.series;\n var b = c.chart.options.chart.colorCount;\n var a = c.chart.styledMode;\n a || this.options.color || (this.color = c.color);\n c.options.colorByPoint ? (a || (b = c.options.colors || c.chart.options.colors, this.color = this.color || b[c.colorCounter], b = b.length), a = c.colorCounter, c.colorCounter++, c.colorCounter === b && (c.colorCounter = 0)) : a = c.colorIndex;\n this.colorIndex = C(this.colorIndex, a);\n },\n applyOptions: function (c, b) {\n var a = this.series,\n d = a.options.pointValKey || a.pointValKey;\n c = H.prototype.optionsToObject.call(this, c);\n z(this, c);\n this.options = this.options ? z(this.options, c) : c;\n c.group && delete this.group;\n c.dataLabels && delete this.dataLabels;\n d && (this.y = this[d]);\n this.formatPrefix = (this.isNull = C(this.isValid && !this.isValid(), null === this.x || !t(this.y))) ? \"null\" : \"point\";\n this.selected && (this.state = \"select\");\n \"name\" in this && void 0 === b && a.xAxis && a.xAxis.hasNames && (this.x = a.xAxis.nameToX(this));\n void 0 === this.x && a && (this.x = void 0 === b ? a.autoIncrement(this) : b);\n return this;\n },\n setNestedProperty: function (c, b, a) {\n a.split(\".\").reduce(function (a, e, c, g) {\n a[e] = g.length - 1 === c ? b : v(a[e], !0) ? a[e] : {};\n return a[e];\n }, c);\n return c;\n },\n optionsToObject: function (g) {\n var b = {},\n a = this.series,\n d = a.options.keys,\n e = d || a.pointArrayMap || [\"y\"],\n h = e.length,\n f = 0,\n n = 0;\n if (t(g) || null === g) b[e[0]] = g;else if (B(g)) for (!d && g.length > h && (a = typeof g[0], \"string\" === a ? b.name = g[0] : \"number\" === a && (b.x = g[0]), f++); n < h;) d && void 0 === g[f] || (0 < e[n].indexOf(\".\") ? c.Point.prototype.setNestedProperty(b, g[f], e[n]) : b[e[n]] = g[f]), f++, n++;else \"object\" === typeof g && (b = g, g.dataLabels && (a._hasPointLabels = !0), g.marker && (a._hasPointMarkers = !0));\n return b;\n },\n getClassName: function () {\n return \"highcharts-point\" + (this.selected ? \" highcharts-point-select\" : \"\") + (this.negative ? \" highcharts-negative\" : \"\") + (this.isNull ? \" highcharts-null-point\" : \"\") + (void 0 !== this.colorIndex ? \" highcharts-color-\" + this.colorIndex : \"\") + (this.options.className ? \" \" + this.options.className : \"\") + (this.zone && this.zone.className ? \" \" + this.zone.className.replace(\"highcharts-negative\", \"\") : \"\");\n },\n getZone: function () {\n var c = this.series,\n b = c.zones;\n c = c.zoneAxis || \"y\";\n var a = 0,\n d;\n for (d = b[a]; this[c] >= d.value;) d = b[++a];\n this.nonZonedColor || (this.nonZonedColor = this.color);\n this.color = d && d.color && !this.options.color ? d.color : this.nonZonedColor;\n return d;\n },\n hasNewShapeType: function () {\n return this.graphic && this.graphic.element.nodeName !== this.shapeType;\n },\n destroy: function () {\n var c = this.series.chart,\n b = c.hoverPoints,\n a;\n c.pointCount--;\n b && (this.setState(), G(b, this), b.length || (c.hoverPoints = null));\n if (this === c.hoverPoint) this.onMouseOut();\n if (this.graphic || this.dataLabel || this.dataLabels) q(this), this.destroyElements();\n this.legendItem && c.legend.destroyItem(this);\n for (a in this) this[a] = null;\n },\n destroyElements: function (c) {\n var b = this,\n a = [],\n d;\n c = c || {\n graphic: 1,\n dataLabel: 1\n };\n c.graphic && a.push(\"graphic\", \"shadowGroup\");\n c.dataLabel && a.push(\"dataLabel\", \"dataLabelUpper\", \"connector\");\n for (d = a.length; d--;) {\n var e = a[d];\n b[e] && (b[e] = b[e].destroy());\n }\n [\"dataLabel\", \"connector\"].forEach(function (a) {\n var d = a + \"s\";\n c[a] && b[d] && (b[d].forEach(function (a) {\n a.element && a.destroy();\n }), delete b[d]);\n });\n },\n getLabelConfig: function () {\n return {\n x: this.category,\n y: this.y,\n color: this.color,\n colorIndex: this.colorIndex,\n key: this.name || this.category,\n series: this.series,\n point: this,\n percentage: this.percentage,\n total: this.total || this.stackTotal\n };\n },\n tooltipFormatter: function (c) {\n var b = this.series,\n a = b.tooltipOptions,\n d = C(a.valueDecimals, \"\"),\n e = a.valuePrefix || \"\",\n g = a.valueSuffix || \"\";\n b.chart.styledMode && (c = b.chart.tooltip.styledModeFormat(c));\n (b.pointArrayMap || [\"y\"]).forEach(function (a) {\n a = \"{point.\" + a;\n if (e || g) c = c.replace(RegExp(a + \"}\", \"g\"), e + a + \"}\" + g);\n c = c.replace(RegExp(a + \"}\", \"g\"), a + \":,.\" + d + \"f}\");\n });\n return h(c, {\n point: this,\n series: this.series\n }, b.chart.time);\n },\n firePointEvent: function (c, b, a) {\n var d = this,\n e = this.series.options;\n (e.point.events[c] || d.options && d.options.events && d.options.events[c]) && this.importEvents();\n \"click\" === c && e.allowPointSelect && (a = function (a) {\n d.select && d.select(null, a.ctrlKey || a.metaKey || a.shiftKey);\n });\n y(this, c, b, a);\n },\n visible: !0\n };\n });\n M(I, \"parts/Series.js\", [I[\"parts/Globals.js\"], I[\"parts/Utilities.js\"]], function (c, f) {\n var F = f.arrayMax,\n G = f.arrayMin,\n z = f.defined,\n B = f.erase,\n t = f.extend,\n v = f.isArray,\n C = f.isNumber,\n H = f.isString,\n y = f.objectEach,\n h = f.pick,\n n = f.splat,\n q = f.syncTimeout,\n g = c.addEvent,\n b = c.animObject,\n a = c.correctFloat,\n d = c.defaultOptions,\n e = c.defaultPlotOptions,\n l = c.fireEvent,\n L = c.merge,\n E = c.removeEvent,\n p = c.SVGElement,\n u = c.win;\n c.Series = c.seriesType(\"line\", null, {\n lineWidth: 2,\n allowPointSelect: !1,\n showCheckbox: !1,\n animation: {\n duration: 1E3\n },\n events: {},\n marker: {\n lineWidth: 0,\n lineColor: \"#ffffff\",\n enabledThreshold: 2,\n radius: 4,\n states: {\n normal: {\n animation: !0\n },\n hover: {\n animation: {\n duration: 50\n },\n enabled: !0,\n radiusPlus: 2,\n lineWidthPlus: 1\n },\n select: {\n fillColor: \"#cccccc\",\n lineColor: \"#000000\",\n lineWidth: 2\n }\n }\n },\n point: {\n events: {}\n },\n dataLabels: {\n align: \"center\",\n formatter: function () {\n return null === this.y ? \"\" : c.numberFormat(this.y, -1);\n },\n padding: 5,\n style: {\n fontSize: \"11px\",\n fontWeight: \"bold\",\n color: \"contrast\",\n textOutline: \"1px contrast\"\n },\n verticalAlign: \"bottom\",\n x: 0,\n y: 0\n },\n cropThreshold: 300,\n opacity: 1,\n pointRange: 0,\n softThreshold: !0,\n states: {\n normal: {\n animation: !0\n },\n hover: {\n animation: {\n duration: 50\n },\n lineWidthPlus: 1,\n marker: {},\n halo: {\n size: 10,\n opacity: .25\n }\n },\n select: {\n animation: {\n duration: 0\n }\n },\n inactive: {\n animation: {\n duration: 50\n },\n opacity: .2\n }\n },\n stickyTracking: !0,\n turboThreshold: 1E3,\n findNearestPointBy: \"x\"\n }, {\n axisTypes: [\"xAxis\", \"yAxis\"],\n coll: \"series\",\n colorCounter: 0,\n cropShoulder: 1,\n directTouch: !1,\n isCartesian: !0,\n parallelArrays: [\"x\", \"y\"],\n pointClass: c.Point,\n requireSorting: !0,\n sorted: !0,\n init: function (a, b) {\n l(this, \"init\", {\n options: b\n });\n var d = this,\n e = a.series,\n k;\n this.eventOptions = this.eventOptions || {};\n d.chart = a;\n d.options = b = d.setOptions(b);\n d.linkedSeries = [];\n d.bindAxes();\n t(d, {\n name: b.name,\n state: \"\",\n visible: !1 !== b.visible,\n selected: !0 === b.selected\n });\n var m = b.events;\n y(m, function (a, b) {\n c.isFunction(a) && d.eventOptions[b] !== a && (c.isFunction(d.eventOptions[b]) && E(d, b, d.eventOptions[b]), d.eventOptions[b] = a, g(d, b, a));\n });\n if (m && m.click || b.point && b.point.events && b.point.events.click || b.allowPointSelect) a.runTrackerClick = !0;\n d.getColor();\n d.getSymbol();\n d.parallelArrays.forEach(function (a) {\n d[a + \"Data\"] || (d[a + \"Data\"] = []);\n });\n d.points || d.data || d.setData(b.data, !1);\n d.isCartesian && (a.hasCartesianSeries = !0);\n e.length && (k = e[e.length - 1]);\n d._i = h(k && k._i, -1) + 1;\n a.orderSeries(this.insert(e));\n l(this, \"afterInit\");\n },\n insert: function (a) {\n var b = this.options.index,\n d;\n if (C(b)) {\n for (d = a.length; d--;) if (b >= h(a[d].options.index, a[d]._i)) {\n a.splice(d + 1, 0, this);\n break;\n }\n -1 === d && a.unshift(this);\n d += 1;\n } else a.push(this);\n return h(d, a.length - 1);\n },\n bindAxes: function () {\n var a = this,\n b = a.options,\n d = a.chart,\n e;\n l(this, \"bindAxes\", null, function () {\n (a.axisTypes || []).forEach(function (k) {\n d[k].forEach(function (d) {\n e = d.options;\n if (b[k] === e.index || void 0 !== b[k] && b[k] === e.id || void 0 === b[k] && 0 === e.index) a.insert(d.series), a[k] = d, d.isDirty = !0;\n });\n a[k] || a.optionalAxis === k || c.error(18, !0, d);\n });\n });\n },\n updateParallelArrays: function (a, b) {\n var d = a.series,\n c = arguments,\n e = C(b) ? function (c) {\n var e = \"y\" === c && d.toYData ? d.toYData(a) : a[c];\n d[c + \"Data\"][b] = e;\n } : function (a) {\n Array.prototype[b].apply(d[a + \"Data\"], Array.prototype.slice.call(c, 2));\n };\n d.parallelArrays.forEach(e);\n },\n hasData: function () {\n return this.visible && void 0 !== this.dataMax && void 0 !== this.dataMin || this.visible && this.yData && 0 < this.yData.length;\n },\n autoIncrement: function () {\n var a = this.options,\n b = this.xIncrement,\n d,\n c = a.pointIntervalUnit,\n e = this.chart.time;\n b = h(b, a.pointStart, 0);\n this.pointInterval = d = h(this.pointInterval, a.pointInterval, 1);\n c && (a = new e.Date(b), \"day\" === c ? e.set(\"Date\", a, e.get(\"Date\", a) + d) : \"month\" === c ? e.set(\"Month\", a, e.get(\"Month\", a) + d) : \"year\" === c && e.set(\"FullYear\", a, e.get(\"FullYear\", a) + d), d = a.getTime() - b);\n this.xIncrement = b + d;\n return b;\n },\n setOptions: function (a) {\n var b = this.chart,\n c = b.options,\n e = c.plotOptions,\n k = b.userOptions || {};\n a = L(a);\n b = b.styledMode;\n var g = {\n plotOptions: e,\n userOptions: a\n };\n l(this, \"setOptions\", g);\n var f = g.plotOptions[this.type],\n p = k.plotOptions || {};\n this.userOptions = g.userOptions;\n k = L(f, e.series, k.plotOptions && k.plotOptions[this.type], a);\n this.tooltipOptions = L(d.tooltip, d.plotOptions.series && d.plotOptions.series.tooltip, d.plotOptions[this.type].tooltip, c.tooltip.userOptions, e.series && e.series.tooltip, e[this.type].tooltip, a.tooltip);\n this.stickyTracking = h(a.stickyTracking, p[this.type] && p[this.type].stickyTracking, p.series && p.series.stickyTracking, this.tooltipOptions.shared && !this.noSharedTooltip ? !0 : k.stickyTracking);\n null === f.marker && delete k.marker;\n this.zoneAxis = k.zoneAxis;\n c = this.zones = (k.zones || []).slice();\n !k.negativeColor && !k.negativeFillColor || k.zones || (e = {\n value: k[this.zoneAxis + \"Threshold\"] || k.threshold || 0,\n className: \"highcharts-negative\"\n }, b || (e.color = k.negativeColor, e.fillColor = k.negativeFillColor), c.push(e));\n c.length && z(c[c.length - 1].value) && c.push(b ? {} : {\n color: this.color,\n fillColor: this.fillColor\n });\n l(this, \"afterSetOptions\", {\n options: k\n });\n return k;\n },\n getName: function () {\n return h(this.options.name, \"Series \" + (this.index + 1));\n },\n getCyclic: function (a, b, d) {\n var c = this.chart,\n e = this.userOptions,\n k = a + \"Index\",\n g = a + \"Counter\",\n f = d ? d.length : h(c.options.chart[a + \"Count\"], c[a + \"Count\"]);\n if (!b) {\n var r = h(e[k], e[\"_\" + k]);\n z(r) || (c.series.length || (c[g] = 0), e[\"_\" + k] = r = c[g] % f, c[g] += 1);\n d && (b = d[r]);\n }\n void 0 !== r && (this[k] = r);\n this[a] = b;\n },\n getColor: function () {\n this.chart.styledMode ? this.getCyclic(\"color\") : this.options.colorByPoint ? this.options.color = null : this.getCyclic(\"color\", this.options.color || e[this.type].color, this.chart.options.colors);\n },\n getSymbol: function () {\n this.getCyclic(\"symbol\", this.options.marker.symbol, this.chart.options.symbols);\n },\n findPointIndex: function (a, b) {\n var d = a.id;\n a = a.x;\n var c = this.points,\n e;\n if (d) {\n var k = (d = this.chart.get(d)) && d.index;\n void 0 !== k && (e = !0);\n }\n void 0 === k && C(a) && (k = this.xData.indexOf(a, b));\n -1 !== k && void 0 !== k && this.cropped && (k = k >= this.cropStart ? k - this.cropStart : k);\n !e && c[k] && c[k].touched && (k = void 0);\n return k;\n },\n drawLegendSymbol: c.LegendSymbolMixin.drawLineMarker,\n updateData: function (a) {\n var b = this.options,\n d = this.points,\n c = [],\n e,\n k,\n g,\n h = this.requireSorting,\n f = a.length === d.length,\n l = !0;\n this.xIncrement = null;\n a.forEach(function (a, k) {\n var m = z(a) && this.pointClass.prototype.optionsToObject.call({\n series: this\n }, a) || {};\n var r = m.x;\n if (m.id || C(r)) if (r = this.findPointIndex(m, g), -1 === r || void 0 === r ? c.push(a) : d[r] && a !== b.data[r] ? (d[r].update(a, !1, null, !1), d[r].touched = !0, h && (g = r + 1)) : d[r] && (d[r].touched = !0), !f || k !== r || this.hasDerivedData) e = !0;\n }, this);\n if (e) for (a = d.length; a--;) (k = d[a]) && !k.touched && k.remove(!1);else f ? a.forEach(function (a, b) {\n d[b].update && a !== d[b].y && d[b].update(a, !1, null, !1);\n }) : l = !1;\n d.forEach(function (a) {\n a && (a.touched = !1);\n });\n if (!l) return !1;\n c.forEach(function (a) {\n this.addPoint(a, !1, null, null, !1);\n }, this);\n return !0;\n },\n setData: function (a, b, d, e) {\n var k = this,\n g = k.points,\n f = g && g.length || 0,\n r,\n l = k.options,\n p = k.chart,\n x = null,\n A = k.xAxis;\n x = l.turboThreshold;\n var u = this.xData,\n n = this.yData,\n q = (r = k.pointArrayMap) && r.length,\n y = l.keys,\n t = 0,\n E = 1,\n L;\n a = a || [];\n r = a.length;\n b = h(b, !0);\n !1 !== e && r && f && !k.cropped && !k.hasGroupedData && k.visible && !k.isSeriesBoosting && (L = this.updateData(a));\n if (!L) {\n k.xIncrement = null;\n k.colorCounter = 0;\n this.parallelArrays.forEach(function (a) {\n k[a + \"Data\"].length = 0;\n });\n if (x && r > x) {\n if (x = k.getFirstValidPoint(a), C(x)) for (d = 0; d < r; d++) u[d] = this.autoIncrement(), n[d] = a[d];else if (v(x)) {\n if (q) for (d = 0; d < r; d++) e = a[d], u[d] = e[0], n[d] = e.slice(1, q + 1);else for (y && (t = y.indexOf(\"x\"), E = y.indexOf(\"y\"), t = 0 <= t ? t : 0, E = 0 <= E ? E : 1), d = 0; d < r; d++) e = a[d], u[d] = e[t], n[d] = e[E];\n } else c.error(12, !1, p);\n } else for (d = 0; d < r; d++) void 0 !== a[d] && (e = {\n series: k\n }, k.pointClass.prototype.applyOptions.apply(e, [a[d]]), k.updateParallelArrays(e, d));\n n && H(n[0]) && c.error(14, !0, p);\n k.data = [];\n k.options.data = k.userOptions.data = a;\n for (d = f; d--;) g[d] && g[d].destroy && g[d].destroy();\n A && (A.minRange = A.userMinRange);\n k.isDirty = p.isDirtyBox = !0;\n k.isDirtyData = !!g;\n d = !1;\n }\n \"point\" === l.legendType && (this.processData(), this.generatePoints());\n b && p.redraw(d);\n },\n processData: function (a) {\n var b = this.xData,\n d = this.yData,\n e = b.length;\n var k = 0;\n var g = this.xAxis,\n h = this.options;\n var f = h.cropThreshold;\n var l = this.getExtremesFromAll || h.getExtremesFromAll,\n p = this.isCartesian;\n h = g && g.val2lin;\n var u = g && g.isLog,\n n = this.requireSorting;\n if (p && !this.isDirty && !g.isDirty && !this.yAxis.isDirty && !a) return !1;\n if (g) {\n a = g.getExtremes();\n var q = a.min;\n var v = a.max;\n }\n if (p && this.sorted && !l && (!f || e > f || this.forceCrop)) if (b[e - 1] < q || b[0] > v) b = [], d = [];else if (this.yData && (b[0] < q || b[e - 1] > v)) {\n k = this.cropData(this.xData, this.yData, q, v);\n b = k.xData;\n d = k.yData;\n k = k.start;\n var y = !0;\n }\n for (f = b.length || 1; --f;) if (e = u ? h(b[f]) - h(b[f - 1]) : b[f] - b[f - 1], 0 < e && (void 0 === t || e < t)) var t = e;else 0 > e && n && (c.error(15, !1, this.chart), n = !1);\n this.cropped = y;\n this.cropStart = k;\n this.processedXData = b;\n this.processedYData = d;\n this.closestPointRange = this.basePointRange = t;\n },\n cropData: function (a, b, d, e, c) {\n var k = a.length,\n g = 0,\n f = k,\n r;\n c = h(c, this.cropShoulder);\n for (r = 0; r < k; r++) if (a[r] >= d) {\n g = Math.max(0, r - c);\n break;\n }\n for (d = r; d < k; d++) if (a[d] > e) {\n f = d + c;\n break;\n }\n return {\n xData: a.slice(g, f),\n yData: b.slice(g, f),\n start: g,\n end: f\n };\n },\n generatePoints: function () {\n var a = this.options,\n b = a.data,\n d = this.data,\n e,\n c = this.processedXData,\n g = this.processedYData,\n f = this.pointClass,\n h = c.length,\n p = this.cropStart || 0,\n u = this.hasGroupedData;\n a = a.keys;\n var q = [],\n v;\n d || u || (d = [], d.length = b.length, d = this.data = d);\n a && u && (this.options.keys = !1);\n for (v = 0; v < h; v++) {\n var y = p + v;\n if (u) {\n var E = new f().init(this, [c[v]].concat(n(g[v])));\n E.dataGroup = this.groupMap[v];\n E.dataGroup.options && (E.options = E.dataGroup.options, t(E, E.dataGroup.options), delete E.dataLabels);\n } else (E = d[y]) || void 0 === b[y] || (d[y] = E = new f().init(this, b[y], c[v]));\n E && (E.index = y, q[v] = E);\n }\n this.options.keys = a;\n if (d && (h !== (e = d.length) || u)) for (v = 0; v < e; v++) v !== p || u || (v += h), d[v] && (d[v].destroyElements(), d[v].plotX = void 0);\n this.data = d;\n this.points = q;\n l(this, \"afterGeneratePoints\");\n },\n getXExtremes: function (a) {\n return {\n min: G(a),\n max: F(a)\n };\n },\n getExtremes: function (a) {\n var b = this.xAxis,\n d = this.yAxis,\n e = this.processedXData || this.xData,\n c = [],\n k = 0,\n g = 0;\n var f = 0;\n var h = this.requireSorting ? this.cropShoulder : 0,\n p = d ? d.positiveValuesOnly : !1,\n u;\n a = a || this.stackedYData || this.processedYData || [];\n d = a.length;\n b && (f = b.getExtremes(), g = f.min, f = f.max);\n for (u = 0; u < d; u++) {\n var n = e[u];\n var q = a[u];\n var y = (C(q) || v(q)) && (q.length || 0 < q || !p);\n n = this.getExtremesFromAll || this.options.getExtremesFromAll || this.cropped || !b || (e[u + h] || n) >= g && (e[u - h] || n) <= f;\n if (y && n) if (y = q.length) for (; y--;) C(q[y]) && (c[k++] = q[y]);else c[k++] = q;\n }\n this.dataMin = G(c);\n this.dataMax = F(c);\n l(this, \"afterGetExtremes\");\n },\n getFirstValidPoint: function (a) {\n for (var b = null, d = a.length, e = 0; null === b && e < d;) b = a[e], e++;\n return b;\n },\n translate: function () {\n this.processedXData || this.processData();\n this.generatePoints();\n var b = this.options,\n d = b.stacking,\n e = this.xAxis,\n c = e.categories,\n g = this.yAxis,\n m = this.points,\n f = m.length,\n p = !!this.modifyValue,\n u,\n n = this.pointPlacementToXValue(),\n q = C(n),\n y = b.threshold,\n t = b.startFromThreshold ? y : 0,\n E,\n L = this.zoneAxis || \"y\",\n B = Number.MAX_VALUE;\n for (u = 0; u < f; u++) {\n var H = m[u],\n G = H.x;\n var F = H.y;\n var I = H.low,\n M = d && g.stacks[(this.negStacks && F < (t ? 0 : y) ? \"-\" : \"\") + this.stackKey];\n g.positiveValuesOnly && null !== F && 0 >= F && (H.isNull = !0);\n H.plotX = E = a(Math.min(Math.max(-1E5, e.translate(G, 0, 0, 0, 1, n, \"flags\" === this.type)), 1E5));\n if (d && this.visible && M && M[G]) {\n var X = this.getStackIndicator(X, G, this.index);\n if (!H.isNull) {\n var P = M[G];\n var Y = P.points[X.key];\n }\n }\n v(Y) && (I = Y[0], F = Y[1], I === t && X.key === M[G].base && (I = h(C(y) && y, g.min)), g.positiveValuesOnly && 0 >= I && (I = null), H.total = H.stackTotal = P.total, H.percentage = P.total && H.y / P.total * 100, H.stackY = F, this.irregularWidths || P.setOffset(this.pointXOffset || 0, this.barW || 0));\n H.yBottom = z(I) ? Math.min(Math.max(-1E5, g.translate(I, 0, 1, 0, 1)), 1E5) : null;\n p && (F = this.modifyValue(F, H));\n H.plotY = F = \"number\" === typeof F && Infinity !== F ? Math.min(Math.max(-1E5, g.translate(F, 0, 1, 0, 1)), 1E5) : void 0;\n H.isInside = void 0 !== F && 0 <= F && F <= g.len && 0 <= E && E <= e.len;\n H.clientX = q ? a(e.translate(G, 0, 0, 0, 1, n)) : E;\n H.negative = H[L] < (b[L + \"Threshold\"] || y || 0);\n H.category = c && void 0 !== c[H.x] ? c[H.x] : H.x;\n if (!H.isNull) {\n void 0 !== Z && (B = Math.min(B, Math.abs(E - Z)));\n var Z = E;\n }\n H.zone = this.zones.length && H.getZone();\n }\n this.closestPointRangePx = B;\n l(this, \"afterTranslate\");\n },\n getValidPoints: function (a, b, d) {\n var e = this.chart;\n return (a || this.points || []).filter(function (a) {\n return b && !e.isInsidePlot(a.plotX, a.plotY, e.inverted) ? !1 : d || !a.isNull;\n });\n },\n getClipBox: function (a, b) {\n var d = this.options,\n e = this.chart,\n c = e.inverted,\n k = this.xAxis,\n g = k && this.yAxis;\n a && !1 === d.clip && g ? a = c ? {\n y: -e.chartWidth + g.len + g.pos,\n height: e.chartWidth,\n width: e.chartHeight,\n x: -e.chartHeight + k.len + k.pos\n } : {\n y: -g.pos,\n height: e.chartHeight,\n width: e.chartWidth,\n x: -k.pos\n } : (a = this.clipBox || e.clipBox, b && (a.width = e.plotSizeX, a.x = 0));\n return b ? {\n width: a.width,\n x: a.x\n } : a;\n },\n setClip: function (a) {\n var b = this.chart,\n d = this.options,\n e = b.renderer,\n c = b.inverted,\n k = this.clipBox,\n g = this.getClipBox(a),\n f = this.sharedClipKey || [\"_sharedClip\", a && a.duration, a && a.easing, g.height, d.xAxis, d.yAxis].join(),\n h = b[f],\n l = b[f + \"m\"];\n h || (a && (g.width = 0, c && (g.x = b.plotSizeX + (!1 !== d.clip ? 0 : b.plotTop)), b[f + \"m\"] = l = e.clipRect(c ? b.plotSizeX + 99 : -99, c ? -b.plotLeft : -b.plotTop, 99, c ? b.chartWidth : b.chartHeight)), b[f] = h = e.clipRect(g), h.count = {\n length: 0\n });\n a && !h.count[this.index] && (h.count[this.index] = !0, h.count.length += 1);\n if (!1 !== d.clip || a) this.group.clip(a || k ? h : b.clipRect), this.markerGroup.clip(l), this.sharedClipKey = f;\n a || (h.count[this.index] && (delete h.count[this.index], --h.count.length), 0 === h.count.length && f && b[f] && (k || (b[f] = b[f].destroy()), b[f + \"m\"] && (b[f + \"m\"] = b[f + \"m\"].destroy())));\n },\n animate: function (a) {\n var d = this.chart,\n e = b(this.options.animation);\n if (a) this.setClip(e);else {\n var c = this.sharedClipKey;\n a = d[c];\n var k = this.getClipBox(e, !0);\n a && a.animate(k, e);\n d[c + \"m\"] && d[c + \"m\"].animate({\n width: k.width + 99,\n x: k.x - (d.inverted ? 0 : 99)\n }, e);\n this.animate = null;\n }\n },\n afterAnimate: function () {\n this.setClip();\n l(this, \"afterAnimate\");\n this.finishedAnimating = !0;\n },\n drawPoints: function () {\n var a = this.points,\n b = this.chart,\n d,\n e = this.options.marker,\n c = this[this.specialGroup] || this.markerGroup;\n var g = this.xAxis;\n var f = h(e.enabled, !g || g.isRadial ? !0 : null, this.closestPointRangePx >= e.enabledThreshold * e.radius);\n if (!1 !== e.enabled || this._hasPointMarkers) for (g = 0; g < a.length; g++) {\n var l = a[g];\n var p = (d = l.graphic) ? \"animate\" : \"attr\";\n var u = l.marker || {};\n var n = !!l.marker;\n var q = f && void 0 === u.enabled || u.enabled;\n var v = !1 !== l.isInside;\n if (q && !l.isNull) {\n var y = h(u.symbol, this.symbol);\n q = this.markerAttribs(l, l.selected && \"select\");\n d ? d[v ? \"show\" : \"hide\"](v).animate(q) : v && (0 < q.width || l.hasImage) && (l.graphic = d = b.renderer.symbol(y, q.x, q.y, q.width, q.height, n ? u : e).add(c));\n if (d && !b.styledMode) d[p](this.pointAttribs(l, l.selected && \"select\"));\n d && d.addClass(l.getClassName(), !0);\n } else d && (l.graphic = d.destroy());\n }\n },\n markerAttribs: function (a, b) {\n var d = this.options.marker,\n e = a.marker || {},\n c = e.symbol || d.symbol,\n k = h(e.radius, d.radius);\n b && (d = d.states[b], b = e.states && e.states[b], k = h(b && b.radius, d && d.radius, k + (d && d.radiusPlus || 0)));\n a.hasImage = c && 0 === c.indexOf(\"url\");\n a.hasImage && (k = 0);\n a = {\n x: Math.floor(a.plotX) - k,\n y: a.plotY - k\n };\n k && (a.width = a.height = 2 * k);\n return a;\n },\n pointAttribs: function (a, b) {\n var d = this.options.marker,\n e = a && a.options,\n c = e && e.marker || {},\n k = this.color,\n g = e && e.color,\n f = a && a.color;\n e = h(c.lineWidth, d.lineWidth);\n var l = a && a.zone && a.zone.color;\n a = 1;\n k = g || l || f || k;\n g = c.fillColor || d.fillColor || k;\n k = c.lineColor || d.lineColor || k;\n b = b || \"normal\";\n d = d.states[b];\n b = c.states && c.states[b] || {};\n e = h(b.lineWidth, d.lineWidth, e + h(b.lineWidthPlus, d.lineWidthPlus, 0));\n g = b.fillColor || d.fillColor || g;\n k = b.lineColor || d.lineColor || k;\n a = h(b.opacity, d.opacity, a);\n return {\n stroke: k,\n \"stroke-width\": e,\n fill: g,\n opacity: a\n };\n },\n destroy: function (a) {\n var b = this,\n d = b.chart,\n e = /AppleWebKit\\/533/.test(u.navigator.userAgent),\n k,\n g,\n f = b.data || [],\n h,\n n;\n l(b, \"destroy\");\n a || E(b);\n (b.axisTypes || []).forEach(function (a) {\n (n = b[a]) && n.series && (B(n.series, b), n.isDirty = n.forceRedraw = !0);\n });\n b.legendItem && b.chart.legend.destroyItem(b);\n for (g = f.length; g--;) (h = f[g]) && h.destroy && h.destroy();\n b.points = null;\n c.clearTimeout(b.animationTimeout);\n y(b, function (a, b) {\n a instanceof p && !a.survive && (k = e && \"group\" === b ? \"hide\" : \"destroy\", a[k]());\n });\n d.hoverSeries === b && (d.hoverSeries = null);\n B(d.series, b);\n d.orderSeries();\n y(b, function (d, e) {\n a && \"hcEvents\" === e || delete b[e];\n });\n },\n getGraphPath: function (a, b, d) {\n var e = this,\n c = e.options,\n k = c.step,\n g,\n f = [],\n h = [],\n l;\n a = a || e.points;\n (g = a.reversed) && a.reverse();\n (k = {\n right: 1,\n center: 2\n }[k] || k && 3) && g && (k = 4 - k);\n !c.connectNulls || b || d || (a = this.getValidPoints(a));\n a.forEach(function (g, m) {\n var r = g.plotX,\n p = g.plotY,\n u = a[m - 1];\n (g.leftCliff || u && u.rightCliff) && !d && (l = !0);\n g.isNull && !z(b) && 0 < m ? l = !c.connectNulls : g.isNull && !b ? l = !0 : (0 === m || l ? m = [\"M\", g.plotX, g.plotY] : e.getPointSpline ? m = e.getPointSpline(a, g, m) : k ? (m = 1 === k ? [\"L\", u.plotX, p] : 2 === k ? [\"L\", (u.plotX + r) / 2, u.plotY, \"L\", (u.plotX + r) / 2, p] : [\"L\", r, u.plotY], m.push(\"L\", r, p)) : m = [\"L\", r, p], h.push(g.x), k && (h.push(g.x), 2 === k && h.push(g.x)), f.push.apply(f, m), l = !1);\n });\n f.xMap = h;\n return e.graphPath = f;\n },\n drawGraph: function () {\n var a = this,\n b = this.options,\n d = (this.gappedPath || this.getGraphPath).call(this),\n e = this.chart.styledMode,\n c = [[\"graph\", \"highcharts-graph\"]];\n e || c[0].push(b.lineColor || this.color || \"#cccccc\", b.dashStyle);\n c = a.getZonesGraphs(c);\n c.forEach(function (c, k) {\n var g = c[0],\n f = a[g],\n h = f ? \"animate\" : \"attr\";\n f ? (f.endX = a.preventGraphAnimation ? null : d.xMap, f.animate({\n d: d\n })) : d.length && (a[g] = f = a.chart.renderer.path(d).addClass(c[1]).attr({\n zIndex: 1\n }).add(a.group));\n f && !e && (g = {\n stroke: c[2],\n \"stroke-width\": b.lineWidth,\n fill: a.fillGraph && a.color || \"none\"\n }, c[3] ? g.dashstyle = c[3] : \"square\" !== b.linecap && (g[\"stroke-linecap\"] = g[\"stroke-linejoin\"] = \"round\"), f[h](g).shadow(2 > k && b.shadow));\n f && (f.startX = d.xMap, f.isArea = d.isArea);\n });\n },\n getZonesGraphs: function (a) {\n this.zones.forEach(function (b, d) {\n d = [\"zone-graph-\" + d, \"highcharts-graph highcharts-zone-graph-\" + d + \" \" + (b.className || \"\")];\n this.chart.styledMode || d.push(b.color || this.color, b.dashStyle || this.options.dashStyle);\n a.push(d);\n }, this);\n return a;\n },\n applyZones: function () {\n var a = this,\n b = this.chart,\n d = b.renderer,\n e = this.zones,\n c,\n g,\n f = this.clips || [],\n l,\n p = this.graph,\n u = this.area,\n n = Math.max(b.chartWidth, b.chartHeight),\n q = this[(this.zoneAxis || \"y\") + \"Axis\"],\n v = b.inverted,\n y,\n t,\n E,\n C = !1;\n if (e.length && (p || u) && q && void 0 !== q.min) {\n var L = q.reversed;\n var z = q.horiz;\n p && !this.showLine && p.hide();\n u && u.hide();\n var B = q.getExtremes();\n e.forEach(function (e, k) {\n c = L ? z ? b.plotWidth : 0 : z ? 0 : q.toPixels(B.min) || 0;\n c = Math.min(Math.max(h(g, c), 0), n);\n g = Math.min(Math.max(Math.round(q.toPixels(h(e.value, B.max), !0) || 0), 0), n);\n C && (c = g = q.toPixels(B.max));\n y = Math.abs(c - g);\n t = Math.min(c, g);\n E = Math.max(c, g);\n q.isXAxis ? (l = {\n x: v ? E : t,\n y: 0,\n width: y,\n height: n\n }, z || (l.x = b.plotHeight - l.x)) : (l = {\n x: 0,\n y: v ? E : t,\n width: n,\n height: y\n }, z && (l.y = b.plotWidth - l.y));\n v && d.isVML && (l = q.isXAxis ? {\n x: 0,\n y: L ? t : E,\n height: l.width,\n width: b.chartWidth\n } : {\n x: l.y - b.plotLeft - b.spacingBox.x,\n y: 0,\n width: l.height,\n height: b.chartHeight\n });\n f[k] ? f[k].animate(l) : f[k] = d.clipRect(l);\n p && a[\"zone-graph-\" + k].clip(f[k]);\n u && a[\"zone-area-\" + k].clip(f[k]);\n C = e.value > B.max;\n a.resetZones && 0 === g && (g = void 0);\n });\n this.clips = f;\n } else a.visible && (p && p.show(!0), u && u.show(!0));\n },\n invertGroups: function (a) {\n function b() {\n [\"group\", \"markerGroup\"].forEach(function (b) {\n d[b] && (e.renderer.isVML && d[b].attr({\n width: d.yAxis.len,\n height: d.xAxis.len\n }), d[b].width = d.yAxis.len, d[b].height = d.xAxis.len, d[b].invert(a));\n });\n }\n var d = this,\n e = d.chart;\n if (d.xAxis) {\n var c = g(e, \"resize\", b);\n g(d, \"destroy\", c);\n b(a);\n d.invertGroups = b;\n }\n },\n plotGroup: function (a, b, d, e, c) {\n var k = this[a],\n g = !k;\n g && (this[a] = k = this.chart.renderer.g().attr({\n zIndex: e || .1\n }).add(c));\n k.addClass(\"highcharts-\" + b + \" highcharts-series-\" + this.index + \" highcharts-\" + this.type + \"-series \" + (z(this.colorIndex) ? \"highcharts-color-\" + this.colorIndex + \" \" : \"\") + (this.options.className || \"\") + (k.hasClass(\"highcharts-tracker\") ? \" highcharts-tracker\" : \"\"), !0);\n k.attr({\n visibility: d\n })[g ? \"attr\" : \"animate\"](this.getPlotBox());\n return k;\n },\n getPlotBox: function () {\n var a = this.chart,\n b = this.xAxis,\n d = this.yAxis;\n a.inverted && (b = d, d = this.xAxis);\n return {\n translateX: b ? b.left : a.plotLeft,\n translateY: d ? d.top : a.plotTop,\n scaleX: 1,\n scaleY: 1\n };\n },\n render: function () {\n var a = this,\n d = a.chart,\n e = a.options,\n c = !!a.animate && d.renderer.isSVG && b(e.animation).duration,\n g = a.visible ? \"inherit\" : \"hidden\",\n f = e.zIndex,\n h = a.hasRendered,\n p = d.seriesGroup,\n u = d.inverted;\n l(this, \"render\");\n var n = a.plotGroup(\"group\", \"series\", g, f, p);\n a.markerGroup = a.plotGroup(\"markerGroup\", \"markers\", g, f, p);\n c && a.animate(!0);\n n.inverted = a.isCartesian || a.invertable ? u : !1;\n a.drawGraph && (a.drawGraph(), a.applyZones());\n a.visible && a.drawPoints();\n a.drawDataLabels && a.drawDataLabels();\n a.redrawPoints && a.redrawPoints();\n a.drawTracker && !1 !== a.options.enableMouseTracking && a.drawTracker();\n a.invertGroups(u);\n !1 === e.clip || a.sharedClipKey || h || n.clip(d.clipRect);\n c && a.animate();\n h || (a.animationTimeout = q(function () {\n a.afterAnimate();\n }, c || 0));\n a.isDirty = !1;\n a.hasRendered = !0;\n l(a, \"afterRender\");\n },\n redraw: function () {\n var a = this.chart,\n b = this.isDirty || this.isDirtyData,\n d = this.group,\n e = this.xAxis,\n c = this.yAxis;\n d && (a.inverted && d.attr({\n width: a.plotWidth,\n height: a.plotHeight\n }), d.animate({\n translateX: h(e && e.left, a.plotLeft),\n translateY: h(c && c.top, a.plotTop)\n }));\n this.translate();\n this.render();\n b && delete this.kdTree;\n },\n kdAxisArray: [\"clientX\", \"plotY\"],\n searchPoint: function (a, b) {\n var d = this.xAxis,\n e = this.yAxis,\n c = this.chart.inverted;\n return this.searchKDTree({\n clientX: c ? d.len - a.chartY + d.pos : a.chartX - d.pos,\n plotY: c ? e.len - a.chartX + e.pos : a.chartY - e.pos\n }, b, a);\n },\n buildKDTree: function (a) {\n function b(a, e, c) {\n var g;\n if (g = a && a.length) {\n var k = d.kdAxisArray[e % c];\n a.sort(function (a, b) {\n return a[k] - b[k];\n });\n g = Math.floor(g / 2);\n return {\n point: a[g],\n left: b(a.slice(0, g), e + 1, c),\n right: b(a.slice(g + 1), e + 1, c)\n };\n }\n }\n this.buildingKdTree = !0;\n var d = this,\n e = -1 < d.options.findNearestPointBy.indexOf(\"y\") ? 2 : 1;\n delete d.kdTree;\n q(function () {\n d.kdTree = b(d.getValidPoints(null, !d.directTouch), e, e);\n d.buildingKdTree = !1;\n }, d.options.kdNow || a && \"touchstart\" === a.type ? 0 : 1);\n },\n searchKDTree: function (a, b, d) {\n function e(a, b, d, h) {\n var l = b.point,\n m = c.kdAxisArray[d % h],\n p = l;\n var r = z(a[g]) && z(l[g]) ? Math.pow(a[g] - l[g], 2) : null;\n var u = z(a[k]) && z(l[k]) ? Math.pow(a[k] - l[k], 2) : null;\n u = (r || 0) + (u || 0);\n l.dist = z(u) ? Math.sqrt(u) : Number.MAX_VALUE;\n l.distX = z(r) ? Math.sqrt(r) : Number.MAX_VALUE;\n m = a[m] - l[m];\n u = 0 > m ? \"left\" : \"right\";\n r = 0 > m ? \"right\" : \"left\";\n b[u] && (u = e(a, b[u], d + 1, h), p = u[f] < p[f] ? u : l);\n b[r] && Math.sqrt(m * m) < p[f] && (a = e(a, b[r], d + 1, h), p = a[f] < p[f] ? a : p);\n return p;\n }\n var c = this,\n g = this.kdAxisArray[0],\n k = this.kdAxisArray[1],\n f = b ? \"distX\" : \"dist\";\n b = -1 < c.options.findNearestPointBy.indexOf(\"y\") ? 2 : 1;\n this.kdTree || this.buildingKdTree || this.buildKDTree(d);\n if (this.kdTree) return e(a, this.kdTree, b, b);\n },\n pointPlacementToXValue: function () {\n var a = this.xAxis,\n b = this.options.pointPlacement;\n \"between\" === b && (b = a.reversed ? -.5 : .5);\n C(b) && (b *= h(this.options.pointRange || a.pointRange));\n return b;\n }\n });\n \"\";\n });\n M(I, \"parts/Stacking.js\", [I[\"parts/Globals.js\"], I[\"parts/Utilities.js\"]], function (c, f) {\n var F = f.defined,\n G = f.destroyObjectProperties,\n z = f.objectEach,\n B = f.pick;\n f = c.Axis;\n var t = c.Chart,\n v = c.correctFloat,\n C = c.format,\n H = c.Series;\n c.StackItem = function (c, f, n, q, g) {\n var b = c.chart.inverted;\n this.axis = c;\n this.isNegative = n;\n this.options = f = f || {};\n this.x = q;\n this.total = null;\n this.points = {};\n this.stack = g;\n this.rightCliff = this.leftCliff = 0;\n this.alignOptions = {\n align: f.align || (b ? n ? \"left\" : \"right\" : \"center\"),\n verticalAlign: f.verticalAlign || (b ? \"middle\" : n ? \"bottom\" : \"top\"),\n y: f.y,\n x: f.x\n };\n this.textAlign = f.textAlign || (b ? n ? \"right\" : \"left\" : \"center\");\n };\n c.StackItem.prototype = {\n destroy: function () {\n G(this, this.axis);\n },\n render: function (c) {\n var f = this.axis.chart,\n n = this.options,\n q = n.format;\n q = q ? C(q, this, f.time) : n.formatter.call(this);\n this.label ? this.label.attr({\n text: q,\n visibility: \"hidden\"\n }) : (this.label = f.renderer.label(q, null, null, n.shape, null, null, n.useHTML, !1, \"stack-labels\"), q = {\n text: q,\n align: this.textAlign,\n rotation: n.rotation,\n padding: B(n.padding, 0),\n visibility: \"hidden\"\n }, this.label.attr(q), f.styledMode || this.label.css(n.style), this.label.added || this.label.add(c));\n this.label.labelrank = f.plotHeight;\n },\n setOffset: function (c, f, n, q, g) {\n var b = this.axis,\n a = b.chart;\n q = b.translate(b.usePercentage ? 100 : q ? q : this.total, 0, 0, 0, 1);\n n = b.translate(n ? n : 0);\n n = F(q) && Math.abs(q - n);\n c = B(g, a.xAxis[0].translate(this.x)) + c;\n b = F(q) && this.getStackBox(a, this, c, q, f, n, b);\n f = this.label;\n c = this.isNegative;\n g = \"justify\" === B(this.options.overflow, \"justify\");\n if (f && b) {\n n = f.getBBox();\n var d = a.inverted ? c ? n.width : 0 : n.width / 2,\n e = a.inverted ? n.height / 2 : c ? -4 : n.height + 4;\n this.alignOptions.x = B(this.options.x, 0);\n f.align(this.alignOptions, null, b);\n q = f.alignAttr;\n f.show();\n q.y -= e;\n g && (q.x -= d, H.prototype.justifyDataLabel.call(this.axis, f, this.alignOptions, q, n, b), q.x += d);\n q.x = f.alignAttr.x;\n f.attr({\n x: q.x,\n y: q.y\n });\n B(!g && this.options.crop, !0) && ((a = a.isInsidePlot(f.x + (a.inverted ? 0 : -n.width / 2), f.y) && a.isInsidePlot(f.x + (a.inverted ? c ? -n.width : n.width : n.width / 2), f.y + n.height)) || f.hide());\n }\n },\n getStackBox: function (c, f, n, q, g, b, a) {\n var d = f.axis.reversed,\n e = c.inverted;\n c = a.height + a.pos - (e ? c.plotLeft : c.plotTop);\n f = f.isNegative && !d || !f.isNegative && d;\n return {\n x: e ? f ? q : q - b : n,\n y: e ? c - n - g : f ? c - q - b : c - q,\n width: e ? b : g,\n height: e ? g : b\n };\n }\n };\n t.prototype.getStacks = function () {\n var c = this,\n f = c.inverted;\n c.yAxis.forEach(function (c) {\n c.stacks && c.hasVisibleSeries && (c.oldStacks = c.stacks);\n });\n c.series.forEach(function (h) {\n var n = h.xAxis && h.xAxis.options || {};\n !h.options.stacking || !0 !== h.visible && !1 !== c.options.chart.ignoreHiddenSeries || (h.stackKey = [h.type, B(h.options.stack, \"\"), f ? n.top : n.left, f ? n.height : n.width].join());\n });\n };\n f.prototype.buildStacks = function () {\n var c = this.series,\n f = B(this.options.reversedStacks, !0),\n n = c.length,\n q;\n if (!this.isXAxis) {\n this.usePercentage = !1;\n for (q = n; q--;) c[f ? q : n - q - 1].setStackedPoints();\n for (q = 0; q < n; q++) c[q].modifyStacks();\n }\n };\n f.prototype.renderStackTotals = function () {\n var c = this.chart,\n f = c.renderer,\n n = this.stacks,\n q = this.stackTotalGroup;\n q || (this.stackTotalGroup = q = f.g(\"stack-labels\").attr({\n visibility: \"visible\",\n zIndex: 6\n }).add());\n q.translate(c.plotLeft, c.plotTop);\n z(n, function (c) {\n z(c, function (b) {\n b.render(q);\n });\n });\n };\n f.prototype.resetStacks = function () {\n var c = this,\n f = c.stacks;\n c.isXAxis || z(f, function (f) {\n z(f, function (h, g) {\n h.touched < c.stacksTouched ? (h.destroy(), delete f[g]) : (h.total = null, h.cumulative = null);\n });\n });\n };\n f.prototype.cleanStacks = function () {\n if (!this.isXAxis) {\n if (this.oldStacks) var c = this.stacks = this.oldStacks;\n z(c, function (c) {\n z(c, function (c) {\n c.cumulative = c.total;\n });\n });\n }\n };\n H.prototype.setStackedPoints = function () {\n if (this.options.stacking && (!0 === this.visible || !1 === this.chart.options.chart.ignoreHiddenSeries)) {\n var f = this.processedXData,\n h = this.processedYData,\n n = [],\n q = h.length,\n g = this.options,\n b = g.threshold,\n a = B(g.startFromThreshold && b, 0),\n d = g.stack;\n g = g.stacking;\n var e = this.stackKey,\n l = \"-\" + e,\n t = this.negStacks,\n E = this.yAxis,\n p = E.stacks,\n u = E.oldStacks,\n k,\n r;\n E.stacksTouched += 1;\n for (r = 0; r < q; r++) {\n var x = f[r];\n var A = h[r];\n var w = this.getStackIndicator(w, x, this.index);\n var m = w.key;\n var K = (k = t && A < (a ? 0 : b)) ? l : e;\n p[K] || (p[K] = {});\n p[K][x] || (u[K] && u[K][x] ? (p[K][x] = u[K][x], p[K][x].total = null) : p[K][x] = new c.StackItem(E, E.options.stackLabels, k, x, d));\n K = p[K][x];\n null !== A ? (K.points[m] = K.points[this.index] = [B(K.cumulative, a)], F(K.cumulative) || (K.base = m), K.touched = E.stacksTouched, 0 < w.index && !1 === this.singleStacks && (K.points[m][0] = K.points[this.index + \",\" + x + \",0\"][0])) : K.points[m] = K.points[this.index] = null;\n \"percent\" === g ? (k = k ? e : l, t && p[k] && p[k][x] ? (k = p[k][x], K.total = k.total = Math.max(k.total, K.total) + Math.abs(A) || 0) : K.total = v(K.total + (Math.abs(A) || 0))) : K.total = v(K.total + (A || 0));\n K.cumulative = B(K.cumulative, a) + (A || 0);\n null !== A && (K.points[m].push(K.cumulative), n[r] = K.cumulative);\n }\n \"percent\" === g && (E.usePercentage = !0);\n this.stackedYData = n;\n E.oldStacks = {};\n }\n };\n H.prototype.modifyStacks = function () {\n var c = this,\n f = c.stackKey,\n n = c.yAxis.stacks,\n q = c.processedXData,\n g,\n b = c.options.stacking;\n c[b + \"Stacker\"] && [f, \"-\" + f].forEach(function (a) {\n for (var d = q.length, e, f; d--;) if (e = q[d], g = c.getStackIndicator(g, e, c.index, a), f = (e = n[a] && n[a][e]) && e.points[g.key]) c[b + \"Stacker\"](f, e, d);\n });\n };\n H.prototype.percentStacker = function (c, f, n) {\n f = f.total ? 100 / f.total : 0;\n c[0] = v(c[0] * f);\n c[1] = v(c[1] * f);\n this.stackedYData[n] = c[1];\n };\n H.prototype.getStackIndicator = function (c, f, n, q) {\n !F(c) || c.x !== f || q && c.key !== q ? c = {\n x: f,\n index: 0,\n key: q\n } : c.index++;\n c.key = [n, f, c.index].join();\n return c;\n };\n });\n M(I, \"parts/Dynamics.js\", [I[\"parts/Globals.js\"], I[\"parts/Utilities.js\"]], function (c, f) {\n var F = f.defined,\n G = f.erase,\n z = f.extend,\n B = f.isArray,\n t = f.isNumber,\n v = f.isObject,\n C = f.isString,\n H = f.objectEach,\n y = f.pick,\n h = f.setAnimation,\n n = f.splat,\n q = c.addEvent,\n g = c.animate,\n b = c.Axis;\n f = c.Chart;\n var a = c.createElement,\n d = c.css,\n e = c.fireEvent,\n l = c.merge,\n L = c.Point,\n E = c.Series,\n p = c.seriesTypes;\n c.cleanRecursively = function (a, b) {\n var d = {};\n H(a, function (e, g) {\n if (v(a[g], !0) && !a.nodeType && b[g]) e = c.cleanRecursively(a[g], b[g]), Object.keys(e).length && (d[g] = e);else if (v(a[g]) || a[g] !== b[g]) d[g] = a[g];\n });\n return d;\n };\n z(f.prototype, {\n addSeries: function (a, b, d) {\n var c,\n g = this;\n a && (b = y(b, !0), e(g, \"addSeries\", {\n options: a\n }, function () {\n c = g.initSeries(a);\n g.isDirtyLegend = !0;\n g.linkSeries();\n e(g, \"afterAddSeries\", {\n series: c\n });\n b && g.redraw(d);\n }));\n return c;\n },\n addAxis: function (a, b, d, c) {\n return this.createAxis(b ? \"xAxis\" : \"yAxis\", {\n axis: a,\n redraw: d,\n animation: c\n });\n },\n addColorAxis: function (a, b, d) {\n return this.createAxis(\"colorAxis\", {\n axis: a,\n redraw: b,\n animation: d\n });\n },\n createAxis: function (a, d) {\n var e = this.options,\n g = \"colorAxis\" === a,\n k = d.redraw,\n f = d.animation;\n d = l(d.axis, {\n index: this[a].length,\n isX: \"xAxis\" === a\n });\n var h = g ? new c.ColorAxis(this, d) : new b(this, d);\n e[a] = n(e[a] || {});\n e[a].push(d);\n g && (this.isDirtyLegend = !0, this.axes.forEach(function (a) {\n a.series = [];\n }), this.series.forEach(function (a) {\n a.bindAxes();\n a.isDirtyData = !0;\n }));\n y(k, !0) && this.redraw(f);\n return h;\n },\n showLoading: function (b) {\n var c = this,\n e = c.options,\n f = c.loadingDiv,\n h = e.loading,\n l = function () {\n f && d(f, {\n left: c.plotLeft + \"px\",\n top: c.plotTop + \"px\",\n width: c.plotWidth + \"px\",\n height: c.plotHeight + \"px\"\n });\n };\n f || (c.loadingDiv = f = a(\"div\", {\n className: \"highcharts-loading highcharts-loading-hidden\"\n }, null, c.container), c.loadingSpan = a(\"span\", {\n className: \"highcharts-loading-inner\"\n }, null, f), q(c, \"redraw\", l));\n f.className = \"highcharts-loading\";\n c.loadingSpan.innerHTML = y(b, e.lang.loading, \"\");\n c.styledMode || (d(f, z(h.style, {\n zIndex: 10\n })), d(c.loadingSpan, h.labelStyle), c.loadingShown || (d(f, {\n opacity: 0,\n display: \"\"\n }), g(f, {\n opacity: h.style.opacity || .5\n }, {\n duration: h.showDuration || 0\n })));\n c.loadingShown = !0;\n l();\n },\n hideLoading: function () {\n var a = this.options,\n b = this.loadingDiv;\n b && (b.className = \"highcharts-loading highcharts-loading-hidden\", this.styledMode || g(b, {\n opacity: 0\n }, {\n duration: a.loading.hideDuration || 100,\n complete: function () {\n d(b, {\n display: \"none\"\n });\n }\n }));\n this.loadingShown = !1;\n },\n propsRequireDirtyBox: \"backgroundColor borderColor borderWidth borderRadius plotBackgroundColor plotBackgroundImage plotBorderColor plotBorderWidth plotShadow shadow\".split(\" \"),\n propsRequireReflow: \"margin marginTop marginRight marginBottom marginLeft spacing spacingTop spacingRight spacingBottom spacingLeft\".split(\" \"),\n propsRequireUpdateSeries: \"chart.inverted chart.polar chart.ignoreHiddenSeries chart.type colors plotOptions time tooltip\".split(\" \"),\n collectionsWithUpdate: \"xAxis yAxis zAxis colorAxis series pane\".split(\" \"),\n update: function (a, b, d, g) {\n var k = this,\n f = {\n credits: \"addCredits\",\n title: \"setTitle\",\n subtitle: \"setSubtitle\",\n caption: \"setCaption\"\n },\n h,\n p,\n r,\n u = a.isResponsiveOptions,\n q = [];\n e(k, \"update\", {\n options: a\n });\n u || k.setResponsive(!1, !0);\n a = c.cleanRecursively(a, k.options);\n l(!0, k.userOptions, a);\n if (h = a.chart) {\n l(!0, k.options.chart, h);\n \"className\" in h && k.setClassName(h.className);\n \"reflow\" in h && k.setReflow(h.reflow);\n if (\"inverted\" in h || \"polar\" in h || \"type\" in h) {\n k.propFromSeries();\n var x = !0;\n }\n \"alignTicks\" in h && (x = !0);\n H(h, function (a, b) {\n -1 !== k.propsRequireUpdateSeries.indexOf(\"chart.\" + b) && (p = !0);\n -1 !== k.propsRequireDirtyBox.indexOf(b) && (k.isDirtyBox = !0);\n u || -1 === k.propsRequireReflow.indexOf(b) || (r = !0);\n });\n !k.styledMode && \"style\" in h && k.renderer.setStyle(h.style);\n }\n !k.styledMode && a.colors && (this.options.colors = a.colors);\n a.plotOptions && l(!0, this.options.plotOptions, a.plotOptions);\n a.time && this.time === c.time && (this.time = new c.Time(a.time));\n H(a, function (a, b) {\n if (k[b] && \"function\" === typeof k[b].update) k[b].update(a, !1);else if (\"function\" === typeof k[f[b]]) k[f[b]](a);\n \"chart\" !== b && -1 !== k.propsRequireUpdateSeries.indexOf(b) && (p = !0);\n });\n this.collectionsWithUpdate.forEach(function (b) {\n if (a[b]) {\n if (\"series\" === b) {\n var c = [];\n k[b].forEach(function (a, b) {\n a.options.isInternal || c.push(y(a.options.index, b));\n });\n }\n n(a[b]).forEach(function (a, e) {\n (e = F(a.id) && k.get(a.id) || k[b][c ? c[e] : e]) && e.coll === b && (e.update(a, !1), d && (e.touched = !0));\n !e && d && k.collectionsWithInit[b] && (k.collectionsWithInit[b][0].apply(k, [a].concat(k.collectionsWithInit[b][1] || []).concat([!1])).touched = !0);\n });\n d && k[b].forEach(function (a) {\n a.touched || a.options.isInternal ? delete a.touched : q.push(a);\n });\n }\n });\n q.forEach(function (a) {\n a.remove && a.remove(!1);\n });\n x && k.axes.forEach(function (a) {\n a.update({}, !1);\n });\n p && k.series.forEach(function (a) {\n a.update({}, !1);\n });\n a.loading && l(!0, k.options.loading, a.loading);\n x = h && h.width;\n h = h && h.height;\n C(h) && (h = c.relativeLength(h, x || k.chartWidth));\n r || t(x) && x !== k.chartWidth || t(h) && h !== k.chartHeight ? k.setSize(x, h, g) : y(b, !0) && k.redraw(g);\n e(k, \"afterUpdate\", {\n options: a,\n redraw: b,\n animation: g\n });\n },\n setSubtitle: function (a, b) {\n this.applyDescription(\"subtitle\", a);\n this.layOutTitles(b);\n },\n setCaption: function (a, b) {\n this.applyDescription(\"caption\", a);\n this.layOutTitles(b);\n }\n });\n f.prototype.collectionsWithInit = {\n xAxis: [f.prototype.addAxis, [!0]],\n yAxis: [f.prototype.addAxis, [!1]],\n colorAxis: [f.prototype.addColorAxis, [!1]],\n series: [f.prototype.addSeries]\n };\n z(L.prototype, {\n update: function (a, b, d, c) {\n function e() {\n g.applyOptions(a);\n null === g.y && f && (g.graphic = f.destroy());\n v(a, !0) && (f && f.element && a && a.marker && void 0 !== a.marker.symbol && (g.graphic = f.destroy()), a && a.dataLabels && g.dataLabel && (g.dataLabel = g.dataLabel.destroy()), g.connector && (g.connector = g.connector.destroy()));\n h = g.index;\n k.updateParallelArrays(g, h);\n p.data[h] = v(p.data[h], !0) || v(a, !0) ? g.options : y(a, p.data[h]);\n k.isDirty = k.isDirtyData = !0;\n !k.fixedBox && k.hasCartesianSeries && (l.isDirtyBox = !0);\n \"point\" === p.legendType && (l.isDirtyLegend = !0);\n b && l.redraw(d);\n }\n var g = this,\n k = g.series,\n f = g.graphic,\n h,\n l = k.chart,\n p = k.options;\n b = y(b, !0);\n !1 === c ? e() : g.firePointEvent(\"update\", {\n options: a\n }, e);\n },\n remove: function (a, b) {\n this.series.removePoint(this.series.data.indexOf(this), a, b);\n }\n });\n z(E.prototype, {\n addPoint: function (a, b, d, c, g) {\n var k = this.options,\n f = this.data,\n h = this.chart,\n l = this.xAxis;\n l = l && l.hasNames && l.names;\n var p = k.data,\n r = this.xData,\n n;\n b = y(b, !0);\n var u = {\n series: this\n };\n this.pointClass.prototype.applyOptions.apply(u, [a]);\n var q = u.x;\n var x = r.length;\n if (this.requireSorting && q < r[x - 1]) for (n = !0; x && r[x - 1] > q;) x--;\n this.updateParallelArrays(u, \"splice\", x, 0, 0);\n this.updateParallelArrays(u, x);\n l && u.name && (l[q] = u.name);\n p.splice(x, 0, a);\n n && (this.data.splice(x, 0, null), this.processData());\n \"point\" === k.legendType && this.generatePoints();\n d && (f[0] && f[0].remove ? f[0].remove(!1) : (f.shift(), this.updateParallelArrays(u, \"shift\"), p.shift()));\n !1 !== g && e(this, \"addPoint\", {\n point: u\n });\n this.isDirtyData = this.isDirty = !0;\n b && h.redraw(c);\n },\n removePoint: function (a, b, d) {\n var c = this,\n e = c.data,\n g = e[a],\n k = c.points,\n f = c.chart,\n l = function () {\n k && k.length === e.length && k.splice(a, 1);\n e.splice(a, 1);\n c.options.data.splice(a, 1);\n c.updateParallelArrays(g || {\n series: c\n }, \"splice\", a, 1);\n g && g.destroy();\n c.isDirty = !0;\n c.isDirtyData = !0;\n b && f.redraw();\n };\n h(d, f);\n b = y(b, !0);\n g ? g.firePointEvent(\"remove\", null, l) : l();\n },\n remove: function (a, b, d, c) {\n function g() {\n k.destroy(c);\n k.remove = null;\n f.isDirtyLegend = f.isDirtyBox = !0;\n f.linkSeries();\n y(a, !0) && f.redraw(b);\n }\n var k = this,\n f = k.chart;\n !1 !== d ? e(k, \"remove\", null, g) : g();\n },\n update: function (a, b) {\n a = c.cleanRecursively(a, this.userOptions);\n e(this, \"update\", {\n options: a\n });\n var d = this,\n g = d.chart,\n k = d.userOptions,\n f = d.initialType || d.type,\n h = a.type || k.type || g.options.chart.type,\n n = !(this.hasDerivedData || a.dataGrouping || h && h !== this.type || void 0 !== a.pointStart || a.pointInterval || a.pointIntervalUnit || a.keys),\n u = p[f].prototype,\n q,\n v = [\"group\", \"markerGroup\", \"dataLabelsGroup\", \"transformGroup\"],\n t = [\"eventOptions\", \"navigatorSeries\", \"baseSeries\"],\n E = d.finishedAnimating && {\n animation: !1\n },\n C = {};\n n && (t.push(\"data\", \"isDirtyData\", \"points\", \"processedXData\", \"processedYData\", \"xIncrement\", \"_hasPointMarkers\", \"_hasPointLabels\", \"mapMap\", \"mapData\", \"minY\", \"maxY\", \"minX\", \"maxX\"), !1 !== a.visible && t.push(\"area\", \"graph\"), d.parallelArrays.forEach(function (a) {\n t.push(a + \"Data\");\n }), a.data && this.setData(a.data, !1));\n a = l(k, E, {\n index: void 0 === k.index ? d.index : k.index,\n pointStart: y(k.pointStart, d.xData[0])\n }, !n && {\n data: d.options.data\n }, a);\n n && a.data && (a.data = d.options.data);\n t = v.concat(t);\n t.forEach(function (a) {\n t[a] = d[a];\n delete d[a];\n });\n d.remove(!1, null, !1, !0);\n for (q in u) d[q] = void 0;\n p[h || f] ? z(d, p[h || f].prototype) : c.error(17, !0, g, {\n missingModuleFor: h || f\n });\n t.forEach(function (a) {\n d[a] = t[a];\n });\n d.init(g, a);\n if (n && this.points) {\n var L = d.options;\n !1 === L.visible ? (C.graphic = 1, C.dataLabel = 1) : d._hasPointLabels || (h = L.marker, u = L.dataLabels, h && (!1 === h.enabled || \"symbol\" in h) && (C.graphic = 1), u && !1 === u.enabled && (C.dataLabel = 1));\n this.points.forEach(function (a) {\n a && a.series && (a.resolveColor(), Object.keys(C).length && a.destroyElements(C), !1 === L.showInLegend && a.legendItem && g.legend.destroyItem(a));\n }, this);\n }\n a.zIndex !== k.zIndex && v.forEach(function (b) {\n d[b] && d[b].attr({\n zIndex: a.zIndex\n });\n });\n d.initialType = f;\n g.linkSeries();\n e(this, \"afterUpdate\");\n y(b, !0) && g.redraw(n ? void 0 : !1);\n },\n setName: function (a) {\n this.name = this.options.name = this.userOptions.name = a;\n this.chart.isDirtyLegend = !0;\n }\n });\n z(b.prototype, {\n update: function (a, b) {\n var d = this.chart,\n c = a && a.events || {};\n a = l(this.userOptions, a);\n d.options[this.coll].indexOf && (d.options[this.coll][d.options[this.coll].indexOf(this.userOptions)] = a);\n H(d.options[this.coll].events, function (a, b) {\n \"undefined\" === typeof c[b] && (c[b] = void 0);\n });\n this.destroy(!0);\n this.init(d, z(a, {\n events: c\n }));\n d.isDirtyBox = !0;\n y(b, !0) && d.redraw();\n },\n remove: function (a) {\n for (var b = this.chart, d = this.coll, c = this.series, e = c.length; e--;) c[e] && c[e].remove(!1);\n G(b.axes, this);\n G(b[d], this);\n B(b.options[d]) ? b.options[d].splice(this.options.index, 1) : delete b.options[d];\n b[d].forEach(function (a, b) {\n a.options.index = a.userOptions.index = b;\n });\n this.destroy();\n b.isDirtyBox = !0;\n y(a, !0) && b.redraw();\n },\n setTitle: function (a, b) {\n this.update({\n title: a\n }, b);\n },\n setCategories: function (a, b) {\n this.update({\n categories: a\n }, b);\n }\n });\n });\n M(I, \"parts/AreaSeries.js\", [I[\"parts/Globals.js\"], I[\"parts/Utilities.js\"]], function (c, f) {\n var F = f.objectEach,\n G = f.pick,\n z = c.color,\n B = c.Series;\n f = c.seriesType;\n f(\"area\", \"line\", {\n softThreshold: !1,\n threshold: 0\n }, {\n singleStacks: !1,\n getStackPoints: function (c) {\n var f = [],\n t = [],\n z = this.xAxis,\n y = this.yAxis,\n h = y.stacks[this.stackKey],\n n = {},\n q = this.index,\n g = y.series,\n b = g.length,\n a = G(y.options.reversedStacks, !0) ? 1 : -1,\n d;\n c = c || this.points;\n if (this.options.stacking) {\n for (d = 0; d < c.length; d++) c[d].leftNull = c[d].rightNull = void 0, n[c[d].x] = c[d];\n F(h, function (a, b) {\n null !== a.total && t.push(b);\n });\n t.sort(function (a, b) {\n return a - b;\n });\n var e = g.map(function (a) {\n return a.visible;\n });\n t.forEach(function (c, g) {\n var l = 0,\n p,\n u;\n if (n[c] && !n[c].isNull) f.push(n[c]), [-1, 1].forEach(function (k) {\n var f = 1 === k ? \"rightNull\" : \"leftNull\",\n l = 0,\n v = h[t[g + k]];\n if (v) for (d = q; 0 <= d && d < b;) p = v.points[d], p || (d === q ? n[c][f] = !0 : e[d] && (u = h[c].points[d]) && (l -= u[1] - u[0])), d += a;\n n[c][1 === k ? \"rightCliff\" : \"leftCliff\"] = l;\n });else {\n for (d = q; 0 <= d && d < b;) {\n if (p = h[c].points[d]) {\n l = p[1];\n break;\n }\n d += a;\n }\n l = y.translate(l, 0, 1, 0, 1);\n f.push({\n isNull: !0,\n plotX: z.translate(c, 0, 0, 0, 1),\n x: c,\n plotY: l,\n yBottom: l\n });\n }\n });\n }\n return f;\n },\n getGraphPath: function (c) {\n var f = B.prototype.getGraphPath,\n t = this.options,\n z = t.stacking,\n y = this.yAxis,\n h,\n n = [],\n q = [],\n g = this.index,\n b = y.stacks[this.stackKey],\n a = t.threshold,\n d = Math.round(y.getThreshold(t.threshold));\n t = G(t.connectNulls, \"percent\" === z);\n var e = function (e, f, k) {\n var h = c[e];\n e = z && b[h.x].points[g];\n var l = h[k + \"Null\"] || 0;\n k = h[k + \"Cliff\"] || 0;\n h = !0;\n if (k || l) {\n var p = (l ? e[0] : e[1]) + k;\n var u = e[0] + k;\n h = !!l;\n } else !z && c[f] && c[f].isNull && (p = u = a);\n void 0 !== p && (q.push({\n plotX: L,\n plotY: null === p ? d : y.getThreshold(p),\n isNull: h,\n isCliff: !0\n }), n.push({\n plotX: L,\n plotY: null === u ? d : y.getThreshold(u),\n doCurve: !1\n }));\n };\n c = c || this.points;\n z && (c = this.getStackPoints(c));\n for (h = 0; h < c.length; h++) {\n z || (c[h].leftCliff = c[h].rightCliff = c[h].leftNull = c[h].rightNull = void 0);\n var l = c[h].isNull;\n var L = G(c[h].rectPlotX, c[h].plotX);\n var E = G(c[h].yBottom, d);\n if (!l || t) t || e(h, h - 1, \"left\"), l && !z && t || (q.push(c[h]), n.push({\n x: h,\n plotX: L,\n plotY: E\n })), t || e(h, h + 1, \"right\");\n }\n h = f.call(this, q, !0, !0);\n n.reversed = !0;\n l = f.call(this, n, !0, !0);\n l.length && (l[0] = \"L\");\n l = h.concat(l);\n f = f.call(this, q, !1, t);\n l.xMap = h.xMap;\n this.areaPath = l;\n return f;\n },\n drawGraph: function () {\n this.areaPath = [];\n B.prototype.drawGraph.apply(this);\n var c = this,\n f = this.areaPath,\n C = this.options,\n H = [[\"area\", \"highcharts-area\", this.color, C.fillColor]];\n this.zones.forEach(function (f, h) {\n H.push([\"zone-area-\" + h, \"highcharts-area highcharts-zone-area-\" + h + \" \" + f.className, f.color || c.color, f.fillColor || C.fillColor]);\n });\n H.forEach(function (v) {\n var h = v[0],\n n = c[h],\n q = n ? \"animate\" : \"attr\",\n g = {};\n n ? (n.endX = c.preventGraphAnimation ? null : f.xMap, n.animate({\n d: f\n })) : (g.zIndex = 0, n = c[h] = c.chart.renderer.path(f).addClass(v[1]).add(c.group), n.isArea = !0);\n c.chart.styledMode || (g.fill = G(v[3], z(v[2]).setOpacity(G(C.fillOpacity, .75)).get()));\n n[q](g);\n n.startX = f.xMap;\n n.shiftUnit = C.step ? 2 : 1;\n });\n },\n drawLegendSymbol: c.LegendSymbolMixin.drawRectangle\n });\n \"\";\n });\n M(I, \"parts/SplineSeries.js\", [I[\"parts/Globals.js\"], I[\"parts/Utilities.js\"]], function (c, f) {\n var F = f.pick;\n c = c.seriesType;\n c(\"spline\", \"line\", {}, {\n getPointSpline: function (c, f, B) {\n var t = f.plotX,\n v = f.plotY,\n C = c[B - 1];\n B = c[B + 1];\n if (C && !C.isNull && !1 !== C.doCurve && !f.isCliff && B && !B.isNull && !1 !== B.doCurve && !f.isCliff) {\n c = C.plotY;\n var z = B.plotX;\n B = B.plotY;\n var y = 0;\n var h = (1.5 * t + C.plotX) / 2.5;\n var n = (1.5 * v + c) / 2.5;\n z = (1.5 * t + z) / 2.5;\n var q = (1.5 * v + B) / 2.5;\n z !== h && (y = (q - n) * (z - t) / (z - h) + v - q);\n n += y;\n q += y;\n n > c && n > v ? (n = Math.max(c, v), q = 2 * v - n) : n < c && n < v && (n = Math.min(c, v), q = 2 * v - n);\n q > B && q > v ? (q = Math.max(B, v), n = 2 * v - q) : q < B && q < v && (q = Math.min(B, v), n = 2 * v - q);\n f.rightContX = z;\n f.rightContY = q;\n }\n f = [\"C\", F(C.rightContX, C.plotX), F(C.rightContY, C.plotY), F(h, t), F(n, v), t, v];\n C.rightContX = C.rightContY = null;\n return f;\n }\n });\n \"\";\n });\n M(I, \"parts/AreaSplineSeries.js\", [I[\"parts/Globals.js\"]], function (c) {\n var f = c.seriesTypes.area.prototype,\n F = c.seriesType;\n F(\"areaspline\", \"spline\", c.defaultPlotOptions.area, {\n getStackPoints: f.getStackPoints,\n getGraphPath: f.getGraphPath,\n drawGraph: f.drawGraph,\n drawLegendSymbol: c.LegendSymbolMixin.drawRectangle\n });\n \"\";\n });\n M(I, \"parts/ColumnSeries.js\", [I[\"parts/Globals.js\"], I[\"parts/Utilities.js\"]], function (c, f) {\n var F = f.defined,\n G = f.extend,\n z = f.isNumber,\n B = f.pick,\n t = c.animObject,\n v = c.color,\n C = c.merge,\n H = c.Series;\n f = c.seriesType;\n var y = c.svg;\n f(\"column\", \"line\", {\n borderRadius: 0,\n crisp: !0,\n groupPadding: .2,\n marker: null,\n pointPadding: .1,\n minPointLength: 0,\n cropThreshold: 50,\n pointRange: null,\n states: {\n hover: {\n halo: !1,\n brightness: .1\n },\n select: {\n color: \"#cccccc\",\n borderColor: \"#000000\"\n }\n },\n dataLabels: {\n align: null,\n verticalAlign: null,\n y: null\n },\n softThreshold: !1,\n startFromThreshold: !0,\n stickyTracking: !1,\n tooltip: {\n distance: 6\n },\n threshold: 0,\n borderColor: \"#ffffff\"\n }, {\n cropShoulder: 0,\n directTouch: !0,\n trackerGroups: [\"group\", \"dataLabelsGroup\"],\n negStacks: !0,\n init: function () {\n H.prototype.init.apply(this, arguments);\n var c = this,\n f = c.chart;\n f.hasRendered && f.series.forEach(function (f) {\n f.type === c.type && (f.isDirty = !0);\n });\n },\n getColumnMetrics: function () {\n var c = this,\n f = c.options,\n q = c.xAxis,\n g = c.yAxis,\n b = q.options.reversedStacks;\n b = q.reversed && !b || !q.reversed && b;\n var a,\n d = {},\n e = 0;\n !1 === f.grouping ? e = 1 : c.chart.series.forEach(function (b) {\n var f = b.yAxis,\n k = b.options;\n if (b.type === c.type && (b.visible || !c.chart.options.chart.ignoreHiddenSeries) && g.len === f.len && g.pos === f.pos) {\n if (k.stacking) {\n a = b.stackKey;\n void 0 === d[a] && (d[a] = e++);\n var h = d[a];\n } else !1 !== k.grouping && (h = e++);\n b.columnIndex = h;\n }\n });\n var l = Math.min(Math.abs(q.transA) * (q.ordinalSlope || f.pointRange || q.closestPointRange || q.tickInterval || 1), q.len),\n v = l * f.groupPadding,\n t = (l - 2 * v) / (e || 1);\n f = Math.min(f.maxPointWidth || q.len, B(f.pointWidth, t * (1 - 2 * f.pointPadding)));\n c.columnMetrics = {\n width: f,\n offset: (t - f) / 2 + (v + ((c.columnIndex || 0) + (b ? 1 : 0)) * t - l / 2) * (b ? -1 : 1)\n };\n return c.columnMetrics;\n },\n crispCol: function (c, f, q, g) {\n var b = this.chart,\n a = this.borderWidth,\n d = -(a % 2 ? .5 : 0);\n a = a % 2 ? .5 : 1;\n b.inverted && b.renderer.isVML && (a += 1);\n this.options.crisp && (q = Math.round(c + q) + d, c = Math.round(c) + d, q -= c);\n g = Math.round(f + g) + a;\n d = .5 >= Math.abs(f) && .5 < g;\n f = Math.round(f) + a;\n g -= f;\n d && g && (--f, g += 1);\n return {\n x: c,\n y: f,\n width: q,\n height: g\n };\n },\n translate: function () {\n var c = this,\n f = c.chart,\n q = c.options,\n g = c.dense = 2 > c.closestPointRange * c.xAxis.transA;\n g = c.borderWidth = B(q.borderWidth, g ? 0 : 1);\n var b = c.yAxis,\n a = q.threshold,\n d = c.translatedThreshold = b.getThreshold(a),\n e = B(q.minPointLength, 5),\n l = c.getColumnMetrics(),\n v = l.width,\n t = c.barW = Math.max(v, 1 + 2 * g),\n p = c.pointXOffset = l.offset,\n u = c.dataMin,\n k = c.dataMax;\n f.inverted && (d -= .5);\n q.pointPadding && (t = Math.ceil(t));\n H.prototype.translate.apply(c);\n c.points.forEach(function (g) {\n var h = B(g.yBottom, d),\n l = 999 + Math.abs(h),\n r = v;\n l = Math.min(Math.max(-l, g.plotY), b.len + l);\n var m = g.plotX + p,\n n = t,\n q = Math.min(l, h),\n y = Math.max(l, h) - q;\n if (e && Math.abs(y) < e) {\n y = e;\n var E = !b.reversed && !g.negative || b.reversed && g.negative;\n g.y === a && c.dataMax <= a && b.min < a && u !== k && (E = !E);\n q = Math.abs(q - d) > e ? h - e : d - (E ? e : 0);\n }\n F(g.options.pointWidth) && (r = n = Math.ceil(g.options.pointWidth), m -= Math.round((r - v) / 2));\n g.barX = m;\n g.pointWidth = r;\n g.tooltipPos = f.inverted ? [b.len + b.pos - f.plotLeft - l, c.xAxis.len - m - n / 2, y] : [m + n / 2, l + b.pos - f.plotTop, y];\n g.shapeType = c.pointClass.prototype.shapeType || \"rect\";\n g.shapeArgs = c.crispCol.apply(c, g.isNull ? [m, d, n, 0] : [m, q, n, y]);\n });\n },\n getSymbol: c.noop,\n drawLegendSymbol: c.LegendSymbolMixin.drawRectangle,\n drawGraph: function () {\n this.group[this.dense ? \"addClass\" : \"removeClass\"](\"highcharts-dense-data\");\n },\n pointAttribs: function (c, f) {\n var h = this.options,\n g = this.pointAttrToOptions || {};\n var b = g.stroke || \"borderColor\";\n var a = g[\"stroke-width\"] || \"borderWidth\",\n d = c && c.color || this.color,\n e = c && c[b] || h[b] || this.color || d,\n l = c && c[a] || h[a] || this[a] || 0;\n g = c && c.options.dashStyle || h.dashStyle;\n var n = B(h.opacity, 1);\n if (c && this.zones.length) {\n var t = c.getZone();\n d = c.options.color || t && (t.color || c.nonZonedColor) || this.color;\n t && (e = t.borderColor || e, g = t.dashStyle || g, l = t.borderWidth || l);\n }\n f && (c = C(h.states[f], c.options.states && c.options.states[f] || {}), f = c.brightness, d = c.color || void 0 !== f && v(d).brighten(c.brightness).get() || d, e = c[b] || e, l = c[a] || l, g = c.dashStyle || g, n = B(c.opacity, n));\n b = {\n fill: d,\n stroke: e,\n \"stroke-width\": l,\n opacity: n\n };\n g && (b.dashstyle = g);\n return b;\n },\n drawPoints: function () {\n var c = this,\n f = this.chart,\n q = c.options,\n g = f.renderer,\n b = q.animationLimit || 250,\n a;\n c.points.forEach(function (d) {\n var e = d.graphic,\n l = e && f.pointCount < b ? \"animate\" : \"attr\";\n if (z(d.plotY) && null !== d.y) {\n a = d.shapeArgs;\n e && d.hasNewShapeType() && (e = e.destroy());\n if (e) e[l](C(a));else d.graphic = e = g[d.shapeType](a).add(d.group || c.group);\n if (q.borderRadius) e[l]({\n r: q.borderRadius\n });\n f.styledMode || e[l](c.pointAttribs(d, d.selected && \"select\")).shadow(!1 !== d.allowShadow && q.shadow, null, q.stacking && !q.borderRadius);\n e.addClass(d.getClassName(), !0);\n } else e && (d.graphic = e.destroy());\n });\n },\n animate: function (c) {\n var f = this,\n h = this.yAxis,\n g = f.options,\n b = this.chart.inverted,\n a = {},\n d = b ? \"translateX\" : \"translateY\";\n if (y) if (c) a.scaleY = .001, c = Math.min(h.pos + h.len, Math.max(h.pos, h.toPixels(g.threshold))), b ? a.translateX = c - h.len : a.translateY = c, f.clipBox && f.setClip(), f.group.attr(a);else {\n var e = f.group.attr(d);\n f.group.animate({\n scaleY: 1\n }, G(t(f.options.animation), {\n step: function (b, c) {\n a[d] = e + c.pos * (h.pos - e);\n f.group.attr(a);\n }\n }));\n f.animate = null;\n }\n },\n remove: function () {\n var c = this,\n f = c.chart;\n f.hasRendered && f.series.forEach(function (f) {\n f.type === c.type && (f.isDirty = !0);\n });\n H.prototype.remove.apply(c, arguments);\n }\n });\n \"\";\n });\n M(I, \"parts/BarSeries.js\", [I[\"parts/Globals.js\"]], function (c) {\n c = c.seriesType;\n c(\"bar\", \"column\", null, {\n inverted: !0\n });\n \"\";\n });\n M(I, \"parts/ScatterSeries.js\", [I[\"parts/Globals.js\"]], function (c) {\n var f = c.Series,\n F = c.seriesType;\n F(\"scatter\", \"line\", {\n lineWidth: 0,\n findNearestPointBy: \"xy\",\n jitter: {\n x: 0,\n y: 0\n },\n marker: {\n enabled: !0\n },\n tooltip: {\n headerFormat: '<span style=\"color:{point.color}\">\\u25cf</span> <span style=\"font-size: 10px\"> {series.name}</span><br/>',\n pointFormat: \"x: <b>{point.x}</b><br/>y: <b>{point.y}</b><br/>\"\n }\n }, {\n sorted: !1,\n requireSorting: !1,\n noSharedTooltip: !0,\n trackerGroups: [\"group\", \"markerGroup\", \"dataLabelsGroup\"],\n takeOrdinalPosition: !1,\n drawGraph: function () {\n this.options.lineWidth && f.prototype.drawGraph.call(this);\n },\n applyJitter: function () {\n var c = this,\n f = this.options.jitter,\n B = this.points.length;\n f && this.points.forEach(function (t, v) {\n [\"x\", \"y\"].forEach(function (C, z) {\n var y = \"plot\" + C.toUpperCase();\n if (f[C] && !t.isNull) {\n var h = c[C + \"Axis\"];\n var n = f[C] * h.transA;\n if (h && !h.isLog) {\n var q = Math.max(0, t[y] - n);\n h = Math.min(h.len, t[y] + n);\n z = 1E4 * Math.sin(v + z * B);\n t[y] = q + (h - q) * (z - Math.floor(z));\n \"x\" === C && (t.clientX = t.plotX);\n }\n }\n });\n });\n }\n });\n c.addEvent(f, \"afterTranslate\", function () {\n this.applyJitter && this.applyJitter();\n });\n \"\";\n });\n M(I, \"mixins/centered-series.js\", [I[\"parts/Globals.js\"], I[\"parts/Utilities.js\"]], function (c, f) {\n var F = f.isNumber,\n G = f.pick,\n z = c.deg2rad,\n B = c.relativeLength;\n c.CenteredSeriesMixin = {\n getCenter: function () {\n var c = this.options,\n f = this.chart,\n C = 2 * (c.slicedOffset || 0),\n z = f.plotWidth - 2 * C;\n f = f.plotHeight - 2 * C;\n var y = c.center;\n y = [G(y[0], \"50%\"), G(y[1], \"50%\"), c.size || \"100%\", c.innerSize || 0];\n var h = Math.min(z, f),\n n;\n for (n = 0; 4 > n; ++n) {\n var q = y[n];\n c = 2 > n || 2 === n && /%$/.test(q);\n y[n] = B(q, [z, f, h, y[2]][n]) + (c ? C : 0);\n }\n y[3] > y[2] && (y[3] = y[2]);\n return y;\n },\n getStartAndEndRadians: function (c, f) {\n c = F(c) ? c : 0;\n f = F(f) && f > c && 360 > f - c ? f : c + 360;\n return {\n start: z * (c + -90),\n end: z * (f + -90)\n };\n }\n };\n });\n M(I, \"parts/PieSeries.js\", [I[\"parts/Globals.js\"], I[\"parts/Utilities.js\"]], function (c, f) {\n var F = f.defined,\n G = f.isNumber,\n z = f.pick,\n B = f.setAnimation,\n t = c.addEvent;\n f = c.CenteredSeriesMixin;\n var v = f.getStartAndEndRadians,\n C = c.merge,\n H = c.noop,\n y = c.Point,\n h = c.Series,\n n = c.seriesType,\n q = c.fireEvent;\n n(\"pie\", \"line\", {\n center: [null, null],\n clip: !1,\n colorByPoint: !0,\n dataLabels: {\n allowOverlap: !0,\n connectorPadding: 5,\n distance: 30,\n enabled: !0,\n formatter: function () {\n return this.point.isNull ? void 0 : this.point.name;\n },\n softConnector: !0,\n x: 0,\n connectorShape: \"fixedOffset\",\n crookDistance: \"70%\"\n },\n fillColor: void 0,\n ignoreHiddenPoint: !0,\n inactiveOtherPoints: !0,\n legendType: \"point\",\n marker: null,\n size: null,\n showInLegend: !1,\n slicedOffset: 10,\n stickyTracking: !1,\n tooltip: {\n followPointer: !0\n },\n borderColor: \"#ffffff\",\n borderWidth: 1,\n lineWidth: void 0,\n states: {\n hover: {\n brightness: .1\n }\n }\n }, {\n isCartesian: !1,\n requireSorting: !1,\n directTouch: !0,\n noSharedTooltip: !0,\n trackerGroups: [\"group\", \"dataLabelsGroup\"],\n axisTypes: [],\n pointAttribs: c.seriesTypes.column.prototype.pointAttribs,\n animate: function (c) {\n var b = this,\n a = b.points,\n d = b.startAngleRad;\n c || (a.forEach(function (a) {\n var c = a.graphic,\n e = a.shapeArgs;\n c && (c.attr({\n r: a.startR || b.center[3] / 2,\n start: d,\n end: d\n }), c.animate({\n r: e.r,\n start: e.start,\n end: e.end\n }, b.options.animation));\n }), b.animate = null);\n },\n hasData: function () {\n return !!this.processedXData.length;\n },\n updateTotals: function () {\n var c,\n b = 0,\n a = this.points,\n d = a.length,\n e = this.options.ignoreHiddenPoint;\n for (c = 0; c < d; c++) {\n var f = a[c];\n b += e && !f.visible ? 0 : f.isNull ? 0 : f.y;\n }\n this.total = b;\n for (c = 0; c < d; c++) f = a[c], f.percentage = 0 < b && (f.visible || !e) ? f.y / b * 100 : 0, f.total = b;\n },\n generatePoints: function () {\n h.prototype.generatePoints.call(this);\n this.updateTotals();\n },\n getX: function (c, b, a) {\n var d = this.center,\n e = this.radii ? this.radii[a.index] : d[2] / 2;\n return d[0] + (b ? -1 : 1) * Math.cos(Math.asin(Math.max(Math.min((c - d[1]) / (e + a.labelDistance), 1), -1))) * (e + a.labelDistance) + (0 < a.labelDistance ? (b ? -1 : 1) * this.options.dataLabels.padding : 0);\n },\n translate: function (g) {\n this.generatePoints();\n var b = 0,\n a = this.options,\n d = a.slicedOffset,\n e = d + (a.borderWidth || 0),\n f = v(a.startAngle, a.endAngle),\n h = this.startAngleRad = f.start;\n f = (this.endAngleRad = f.end) - h;\n var n = this.points,\n p = a.dataLabels.distance;\n a = a.ignoreHiddenPoint;\n var u,\n k = n.length;\n g || (this.center = g = this.getCenter());\n for (u = 0; u < k; u++) {\n var r = n[u];\n var x = h + b * f;\n if (!a || r.visible) b += r.percentage / 100;\n var A = h + b * f;\n r.shapeType = \"arc\";\n r.shapeArgs = {\n x: g[0],\n y: g[1],\n r: g[2] / 2,\n innerR: g[3] / 2,\n start: Math.round(1E3 * x) / 1E3,\n end: Math.round(1E3 * A) / 1E3\n };\n r.labelDistance = z(r.options.dataLabels && r.options.dataLabels.distance, p);\n r.labelDistance = c.relativeLength(r.labelDistance, r.shapeArgs.r);\n this.maxLabelDistance = Math.max(this.maxLabelDistance || 0, r.labelDistance);\n A = (A + x) / 2;\n A > 1.5 * Math.PI ? A -= 2 * Math.PI : A < -Math.PI / 2 && (A += 2 * Math.PI);\n r.slicedTranslation = {\n translateX: Math.round(Math.cos(A) * d),\n translateY: Math.round(Math.sin(A) * d)\n };\n var w = Math.cos(A) * g[2] / 2;\n var m = Math.sin(A) * g[2] / 2;\n r.tooltipPos = [g[0] + .7 * w, g[1] + .7 * m];\n r.half = A < -Math.PI / 2 || A > Math.PI / 2 ? 1 : 0;\n r.angle = A;\n x = Math.min(e, r.labelDistance / 5);\n r.labelPosition = {\n natural: {\n x: g[0] + w + Math.cos(A) * r.labelDistance,\n y: g[1] + m + Math.sin(A) * r.labelDistance\n },\n \"final\": {},\n alignment: 0 > r.labelDistance ? \"center\" : r.half ? \"right\" : \"left\",\n connectorPosition: {\n breakAt: {\n x: g[0] + w + Math.cos(A) * x,\n y: g[1] + m + Math.sin(A) * x\n },\n touchingSliceAt: {\n x: g[0] + w,\n y: g[1] + m\n }\n }\n };\n }\n q(this, \"afterTranslate\");\n },\n drawEmpty: function () {\n var c = this.options;\n if (0 === this.total) {\n var b = this.center[0];\n var a = this.center[1];\n this.graph || (this.graph = this.chart.renderer.circle(b, a, 0).addClass(\"highcharts-graph\").add(this.group));\n this.graph.animate({\n \"stroke-width\": c.borderWidth,\n cx: b,\n cy: a,\n r: this.center[2] / 2,\n fill: c.fillColor || \"none\",\n stroke: c.color || \"#cccccc\"\n });\n } else this.graph && (this.graph = this.graph.destroy());\n },\n redrawPoints: function () {\n var c = this,\n b = c.chart,\n a = b.renderer,\n d,\n e,\n f,\n h,\n n = c.options.shadow;\n this.drawEmpty();\n !n || c.shadowGroup || b.styledMode || (c.shadowGroup = a.g(\"shadow\").attr({\n zIndex: -1\n }).add(c.group));\n c.points.forEach(function (g) {\n var l = {};\n e = g.graphic;\n if (!g.isNull && e) {\n h = g.shapeArgs;\n d = g.getTranslate();\n if (!b.styledMode) {\n var k = g.shadowGroup;\n n && !k && (k = g.shadowGroup = a.g(\"shadow\").add(c.shadowGroup));\n k && k.attr(d);\n f = c.pointAttribs(g, g.selected && \"select\");\n }\n g.delayedRendering ? (e.setRadialReference(c.center).attr(h).attr(d), b.styledMode || e.attr(f).attr({\n \"stroke-linejoin\": \"round\"\n }).shadow(n, k), g.delayedRendering = !1) : (e.setRadialReference(c.center), b.styledMode || C(!0, l, f), C(!0, l, h, d), e.animate(l));\n e.attr({\n visibility: g.visible ? \"inherit\" : \"hidden\"\n });\n e.addClass(g.getClassName());\n } else e && (g.graphic = e.destroy());\n });\n },\n drawPoints: function () {\n var c = this.chart.renderer;\n this.points.forEach(function (b) {\n b.graphic || (b.graphic = c[b.shapeType](b.shapeArgs).add(b.series.group), b.delayedRendering = !0);\n });\n },\n searchPoint: H,\n sortByAngle: function (c, b) {\n c.sort(function (a, d) {\n return void 0 !== a.angle && (d.angle - a.angle) * b;\n });\n },\n drawLegendSymbol: c.LegendSymbolMixin.drawRectangle,\n getCenter: f.getCenter,\n getSymbol: H,\n drawGraph: null\n }, {\n init: function () {\n y.prototype.init.apply(this, arguments);\n var c = this;\n c.name = z(c.name, \"Slice\");\n var b = function (a) {\n c.slice(\"select\" === a.type);\n };\n t(c, \"select\", b);\n t(c, \"unselect\", b);\n return c;\n },\n isValid: function () {\n return G(this.y) && 0 <= this.y;\n },\n setVisible: function (c, b) {\n var a = this,\n d = a.series,\n e = d.chart,\n f = d.options.ignoreHiddenPoint;\n b = z(b, f);\n c !== a.visible && (a.visible = a.options.visible = c = void 0 === c ? !a.visible : c, d.options.data[d.data.indexOf(a)] = a.options, [\"graphic\", \"dataLabel\", \"connector\", \"shadowGroup\"].forEach(function (b) {\n if (a[b]) a[b][c ? \"show\" : \"hide\"](!0);\n }), a.legendItem && e.legend.colorizeItem(a, c), c || \"hover\" !== a.state || a.setState(\"\"), f && (d.isDirty = !0), b && e.redraw());\n },\n slice: function (c, b, a) {\n var d = this.series;\n B(a, d.chart);\n z(b, !0);\n this.sliced = this.options.sliced = F(c) ? c : !this.sliced;\n d.options.data[d.data.indexOf(this)] = this.options;\n this.graphic.animate(this.getTranslate());\n this.shadowGroup && this.shadowGroup.animate(this.getTranslate());\n },\n getTranslate: function () {\n return this.sliced ? this.slicedTranslation : {\n translateX: 0,\n translateY: 0\n };\n },\n haloPath: function (c) {\n var b = this.shapeArgs;\n return this.sliced || !this.visible ? [] : this.series.chart.renderer.symbols.arc(b.x, b.y, b.r + c, b.r + c, {\n innerR: b.r - 1,\n start: b.start,\n end: b.end\n });\n },\n connectorShapes: {\n fixedOffset: function (c, b, a) {\n var d = b.breakAt;\n b = b.touchingSliceAt;\n return [\"M\", c.x, c.y].concat(a.softConnector ? [\"C\", c.x + (\"left\" === c.alignment ? -5 : 5), c.y, 2 * d.x - b.x, 2 * d.y - b.y, d.x, d.y] : [\"L\", d.x, d.y]).concat([\"L\", b.x, b.y]);\n },\n straight: function (c, b) {\n b = b.touchingSliceAt;\n return [\"M\", c.x, c.y, \"L\", b.x, b.y];\n },\n crookedLine: function (f, b, a) {\n b = b.touchingSliceAt;\n var d = this.series,\n e = d.center[0],\n g = d.chart.plotWidth,\n h = d.chart.plotLeft;\n d = f.alignment;\n var n = this.shapeArgs.r;\n a = c.relativeLength(a.crookDistance, 1);\n a = \"left\" === d ? e + n + (g + h - e - n) * (1 - a) : h + (e - n) * a;\n e = [\"L\", a, f.y];\n if (\"left\" === d ? a > f.x || a < b.x : a < f.x || a > b.x) e = [];\n return [\"M\", f.x, f.y].concat(e).concat([\"L\", b.x, b.y]);\n }\n },\n getConnectorPath: function () {\n var c = this.labelPosition,\n b = this.series.options.dataLabels,\n a = b.connectorShape,\n d = this.connectorShapes;\n d[a] && (a = d[a]);\n return a.call(this, {\n x: c.final.x,\n y: c.final.y,\n alignment: c.alignment\n }, c.connectorPosition, b);\n }\n });\n \"\";\n });\n M(I, \"parts/DataLabels.js\", [I[\"parts/Globals.js\"], I[\"parts/Utilities.js\"]], function (c, f) {\n var F = f.arrayMax,\n G = f.defined,\n z = f.extend,\n B = f.isArray,\n t = f.objectEach,\n v = f.pick,\n C = f.splat,\n H = c.format,\n y = c.merge;\n f = c.noop;\n var h = c.relativeLength,\n n = c.Series,\n q = c.seriesTypes,\n g = c.stableSort;\n c.distribute = function (b, a, d) {\n function e(a, b) {\n return a.target - b.target;\n }\n var f,\n h = !0,\n n = b,\n p = [];\n var u = 0;\n var k = n.reducedLen || a;\n for (f = b.length; f--;) u += b[f].size;\n if (u > k) {\n g(b, function (a, b) {\n return (b.rank || 0) - (a.rank || 0);\n });\n for (u = f = 0; u <= k;) u += b[f].size, f++;\n p = b.splice(f - 1, b.length);\n }\n g(b, e);\n for (b = b.map(function (a) {\n return {\n size: a.size,\n targets: [a.target],\n align: v(a.align, .5)\n };\n }); h;) {\n for (f = b.length; f--;) h = b[f], u = (Math.min.apply(0, h.targets) + Math.max.apply(0, h.targets)) / 2, h.pos = Math.min(Math.max(0, u - h.size * h.align), a - h.size);\n f = b.length;\n for (h = !1; f--;) 0 < f && b[f - 1].pos + b[f - 1].size > b[f].pos && (b[f - 1].size += b[f].size, b[f - 1].targets = b[f - 1].targets.concat(b[f].targets), b[f - 1].align = .5, b[f - 1].pos + b[f - 1].size > a && (b[f - 1].pos = a - b[f - 1].size), b.splice(f, 1), h = !0);\n }\n n.push.apply(n, p);\n f = 0;\n b.some(function (b) {\n var e = 0;\n if (b.targets.some(function () {\n n[f].pos = b.pos + e;\n if (Math.abs(n[f].pos - n[f].target) > d) return n.slice(0, f + 1).forEach(function (a) {\n delete a.pos;\n }), n.reducedLen = (n.reducedLen || a) - .1 * a, n.reducedLen > .1 * a && c.distribute(n, a, d), !0;\n e += n[f].size;\n f++;\n })) return !0;\n });\n g(n, e);\n };\n n.prototype.drawDataLabels = function () {\n function b(a, b) {\n var d = b.filter;\n return d ? (b = d.operator, a = a[d.property], d = d.value, \">\" === b && a > d || \"<\" === b && a < d || \">=\" === b && a >= d || \"<=\" === b && a <= d || \"==\" === b && a == d || \"===\" === b && a === d ? !0 : !1) : !0;\n }\n function a(a, b) {\n var d = [],\n c;\n if (B(a) && !B(b)) d = a.map(function (a) {\n return y(a, b);\n });else if (B(b) && !B(a)) d = b.map(function (b) {\n return y(a, b);\n });else if (B(a) || B(b)) for (c = Math.max(a.length, b.length); c--;) d[c] = y(a[c], b[c]);else d = y(a, b);\n return d;\n }\n var d = this,\n e = d.chart,\n f = d.options,\n g = f.dataLabels,\n h = d.points,\n p,\n n = d.hasRendered || 0,\n k = c.animObject(f.animation).duration,\n r = Math.min(k, 200),\n q = !e.renderer.forExport && v(g.defer, 0 < r),\n A = e.renderer;\n g = a(a(e.options.plotOptions && e.options.plotOptions.series && e.options.plotOptions.series.dataLabels, e.options.plotOptions && e.options.plotOptions[d.type] && e.options.plotOptions[d.type].dataLabels), g);\n c.fireEvent(this, \"drawDataLabels\");\n if (B(g) || g.enabled || d._hasPointLabels) {\n var w = d.plotGroup(\"dataLabelsGroup\", \"data-labels\", q && !n ? \"hidden\" : \"inherit\", g.zIndex || 6);\n q && (w.attr({\n opacity: +n\n }), n || setTimeout(function () {\n var a = d.dataLabelsGroup;\n a && (d.visible && w.show(!0), a[f.animation ? \"animate\" : \"attr\"]({\n opacity: 1\n }, {\n duration: r\n }));\n }, k - r));\n h.forEach(function (c) {\n p = C(a(g, c.dlOptions || c.options && c.options.dataLabels));\n p.forEach(function (a, g) {\n var k = a.enabled && (!c.isNull || c.dataLabelOnNull) && b(c, a),\n h = c.dataLabels ? c.dataLabels[g] : c.dataLabel,\n l = c.connectors ? c.connectors[g] : c.connector,\n p = v(a.distance, c.labelDistance),\n m = !h;\n if (k) {\n var n = c.getLabelConfig();\n var r = v(a[c.formatPrefix + \"Format\"], a.format);\n n = G(r) ? H(r, n, e.time) : (a[c.formatPrefix + \"Formatter\"] || a.formatter).call(n, a);\n r = a.style;\n var u = a.rotation;\n e.styledMode || (r.color = v(a.color, r.color, d.color, \"#000000\"), \"contrast\" === r.color && (c.contrastColor = A.getContrast(c.color || d.color), r.color = !G(p) && a.inside || 0 > p || f.stacking ? c.contrastColor : \"#000000\"), f.cursor && (r.cursor = f.cursor));\n var q = {\n r: a.borderRadius || 0,\n rotation: u,\n padding: a.padding,\n zIndex: 1\n };\n e.styledMode || (q.fill = a.backgroundColor, q.stroke = a.borderColor, q[\"stroke-width\"] = a.borderWidth);\n t(q, function (a, b) {\n void 0 === a && delete q[b];\n });\n }\n !h || k && G(n) ? k && G(n) && (h ? q.text = n : (c.dataLabels = c.dataLabels || [], h = c.dataLabels[g] = u ? A.text(n, 0, -9999).addClass(\"highcharts-data-label\") : A.label(n, 0, -9999, a.shape, null, null, a.useHTML, null, \"data-label\"), g || (c.dataLabel = h), h.addClass(\" highcharts-data-label-color-\" + c.colorIndex + \" \" + (a.className || \"\") + (a.useHTML ? \" highcharts-tracker\" : \"\"))), h.options = a, h.attr(q), e.styledMode || h.css(r).shadow(a.shadow), h.added || h.add(w), a.textPath && !a.useHTML && h.setTextPath(c.getDataLabelPath && c.getDataLabelPath(h) || c.graphic, a.textPath), d.alignDataLabel(c, h, a, null, m)) : (c.dataLabel = c.dataLabel && c.dataLabel.destroy(), c.dataLabels && (1 === c.dataLabels.length ? delete c.dataLabels : delete c.dataLabels[g]), g || delete c.dataLabel, l && (c.connector = c.connector.destroy(), c.connectors && (1 === c.connectors.length ? delete c.connectors : delete c.connectors[g])));\n });\n });\n }\n c.fireEvent(this, \"afterDrawDataLabels\");\n };\n n.prototype.alignDataLabel = function (b, a, d, c, f) {\n var e = this.chart,\n g = this.isCartesian && e.inverted,\n h = v(b.dlBox && b.dlBox.centerX, b.plotX, -9999),\n l = v(b.plotY, -9999),\n k = a.getBBox(),\n n = d.rotation,\n q = d.align,\n A = this.visible && (b.series.forceDL || e.isInsidePlot(h, Math.round(l), g) || c && e.isInsidePlot(h, g ? c.x + 1 : c.y + c.height - 1, g)),\n w = \"justify\" === v(d.overflow, \"justify\");\n if (A) {\n var m = e.renderer.fontMetrics(e.styledMode ? void 0 : d.style.fontSize, a).b;\n c = z({\n x: g ? this.yAxis.len - l : h,\n y: Math.round(g ? this.xAxis.len - h : l),\n width: 0,\n height: 0\n }, c);\n z(d, {\n width: k.width,\n height: k.height\n });\n n ? (w = !1, h = e.renderer.rotCorr(m, n), h = {\n x: c.x + d.x + c.width / 2 + h.x,\n y: c.y + d.y + {\n top: 0,\n middle: .5,\n bottom: 1\n }[d.verticalAlign] * c.height\n }, a[f ? \"attr\" : \"animate\"](h).attr({\n align: q\n }), l = (n + 720) % 360, l = 180 < l && 360 > l, \"left\" === q ? h.y -= l ? k.height : 0 : \"center\" === q ? (h.x -= k.width / 2, h.y -= k.height / 2) : \"right\" === q && (h.x -= k.width, h.y -= l ? 0 : k.height), a.placed = !0, a.alignAttr = h) : (a.align(d, null, c), h = a.alignAttr);\n w && 0 <= c.height ? this.justifyDataLabel(a, d, h, k, c, f) : v(d.crop, !0) && (A = e.isInsidePlot(h.x, h.y) && e.isInsidePlot(h.x + k.width, h.y + k.height));\n if (d.shape && !n) a[f ? \"attr\" : \"animate\"]({\n anchorX: g ? e.plotWidth - b.plotY : b.plotX,\n anchorY: g ? e.plotHeight - b.plotX : b.plotY\n });\n }\n A || (a.hide(!0), a.placed = !1);\n };\n n.prototype.justifyDataLabel = function (b, a, d, c, f, g) {\n var e = this.chart,\n h = a.align,\n l = a.verticalAlign,\n k = b.box ? 0 : b.padding || 0;\n var n = d.x + k;\n if (0 > n) {\n \"right\" === h ? (a.align = \"left\", a.inside = !0) : a.x = -n;\n var q = !0;\n }\n n = d.x + c.width - k;\n n > e.plotWidth && (\"left\" === h ? (a.align = \"right\", a.inside = !0) : a.x = e.plotWidth - n, q = !0);\n n = d.y + k;\n 0 > n && (\"bottom\" === l ? (a.verticalAlign = \"top\", a.inside = !0) : a.y = -n, q = !0);\n n = d.y + c.height - k;\n n > e.plotHeight && (\"top\" === l ? (a.verticalAlign = \"bottom\", a.inside = !0) : a.y = e.plotHeight - n, q = !0);\n q && (b.placed = !g, b.align(a, null, f));\n return q;\n };\n q.pie && (q.pie.prototype.dataLabelPositioners = {\n radialDistributionY: function (b) {\n return b.top + b.distributeBox.pos;\n },\n radialDistributionX: function (b, a, d, c) {\n return b.getX(d < a.top + 2 || d > a.bottom - 2 ? c : d, a.half, a);\n },\n justify: function (b, a, d) {\n return d[0] + (b.half ? -1 : 1) * (a + b.labelDistance);\n },\n alignToPlotEdges: function (b, a, d, c) {\n b = b.getBBox().width;\n return a ? b + c : d - b - c;\n },\n alignToConnectors: function (b, a, d, c) {\n var e = 0,\n f;\n b.forEach(function (a) {\n f = a.dataLabel.getBBox().width;\n f > e && (e = f);\n });\n return a ? e + c : d - e - c;\n }\n }, q.pie.prototype.drawDataLabels = function () {\n var b = this,\n a = b.data,\n d,\n e = b.chart,\n f = b.options.dataLabels,\n g = f.connectorPadding,\n h,\n p = e.plotWidth,\n u = e.plotHeight,\n k = e.plotLeft,\n r = Math.round(e.chartWidth / 3),\n q,\n A = b.center,\n w = A[2] / 2,\n m = A[1],\n t,\n z,\n C,\n B,\n H = [[], []],\n I,\n D,\n N,\n M,\n R = [0, 0, 0, 0],\n P = b.dataLabelPositioners,\n W;\n b.visible && (f.enabled || b._hasPointLabels) && (a.forEach(function (a) {\n a.dataLabel && a.visible && a.dataLabel.shortened && (a.dataLabel.attr({\n width: \"auto\"\n }).css({\n width: \"auto\",\n textOverflow: \"clip\"\n }), a.dataLabel.shortened = !1);\n }), n.prototype.drawDataLabels.apply(b), a.forEach(function (a) {\n a.dataLabel && (a.visible ? (H[a.half].push(a), a.dataLabel._pos = null, !G(f.style.width) && !G(a.options.dataLabels && a.options.dataLabels.style && a.options.dataLabels.style.width) && a.dataLabel.getBBox().width > r && (a.dataLabel.css({\n width: .7 * r\n }), a.dataLabel.shortened = !0)) : (a.dataLabel = a.dataLabel.destroy(), a.dataLabels && 1 === a.dataLabels.length && delete a.dataLabels));\n }), H.forEach(function (a, h) {\n var l = a.length,\n n = [],\n r;\n if (l) {\n b.sortByAngle(a, h - .5);\n if (0 < b.maxLabelDistance) {\n var q = Math.max(0, m - w - b.maxLabelDistance);\n var x = Math.min(m + w + b.maxLabelDistance, e.plotHeight);\n a.forEach(function (a) {\n 0 < a.labelDistance && a.dataLabel && (a.top = Math.max(0, m - w - a.labelDistance), a.bottom = Math.min(m + w + a.labelDistance, e.plotHeight), r = a.dataLabel.getBBox().height || 21, a.distributeBox = {\n target: a.labelPosition.natural.y - a.top + r / 2,\n size: r,\n rank: a.y\n }, n.push(a.distributeBox));\n });\n q = x + r - q;\n c.distribute(n, q, q / 5);\n }\n for (M = 0; M < l; M++) {\n d = a[M];\n C = d.labelPosition;\n t = d.dataLabel;\n N = !1 === d.visible ? \"hidden\" : \"inherit\";\n D = q = C.natural.y;\n n && G(d.distributeBox) && (void 0 === d.distributeBox.pos ? N = \"hidden\" : (B = d.distributeBox.size, D = P.radialDistributionY(d)));\n delete d.positionIndex;\n if (f.justify) I = P.justify(d, w, A);else switch (f.alignTo) {\n case \"connectors\":\n I = P.alignToConnectors(a, h, p, k);\n break;\n case \"plotEdges\":\n I = P.alignToPlotEdges(t, h, p, k);\n break;\n default:\n I = P.radialDistributionX(b, d, D, q);\n }\n t._attr = {\n visibility: N,\n align: C.alignment\n };\n t._pos = {\n x: I + f.x + ({\n left: g,\n right: -g\n }[C.alignment] || 0),\n y: D + f.y - 10\n };\n C.final.x = I;\n C.final.y = D;\n v(f.crop, !0) && (z = t.getBBox().width, q = null, I - z < g && 1 === h ? (q = Math.round(z - I + g), R[3] = Math.max(q, R[3])) : I + z > p - g && 0 === h && (q = Math.round(I + z - p + g), R[1] = Math.max(q, R[1])), 0 > D - B / 2 ? R[0] = Math.max(Math.round(-D + B / 2), R[0]) : D + B / 2 > u && (R[2] = Math.max(Math.round(D + B / 2 - u), R[2])), t.sideOverflow = q);\n }\n }\n }), 0 === F(R) || this.verifyDataLabelOverflow(R)) && (this.placeDataLabels(), this.points.forEach(function (a) {\n W = y(f, a.options.dataLabels);\n if (h = v(W.connectorWidth, 1)) {\n var d;\n q = a.connector;\n if ((t = a.dataLabel) && t._pos && a.visible && 0 < a.labelDistance) {\n N = t._attr.visibility;\n if (d = !q) a.connector = q = e.renderer.path().addClass(\"highcharts-data-label-connector highcharts-color-\" + a.colorIndex + (a.className ? \" \" + a.className : \"\")).add(b.dataLabelsGroup), e.styledMode || q.attr({\n \"stroke-width\": h,\n stroke: W.connectorColor || a.color || \"#666666\"\n });\n q[d ? \"attr\" : \"animate\"]({\n d: a.getConnectorPath()\n });\n q.attr(\"visibility\", N);\n } else q && (a.connector = q.destroy());\n }\n }));\n }, q.pie.prototype.placeDataLabels = function () {\n this.points.forEach(function (b) {\n var a = b.dataLabel,\n d;\n a && b.visible && ((d = a._pos) ? (a.sideOverflow && (a._attr.width = Math.max(a.getBBox().width - a.sideOverflow, 0), a.css({\n width: a._attr.width + \"px\",\n textOverflow: (this.options.dataLabels.style || {}).textOverflow || \"ellipsis\"\n }), a.shortened = !0), a.attr(a._attr), a[a.moved ? \"animate\" : \"attr\"](d), a.moved = !0) : a && a.attr({\n y: -9999\n }));\n delete b.distributeBox;\n }, this);\n }, q.pie.prototype.alignDataLabel = f, q.pie.prototype.verifyDataLabelOverflow = function (b) {\n var a = this.center,\n d = this.options,\n c = d.center,\n f = d.minSize || 80,\n g = null !== d.size;\n if (!g) {\n if (null !== c[0]) var n = Math.max(a[2] - Math.max(b[1], b[3]), f);else n = Math.max(a[2] - b[1] - b[3], f), a[0] += (b[3] - b[1]) / 2;\n null !== c[1] ? n = Math.max(Math.min(n, a[2] - Math.max(b[0], b[2])), f) : (n = Math.max(Math.min(n, a[2] - b[0] - b[2]), f), a[1] += (b[0] - b[2]) / 2);\n n < a[2] ? (a[2] = n, a[3] = Math.min(h(d.innerSize || 0, n), n), this.translate(a), this.drawDataLabels && this.drawDataLabels()) : g = !0;\n }\n return g;\n });\n q.column && (q.column.prototype.alignDataLabel = function (b, a, d, c, f) {\n var e = this.chart.inverted,\n g = b.series,\n h = b.dlBox || b.shapeArgs,\n l = v(b.below, b.plotY > v(this.translatedThreshold, g.yAxis.len)),\n k = v(d.inside, !!this.options.stacking);\n h && (c = y(h), 0 > c.y && (c.height += c.y, c.y = 0), h = c.y + c.height - g.yAxis.len, 0 < h && (c.height -= h), e && (c = {\n x: g.yAxis.len - c.y - c.height,\n y: g.xAxis.len - c.x - c.width,\n width: c.height,\n height: c.width\n }), k || (e ? (c.x += l ? 0 : c.width, c.width = 0) : (c.y += l ? c.height : 0, c.height = 0)));\n d.align = v(d.align, !e || k ? \"center\" : l ? \"right\" : \"left\");\n d.verticalAlign = v(d.verticalAlign, e || k ? \"middle\" : l ? \"top\" : \"bottom\");\n n.prototype.alignDataLabel.call(this, b, a, d, c, f);\n d.inside && b.contrastColor && a.css({\n color: b.contrastColor\n });\n });\n });\n M(I, \"modules/overlapping-datalabels.src.js\", [I[\"parts/Globals.js\"], I[\"parts/Utilities.js\"]], function (c, f) {\n var F = f.isArray,\n G = f.objectEach,\n z = f.pick;\n f = c.Chart;\n var B = c.addEvent,\n t = c.fireEvent;\n B(f, \"render\", function () {\n var c = [];\n (this.labelCollectors || []).forEach(function (f) {\n c = c.concat(f());\n });\n (this.yAxis || []).forEach(function (f) {\n f.options.stackLabels && !f.options.stackLabels.allowOverlap && G(f.stacks, function (f) {\n G(f, function (f) {\n c.push(f.label);\n });\n });\n });\n (this.series || []).forEach(function (f) {\n var v = f.options.dataLabels;\n f.visible && (!1 !== v.enabled || f._hasPointLabels) && f.points.forEach(function (f) {\n f.visible && (F(f.dataLabels) ? f.dataLabels : f.dataLabel ? [f.dataLabel] : []).forEach(function (h) {\n var n = h.options;\n h.labelrank = z(n.labelrank, f.labelrank, f.shapeArgs && f.shapeArgs.height);\n n.allowOverlap || c.push(h);\n });\n });\n });\n this.hideOverlappingLabels(c);\n });\n f.prototype.hideOverlappingLabels = function (c) {\n var f = this,\n v = c.length,\n y = f.renderer,\n h,\n n,\n q;\n var g = function (a) {\n var b = a.box ? 0 : a.padding || 0;\n var d = 0;\n if (a && (!a.alignAttr || a.placed)) {\n var c = a.attr(\"x\");\n var f = a.attr(\"y\");\n c = \"number\" === typeof c && \"number\" === typeof f ? {\n x: c,\n y: f\n } : a.alignAttr;\n f = a.parentGroup;\n a.width || (d = a.getBBox(), a.width = d.width, a.height = d.height, d = y.fontMetrics(null, a.element).h);\n return {\n x: c.x + (f.translateX || 0) + b,\n y: c.y + (f.translateY || 0) + b - d,\n width: a.width - 2 * b,\n height: a.height - 2 * b\n };\n }\n };\n for (n = 0; n < v; n++) if (h = c[n]) h.oldOpacity = h.opacity, h.newOpacity = 1, h.absoluteBox = g(h);\n c.sort(function (a, b) {\n return (b.labelrank || 0) - (a.labelrank || 0);\n });\n for (n = 0; n < v; n++) {\n var b = (g = c[n]) && g.absoluteBox;\n for (h = n + 1; h < v; ++h) {\n var a = (q = c[h]) && q.absoluteBox;\n !b || !a || g === q || 0 === g.newOpacity || 0 === q.newOpacity || a.x > b.x + b.width || a.x + a.width < b.x || a.y > b.y + b.height || a.y + a.height < b.y || ((g.labelrank < q.labelrank ? g : q).newOpacity = 0);\n }\n }\n c.forEach(function (a) {\n var b;\n if (a) {\n var d = a.newOpacity;\n a.oldOpacity !== d && (a.alignAttr && a.placed ? (d ? a.show(!0) : b = function () {\n a.hide(!0);\n a.placed = !1;\n }, a.alignAttr.opacity = d, a[a.isOld ? \"animate\" : \"attr\"](a.alignAttr, null, b), t(f, \"afterHideOverlappingLabels\")) : a.attr({\n opacity: d\n }));\n a.isOld = !0;\n }\n });\n };\n });\n M(I, \"parts/Interaction.js\", [I[\"parts/Globals.js\"], I[\"parts/Utilities.js\"]], function (c, f) {\n var F = f.defined,\n G = f.extend,\n z = f.isArray,\n B = f.isObject,\n t = f.objectEach,\n v = f.pick,\n C = c.addEvent;\n f = c.Chart;\n var H = c.createElement,\n y = c.css,\n h = c.defaultOptions,\n n = c.defaultPlotOptions,\n q = c.fireEvent,\n g = c.hasTouch,\n b = c.Legend,\n a = c.merge,\n d = c.Point,\n e = c.Series,\n l = c.seriesTypes,\n I = c.svg;\n var E = c.TrackerMixin = {\n drawTrackerPoint: function () {\n var a = this,\n b = a.chart,\n d = b.pointer,\n c = function (a) {\n var b = d.getPointFromEvent(a);\n void 0 !== b && (d.isDirectTouch = !0, b.onMouseOver(a));\n },\n e;\n a.points.forEach(function (a) {\n e = z(a.dataLabels) ? a.dataLabels : a.dataLabel ? [a.dataLabel] : [];\n a.graphic && (a.graphic.element.point = a);\n e.forEach(function (b) {\n b.div ? b.div.point = a : b.element.point = a;\n });\n });\n a._hasTracking || (a.trackerGroups.forEach(function (e) {\n if (a[e]) {\n a[e].addClass(\"highcharts-tracker\").on(\"mouseover\", c).on(\"mouseout\", function (a) {\n d.onTrackerMouseOut(a);\n });\n if (g) a[e].on(\"touchstart\", c);\n !b.styledMode && a.options.cursor && a[e].css(y).css({\n cursor: a.options.cursor\n });\n }\n }), a._hasTracking = !0);\n q(this, \"afterDrawTracker\");\n },\n drawTrackerGraph: function () {\n var a = this,\n b = a.options,\n d = b.trackByArea,\n c = [].concat(d ? a.areaPath : a.graphPath),\n e = c.length,\n f = a.chart,\n h = f.pointer,\n l = f.renderer,\n n = f.options.tooltip.snap,\n v = a.tracker,\n t,\n y = function () {\n if (f.hoverSeries !== a) a.onMouseOver();\n },\n z = \"rgba(192,192,192,\" + (I ? .0001 : .002) + \")\";\n if (e && !d) for (t = e + 1; t--;) \"M\" === c[t] && c.splice(t + 1, 0, c[t + 1] - n, c[t + 2], \"L\"), (t && \"M\" === c[t] || t === e) && c.splice(t, 0, \"L\", c[t - 2] + n, c[t - 1]);\n v ? v.attr({\n d: c\n }) : a.graph && (a.tracker = l.path(c).attr({\n visibility: a.visible ? \"visible\" : \"hidden\",\n zIndex: 2\n }).addClass(d ? \"highcharts-tracker-area\" : \"highcharts-tracker-line\").add(a.group), f.styledMode || a.tracker.attr({\n \"stroke-linejoin\": \"round\",\n stroke: z,\n fill: d ? z : \"none\",\n \"stroke-width\": a.graph.strokeWidth() + (d ? 0 : 2 * n)\n }), [a.tracker, a.markerGroup].forEach(function (a) {\n a.addClass(\"highcharts-tracker\").on(\"mouseover\", y).on(\"mouseout\", function (a) {\n h.onTrackerMouseOut(a);\n });\n b.cursor && !f.styledMode && a.css({\n cursor: b.cursor\n });\n if (g) a.on(\"touchstart\", y);\n }));\n q(this, \"afterDrawTracker\");\n }\n };\n l.column && (l.column.prototype.drawTracker = E.drawTrackerPoint);\n l.pie && (l.pie.prototype.drawTracker = E.drawTrackerPoint);\n l.scatter && (l.scatter.prototype.drawTracker = E.drawTrackerPoint);\n G(b.prototype, {\n setItemEvents: function (b, c, e) {\n var f = this,\n g = f.chart.renderer.boxWrapper,\n k = b instanceof d,\n h = \"highcharts-legend-\" + (k ? \"point\" : \"series\") + \"-active\",\n l = f.chart.styledMode;\n (e ? c : b.legendGroup).on(\"mouseover\", function () {\n b.visible && f.allItems.forEach(function (a) {\n b !== a && a.setState(\"inactive\", !k);\n });\n b.setState(\"hover\");\n b.visible && g.addClass(h);\n l || c.css(f.options.itemHoverStyle);\n }).on(\"mouseout\", function () {\n f.chart.styledMode || c.css(a(b.visible ? f.itemStyle : f.itemHiddenStyle));\n f.allItems.forEach(function (a) {\n b !== a && a.setState(\"\", !k);\n });\n g.removeClass(h);\n b.setState();\n }).on(\"click\", function (a) {\n var c = function () {\n b.setVisible && b.setVisible();\n f.allItems.forEach(function (a) {\n b !== a && a.setState(b.visible ? \"inactive\" : \"\", !k);\n });\n };\n g.removeClass(h);\n a = {\n browserEvent: a\n };\n b.firePointEvent ? b.firePointEvent(\"legendItemClick\", a, c) : q(b, \"legendItemClick\", a, c);\n });\n },\n createCheckboxForItem: function (a) {\n a.checkbox = H(\"input\", {\n type: \"checkbox\",\n className: \"highcharts-legend-checkbox\",\n checked: a.selected,\n defaultChecked: a.selected\n }, this.options.itemCheckboxStyle, this.chart.container);\n C(a.checkbox, \"click\", function (b) {\n q(a.series || a, \"checkboxClick\", {\n checked: b.target.checked,\n item: a\n }, function () {\n a.select();\n });\n });\n }\n });\n G(f.prototype, {\n showResetZoom: function () {\n function a() {\n b.zoomOut();\n }\n var b = this,\n c = h.lang,\n d = b.options.chart.resetZoomButton,\n e = d.theme,\n f = e.states,\n g = \"chart\" === d.relativeTo || \"spaceBox\" === d.relativeTo ? null : \"plotBox\";\n q(this, \"beforeShowResetZoom\", null, function () {\n b.resetZoomButton = b.renderer.button(c.resetZoom, null, null, a, e, f && f.hover).attr({\n align: d.position.align,\n title: c.resetZoomTitle\n }).addClass(\"highcharts-reset-zoom\").add().align(d.position, !1, g);\n });\n q(this, \"afterShowResetZoom\");\n },\n zoomOut: function () {\n q(this, \"selection\", {\n resetSelection: !0\n }, this.zoom);\n },\n zoom: function (a) {\n var b = this,\n c,\n d = b.pointer,\n e = !1,\n f = b.inverted ? d.mouseDownX : d.mouseDownY;\n !a || a.resetSelection ? (b.axes.forEach(function (a) {\n c = a.zoom();\n }), d.initiated = !1) : a.xAxis.concat(a.yAxis).forEach(function (a) {\n var g = a.axis,\n k = b.inverted ? g.left : g.top,\n h = b.inverted ? k + g.width : k + g.height,\n l = g.isXAxis,\n m = !1;\n if (!l && f >= k && f <= h || l || !F(f)) m = !0;\n d[l ? \"zoomX\" : \"zoomY\"] && m && (c = g.zoom(a.min, a.max), g.displayBtn && (e = !0));\n });\n var g = b.resetZoomButton;\n e && !g ? b.showResetZoom() : !e && B(g) && (b.resetZoomButton = g.destroy());\n c && b.redraw(v(b.options.chart.animation, a && a.animation, 100 > b.pointCount));\n },\n pan: function (a, b) {\n var c = this,\n d = c.hoverPoints,\n e;\n q(this, \"pan\", {\n originalEvent: a\n }, function () {\n d && d.forEach(function (a) {\n a.setState();\n });\n (\"xy\" === b ? [1, 0] : [1]).forEach(function (b) {\n b = c[b ? \"xAxis\" : \"yAxis\"][0];\n var d = b.horiz,\n f = a[d ? \"chartX\" : \"chartY\"];\n d = d ? \"mouseDownX\" : \"mouseDownY\";\n var g = c[d],\n k = (b.pointRange || 0) / 2,\n h = b.reversed && !c.inverted || !b.reversed && c.inverted ? -1 : 1,\n l = b.getExtremes(),\n n = b.toValue(g - f, !0) + k * h;\n h = b.toValue(g + b.len - f, !0) - k * h;\n var p = h < n;\n g = p ? h : n;\n n = p ? n : h;\n h = Math.min(l.dataMin, k ? l.min : b.toValue(b.toPixels(l.min) - b.minPixelPadding));\n k = Math.max(l.dataMax, k ? l.max : b.toValue(b.toPixels(l.max) + b.minPixelPadding));\n p = h - g;\n 0 < p && (n += p, g = h);\n p = n - k;\n 0 < p && (n = k, g -= p);\n b.series.length && g !== l.min && n !== l.max && (b.setExtremes(g, n, !1, !1, {\n trigger: \"pan\"\n }), e = !0);\n c[d] = f;\n });\n e && c.redraw(!1);\n y(c.container, {\n cursor: \"move\"\n });\n });\n }\n });\n G(d.prototype, {\n select: function (a, b) {\n var c = this,\n d = c.series,\n e = d.chart;\n this.selectedStaging = a = v(a, !c.selected);\n c.firePointEvent(a ? \"select\" : \"unselect\", {\n accumulate: b\n }, function () {\n c.selected = c.options.selected = a;\n d.options.data[d.data.indexOf(c)] = c.options;\n c.setState(a && \"select\");\n b || e.getSelectedPoints().forEach(function (a) {\n var b = a.series;\n a.selected && a !== c && (a.selected = a.options.selected = !1, b.options.data[b.data.indexOf(a)] = a.options, a.setState(e.hoverPoints && b.options.inactiveOtherPoints ? \"inactive\" : \"\"), a.firePointEvent(\"unselect\"));\n });\n });\n delete this.selectedStaging;\n },\n onMouseOver: function (a) {\n var b = this.series.chart,\n c = b.pointer;\n a = a ? c.normalize(a) : c.getChartCoordinatesFromPoint(this, b.inverted);\n c.runPointActions(a, this);\n },\n onMouseOut: function () {\n var a = this.series.chart;\n this.firePointEvent(\"mouseOut\");\n this.series.options.inactiveOtherPoints || (a.hoverPoints || []).forEach(function (a) {\n a.setState();\n });\n a.hoverPoints = a.hoverPoint = null;\n },\n importEvents: function () {\n if (!this.hasImportedEvents) {\n var b = this,\n d = a(b.series.options.point, b.options).events;\n b.events = d;\n t(d, function (a, d) {\n c.isFunction(a) && C(b, d, a);\n });\n this.hasImportedEvents = !0;\n }\n },\n setState: function (a, b) {\n var c = this.series,\n d = this.state,\n e = c.options.states[a || \"normal\"] || {},\n f = n[c.type].marker && c.options.marker,\n g = f && !1 === f.enabled,\n h = f && f.states && f.states[a || \"normal\"] || {},\n l = !1 === h.enabled,\n p = c.stateMarkerGraphic,\n u = this.marker || {},\n t = c.chart,\n y = c.halo,\n z,\n B = f && c.markerAttribs;\n a = a || \"\";\n if (!(a === this.state && !b || this.selected && \"select\" !== a || !1 === e.enabled || a && (l || g && !1 === h.enabled) || a && u.states && u.states[a] && !1 === u.states[a].enabled)) {\n this.state = a;\n B && (z = c.markerAttribs(this, a));\n if (this.graphic) {\n d && this.graphic.removeClass(\"highcharts-point-\" + d);\n a && this.graphic.addClass(\"highcharts-point-\" + a);\n if (!t.styledMode) {\n var C = c.pointAttribs(this, a);\n var H = v(t.options.chart.animation, e.animation);\n c.options.inactiveOtherPoints && ((this.dataLabels || []).forEach(function (a) {\n a && a.animate({\n opacity: C.opacity\n }, H);\n }), this.connector && this.connector.animate({\n opacity: C.opacity\n }, H));\n this.graphic.animate(C, H);\n }\n z && this.graphic.animate(z, v(t.options.chart.animation, h.animation, f.animation));\n p && p.hide();\n } else {\n if (a && h) {\n d = u.symbol || c.symbol;\n p && p.currentSymbol !== d && (p = p.destroy());\n if (z) if (p) p[b ? \"animate\" : \"attr\"]({\n x: z.x,\n y: z.y\n });else d && (c.stateMarkerGraphic = p = t.renderer.symbol(d, z.x, z.y, z.width, z.height).add(c.markerGroup), p.currentSymbol = d);\n !t.styledMode && p && p.attr(c.pointAttribs(this, a));\n }\n p && (p[a && this.isInside ? \"show\" : \"hide\"](), p.element.point = this);\n }\n a = e.halo;\n e = (p = this.graphic || p) && p.visibility || \"inherit\";\n a && a.size && p && \"hidden\" !== e ? (y || (c.halo = y = t.renderer.path().add(p.parentGroup)), y.show()[b ? \"animate\" : \"attr\"]({\n d: this.haloPath(a.size)\n }), y.attr({\n \"class\": \"highcharts-halo highcharts-color-\" + v(this.colorIndex, c.colorIndex) + (this.className ? \" \" + this.className : \"\"),\n visibility: e,\n zIndex: -1\n }), y.point = this, t.styledMode || y.attr(G({\n fill: this.color || c.color,\n \"fill-opacity\": a.opacity\n }, a.attributes))) : y && y.point && y.point.haloPath && y.animate({\n d: y.point.haloPath(0)\n }, null, y.hide);\n q(this, \"afterSetState\");\n }\n },\n haloPath: function (a) {\n return this.series.chart.renderer.symbols.circle(Math.floor(this.plotX) - a, this.plotY - a, 2 * a, 2 * a);\n }\n });\n G(e.prototype, {\n onMouseOver: function () {\n var a = this.chart,\n b = a.hoverSeries;\n if (b && b !== this) b.onMouseOut();\n this.options.events.mouseOver && q(this, \"mouseOver\");\n this.setState(\"hover\");\n a.hoverSeries = this;\n },\n onMouseOut: function () {\n var a = this.options,\n b = this.chart,\n c = b.tooltip,\n d = b.hoverPoint;\n b.hoverSeries = null;\n if (d) d.onMouseOut();\n this && a.events.mouseOut && q(this, \"mouseOut\");\n !c || this.stickyTracking || c.shared && !this.noSharedTooltip || c.hide();\n b.series.forEach(function (a) {\n a.setState(\"\", !0);\n });\n },\n setState: function (a, b) {\n var c = this,\n d = c.options,\n e = c.graph,\n f = d.inactiveOtherPoints,\n g = d.states,\n h = d.lineWidth,\n l = d.opacity,\n n = v(g[a || \"normal\"] && g[a || \"normal\"].animation, c.chart.options.chart.animation);\n d = 0;\n a = a || \"\";\n if (c.state !== a && ([c.group, c.markerGroup, c.dataLabelsGroup].forEach(function (b) {\n b && (c.state && b.removeClass(\"highcharts-series-\" + c.state), a && b.addClass(\"highcharts-series-\" + a));\n }), c.state = a, !c.chart.styledMode)) {\n if (g[a] && !1 === g[a].enabled) return;\n a && (h = g[a].lineWidth || h + (g[a].lineWidthPlus || 0), l = v(g[a].opacity, l));\n if (e && !e.dashstyle) for (g = {\n \"stroke-width\": h\n }, e.animate(g, n); c[\"zone-graph-\" + d];) c[\"zone-graph-\" + d].attr(g), d += 1;\n f || [c.group, c.markerGroup, c.dataLabelsGroup, c.labelBySeries].forEach(function (a) {\n a && a.animate({\n opacity: l\n }, n);\n });\n }\n b && f && c.points && c.setAllPointsToState(a);\n },\n setAllPointsToState: function (a) {\n this.points.forEach(function (b) {\n b.setState && b.setState(a);\n });\n },\n setVisible: function (a, b) {\n var c = this,\n d = c.chart,\n e = c.legendItem,\n f = d.options.chart.ignoreHiddenSeries,\n g = c.visible;\n var h = (c.visible = a = c.options.visible = c.userOptions.visible = void 0 === a ? !g : a) ? \"show\" : \"hide\";\n [\"group\", \"dataLabelsGroup\", \"markerGroup\", \"tracker\", \"tt\"].forEach(function (a) {\n if (c[a]) c[a][h]();\n });\n if (d.hoverSeries === c || (d.hoverPoint && d.hoverPoint.series) === c) c.onMouseOut();\n e && d.legend.colorizeItem(c, a);\n c.isDirty = !0;\n c.options.stacking && d.series.forEach(function (a) {\n a.options.stacking && a.visible && (a.isDirty = !0);\n });\n c.linkedSeries.forEach(function (b) {\n b.setVisible(a, !1);\n });\n f && (d.isDirtyBox = !0);\n q(c, h);\n !1 !== b && d.redraw();\n },\n show: function () {\n this.setVisible(!0);\n },\n hide: function () {\n this.setVisible(!1);\n },\n select: function (a) {\n this.selected = a = this.options.selected = void 0 === a ? !this.selected : a;\n this.checkbox && (this.checkbox.checked = a);\n q(this, a ? \"select\" : \"unselect\");\n },\n drawTracker: E.drawTrackerGraph\n });\n });\n M(I, \"parts/Responsive.js\", [I[\"parts/Globals.js\"], I[\"parts/Utilities.js\"]], function (c, f) {\n var F = f.isArray,\n G = f.isObject,\n z = f.objectEach,\n B = f.pick,\n t = f.splat;\n f = c.Chart;\n f.prototype.setResponsive = function (f, t) {\n var v = this.options.responsive,\n y = [],\n h = this.currentResponsive;\n !t && v && v.rules && v.rules.forEach(function (f) {\n void 0 === f._id && (f._id = c.uniqueKey());\n this.matchResponsiveRule(f, y);\n }, this);\n t = c.merge.apply(0, y.map(function (f) {\n return c.find(v.rules, function (c) {\n return c._id === f;\n }).chartOptions;\n }));\n t.isResponsiveOptions = !0;\n y = y.toString() || void 0;\n y !== (h && h.ruleIds) && (h && this.update(h.undoOptions, f, !0), y ? (h = this.currentOptions(t), h.isResponsiveOptions = !0, this.currentResponsive = {\n ruleIds: y,\n mergedOptions: t,\n undoOptions: h\n }, this.update(t, f, !0)) : this.currentResponsive = void 0);\n };\n f.prototype.matchResponsiveRule = function (c, f) {\n var t = c.condition;\n (t.callback || function () {\n return this.chartWidth <= B(t.maxWidth, Number.MAX_VALUE) && this.chartHeight <= B(t.maxHeight, Number.MAX_VALUE) && this.chartWidth >= B(t.minWidth, 0) && this.chartHeight >= B(t.minHeight, 0);\n }).call(this) && f.push(c._id);\n };\n f.prototype.currentOptions = function (c) {\n function f(c, n, q, g) {\n var b;\n z(c, function (a, c) {\n if (!g && -1 < v.collectionsWithUpdate.indexOf(c)) for (a = t(a), q[c] = [], b = 0; b < a.length; b++) n[c][b] && (q[c][b] = {}, f(a[b], n[c][b], q[c][b], g + 1));else G(a) ? (q[c] = F(a) ? [] : {}, f(a, n[c] || {}, q[c], g + 1)) : q[c] = void 0 === n[c] ? null : n[c];\n });\n }\n var v = this,\n y = {};\n f(c, this.options, y, 0);\n return y;\n };\n });\n M(I, \"masters/highcharts.src.js\", [I[\"parts/Globals.js\"], I[\"parts/Utilities.js\"]], function (c, f) {\n var F = f.extend;\n F(c, {\n arrayMax: f.arrayMax,\n arrayMin: f.arrayMin,\n attr: f.attr,\n defined: f.defined,\n erase: f.erase,\n extend: f.extend,\n isArray: f.isArray,\n isClass: f.isClass,\n isDOMElement: f.isDOMElement,\n isNumber: f.isNumber,\n isObject: f.isObject,\n isString: f.isString,\n objectEach: f.objectEach,\n pick: f.pick,\n pInt: f.pInt,\n setAnimation: f.setAnimation,\n splat: f.splat,\n syncTimeout: f.syncTimeout\n });\n return c;\n });\n I[\"masters/highcharts.src.js\"]._modules = I;\n return I[\"masters/highcharts.src.js\"];\n});","var isCallable = require('../internals/is-callable');\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\n} : function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var af = moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return number + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n\n week: {\n dow: 1,\n // Maandag is die eerste dag van die week.\n doy: 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n }\n });\n\n return af;\n});","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: 'Ù¡',\n 2: 'Ù¢',\n 3: 'Ù£',\n 4: 'Ù¤',\n 5: 'Ù¥',\n 6: 'Ù¦',\n 7: 'Ù§',\n 8: 'Ù¨',\n 9: 'Ù©',\n 0: 'Ù '\n },\n numberMap = {\n 'Ù¡': '1',\n 'Ù¢': '2',\n 'Ù£': '3',\n 'Ù¤': '4',\n 'Ù¥': '5',\n 'Ù¦': '6',\n 'Ù§': '7',\n 'Ù¨': '8',\n 'Ù©': '9',\n 'Ù ': '0'\n },\n pluralForm = function (n) {\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n },\n plurals = {\n s: ['أقل من ثانية', 'ثانية ÙˆØ§ØØ¯Ø©', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m: ['أقل من دقيقة', 'دقيقة ÙˆØ§ØØ¯Ø©', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h: ['أقل من ساعة', 'ساعة ÙˆØ§ØØ¯Ø©', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d: ['أقل من يوم', 'يوم ÙˆØ§ØØ¯', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M: ['أقل من شهر', 'شهر ÙˆØ§ØØ¯', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y: ['أقل من عام', 'عام ÙˆØ§ØØ¯', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = ['يناير', 'ÙØ¨Ø±Ø§ÙŠØ±', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوÙمبر', 'ديسمبر'];\n var ar = moment.defineLocale('ar', {\n months: months,\n monthsShort: months,\n weekdays: 'Ø§Ù„Ø£ØØ¯_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'Ø£ØØ¯_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'Ø_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|Ù…/,\n isPM: function (input) {\n return 'Ù…' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'Ù…';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y')\n },\n preparse: function (string) {\n return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 6,\n // Saturday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return ar;\n});","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var pluralForm = function (n) {\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n },\n plurals = {\n s: ['أقل من ثانية', 'ثانية ÙˆØ§ØØ¯Ø©', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m: ['أقل من دقيقة', 'دقيقة ÙˆØ§ØØ¯Ø©', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h: ['أقل من ساعة', 'ساعة ÙˆØ§ØØ¯Ø©', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d: ['أقل من يوم', 'يوم ÙˆØ§ØØ¯', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M: ['أقل من شهر', 'شهر ÙˆØ§ØØ¯', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y: ['أقل من عام', 'عام ÙˆØ§ØØ¯', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = ['جانÙÙŠ', 'ÙÙŠÙØ±ÙŠ', 'مارس', 'Ø£ÙØ±ÙŠÙ„', 'ماي', 'جوان', 'جويلية', 'أوت', 'سبتمبر', 'أكتوبر', 'نوÙمبر', 'ديسمبر'];\n var arDz = moment.defineLocale('ar-dz', {\n months: months,\n monthsShort: months,\n weekdays: 'Ø§Ù„Ø£ØØ¯_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'Ø£ØØ¯_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'Ø_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|Ù…/,\n isPM: function (input) {\n return 'Ù…' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'Ù…';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y')\n },\n postformat: function (string) {\n return string.replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return arDz;\n});","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var arKw = moment.defineLocale('ar-kw', {\n months: 'يناير_ÙØ¨Ø±Ø§ÙŠØ±_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n monthsShort: 'يناير_ÙØ¨Ø±Ø§ÙŠØ±_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n weekdays: 'Ø§Ù„Ø£ØØ¯_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'Ø§ØØ¯_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'Ø_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'ÙÙŠ %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات'\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return arKw;\n});","//! moment.js locale configuration\n//! locale : Arabic (Lybia) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 0: '0'\n },\n pluralForm = function (n) {\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n },\n plurals = {\n s: ['أقل من ثانية', 'ثانية ÙˆØ§ØØ¯Ø©', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m: ['أقل من دقيقة', 'دقيقة ÙˆØ§ØØ¯Ø©', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h: ['أقل من ساعة', 'ساعة ÙˆØ§ØØ¯Ø©', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d: ['أقل من يوم', 'يوم ÙˆØ§ØØ¯', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M: ['أقل من شهر', 'شهر ÙˆØ§ØØ¯', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y: ['أقل من عام', 'عام ÙˆØ§ØØ¯', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = ['يناير', 'ÙØ¨Ø±Ø§ÙŠØ±', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوÙمبر', 'ديسمبر'];\n var arLy = moment.defineLocale('ar-ly', {\n months: months,\n monthsShort: months,\n weekdays: 'Ø§Ù„Ø£ØØ¯_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'Ø£ØØ¯_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'Ø_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|Ù…/,\n isPM: function (input) {\n return 'Ù…' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'Ù…';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y')\n },\n preparse: function (string) {\n return string.replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 6,\n // Saturday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return arLy;\n});","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var arMa = moment.defineLocale('ar-ma', {\n months: 'يناير_ÙØ¨Ø±Ø§ÙŠØ±_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n monthsShort: 'يناير_ÙØ¨Ø±Ø§ÙŠØ±_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n weekdays: 'Ø§Ù„Ø£ØØ¯_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'Ø§ØØ¯_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'Ø_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'ÙÙŠ %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return arMa;\n});","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: 'Ù¡',\n 2: 'Ù¢',\n 3: 'Ù£',\n 4: 'Ù¤',\n 5: 'Ù¥',\n 6: 'Ù¦',\n 7: 'Ù§',\n 8: 'Ù¨',\n 9: 'Ù©',\n 0: 'Ù '\n },\n numberMap = {\n 'Ù¡': '1',\n 'Ù¢': '2',\n 'Ù£': '3',\n 'Ù¤': '4',\n 'Ù¥': '5',\n 'Ù¦': '6',\n 'Ù§': '7',\n 'Ù¨': '8',\n 'Ù©': '9',\n 'Ù ': '0'\n };\n var arSa = moment.defineLocale('ar-sa', {\n months: 'يناير_ÙØ¨Ø±Ø§ÙŠØ±_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوÙمبر_ديسمبر'.split('_'),\n monthsShort: 'يناير_ÙØ¨Ø±Ø§ÙŠØ±_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوÙمبر_ديسمبر'.split('_'),\n weekdays: 'Ø§Ù„Ø£ØØ¯_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'Ø£ØØ¯_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'Ø_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|Ù…/,\n isPM: function (input) {\n return 'Ù…' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'Ù…';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'ÙÙŠ %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات'\n },\n preparse: function (string) {\n return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return arSa;\n});","//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانÙÙŠ_ÙÙŠÙØ±ÙŠ_مارس_Ø£ÙØ±ÙŠÙ„_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوÙمبر_ديسمبر'.split('_'),\n monthsShort: 'جانÙÙŠ_ÙÙŠÙØ±ÙŠ_مارس_Ø£ÙØ±ÙŠÙ„_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوÙمبر_ديسمبر'.split('_'),\n weekdays: 'Ø§Ù„Ø£ØØ¯_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'Ø£ØØ¯_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'Ø_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'ÙÙŠ %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return arTn;\n});","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı'\n };\n var az = moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays: 'Bazar_Bazar ertÉ™si_ÇərÅŸÉ™nbÉ™ axÅŸamı_ÇərÅŸÉ™nbÉ™_CümÉ™ axÅŸamı_CümÉ™_ŞənbÉ™'.split('_'),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gÉ™lÉ™n hÉ™ftÉ™] dddd [saat] LT',\n lastDay: '[dünÉ™n] LT',\n lastWeek: '[keçən hÉ™ftÉ™] dddd [saat] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s É™vvÉ™l',\n s: 'bir neçə saniyÉ™',\n ss: '%d saniyÉ™',\n m: 'bir dÉ™qiqÉ™',\n mm: '%d dÉ™qiqÉ™',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il'\n },\n meridiemParse: /gecÉ™|sÉ™hÉ™r|gündüz|axÅŸam/,\n isPM: function (input) {\n return /^(gündüz|axÅŸam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecÉ™';\n } else if (hour < 12) {\n return 'sÉ™hÉ™r';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axÅŸam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = number % 100 - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return az;\n});","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'Ñекунда_Ñекунды_Ñекунд' : 'Ñекунду_Ñекунды_Ñекунд',\n mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n dd: 'дзень_дні_дзён',\n MM: 'меÑÑц_меÑÑцы_меÑÑцаў',\n yy: 'год_гады_гадоў'\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n } else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var be = moment.defineLocale('be', {\n months: {\n format: 'ÑтудзенÑ_лютага_Ñакавіка_краÑавіка_траўнÑ_чÑрвенÑ_ліпенÑ_жніўнÑ_вераÑнÑ_каÑтрычніка_ліÑтапада_ÑнежнÑ'.split('_'),\n standalone: 'Ñтудзень_люты_Ñакавік_краÑавік_травень_чÑрвень_ліпень_жнівень_вераÑень_каÑтрычнік_ліÑтапад_Ñнежань'.split('_')\n },\n monthsShort: 'Ñтуд_лют_Ñак_краÑ_трав_чÑрв_ліп_жнів_вер_каÑÑ‚_ліÑÑ‚_Ñнеж'.split('_'),\n weekdays: {\n format: 'нÑдзелю_панÑдзелак_аўторак_Ñераду_чацвер_пÑтніцу_Ñуботу'.split('_'),\n standalone: 'нÑдзелÑ_панÑдзелак_аўторак_Ñерада_чацвер_пÑтніца_Ñубота'.split('_'),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наÑтупную)? ?\\] ?dddd/\n },\n weekdaysShort: 'нд_пн_ат_ÑÑ€_чц_пт_Ñб'.split('_'),\n weekdaysMin: 'нд_пн_ат_ÑÑ€_чц_пт_Ñб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., HH:mm',\n LLLL: 'dddd, D MMMM YYYY г., HH:mm'\n },\n calendar: {\n sameDay: '[Ð¡Ñ‘Ð½Ð½Ñ Ñž] LT',\n nextDay: '[Заўтра Ñž] LT',\n lastDay: '[Учора Ñž] LT',\n nextWeek: function () {\n return '[У] dddd [Ñž] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [Ñž] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [Ñž] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'праз %s',\n past: '%s таму',\n s: 'некалькі Ñекунд',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: 'дзень',\n dd: relativeTimeWithPlural,\n M: 'меÑÑц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural\n },\n meridiemParse: /ночы|раніцы|днÑ|вечара/,\n isPM: function (input) {\n return /^(днÑ|вечара)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'днÑ';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(Ñ–|Ñ‹|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) && number % 100 !== 12 && number % 100 !== 13 ? number + '-Ñ–' : number + '-Ñ‹';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return be;\n});","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var bg = moment.defineLocale('bg', {\n months: 'Ñнуари_февруари_март_април_май_юни_юли_авгуÑÑ‚_Ñептември_октомври_ноември_декември'.split('_'),\n monthsShort: 'Ñну_фев_мар_апр_май_юни_юли_авг_Ñеп_окт_ное_дек'.split('_'),\n weekdays: 'неделÑ_понеделник_вторник_ÑÑ€Ñда_четвъртък_петък_Ñъбота'.split('_'),\n weekdaysShort: 'нед_пон_вто_ÑÑ€Ñ_чет_пет_Ñъб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ÑÑ€_чт_пт_Ñб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[Ð”Ð½ÐµÑ Ð²] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Миналата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[МиналиÑ] dddd [в] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'Ñлед %s',\n past: 'преди %s',\n s: 'нÑколко Ñекунди',\n ss: '%d Ñекунди',\n m: 'минута',\n mm: '%d минути',\n h: 'чаÑ',\n hh: '%d чаÑа',\n d: 'ден',\n dd: '%d дена',\n w: 'Ñедмица',\n ww: '%d Ñедмици',\n M: 'меÑец',\n MM: '%d меÑеца',\n y: 'година',\n yy: '%d години'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return bg;\n});","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var bm = moment.defineLocale('bm', {\n months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_MÉ›kalo_ZuwÉ›nkalo_Zuluyekalo_Utikalo_SÉ›tanburukalo_É”kutÉ”burukalo_Nowanburukalo_Desanburukalo'.split('_'),\n monthsShort: 'Zan_Few_Mar_Awi_MÉ›_Zuw_Zul_Uti_SÉ›t_É”ku_Now_Des'.split('_'),\n weekdays: 'Kari_NtÉ›nÉ›n_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort: 'Kar_NtÉ›_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'MMMM [tile] D [san] YYYY',\n LLL: 'MMMM [tile] D [san] YYYY [lÉ›rÉ›] HH:mm',\n LLLL: 'dddd MMMM [tile] D [san] YYYY [lÉ›rÉ›] HH:mm'\n },\n calendar: {\n sameDay: '[Bi lÉ›rÉ›] LT',\n nextDay: '[Sini lÉ›rÉ›] LT',\n nextWeek: 'dddd [don lÉ›rÉ›] LT',\n lastDay: '[Kunu lÉ›rÉ›] LT',\n lastWeek: 'dddd [tÉ›mÉ›nen lÉ›rÉ›] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s kÉ”nÉ”',\n past: 'a bÉ› %s bÉ”',\n s: 'sanga dama dama',\n ss: 'sekondi %d',\n m: 'miniti kelen',\n mm: 'miniti %d',\n h: 'lÉ›rÉ› kelen',\n hh: 'lÉ›rÉ› %d',\n d: 'tile kelen',\n dd: 'tile %d',\n M: 'kalo kelen',\n MM: 'kalo %d',\n y: 'san kelen',\n yy: 'san %d'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return bm;\n});","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: 'à§§',\n 2: '২',\n 3: 'à§©',\n 4: '৪',\n 5: 'à§«',\n 6: '৬',\n 7: 'à§',\n 8: 'à§®',\n 9: '৯',\n 0: '০'\n },\n numberMap = {\n 'à§§': '1',\n '২': '2',\n 'à§©': '3',\n '৪': '4',\n 'à§«': '5',\n '৬': '6',\n 'à§': '7',\n 'à§®': '8',\n '৯': '9',\n '০': '0'\n };\n var bn = moment.defineLocale('bn', {\n months: 'জানà§à§Ÿà¦¾à¦°à¦¿_ফেবà§à¦°à§à§Ÿà¦¾à¦°à¦¿_মারà§à¦š_à¦à¦ªà§à¦°à¦¿à¦²_মে_জà§à¦¨_জà§à¦²à¦¾à¦‡_আগসà§à¦Ÿ_সেপà§à¦Ÿà§‡à¦®à§à¦¬à¦°_অকà§à¦Ÿà§‹à¦¬à¦°_নà¦à§‡à¦®à§à¦¬à¦°_ডিসেমà§à¦¬à¦°'.split('_'),\n monthsShort: 'জানà§_ফেবà§à¦°à§_মারà§à¦š_à¦à¦ªà§à¦°à¦¿à¦²_মে_জà§à¦¨_জà§à¦²à¦¾à¦‡_আগসà§à¦Ÿ_সেপà§à¦Ÿ_অকà§à¦Ÿà§‹_নà¦à§‡_ডিসে'.split('_'),\n weekdays: 'রবিবার_সোমবার_মঙà§à¦—লবার_বà§à¦§à¦¬à¦¾à¦°_বৃহসà§à¦ªà¦¤à¦¿à¦¬à¦¾à¦°_শà§à¦•à§à¦°à¦¬à¦¾à¦°_শনিবার'.split('_'),\n weekdaysShort: 'রবি_সোম_মঙà§à¦—ল_বà§à¦§_বৃহসà§à¦ªà¦¤à¦¿_শà§à¦•à§à¦°_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙà§à¦—ল_বà§à¦§_বৃহ_শà§à¦•à§à¦°_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়'\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেনà§à¦¡',\n ss: '%d সেকেনà§à¦¡',\n m: 'à¦à¦• মিনিট',\n mm: '%d মিনিট',\n h: 'à¦à¦• ঘনà§à¦Ÿà¦¾',\n hh: '%d ঘনà§à¦Ÿà¦¾',\n d: 'à¦à¦• দিন',\n dd: '%d দিন',\n M: 'à¦à¦• মাস',\n MM: '%d মাস',\n y: 'à¦à¦• বছর',\n yy: '%d বছর'\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬à§à§®à§¯à§¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দà§à¦ªà§à¦°|বিকাল|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'রাত' && hour >= 4 || meridiem === 'দà§à¦ªà§à¦°' && hour < 5 || meridiem === 'বিকাল') {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দà§à¦ªà§à¦°';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return bn;\n});","//! moment.js locale configuration\n//! locale : Bengali (Bangladesh) [bn-bd]\n//! author : Asraf Hossain Patoary : https://github.com/ashwoolford\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: 'à§§',\n 2: '২',\n 3: 'à§©',\n 4: '৪',\n 5: 'à§«',\n 6: '৬',\n 7: 'à§',\n 8: 'à§®',\n 9: '৯',\n 0: '০'\n },\n numberMap = {\n 'à§§': '1',\n '২': '2',\n 'à§©': '3',\n '৪': '4',\n 'à§«': '5',\n '৬': '6',\n 'à§': '7',\n 'à§®': '8',\n '৯': '9',\n '০': '0'\n };\n var bnBd = moment.defineLocale('bn-bd', {\n months: 'জানà§à§Ÿà¦¾à¦°à¦¿_ফেবà§à¦°à§à§Ÿà¦¾à¦°à¦¿_মারà§à¦š_à¦à¦ªà§à¦°à¦¿à¦²_মে_জà§à¦¨_জà§à¦²à¦¾à¦‡_আগসà§à¦Ÿ_সেপà§à¦Ÿà§‡à¦®à§à¦¬à¦°_অকà§à¦Ÿà§‹à¦¬à¦°_নà¦à§‡à¦®à§à¦¬à¦°_ডিসেমà§à¦¬à¦°'.split('_'),\n monthsShort: 'জানà§_ফেবà§à¦°à§_মারà§à¦š_à¦à¦ªà§à¦°à¦¿à¦²_মে_জà§à¦¨_জà§à¦²à¦¾à¦‡_আগসà§à¦Ÿ_সেপà§à¦Ÿ_অকà§à¦Ÿà§‹_নà¦à§‡_ডিসে'.split('_'),\n weekdays: 'রবিবার_সোমবার_মঙà§à¦—লবার_বà§à¦§à¦¬à¦¾à¦°_বৃহসà§à¦ªà¦¤à¦¿à¦¬à¦¾à¦°_শà§à¦•à§à¦°à¦¬à¦¾à¦°_শনিবার'.split('_'),\n weekdaysShort: 'রবি_সোম_মঙà§à¦—ল_বà§à¦§_বৃহসà§à¦ªà¦¤à¦¿_শà§à¦•à§à¦°_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙà§à¦—ল_বà§à¦§_বৃহ_শà§à¦•à§à¦°_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়'\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেনà§à¦¡',\n ss: '%d সেকেনà§à¦¡',\n m: 'à¦à¦• মিনিট',\n mm: '%d মিনিট',\n h: 'à¦à¦• ঘনà§à¦Ÿà¦¾',\n hh: '%d ঘনà§à¦Ÿà¦¾',\n d: 'à¦à¦• দিন',\n dd: '%d দিন',\n M: 'à¦à¦• মাস',\n MM: '%d মাস',\n y: 'à¦à¦• বছর',\n yy: '%d বছর'\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬à§à§®à§¯à§¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|à¦à§‹à¦°|সকাল|দà§à¦ªà§à¦°|বিকাল|সনà§à¦§à§à¦¯à¦¾|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'রাত') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'à¦à§‹à¦°') {\n return hour;\n } else if (meridiem === 'সকাল') {\n return hour;\n } else if (meridiem === 'দà§à¦ªà§à¦°') {\n return hour >= 3 ? hour : hour + 12;\n } else if (meridiem === 'বিকাল') {\n return hour + 12;\n } else if (meridiem === 'সনà§à¦§à§à¦¯à¦¾') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 6) {\n return 'à¦à§‹à¦°';\n } else if (hour < 12) {\n return 'সকাল';\n } else if (hour < 15) {\n return 'দà§à¦ªà§à¦°';\n } else if (hour < 18) {\n return 'বিকাল';\n } else if (hour < 20) {\n return 'সনà§à¦§à§à¦¯à¦¾';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return bnBd;\n});","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: '༡',\n 2: '༢',\n 3: '༣',\n 4: '༤',\n 5: '༥',\n 6: '༦',\n 7: '༧',\n 8: '༨',\n 9: '༩',\n 0: '༠'\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0'\n };\n var bo = moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),\n monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split('_'),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm'\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[à½à¼‹à½¦à½„] LT',\n lastWeek: '[བདུན་ཕྲག་མà½à½ ་མ] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སà¾à½¢à¼‹à½†à¼',\n m: 'སà¾à½¢à¼‹à½˜à¼‹à½‚ཅིག',\n mm: '%d སà¾à½¢à¼‹à½˜',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ'\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'མཚན་མོ' && hour >= 4 || meridiem === 'ཉིན་གུང' && hour < 5 || meridiem === 'དགོང་དག') {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return bo;\n});","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh'\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z'\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n var monthsParse = [/^gen/i, /^c[ʼ\\']hwe/i, /^meu/i, /^ebr/i, /^mae/i, /^(mez|eve)/i, /^gou/i, /^eos/i, /^gwe/i, /^her/i, /^du/i, /^ker/i],\n monthsRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n monthsStrictRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex = /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n fullWeekdaysParse = [/^sul/i, /^lun/i, /^meurzh/i, /^merc[ʼ\\']her/i, /^yaou/i, /^gwener/i, /^sadorn/i],\n shortWeekdaysParse = [/^Sul/i, /^Lun/i, /^Meu/i, /^Mer/i, /^Yao/i, /^Gwe/i, /^Sad/i],\n minWeekdaysParse = [/^Su/i, /^Lu/i, /^Me([^r]|$)/i, /^Mer/i, /^Ya/i, /^Gw/i, /^Sa/i];\n var br = moment.defineLocale('br', {\n months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),\n monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParse: minWeekdaysParse,\n fullWeekdaysParse: fullWeekdaysParse,\n shortWeekdaysParse: shortWeekdaysParse,\n minWeekdaysParse: minWeekdaysParse,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: '[Warcʼhoazh da] LT',\n nextWeek: 'dddd [da] LT',\n lastDay: '[Decʼh da] LT',\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'a-benn %s',\n past: '%s ʼzo',\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n },\n\n meridiemParse: /a.m.|g.m./,\n // goude merenn | a-raok merenn\n isPM: function (token) {\n return token === 'g.m.';\n },\n meridiem: function (hour, minute, isLower) {\n return hour < 12 ? 'a.m.' : 'g.m.';\n }\n });\n return br;\n});","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Marković\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n var bs = moment.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_Äetvrtak_petak_subota'.split('_'),\n weekdaysShort: 'ned._pon._uto._sri._Äet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_Äe_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juÄer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[proÅ¡lu] dddd [u] LT';\n case 6:\n return '[proÅ¡le] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[proÅ¡li] dddd [u] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return bs;\n});","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ca = moment.defineLocale('ca', {\n months: {\n standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split('_'),\n isFormat: /D[oD]?(\\s)+MMMM/\n },\n monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm'\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return '[el] dddd [passat a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: \"d'aquà %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output = number === 1 ? 'r' : number === 2 ? 'n' : number === 3 ? 'r' : number === 4 ? 't' : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return ca;\n});","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var months = 'leden_únor_bÅ™ezen_duben_kvÄ›ten_Äerven_Äervenec_srpen_zářÃ_Å™Ãjen_listopad_prosinec'.split('_'),\n monthsShort = 'led_úno_bÅ™e_dub_kvÄ›_Ävn_Ävc_srp_zář_Å™Ãj_lis_pro'.split('_'),\n monthsParse = [/^led/i, /^úno/i, /^bÅ™e/i, /^dub/i, /^kvÄ›/i, /^(Ävn|Äerven$|Äervna)/i, /^(Ävc|Äervenec|Äervence)/i, /^srp/i, /^zář/i, /^Å™Ãj/i, /^lis/i, /^pro/i],\n // NOTE: 'Äerven' is substring of 'Äervenec'; therefore 'Äervenec' must precede 'Äerven' in the regex to be fully matched.\n // Otherwise parser matches '1. Äervenec' as '1. Äerven' + 'ec'.\n monthsRegex = /^(leden|únor|bÅ™ezen|duben|kvÄ›ten|Äervenec|Äervence|Äerven|Äervna|srpen|zářÃ|Å™Ãjen|listopad|prosinec|led|úno|bÅ™e|dub|kvÄ›|Ävn|Ävc|srp|zář|Å™Ãj|lis|pro)/i;\n function plural(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n case 'ss':\n // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n case 'm':\n // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm':\n // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n case 'h':\n // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh':\n // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n case 'd':\n // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd':\n // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dnÃ');\n } else {\n return result + 'dny';\n }\n case 'M':\n // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mÄ›sÃc' : 'mÄ›sÃcem';\n case 'MM':\n // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mÄ›sÃce' : 'mÄ›sÃců');\n } else {\n return result + 'mÄ›sÃci';\n }\n case 'y':\n // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy':\n // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n }\n }\n var cs = moment.defineLocale('cs', {\n months: months,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n // NOTE: 'Äerven' is substring of 'Äervenec'; therefore 'Äervenec' must precede 'Äerven' in the regex to be fully matched.\n // Otherwise parser matches '1. Äervenec' as '1. Äerven' + 'ec'.\n monthsStrictRegex: /^(leden|ledna|února|únor|bÅ™ezen|bÅ™ezna|duben|dubna|kvÄ›ten|kvÄ›tna|Äervenec|Äervence|Äerven|Äervna|srpen|srpna|zářÃ|Å™Ãjen|Å™Ãjna|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex: /^(led|úno|bÅ™e|dub|kvÄ›|Ävn|Ävc|srp|zář|Å™Ãj|lis|pro)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'nedÄ›le_pondÄ›lÃ_úterý_stÅ™eda_Ätvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_Ät_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_Ät_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY'\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zÃtra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedÄ›li v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve stÅ™edu v] LT';\n case 4:\n return '[ve Ätvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[vÄera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou nedÄ›li v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou stÅ™edu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: 'pÅ™ed %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return cs;\n});","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var cv = moment.defineLocale('cv', {\n months: 'кӑрлач_нарӑÑ_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'),\n monthsShort: 'кӑр_нар_пуш_ака_май_Ò«Ó—Ñ€_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays: 'вырÑарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_Ñрнекун_шӑматкун'.split('_'),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_Ñрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_ыт_юн_кҫ_ÑÑ€_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm'\n },\n calendar: {\n sameDay: '[ПаÑн] LT [Ñехетре]',\n nextDay: '[Ыран] LT [Ñехетре]',\n lastDay: '[Ӗнер] LT [Ñехетре]',\n nextWeek: '[ҪитеÑ] dddd LT [Ñехетре]',\n lastWeek: '[Иртнӗ] dddd LT [Ñехетре]',\n sameElse: 'L'\n },\n relativeTime: {\n future: function (output) {\n var affix = /Ñехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран';\n return output + affix;\n },\n past: '%s каÑлла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр Ñехет',\n hh: '%d Ñехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return cv;\n});","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'),\n weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = ['', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed',\n // 1af to 10fed\n 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed\n ];\n\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return cy;\n});","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var da = moment.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm'\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'pÃ¥ dddd [kl.] LT',\n lastDay: '[i gÃ¥r kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'fÃ¥ sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en mÃ¥ned',\n MM: '%d mÃ¥neder',\n y: 'et Ã¥r',\n yy: '%d Ã¥r'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return da;\n});","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return de;\n});","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n var deAt = moment.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return deAt;\n});","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n var deCh = moment.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return deCh;\n});","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var months = ['Þ–Þ¬Þ‚ÞªÞ‡Þ¦ÞƒÞ©', 'ÞŠÞ¬Þ„Þ°ÞƒÞªÞ‡Þ¦ÞƒÞ©', 'Þ‰Þ§ÞƒÞ¨Þ—Þª', 'Þ‡ÞÞ•Þ°ÞƒÞ©ÞÞª', 'Þ‰Þ', 'Þ–Þ«Þ‚Þ°', 'Þ–ÞªÞÞ¦Þ‡Þ¨', 'Þ‡Þ¯ÞŽÞ¦ÞÞ°Þ“Þª', 'ÞÞ¬Þ•Þ°Þ“Þ¬Þ‰Þ°Þ„Þ¦ÞƒÞª', 'Þ‡Þ®Þ†Þ°Þ“Þ¯Þ„Þ¦ÞƒÞª', 'Þ‚Þ®ÞˆÞ¬Þ‰Þ°Þ„Þ¦ÞƒÞª', 'Þ‘Þ¨ÞÞ¬Þ‰Þ°Þ„Þ¦ÞƒÞª'],\n weekdays = ['އާދިއްތަ', 'Þ€Þ¯Þ‰Þ¦', 'Þ‡Þ¦Þ‚Þ°ÞŽÞ§ÞƒÞ¦', 'Þ„ÞªÞ‹Þ¦', 'Þ„ÞªÞƒÞ§Þްފަތި', 'Þ€ÞªÞ†ÞªÞƒÞª', 'Þ€Þ®Þ‚Þ¨Þ€Þ¨ÞƒÞª'];\n var dv = moment.defineLocale('dv', {\n months: months,\n monthsShort: months,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'Þ‡Þ§Þ‹Þ¨_Þ€Þ¯Þ‰Þ¦_Þ‡Þ¦Þ‚Þ°_Þ„ÞªÞ‹Þ¦_Þ„ÞªÞƒÞ§_Þ€ÞªÞ†Þª_Þ€Þ®Þ‚Þ¨'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /Þ‰Þ†|Þ‰ÞŠ/,\n isPM: function (input) {\n return 'Þ‰ÞŠ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'Þ‰Þ†';\n } else {\n return 'Þ‰ÞŠ';\n }\n },\n calendar: {\n sameDay: '[Þ‰Þ¨Þ‡Þ¦Þ‹Þª] LT',\n nextDay: '[Þ‰Þ§Þ‹Þ¦Þ‰Þ§] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Þ‡Þ¨Þ‡Þ°Þ”Þ¬] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'ތެރÞÞŽÞ¦Þ‡Þ¨ %s',\n past: 'Þ†ÞªÞƒÞ¨Þ‚Þ° %s',\n s: 'Þިކުންތުކޮޅެއް',\n ss: 'd% Þިކުންތު',\n m: 'Þ‰Þ¨Þ‚Þ¨Þ“Þ¬Þ‡Þ°',\n mm: 'Þ‰Þ¨Þ‚Þ¨Þ“Þª %d',\n h: 'ÞŽÞ¦Þ‘Þ¨Þ‡Þ¨ÞƒÞ¬Þ‡Þ°',\n hh: 'ÞŽÞ¦Þ‘Þ¨Þ‡Þ¨ÞƒÞª %d',\n d: 'Þ‹ÞªÞˆÞ¦Þ€Þ¬Þ‡Þ°',\n dd: 'Þ‹ÞªÞˆÞ¦ÞÞ° %d',\n M: 'Þ‰Þ¦Þ€Þ¬Þ‡Þ°',\n MM: 'Þ‰Þ¦ÞÞ° %d',\n y: 'Þ‡Þ¦Þ€Þ¦ÞƒÞ¬Þ‡Þ°',\n yy: 'Þ‡Þ¦Þ€Þ¦ÞƒÞª %d'\n },\n preparse: function (string) {\n return string.replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 7,\n // Sunday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return dv;\n});","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function isFunction(input) {\n return typeof Function !== 'undefined' && input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n var el = moment.defineLocale('el', {\n monthsNominativeEl: 'ΙανουάÏιος_ΦεβÏουάÏιος_ΜάÏτιος_ΑπÏίλιος_Μάιος_ΙοÏνιος_ΙοÏλιος_ΑÏγουστος_ΣεπτÎμβÏιος_ΟκτώβÏιος_ÎοÎμβÏιος_ΔεκÎμβÏιος'.split('_'),\n monthsGenitiveEl: 'ΙανουαÏίου_ΦεβÏουαÏίου_ΜαÏτίου_ΑπÏιλίου_ΜαÎου_Ιουνίου_Ιουλίου_ΑυγοÏστου_ΣεπτεμβÏίου_ΟκτωβÏίου_ÎοεμβÏίου_ΔεκεμβÏίου'.split('_'),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (typeof format === 'string' && /D/.test(format.substring(0, format.indexOf('MMMM')))) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: 'Ιαν_Φεβ_ΜαÏ_ΑπÏ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Îοε_Δεκ'.split('_'),\n weekdays: 'ΚυÏιακή_ΔευτÎÏα_ΤÏίτη_ΤετάÏτη_Î Îμπτη_ΠαÏασκευή_Σάββατο'.split('_'),\n weekdaysShort: 'ΚυÏ_Δευ_ΤÏι_Τετ_Πεμ_ΠαÏ_Σαβ'.split('_'),\n weekdaysMin: 'Κυ_Δε_ΤÏ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM: function (input) {\n return (input + '').toLowerCase()[0] === 'μ';\n },\n meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A'\n },\n calendarEl: {\n sameDay: '[ΣήμεÏα {}] LT',\n nextDay: '[ΑÏÏιο {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[Χθες {}] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 6:\n return '[το Ï€ÏοηγοÏμενο] dddd [{}] LT';\n default:\n return '[την Ï€ÏοηγοÏμενη] dddd [{}] LT';\n }\n },\n sameElse: 'L'\n },\n calendar: function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n },\n relativeTime: {\n future: 'σε %s',\n past: '%s Ï€Ïιν',\n s: 'λίγα δευτεÏόλεπτα',\n ss: '%d δευτεÏόλεπτα',\n m: 'Îνα λεπτό',\n mm: '%d λεπτά',\n h: 'μία ÏŽÏα',\n hh: '%d ÏŽÏες',\n d: 'μία μÎÏα',\n dd: '%d μÎÏες',\n M: 'Îνας μήνας',\n MM: '%d μήνες',\n y: 'Îνας χÏόνος',\n yy: '%d χÏόνια'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4st is the first week of the year.\n }\n });\n\n return el;\n});","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return enAu;\n});","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n }\n });\n return enCa;\n});","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return enGb;\n});","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return enIe;\n});","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n }\n });\n return enIl;\n});","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 1st is the first week of the year.\n }\n });\n\n return enIn;\n});","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return enNz;\n});","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var enSg = moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return enSg;\n});","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var eo = moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aÅgusto_septembro_oktobro_novembro_decembro'.split('_'),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aÅg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaÅdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaÅ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm'\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[HodiaÅ je] LT',\n nextDay: '[MorgaÅ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[HieraÅ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaÅ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago',\n //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return eo;\n});","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurà : https://github.com/julionc\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return '[el] dddd [pasado a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un dÃa',\n dd: '%d dÃas',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n },\n\n invalidDate: 'Fecha inválida'\n });\n return es;\n});","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A'\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return '[el] dddd [pasado a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un dÃa',\n dd: '%d dÃas',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return esDo;\n});","//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n var esMx = moment.defineLocale('es-mx', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return '[el] dddd [pasado a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un dÃa',\n dd: '%d dÃas',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n },\n\n invalidDate: 'Fecha inválida'\n });\n return esMx;\n});","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A'\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return '[el] dddd [pasado a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un dÃa',\n dd: '%d dÃas',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return esUs;\n});","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat']\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n var et = moment.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),\n monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: '%d päeva',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return et;\n});","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var eu = moment.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'),\n monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'),\n monthsParseExact: true,\n weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm'\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return eu;\n});","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: 'Û±',\n 2: 'Û²',\n 3: 'Û³',\n 4: 'Û´',\n 5: 'Ûµ',\n 6: 'Û¶',\n 7: 'Û·',\n 8: 'Û¸',\n 9: 'Û¹',\n 0: 'Û°'\n },\n numberMap = {\n 'Û±': '1',\n 'Û²': '2',\n 'Û³': '3',\n 'Û´': '4',\n 'Ûµ': '5',\n 'Û¶': '6',\n 'Û·': '7',\n 'Û¸': '8',\n 'Û¹': '9',\n 'Û°': '0'\n };\n var fa = moment.defineLocale('fa', {\n months: 'ژانویه_Ùوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\n monthsShort: 'ژانویه_Ùوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\n weekdays: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split('_'),\n weekdaysShort: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split('_'),\n weekdaysMin: 'ÛŒ_د_س_Ú†_Ù¾_ج_Ø´'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar: {\n sameDay: '[امروز ساعت] LT',\n nextDay: '[ÙØ±Ø¯Ø§ ساعت] LT',\n nextWeek: 'dddd [ساعت] LT',\n lastDay: '[دیروز ساعت] LT',\n lastWeek: 'dddd [پیش] [ساعت] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'در %s',\n past: '%s پیش',\n s: 'چند ثانیه',\n ss: '%d ثانیه',\n m: 'یک دقیقه',\n mm: '%d دقیقه',\n h: 'یک ساعت',\n hh: '%d ساعت',\n d: 'یک روز',\n dd: '%d روز',\n M: 'یک ماه',\n MM: '%d ماه',\n y: 'یک سال',\n yy: '%d سال'\n },\n preparse: function (string) {\n return string.replace(/[Û°-Û¹]/g, function (match) {\n return numberMap[match];\n }).replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, 'ØŒ');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}Ù…/,\n ordinal: '%dÙ…',\n week: {\n dow: 6,\n // Saturday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return fa;\n});","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '),\n numbersFuture = ['nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden', numbersPast[7], numbersPast[8], numbersPast[9]];\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n result = isFuture ? 'sekunnin' : 'sekuntia';\n break;\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10 ? isFuture ? numbersFuture[number] : numbersPast[number] : number;\n }\n var fi = moment.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),\n monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),\n weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm'\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return fi;\n});","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm'\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return fil;\n});","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var fo = moment.defineLocale('fo', {\n months: 'januar_februar_mars_aprÃl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_frÃggjadagur_leygardagur'.split('_'),\n weekdaysShort: 'sun_mán_týs_mik_hós_frÃ_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm'\n },\n calendar: {\n sameDay: '[à dag kl.] LT',\n nextDay: '[à morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[à gjár kl.] LT',\n lastWeek: '[sÃðstu] dddd [kl] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'um %s',\n past: '%s sÃðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tÃmi',\n hh: '%d tÃmar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return fo;\n});","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsStrictRegex = /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsParse = [/^janv/i, /^févr/i, /^mars/i, /^avr/i, /^mai/i, /^juin/i, /^juil/i, /^août/i, /^sept/i, /^oct/i, /^nov/i, /^déc/i];\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Aujourd’hui à ] LT',\n nextDay: '[Demain à ] LT',\n nextWeek: 'dddd [à ] LT',\n lastDay: '[Hier à ] LT',\n lastWeek: 'dddd [dernier à ] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n w: 'une semaine',\n ww: '%d semaines',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return fr;\n});","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Aujourd’hui à ] LT',\n nextDay: '[Demain à ] LT',\n nextWeek: 'dddd [à ] LT',\n lastDay: '[Hier à ] LT',\n lastWeek: 'dddd [dernier à ] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n }\n });\n return frCa;\n});","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var frCh = moment.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Aujourd’hui à ] LT',\n nextDay: '[Demain à ] LT',\n nextWeek: 'dddd [à ] LT',\n lastDay: '[Hier à ] LT',\n lastWeek: 'dddd [dernier à ] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return frCh;\n});","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n var fy = moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return number + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de');\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return fy;\n});","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var months = ['Eanáir', 'Feabhra', 'Márta', 'Aibreán', 'Bealtaine', 'Meitheamh', 'Iúil', 'Lúnasa', 'Meán Fómhair', 'Deireadh Fómhair', 'Samhain', 'Nollaig'],\n monthsShort = ['Ean', 'Feabh', 'Márt', 'Aib', 'Beal', 'Meith', 'Iúil', 'Lún', 'M.F.', 'D.F.', 'Samh', 'Noll'],\n weekdays = ['Dé Domhnaigh', 'Dé Luain', 'Dé Máirt', 'Dé Céadaoin', 'Déardaoin', 'Dé hAoine', 'Dé Sathairn'],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mÃ',\n MM: '%d mÃonna',\n y: 'bliain',\n yy: '%d bliain'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return ga;\n});","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var months = ['Am Faoilleach', 'An Gearran', 'Am Mà rt', 'An Giblean', 'An Cèitean', 'An t-Ã’gmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dà mhair', 'An t-Samhain', 'An Dùbhlachd'],\n monthsShort = ['Faoi', 'Gear', 'Mà rt', 'Gibl', 'Cèit', 'Ã’gmh', 'Iuch', 'Lùn', 'Sult', 'Dà mh', 'Samh', 'Dùbh'],\n weekdays = ['Didòmhnaich', 'Diluain', 'Dimà irt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne'],\n weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin = ['Dò', 'Lu', 'Mà ', 'Ci', 'Ar', 'Ha', 'Sa'];\n var gd = moment.defineLocale('gd', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-mà ireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return gd;\n});","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var gl = moment.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),\n monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar: {\n sameDay: function () {\n return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextDay: function () {\n return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n lastDay: function () {\n return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n },\n lastWeek: function () {\n return '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un dÃa',\n dd: '%d dÃas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return gl;\n});","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n m: ['à¤à¤•ा मिणटान', 'à¤à¤• मिनूट'],\n mm: [number + ' मिणटांनी', number + ' मिणटां'],\n h: ['à¤à¤•ा वरान', 'à¤à¤• वर'],\n hh: [number + ' वरांनी', number + ' वरां'],\n d: ['à¤à¤•ा दिसान', 'à¤à¤• दीस'],\n dd: [number + ' दिसांनी', number + ' दीस'],\n M: ['à¤à¤•ा मà¥à¤¹à¤¯à¤¨à¥à¤¯à¤¾à¤¨', 'à¤à¤• मà¥à¤¹à¤¯à¤¨à¥‹'],\n MM: [number + ' मà¥à¤¹à¤¯à¤¨à¥à¤¯à¤¾à¤¨à¥€', number + ' मà¥à¤¹à¤¯à¤¨à¥‡'],\n y: ['à¤à¤•ा वरà¥à¤¸à¤¾à¤¨', 'à¤à¤• वरà¥à¤¸'],\n yy: [number + ' वरà¥à¤¸à¤¾à¤‚नी', number + ' वरà¥à¤¸à¤¾à¤‚']\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n var gomDeva = moment.defineLocale('gom-deva', {\n months: {\n standalone: 'जानेवारी_फेबà¥à¤°à¥à¤µà¤¾à¤°à¥€_मारà¥à¤š_à¤à¤ªà¥à¤°à¥€à¤²_मे_जून_जà¥à¤²à¤¯_ऑगसà¥à¤Ÿ_सपà¥à¤Ÿà¥‡à¤‚बर_ऑकà¥à¤Ÿà¥‹à¤¬à¤°_नोवà¥à¤¹à¥‡à¤‚बर_डिसेंबर'.split('_'),\n format: 'जानेवारीचà¥à¤¯à¤¾_फेबà¥à¤°à¥à¤µà¤¾à¤°à¥€à¤šà¥à¤¯à¤¾_मारà¥à¤šà¤¾à¤šà¥à¤¯à¤¾_à¤à¤ªà¥à¤°à¥€à¤²à¤¾à¤šà¥à¤¯à¤¾_मेयाचà¥à¤¯à¤¾_जूनाचà¥à¤¯à¤¾_जà¥à¤²à¤¯à¤¾à¤šà¥à¤¯à¤¾_ऑगसà¥à¤Ÿà¤¾à¤šà¥à¤¯à¤¾_सपà¥à¤Ÿà¥‡à¤‚बराचà¥à¤¯à¤¾_ऑकà¥à¤Ÿà¥‹à¤¬à¤°à¤¾à¤šà¥à¤¯à¤¾_नोवà¥à¤¹à¥‡à¤‚बराचà¥à¤¯à¤¾_डिसेंबराचà¥à¤¯à¤¾'.split('_'),\n isFormat: /MMMM(\\s)+D[oD]?/\n },\n monthsShort: 'जाने._फेबà¥à¤°à¥._मारà¥à¤š_à¤à¤ªà¥à¤°à¥€._मे_जून_जà¥à¤²._ऑग._सपà¥à¤Ÿà¥‡à¤‚._ऑकà¥à¤Ÿà¥‹._नोवà¥à¤¹à¥‡à¤‚._डिसें.'.split('_'),\n monthsParseExact: true,\n weekdays: 'आयतार_सोमार_मंगळार_बà¥à¤§à¤µà¤¾à¤°_बिरेसà¥à¤¤à¤¾à¤°_सà¥à¤•à¥à¤°à¤¾à¤°_शेनवार'.split('_'),\n weekdaysShort: 'आयत._सोम._मंगळ._बà¥à¤§._बà¥à¤°à¥‡à¤¸à¥à¤¤._सà¥à¤•à¥à¤°._शेन.'.split('_'),\n weekdaysMin: 'आ_सो_मं_बà¥_बà¥à¤°à¥‡_सà¥_शे'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [वाजतां]',\n LTS: 'A h:mm:ss [वाजतां]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]'\n },\n calendar: {\n sameDay: '[आयज] LT',\n nextDay: '[फालà¥à¤¯à¤¾à¤‚] LT',\n nextWeek: '[फà¥à¤¡à¤²à¥‹] dddd[,] LT',\n lastDay: '[काल] LT',\n lastWeek: '[फाटलो] dddd[,] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s',\n past: '%s आदीं',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'वेर' only applies to day of the month\n case 'D':\n return number + 'वेर';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week\n doy: 3 // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n\n meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राती') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळीं') {\n return hour;\n } else if (meridiem === 'दनपारां') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'सांजे') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'राती';\n } else if (hour < 12) {\n return 'सकाळीं';\n } else if (hour < 16) {\n return 'दनपारां';\n } else if (hour < 20) {\n return 'सांजे';\n } else {\n return 'राती';\n }\n }\n });\n return gomDeva;\n});","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam']\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n var gomLatn = moment.defineLocale('gom-latn', {\n months: {\n standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split('_'),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split('_'),\n isFormat: /MMMM(\\s)+D[oD]?/\n },\n monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]'\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week\n doy: 3 // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n }\n });\n return gomLatn;\n});","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: 'à«§',\n 2: '૨',\n 3: 'à«©',\n 4: '૪',\n 5: 'à««',\n 6: '૬',\n 7: 'à«',\n 8: 'à«®',\n 9: '૯',\n 0: '૦'\n },\n numberMap = {\n 'à«§': '1',\n '૨': '2',\n 'à«©': '3',\n '૪': '4',\n 'à««': '5',\n '૬': '6',\n 'à«': '7',\n 'à«®': '8',\n '૯': '9',\n '૦': '0'\n };\n var gu = moment.defineLocale('gu', {\n months: 'જાનà«àª¯à«àª†àª°à«€_ફેબà«àª°à«àª†àª°à«€_મારà«àªš_àªàªªà«àª°àª¿àª²_મે_જૂન_જà«àª²àª¾àªˆ_ઑગસà«àªŸ_સપà«àªŸà«‡àª®à«àª¬àª°_ઑકà«àªŸà«àª¬àª°_નવેમà«àª¬àª°_ડિસેમà«àª¬àª°'.split('_'),\n monthsShort: 'જાનà«àª¯à«._ફેબà«àª°à«._મારà«àªš_àªàªªà«àª°àª¿._મે_જૂન_જà«àª²àª¾._ઑગ._સપà«àªŸà«‡._ઑકà«àªŸà«._નવે._ડિસે.'.split('_'),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બà«àª§à«àªµàª¾àª°_ગà«àª°à«àªµàª¾àª°_શà«àª•à«àª°àªµàª¾àª°_શનિવાર'.split('_'),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બà«àª§à«_ગà«àª°à«_શà«àª•à«àª°_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બà«_ગà«_શà«_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગà«àª¯à«‡',\n LTS: 'A h:mm:ss વાગà«àª¯à«‡',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગà«àª¯à«‡',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગà«àª¯à«‡'\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પહેલા',\n s: 'અમà«àª• પળો',\n ss: '%d સેકંડ',\n m: 'àªàª• મિનિટ',\n mm: '%d મિનિટ',\n h: 'àªàª• કલાક',\n hh: '%d કલાક',\n d: 'àªàª• દિવસ',\n dd: '%d દિવસ',\n M: 'àªàª• મહિનો',\n MM: '%d મહિનો',\n y: 'àªàª• વરà«àª·',\n yy: '%d વરà«àª·'\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬à«à«®à«¯à«¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return gu;\n});","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var he = moment.defineLocale('he', {\n months: '×™× ×•×ר_פברו×ר_מרץ_×פריל_מ××™_×™×•× ×™_יולי_×וגוסט_ספטמבר_×וקטובר_× ×•×‘×ž×‘×¨_דצמבר'.split('_'),\n monthsShort: '×™× ×•×³_פבר׳_מרץ_×פר׳_מ××™_×™×•× ×™_יולי_×וג׳_ספט׳_×וק׳_× ×•×‘×³_דצמ׳'.split('_'),\n weekdays: 'ר×שון_×©× ×™_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: '×׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: '×_ב_×’_ד_×”_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[×”×™×•× ×‘Ö¾]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[×תמול ב־]LT',\n lastWeek: '[ביו×] dddd [×”×חרון בשעה] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'בעוד %s',\n past: '×œ×¤× ×™ %s',\n s: 'מספר ×©× ×™×•×ª',\n ss: '%d ×©× ×™×•×ª',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh: function (number) {\n if (number === 2) {\n return 'שעתיי×';\n }\n return number + ' שעות';\n },\n d: 'יו×',\n dd: function (number) {\n if (number === 2) {\n return 'יומיי×';\n }\n return number + ' ימי×';\n },\n M: 'חודש',\n MM: function (number) {\n if (number === 2) {\n return 'חודשיי×';\n }\n return number + ' חודשי×';\n },\n y: '×©× ×”',\n yy: function (number) {\n if (number === 2) {\n return '×©× ×ª×™×™×';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' ×©× ×”';\n }\n return number + ' ×©× ×™×';\n }\n },\n meridiemParse: /××—×”\"צ|×œ×¤× ×”\"צ|×חרי הצהריי×|×œ×¤× ×™ הצהריי×|×œ×¤× ×•×ª בוקר|בבוקר|בערב/i,\n isPM: function (input) {\n return /^(××—×”\"צ|×חרי הצהריי×|בערב)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 5) {\n return '×œ×¤× ×•×ª בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? '×œ×¤× ×”\"צ' : '×œ×¤× ×™ הצהריי×';\n } else if (hour < 18) {\n return isLower ? '××—×”\"צ' : '×חרי הצהריי×';\n } else {\n return 'בערב';\n }\n }\n });\n return he;\n});","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: 'à¥',\n 8: '८',\n 9: '९',\n 0: '०'\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n 'à¥': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n },\n monthsParse = [/^जन/i, /^फ़र|फर/i, /^मारà¥à¤š/i, /^अपà¥à¤°à¥ˆ/i, /^मई/i, /^जून/i, /^जà¥à¤²/i, /^अग/i, /^सितं|सित/i, /^अकà¥à¤Ÿà¥‚/i, /^नव|नवं/i, /^दिसं|दिस/i],\n shortMonthsParse = [/^जन/i, /^फ़र/i, /^मारà¥à¤š/i, /^अपà¥à¤°à¥ˆ/i, /^मई/i, /^जून/i, /^जà¥à¤²/i, /^अग/i, /^सित/i, /^अकà¥à¤Ÿà¥‚/i, /^नव/i, /^दिस/i];\n var hi = moment.defineLocale('hi', {\n months: {\n format: 'जनवरी_फ़रवरी_मारà¥à¤š_अपà¥à¤°à¥ˆà¤²_मई_जून_जà¥à¤²à¤¾à¤ˆ_अगसà¥à¤¤_सितमà¥à¤¬à¤°_अकà¥à¤Ÿà¥‚बर_नवमà¥à¤¬à¤°_दिसमà¥à¤¬à¤°'.split('_'),\n standalone: 'जनवरी_फरवरी_मारà¥à¤š_अपà¥à¤°à¥ˆà¤²_मई_जून_जà¥à¤²à¤¾à¤ˆ_अगसà¥à¤¤_सितंबर_अकà¥à¤Ÿà¥‚बर_नवंबर_दिसंबर'.split('_')\n },\n monthsShort: 'जन._फ़र._मारà¥à¤š_अपà¥à¤°à¥ˆ._मई_जून_जà¥à¤²._अग._सित._अकà¥à¤Ÿà¥‚._नव._दिस.'.split('_'),\n weekdays: 'रविवार_सोमवार_मंगलवार_बà¥à¤§à¤µà¤¾à¤°_गà¥à¤°à¥‚वार_शà¥à¤•à¥à¤°à¤µà¤¾à¤°_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बà¥à¤§_गà¥à¤°à¥‚_शà¥à¤•à¥à¤°_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बà¥_गà¥_शà¥_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे'\n },\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: shortMonthsParse,\n monthsRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मारà¥à¤š?|अपà¥à¤°à¥ˆà¤²|अपà¥à¤°à¥ˆ\\.?|मई?|जून?|जà¥à¤²à¤¾à¤ˆ|जà¥à¤²\\.?|अगसà¥à¤¤|अग\\.?|सितमà¥à¤¬à¤°|सितंबर|सित\\.?|अकà¥à¤Ÿà¥‚बर|अकà¥à¤Ÿà¥‚\\.?|नवमà¥à¤¬à¤°|नवंबर|नव\\.?|दिसमà¥à¤¬à¤°|दिसंबर|दिस\\.?)/i,\n monthsShortRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मारà¥à¤š?|अपà¥à¤°à¥ˆà¤²|अपà¥à¤°à¥ˆ\\.?|मई?|जून?|जà¥à¤²à¤¾à¤ˆ|जà¥à¤²\\.?|अगसà¥à¤¤|अग\\.?|सितमà¥à¤¬à¤°|सितंबर|सित\\.?|अकà¥à¤Ÿà¥‚बर|अकà¥à¤Ÿà¥‚\\.?|नवमà¥à¤¬à¤°|नवंबर|नव\\.?|दिसमà¥à¤¬à¤°|दिसंबर|दिस\\.?)/i,\n monthsStrictRegex: /^(जनवरी?|फ़रवरी|फरवरी?|मारà¥à¤š?|अपà¥à¤°à¥ˆà¤²?|मई?|जून?|जà¥à¤²à¤¾à¤ˆ?|अगसà¥à¤¤?|सितमà¥à¤¬à¤°|सितंबर|सित?\\.?|अकà¥à¤Ÿà¥‚बर|अकà¥à¤Ÿà¥‚\\.?|नवमà¥à¤¬à¤°|नवंबर?|दिसमà¥à¤¬à¤°|दिसंबर?)/i,\n monthsShortStrictRegex: /^(जन\\.?|फ़र\\.?|मारà¥à¤š?|अपà¥à¤°à¥ˆ\\.?|मई?|जून?|जà¥à¤²\\.?|अग\\.?|सित\\.?|अकà¥à¤Ÿà¥‚\\.?|नव\\.?|दिस\\.?)/i,\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कà¥à¤› ही कà¥à¤·à¤£',\n ss: '%d सेकंड',\n m: 'à¤à¤• मिनट',\n mm: '%d मिनट',\n h: 'à¤à¤• घंटा',\n hh: '%d घंटे',\n d: 'à¤à¤• दिन',\n dd: '%d दिन',\n M: 'à¤à¤• महीने',\n MM: '%d महीने',\n y: 'à¤à¤• वरà¥à¤·',\n yy: '%d वरà¥à¤·'\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६à¥à¥®à¥¯à¥¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सà¥à¤¬à¤¹|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सà¥à¤¬à¤¹') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सà¥à¤¬à¤¹';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return hi;\n});","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n var hr = moment.defineLocale('hr', {\n months: {\n format: 'sijeÄnja_veljaÄe_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'),\n standalone: 'sijeÄanj_veljaÄa_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_')\n },\n monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_Äetvrtak_petak_subota'.split('_'),\n weekdaysShort: 'ned._pon._uto._sri._Äet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_Äe_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juÄer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[proÅ¡lu] [nedjelju] [u] LT';\n case 3:\n return '[proÅ¡lu] [srijedu] [u] LT';\n case 6:\n return '[proÅ¡le] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[proÅ¡li] dddd [u] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return hr;\n});","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n//! author : Peter Viszt : https://github.com/passatgt\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var weekEndings = 'vasárnap hétfÅ‘n kedden szerdán csütörtökön pénteken szombaton'.split(' ');\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return isFuture || withoutSuffix ? 'néhány másodperc' : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix) ? ' másodperc' : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';\n }\n var hu = moment.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),\n monthsShort: 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'vasárnap_hétfÅ‘_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm'\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return hu;\n});","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var hyAm = moment.defineLocale('hy-am', {\n months: {\n format: 'Õ°Õ¸Ö‚Õ¶Õ¾Õ¡Ö€Õ«_ÖƒÕ¥Õ¿Ö€Õ¾Õ¡Ö€Õ«_Õ´Õ¡Ö€Õ¿Õ«_Õ¡ÕºÖ€Õ«Õ¬Õ«_Õ´Õ¡ÕµÕ«Õ½Õ«_Õ°Õ¸Ö‚Õ¶Õ«Õ½Õ«_Õ°Õ¸Ö‚Õ¬Õ«Õ½Õ«_Ö…Õ£Õ¸Õ½Õ¿Õ¸Õ½Õ«_Õ½Õ¥ÕºÕ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«_Õ°Õ¸Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«_Õ¶Õ¸ÕµÕ¥Õ´Õ¢Õ¥Ö€Õ«_Õ¤Õ¥Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«'.split('_'),\n standalone: 'Õ°Õ¸Ö‚Õ¶Õ¾Õ¡Ö€_ÖƒÕ¥Õ¿Ö€Õ¾Õ¡Ö€_Õ´Õ¡Ö€Õ¿_Õ¡ÕºÖ€Õ«Õ¬_Õ´Õ¡ÕµÕ«Õ½_Õ°Õ¸Ö‚Õ¶Õ«Õ½_Õ°Õ¸Ö‚Õ¬Õ«Õ½_Ö…Õ£Õ¸Õ½Õ¿Õ¸Õ½_Õ½Õ¥ÕºÕ¿Õ¥Õ´Õ¢Õ¥Ö€_Õ°Õ¸Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€_Õ¶Õ¸ÕµÕ¥Õ´Õ¢Õ¥Ö€_Õ¤Õ¥Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€'.split('_')\n },\n monthsShort: 'Õ°Õ¶Õ¾_ÖƒÕ¿Ö€_Õ´Ö€Õ¿_Õ¡ÕºÖ€_Õ´ÕµÕ½_Õ°Õ¶Õ½_Õ°Õ¬Õ½_Ö…Õ£Õ½_Õ½ÕºÕ¿_Õ°Õ¯Õ¿_Õ¶Õ´Õ¢_Õ¤Õ¯Õ¿'.split('_'),\n weekdays: 'Õ¯Õ«Ö€Õ¡Õ¯Õ«_Õ¥Ö€Õ¯Õ¸Ö‚Õ·Õ¡Õ¢Õ©Õ«_Õ¥Ö€Õ¥Ö„Õ·Õ¡Õ¢Õ©Õ«_Õ¹Õ¸Ö€Õ¥Ö„Õ·Õ¡Õ¢Õ©Õ«_Õ°Õ«Õ¶Õ£Õ·Õ¡Õ¢Õ©Õ«_Õ¸Ö‚Ö€Õ¢Õ¡Õ©_Õ·Õ¡Õ¢Õ¡Õ©'.split('_'),\n weekdaysShort: 'Õ¯Ö€Õ¯_Õ¥Ö€Õ¯_Õ¥Ö€Ö„_Õ¹Ö€Ö„_Õ°Õ¶Õ£_Õ¸Ö‚Ö€Õ¢_Õ·Õ¢Õ©'.split('_'),\n weekdaysMin: 'Õ¯Ö€Õ¯_Õ¥Ö€Õ¯_Õ¥Ö€Ö„_Õ¹Ö€Ö„_Õ°Õ¶Õ£_Õ¸Ö‚Ö€Õ¢_Õ·Õ¢Õ©'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY Õ©.',\n LLL: 'D MMMM YYYY Õ©., HH:mm',\n LLLL: 'dddd, D MMMM YYYY Õ©., HH:mm'\n },\n calendar: {\n sameDay: '[Õ¡ÕµÕ½Ö…Ö€] LT',\n nextDay: '[Õ¾Õ¡Õ²Õ¨] LT',\n lastDay: '[Õ¥Ö€Õ¥Õ¯] LT',\n nextWeek: function () {\n return 'dddd [Ö…Ö€Õ¨ ÕªÕ¡Õ´Õ¨] LT';\n },\n lastWeek: function () {\n return '[Õ¡Õ¶ÖÕ¡Õ®] dddd [Ö…Ö€Õ¨ ÕªÕ¡Õ´Õ¨] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s Õ°Õ¥Õ¿Õ¸',\n past: '%s Õ¡Õ¼Õ¡Õ»',\n s: 'Õ´Õ« Ö„Õ¡Õ¶Õ« Õ¾Õ¡ÕµÖ€Õ¯ÕµÕ¡Õ¶',\n ss: '%d Õ¾Õ¡ÕµÖ€Õ¯ÕµÕ¡Õ¶',\n m: 'Ö€Õ¸ÕºÕ¥',\n mm: '%d Ö€Õ¸ÕºÕ¥',\n h: 'ÕªÕ¡Õ´',\n hh: '%d ÕªÕ¡Õ´',\n d: 'Ö…Ö€',\n dd: '%d Ö…Ö€',\n M: 'Õ¡Õ´Õ«Õ½',\n MM: '%d Õ¡Õ´Õ«Õ½',\n y: 'Õ¿Õ¡Ö€Õ«',\n yy: '%d Õ¿Õ¡Ö€Õ«'\n },\n meridiemParse: /Õ£Õ«Õ·Õ¥Ö€Õ¾Õ¡|Õ¡Õ¼Õ¡Õ¾Õ¸Õ¿Õ¾Õ¡|ÖÕ¥Ö€Õ¥Õ¯Õ¾Õ¡|Õ¥Ö€Õ¥Õ¯Õ¸ÕµÕ¡Õ¶/,\n isPM: function (input) {\n return /^(ÖÕ¥Ö€Õ¥Õ¯Õ¾Õ¡|Õ¥Ö€Õ¥Õ¯Õ¸ÕµÕ¡Õ¶)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'Õ£Õ«Õ·Õ¥Ö€Õ¾Õ¡';\n } else if (hour < 12) {\n return 'Õ¡Õ¼Õ¡Õ¾Õ¸Õ¿Õ¾Õ¡';\n } else if (hour < 17) {\n return 'ÖÕ¥Ö€Õ¥Õ¯Õ¾Õ¡';\n } else {\n return 'Õ¥Ö€Õ¥Õ¯Õ¸ÕµÕ¡Õ¶';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(Õ«Õ¶|Ö€Õ¤)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-Õ«Õ¶';\n }\n return number + '-Ö€Õ¤';\n default:\n return number;\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return hyAm;\n});","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var id = moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun'\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return id;\n});","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum';\n case 'ss':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum');\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mÃnúta' : 'mÃnútu';\n case 'mm':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'mÃnútur' : 'mÃnútum');\n } else if (withoutSuffix) {\n return result + 'mÃnúta';\n }\n return result + 'mÃnútu';\n case 'hh':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum');\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n var is = moment.defineLocale('is', {\n months: 'janúar_febrúar_mars_aprÃl_maÃ_júnÃ_júlÃ_ágúst_september_október_nóvember_desember'.split('_'),\n monthsShort: 'jan_feb_mar_apr_maÃ_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm'\n },\n calendar: {\n sameDay: '[à dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[à gær kl.] LT',\n lastWeek: '[sÃðasta] dddd [kl.] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s sÃðan',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: 'klukkustund',\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return is;\n});","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: function () {\n return '[Oggi a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n },\n nextDay: function () {\n return '[Domani a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n },\n nextWeek: function () {\n return 'dddd [a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n },\n lastDay: function () {\n return '[Ieri a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[La scorsa] dddd [a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n default:\n return '[Lo scorso] dddd [a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'tra %s',\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n w: 'una settimana',\n ww: '%d settimane',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return it;\n});","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var itCh = moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return itCh;\n});","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ja = moment.defineLocale('ja', {\n eras: [{\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: 'ã‹¿',\n abbr: 'R'\n }, {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: 'å¹³æˆ',\n narrow: 'ã»',\n abbr: 'H'\n }, {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: 'æ˜å’Œ',\n narrow: 'ã¼',\n abbr: 'S'\n }, {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大æ£',\n narrow: 'ã½',\n abbr: 'T'\n }, {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: 'ã¾',\n abbr: 'M'\n }, {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD'\n }, {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元å‰',\n narrow: 'BC',\n abbr: 'BC'\n }],\n eraYearOrdinalRegex: /(å…ƒ|\\d+)å¹´/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === 'å…ƒ' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays: '日曜日_月曜日_ç«æ›œæ—¥_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: 'æ—¥_月_ç«_æ°´_木_金_土'.split('_'),\n weekdaysMin: 'æ—¥_月_ç«_æ°´_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYYå¹´M月Dæ—¥',\n LLL: 'YYYYå¹´M月Dæ—¥ HH:mm',\n LLLL: 'YYYYå¹´M月Dæ—¥ dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYYå¹´M月Dæ—¥',\n lll: 'YYYYå¹´M月Dæ—¥ HH:mm',\n llll: 'YYYYå¹´M月Dæ—¥(ddd) HH:mm'\n },\n meridiemParse: /åˆå‰|åˆå¾Œ/i,\n isPM: function (input) {\n return input === 'åˆå¾Œ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'åˆå‰';\n } else {\n return 'åˆå¾Œ';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[æ¥é€±]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}æ—¥/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + 'å¹´';\n case 'd':\n case 'D':\n case 'DDD':\n return number + 'æ—¥';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%så‰',\n s: 'æ•°ç§’',\n ss: '%dç§’',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1æ—¥',\n dd: '%dæ—¥',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1å¹´',\n yy: '%då¹´'\n }\n });\n return ja;\n});","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var jv = moment.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar: {\n sameDay: '[Dinten puniko pukul] LT',\n nextDay: '[Mbenjang pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kala wingi pukul] LT',\n lastWeek: 'dddd [kepengker pukul] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'wonten ing %s',\n past: '%s ingkang kepengker',\n s: 'sawetawis detik',\n ss: '%d detik',\n m: 'setunggal menit',\n mm: '%d menit',\n h: 'setunggal jam',\n hh: '%d jam',\n d: 'sedinten',\n dd: '%d dinten',\n M: 'sewulan',\n MM: '%d wulan',\n y: 'setaun',\n yy: '%d taun'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return jv;\n});","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ka = moment.defineLocale('ka', {\n months: 'იáƒáƒœáƒ•áƒáƒ ი_თებერვáƒáƒšáƒ˜_მáƒáƒ ტი_áƒáƒžáƒ ილი_მáƒáƒ˜áƒ¡áƒ˜_ივნისი_ივლისი_áƒáƒ’ვისტáƒ_სექტემბერი_áƒáƒ¥áƒ¢áƒáƒ›áƒ‘ერი_ნáƒáƒ”მბერი_დეკემბერი'.split('_'),\n monthsShort: 'იáƒáƒœ_თებ_მáƒáƒ _áƒáƒžáƒ _მáƒáƒ˜_ივნ_ივლ_áƒáƒ’ვ_სექ_áƒáƒ¥áƒ¢_ნáƒáƒ”_დეკ'.split('_'),\n weekdays: {\n standalone: 'კვირáƒ_áƒáƒ შáƒáƒ‘áƒáƒ—ი_სáƒáƒ›áƒ¨áƒáƒ‘áƒáƒ—ი_áƒáƒ—ხშáƒáƒ‘áƒáƒ—ი_ხუთშáƒáƒ‘áƒáƒ—ი_პáƒáƒ áƒáƒ¡áƒ™áƒ”ვი_შáƒáƒ‘áƒáƒ—ი'.split('_'),\n format: 'კვირáƒáƒ¡_áƒáƒ შáƒáƒ‘áƒáƒ—ს_სáƒáƒ›áƒ¨áƒáƒ‘áƒáƒ—ს_áƒáƒ—ხშáƒáƒ‘áƒáƒ—ს_ხუთშáƒáƒ‘áƒáƒ—ს_პáƒáƒ áƒáƒ¡áƒ™áƒ”ვს_შáƒáƒ‘áƒáƒ—ს'.split('_'),\n isFormat: /(წინáƒ|შემდეგ)/\n },\n weekdaysShort: 'კვი_áƒáƒ შ_სáƒáƒ›_áƒáƒ—ხ_ხუთ_პáƒáƒ _შáƒáƒ‘'.split('_'),\n weekdaysMin: 'კვ_áƒáƒ _სáƒ_áƒáƒ—_ხუ_პáƒ_შáƒ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვáƒáƒš] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინáƒ] dddd LT-ზე',\n sameElse: 'L'\n },\n relativeTime: {\n future: function (s) {\n return s.replace(/(წáƒáƒ›|წუთ|სáƒáƒáƒ—|წელ|დღ|თვ)(ი|ე)/, function ($0, $1, $2) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n });\n },\n past: function (s) {\n if (/(წáƒáƒ›áƒ˜|წუთი|სáƒáƒáƒ—ი|დღე|თვე)/.test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if (/წელი/.test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n return s;\n },\n s: 'რáƒáƒ›áƒ“ენიმე წáƒáƒ›áƒ˜',\n ss: '%d წáƒáƒ›áƒ˜',\n m: 'წუთი',\n mm: '%d წუთი',\n h: 'სáƒáƒáƒ—ი',\n hh: '%d სáƒáƒáƒ—ი',\n d: 'დღე',\n dd: '%d დღე',\n M: 'თვე',\n MM: '%d თვე',\n y: 'წელი',\n yy: '%d წელი'\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal: function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if (number < 20 || number <= 100 && number % 20 === 0 || number % 100 === 0) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7\n }\n });\n return ka;\n});","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші'\n };\n var kk = moment.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_Ñәуір_мамыр_мауÑым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқÑан'.split('_'),\n monthsShort: 'қаң_ақп_нау_Ñәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жекÑенбі_дүйÑенбі_ÑейÑенбі_ÑәрÑенбі_бейÑенбі_жұма_Ñенбі'.split('_'),\n weekdaysShort: 'жек_дүй_Ñей_Ñәр_бей_жұм_Ñен'.split('_'),\n weekdaysMin: 'жк_дй_Ñй_ÑÑ€_бй_жм_Ñн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Бүгін Ñағат] LT',\n nextDay: '[Ертең Ñағат] LT',\n nextWeek: 'dddd [Ñағат] LT',\n lastDay: '[Кеше Ñағат] LT',\n lastWeek: '[Өткен аптаның] dddd [Ñағат] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше Ñекунд',\n ss: '%d Ñекунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір Ñағат',\n hh: '%d Ñағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return kk;\n});","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: '១',\n 2: '២',\n 3: '៣',\n 4: '៤',\n 5: '៥',\n 6: '៦',\n 7: '៧',\n 8: '៨',\n 9: '៩',\n 0: '០'\n },\n numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0'\n };\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មáŸážŸáž¶_ឧសភា_មិážáž»áž“áž¶_កក្កដា_សីហា_កញ្ញា_ážáž»áž›áž¶_វិច្ឆិកា_ធ្នូ'.split('_'),\n monthsShort: 'មករា_កុម្ភៈ_មីនា_មáŸážŸáž¶_ឧសភា_មិážáž»áž“áž¶_កក្កដា_សីហា_កញ្ញា_ážáž»áž›áž¶_វិច្ឆិកា_ធ្នូ'.split('_'),\n weekdays: 'អាទិážáŸ’áž™_áž…áŸáž“្ទ_អង្គារ_ពុធ_ព្រហស្បážáž·áŸ_សុក្រ_សៅរáŸ'.split('_'),\n weekdaysShort: 'អា_áž…_អ_áž–_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_áž…_អ_áž–_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ážáŸ’ងៃនáŸáŸ‡ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្ážáž¶áž áŸáž˜áž»áž“] [ម៉ោង] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%sទៀáž',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយážáŸ’ងៃ',\n dd: '%d ážáŸ’ងៃ',\n M: 'មួយážáŸ‚',\n MM: '%d ážáŸ‚',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ'\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return km;\n});","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: 'à³§',\n 2: '೨',\n 3: '೩',\n 4: '೪',\n 5: '೫',\n 6: '೬',\n 7: 'à³',\n 8: 'à³®',\n 9: '೯',\n 0: '೦'\n },\n numberMap = {\n 'à³§': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n 'à³': '7',\n 'à³®': '8',\n '೯': '9',\n '೦': '0'\n };\n var kn = moment.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬà³à²°à²µà²°à²¿_ಮಾರà³à²šà³_à²à²ªà³à²°à²¿à²²à³_ಮೇ_ಜೂನà³_ಜà³à²²à³†à³–_ಆಗಸà³à²Ÿà³_ಸೆಪà³à²Ÿà³†à²‚ಬರà³_ಅಕà³à²Ÿà³†à³‚ೕಬರà³_ನವೆಂಬರà³_ಡಿಸೆಂಬರà³'.split('_'),\n monthsShort: 'ಜನ_ಫೆಬà³à²°_ಮಾರà³à²šà³_à²à²ªà³à²°à²¿à²²à³_ಮೇ_ಜೂನà³_ಜà³à²²à³†à³–_ಆಗಸà³à²Ÿà³_ಸೆಪà³à²Ÿà³†à²‚_ಅಕà³à²Ÿà³†à³‚ೕ_ನವೆಂ_ಡಿಸೆಂ'.split('_'),\n monthsParseExact: true,\n weekdays: 'à²à²¾à²¨à³à²µà²¾à²°_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬà³à²§à²µà²¾à²°_ಗà³à²°à³à²µà²¾à²°_ಶà³à²•à³à²°à²µà²¾à²°_ಶನಿವಾರ'.split('_'),\n weekdaysShort: 'à²à²¾à²¨à³_ಸೋಮ_ಮಂಗಳ_ಬà³à²§_ಗà³à²°à³_ಶà³à²•à³à²°_ಶನಿ'.split('_'),\n weekdaysMin: 'à²à²¾_ಸೋ_ಮಂ_ಬà³_ಗà³_ಶà³_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm'\n },\n calendar: {\n sameDay: '[ಇಂದà³] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನà³à²¨à³†] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವೠಕà³à²·à²£à²—ಳà³',\n ss: '%d ಸೆಕೆಂಡà³à²—ಳà³',\n m: 'ಒಂದೠನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದೠಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದೠದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದೠತಿಂಗಳà³',\n MM: '%d ತಿಂಗಳà³',\n y: 'ಒಂದೠವರà³à²·',\n yy: '%d ವರà³à²·'\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬à³à³®à³¯à³¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತà³à²°à²¿|ಬೆಳಿಗà³à²—ೆ|ಮಧà³à²¯à²¾à²¹à³à²¨|ಸಂಜೆ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತà³à²°à²¿') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗà³à²—ೆ') {\n return hour;\n } else if (meridiem === 'ಮಧà³à²¯à²¾à²¹à³à²¨') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತà³à²°à²¿';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗà³à²—ೆ';\n } else if (hour < 17) {\n return 'ಮಧà³à²¯à²¾à²¹à³à²¨';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತà³à²°à²¿';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function (number) {\n return number + 'ನೇ';\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return kn;\n});","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee <jeeeyul@gmail.com>\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ko = moment.defineLocale('ko', {\n months: '1ì›”_2ì›”_3ì›”_4ì›”_5ì›”_6ì›”_7ì›”_8ì›”_9ì›”_10ì›”_11ì›”_12ì›”'.split('_'),\n monthsShort: '1ì›”_2ì›”_3ì›”_4ì›”_5ì›”_6ì›”_7ì›”_8ì›”_9ì›”_10ì›”_11ì›”_12ì›”'.split('_'),\n weekdays: 'ì¼ìš”ì¼_월요ì¼_화요ì¼_수요ì¼_목요ì¼_금요ì¼_í† ìš”ì¼'.split('_'),\n weekdaysShort: 'ì¼_ì›”_í™”_수_목_금_í† '.split('_'),\n weekdaysMin: 'ì¼_ì›”_í™”_수_목_금_í† '.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYYë…„ MMMM Dì¼',\n LLL: 'YYYYë…„ MMMM Dì¼ A h:mm',\n LLLL: 'YYYYë…„ MMMM Dì¼ dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYYë…„ MMMM Dì¼',\n lll: 'YYYYë…„ MMMM Dì¼ A h:mm',\n llll: 'YYYYë…„ MMMM Dì¼ dddd A h:mm'\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: 'ë‚´ì¼ LT',\n nextWeek: 'dddd LT',\n lastDay: 'ì–´ì œ LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s 후',\n past: '%s ì „',\n s: '몇 ì´ˆ',\n ss: '%dì´ˆ',\n m: '1ë¶„',\n mm: '%dë¶„',\n h: '한 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%dì¼',\n M: '한 달',\n MM: '%d달',\n y: 'ì¼ ë…„',\n yy: '%dë…„'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ì¼|ì›”|주)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + 'ì¼';\n case 'M':\n return number + 'ì›”';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse: /ì˜¤ì „|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? 'ì˜¤ì „' : '오후';\n }\n });\n return ko;\n});","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: 'Ù¡',\n 2: 'Ù¢',\n 3: 'Ù£',\n 4: 'Ù¤',\n 5: 'Ù¥',\n 6: 'Ù¦',\n 7: 'Ù§',\n 8: 'Ù¨',\n 9: 'Ù©',\n 0: 'Ù '\n },\n numberMap = {\n 'Ù¡': '1',\n 'Ù¢': '2',\n 'Ù£': '3',\n 'Ù¤': '4',\n 'Ù¥': '5',\n 'Ù¦': '6',\n 'Ù§': '7',\n 'Ù¨': '8',\n 'Ù©': '9',\n 'Ù ': '0'\n },\n months = ['کانونی دووەم', 'شوبات', 'ئازار', 'نیسان', 'ئایار', 'ØÙˆØ²Û•یران', 'تەمموز', 'ئاب', 'ئەیلوول', 'تشرینی یەكەم', 'تشرینی دووەم', 'كانونی یەکەم'];\n var ku = moment.defineLocale('ku', {\n months: months,\n monthsShort: months,\n weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split('_'),\n weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'),\n weekdaysMin: 'ÛŒ_د_س_Ú†_Ù¾_Ù‡_Ø´'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n meridiemParse: /ئێواره‌|به‌یانی/,\n isPM: function (input) {\n return /ئێواره‌/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'به‌یانی';\n } else {\n return 'ئێواره‌';\n }\n },\n calendar: {\n sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n nextDay: '[به‌یانی كاتژمێر] LT',\n nextWeek: 'dddd [كاتژمێر] LT',\n lastDay: '[دوێنێ كاتژمێر] LT',\n lastWeek: 'dddd [كاتژمێر] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'له‌ %s',\n past: '%s',\n s: 'چه‌ند چركه‌یه‌ك',\n ss: 'چركه‌ %d',\n m: 'یه‌ك خوله‌ك',\n mm: '%d خوله‌ك',\n h: 'یه‌ك كاتژمێر',\n hh: '%d كاتژمێر',\n d: 'یه‌ك Ú•Û†Ú˜',\n dd: '%d Ú•Û†Ú˜',\n M: 'یه‌ك مانگ',\n MM: '%d مانگ',\n y: 'یه‌ك ساڵ',\n yy: '%d ساڵ'\n },\n preparse: function (string) {\n return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 6,\n // Saturday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return ku;\n});","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү'\n };\n var ky = moment.defineLocale('ky', {\n months: 'Ñнварь_февраль_март_апрель_май_июнь_июль_авгуÑÑ‚_ÑентÑбрь_октÑбрь_ноÑбрь_декабрь'.split('_'),\n monthsShort: 'Ñнв_фев_март_апр_май_июнь_июль_авг_Ñен_окт_ноÑ_дек'.split('_'),\n weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'),\n weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Бүгүн Ñаат] LT',\n nextDay: '[Ðртең Ñаат] LT',\n nextWeek: 'dddd [Ñаат] LT',\n lastDay: '[КечÑÑ Ñаат] LT',\n lastWeek: '[Өткөн аптанын] dddd [күнү] [Ñаат] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s ичинде',\n past: '%s мурун',\n s: 'бирнече Ñекунд',\n ss: '%d Ñекунд',\n m: 'бир мүнөт',\n mm: '%d мүнөт',\n h: 'бир Ñаат',\n hh: '%d Ñаат',\n d: 'бир күн',\n dd: '%d күн',\n M: 'бир ай',\n MM: '%d ай',\n y: 'бир жыл',\n yy: '%d жыл'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return ky;\n});","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]'\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n }\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime,\n mm: '%d Minutten',\n h: processRelativeTime,\n hh: '%d Stonnen',\n d: processRelativeTime,\n dd: '%d Deeg',\n M: processRelativeTime,\n MM: '%d Méint',\n y: processRelativeTime,\n yy: '%d Joer'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return lb;\n});","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var lo = moment.defineLocale('lo', {\n months: 'ມັງàºàºàº™_àºàº¸àº¡àºžàº²_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_àºà»àº¥àº°àºàº»àº”_ສິງຫາ_àºàº±àº™àºàº²_ຕຸລາ_ພະຈິàº_ທັນວາ'.split('_'),\n monthsShort: 'ມັງàºàºàº™_àºàº¸àº¡àºžàº²_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_àºà»àº¥àº°àºàº»àº”_ສິງຫາ_àºàº±àº™àºàº²_ຕຸລາ_ພະຈິàº_ທັນວາ'.split('_'),\n weekdays: 'àºàº²àº—ິດ_ຈັນ_àºàº±àº‡àº„ານ_ພຸດ_ພະຫັດ_ສຸàº_ເສົາ'.split('_'),\n weekdaysShort: 'ທິດ_ຈັນ_àºàº±àº‡àº„ານ_ພຸດ_ພະຫັດ_ສຸàº_ເສົາ'.split('_'),\n weekdaysMin: 'ທ_ຈ_àºàº„_ພ_ພຫ_ສàº_ສ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ວັນdddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ຕàºàº™à»€àºŠàº»à»‰àº²|ຕàºàº™à»àº¥àº‡/,\n isPM: function (input) {\n return input === 'ຕàºàº™à»àº¥àº‡';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕàºàº™à»€àºŠàº»à»‰àº²';\n } else {\n return 'ຕàºàº™à»àº¥àº‡';\n }\n },\n calendar: {\n sameDay: '[ມື້ນີ້ເວລາ] LT',\n nextDay: '[ມື້àºàº·à»ˆàº™à»€àº§àº¥àº²] LT',\n nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek: '[ວັນ]dddd[à»àº¥à»‰àº§àº™àºµà»‰à»€àº§àº¥àº²] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'àºàºµàº %s',\n past: '%sຜ່ານມາ',\n s: 'ບà»à»ˆà»€àº—ົ່າໃດວິນາທີ',\n ss: '%d ວິນາທີ',\n m: '1 ນາທີ',\n mm: '%d ນາທີ',\n h: '1 ຊົ່ວໂມງ',\n hh: '%d ຊົ່ວໂມງ',\n d: '1 ມື້',\n dd: '%d ມື້',\n M: '1 ເດືàºàº™',\n MM: '%d ເດືàºàº™',\n y: '1 ປີ',\n yy: '%d ປີ'\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal: function (number) {\n return 'ທີ່' + number;\n }\n });\n return lo;\n});","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas MozÅ«ras : https://github.com/mmozuras\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var units = {\n ss: 'sekundÄ—_sekundžių_sekundes',\n m: 'minutÄ—_minutÄ—s_minutÄ™',\n mm: 'minutÄ—s_minuÄių_minutes',\n h: 'valanda_valandos_valandÄ…',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dienÄ…',\n dd: 'dienos_dienų_dienas',\n M: 'mÄ—nuo_mÄ—nesio_mÄ—nesį',\n MM: 'mÄ—nesiai_mÄ—nesių_mÄ—nesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus'\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundÄ—s';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix ? forms(key)[0] : isFuture ? forms(key)[1] : forms(key)[2];\n }\n function special(number) {\n return number % 10 === 0 || number > 10 && number < 20;\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return result + translateSingular(number, withoutSuffix, key[0], isFuture);\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n var lt = moment.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjÅ«Äio_rugsÄ—jo_spalio_lapkriÄio_gruodžio'.split('_'),\n standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjÅ«tis_rugsÄ—jis_spalis_lapkritis_gruodis'.split('_'),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_treÄiadienį_ketvirtadienį_penktadienį_Å¡eÅ¡tadienį'.split('_'),\n standalone: 'sekmadienis_pirmadienis_antradienis_treÄiadienis_ketvirtadienis_penktadienis_Å¡eÅ¡tadienis'.split('_'),\n isFormat: /dddd HH:mm/\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Å eÅ¡'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Å '.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'\n },\n calendar: {\n sameDay: '[Å iandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[PraÄ—jusį] dddd LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieÅ¡ %s',\n s: translateSeconds,\n ss: translate,\n m: translateSingular,\n mm: translate,\n h: translateSingular,\n hh: translate,\n d: translateSingular,\n dd: translate,\n M: translateSingular,\n MM: translate,\n y: translateSingular,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function (number) {\n return number + '-oji';\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return lt;\n});","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : JÄnis Elmeris : https://github.com/JanisE\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var units = {\n ss: 'sekundes_sekundÄ“m_sekunde_sekundes'.split('_'),\n m: 'minÅ«tes_minÅ«tÄ“m_minÅ«te_minÅ«tes'.split('_'),\n mm: 'minÅ«tes_minÅ«tÄ“m_minÅ«te_minÅ«tes'.split('_'),\n h: 'stundas_stundÄm_stunda_stundas'.split('_'),\n hh: 'stundas_stundÄm_stunda_stundas'.split('_'),\n d: 'dienas_dienÄm_diena_dienas'.split('_'),\n dd: 'dienas_dienÄm_diena_dienas'.split('_'),\n M: 'mÄ“neÅ¡a_mÄ“neÅ¡iem_mÄ“nesis_mÄ“neÅ¡i'.split('_'),\n MM: 'mÄ“neÅ¡a_mÄ“neÅ¡iem_mÄ“nesis_mÄ“neÅ¡i'.split('_'),\n y: 'gada_gadiem_gads_gadi'.split('_'),\n yy: 'gada_gadiem_gads_gadi'.split('_')\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minÅ«te\", \"3 minÅ«tes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minÅ«tes\" as in \"pÄ“c 21 minÅ«tes\".\n // E.g. \"3 minÅ«tÄ“m\" as in \"pÄ“c 3 minÅ«tÄ“m\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažÄm sekundÄ“m';\n }\n var lv = moment.defineLocale('lv', {\n months: 'janvÄris_februÄris_marts_aprÄ«lis_maijs_jÅ«nijs_jÅ«lijs_augusts_septembris_oktobris_novembris_decembris'.split('_'),\n monthsShort: 'jan_feb_mar_apr_mai_jÅ«n_jÅ«l_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'svÄ“tdiena_pirmdiena_otrdiena_treÅ¡diena_ceturtdiena_piektdiena_sestdiena'.split('_'),\n weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY.',\n LL: 'YYYY. [gada] D. MMMM',\n LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm'\n },\n calendar: {\n sameDay: '[Å odien pulksten] LT',\n nextDay: '[RÄ«t pulksten] LT',\n nextWeek: 'dddd [pulksten] LT',\n lastDay: '[Vakar pulksten] LT',\n lastWeek: '[PagÄjuÅ¡Ä] dddd [pulksten] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'pÄ“c %s',\n past: 'pirms %s',\n s: relativeSeconds,\n ss: relativeTimeWithPlural,\n m: relativeTimeWithSingular,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithSingular,\n hh: relativeTimeWithPlural,\n d: relativeTimeWithSingular,\n dd: relativeTimeWithPlural,\n M: relativeTimeWithSingular,\n MM: relativeTimeWithPlural,\n y: relativeTimeWithSingular,\n yy: relativeTimeWithPlural\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return lv;\n});","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag NikaÄ <miodrag@restartit.me> : https://github.com/miodragnikac\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina']\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1 ? wordKey[0] : number >= 2 && number <= 4 ? wordKey[1] : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n }\n }\n };\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_Äetvrtak_petak_subota'.split('_'),\n weekdaysShort: 'ned._pon._uto._sri._Äet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_Äe_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juÄe u] LT',\n lastWeek: function () {\n var lastWeekDays = ['[proÅ¡le] [nedjelje] [u] LT', '[proÅ¡log] [ponedjeljka] [u] LT', '[proÅ¡log] [utorka] [u] LT', '[proÅ¡le] [srijede] [u] LT', '[proÅ¡log] [Äetvrtka] [u] LT', '[proÅ¡log] [petka] [u] LT', '[proÅ¡le] [subote] [u] LT'];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return me;\n});","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan <robbiecloset@gmail.com> : https://github.com/johnideal\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-tÄte_Hui-tanguru_PoutÅ«-te-rangi_Paenga-whÄwhÄ_Haratua_Pipiri_HÅngoingoi_Here-turi-kÅkÄ_Mahuru_Whiringa-Ä-nuku_Whiringa-Ä-rangi_Hakihea'.split('_'),\n monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_HÅngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'RÄtapu_Mane_TÅ«rei_Wenerei_TÄite_Paraire_HÄtarei'.split('_'),\n weekdaysShort: 'Ta_Ma_TÅ«_We_TÄi_Pa_HÄ'.split('_'),\n weekdaysMin: 'Ta_Ma_TÅ«_We_TÄi_Pa_HÄ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm'\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hÄ“kona ruarua',\n ss: '%d hÄ“kona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return mi;\n});","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var mk = moment.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_авгуÑÑ‚_Ñептември_октомври_ноември_декември'.split('_'),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_Ñеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_Ñреда_четврток_петок_Ñабота'.split('_'),\n weekdaysShort: 'нед_пон_вто_Ñре_чет_пет_Ñаб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ÑÑ€_че_пе_Ña'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[Ð”ÐµÐ½ÐµÑ Ð²Ð¾] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку Ñекунди',\n ss: '%d Ñекунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден чаÑ',\n hh: '%d чаÑа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден меÑец',\n MM: '%d меÑеци',\n y: 'една година',\n yy: '%d години'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return mk;\n});","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ml = moment.defineLocale('ml', {\n months: 'ജനàµà´µà´°à´¿_ഫെബàµà´°àµà´µà´°à´¿_മാർചàµà´šàµ_à´à´ªàµà´°à´¿àµ½_മേയàµ_ജൂൺ_ജൂലൈ_à´“à´—à´¸àµà´±àµà´±àµ_സെപàµà´±àµà´±à´‚ബർ_à´’à´•àµà´Ÿàµ‹à´¬àµ¼_നവംബർ_ഡിസംബർ'.split('_'),\n monthsShort: 'ജനàµ._ഫെബàµà´°àµ._മാർ._à´à´ªàµà´°à´¿._മേയàµ_ജൂൺ_ജൂലൈ._à´“à´—._സെപàµà´±àµà´±._à´’à´•àµà´Ÿàµ‹._നവം._ഡിസം.'.split('_'),\n monthsParseExact: true,\n weekdays: 'ഞായറാഴàµà´š_തിങàµà´•ളാഴàµà´š_ചൊവàµà´µà´¾à´´àµà´š_à´¬àµà´§à´¨à´¾à´´àµà´š_à´µàµà´¯à´¾à´´à´¾à´´àµà´š_വെളàµà´³à´¿à´¯à´¾à´´àµà´š_ശനിയാഴàµà´š'.split('_'),\n weekdaysShort: 'ഞായർ_തിങàµà´•ൾ_ചൊവàµà´µ_à´¬àµà´§àµ»_à´µàµà´¯à´¾à´´à´‚_വെളàµà´³à´¿_ശനി'.split('_'),\n weekdaysMin: 'à´žà´¾_തി_ചൊ_à´¬àµ_à´µàµà´¯à´¾_വെ_à´¶'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -à´¨àµ',\n LTS: 'A h:mm:ss -à´¨àµ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -à´¨àµ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -à´¨àµ'\n },\n calendar: {\n sameDay: '[ഇനàµà´¨àµ] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇനàµà´¨à´²àµ†] LT',\n lastWeek: '[à´•à´´à´¿à´žàµà´ž] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s à´•à´´à´¿à´žàµà´žàµ',\n past: '%s à´®àµàµ»à´ªàµ',\n s: 'അൽപ നിമിഷങàµà´™àµ¾',\n ss: '%d സെകàµà´•ൻഡàµ',\n m: 'ഒരൠമിനിറàµà´±àµ',\n mm: '%d മിനിറàµà´±àµ',\n h: 'ഒരൠമണികàµà´•ൂർ',\n hh: '%d മണികàµà´•ൂർ',\n d: 'ഒരൠദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരൠമാസം',\n MM: '%d മാസം',\n y: 'ഒരൠവർഷം',\n yy: '%d വർഷം'\n },\n meridiemParse: /രാതàµà´°à´¿|രാവിലെ|ഉചàµà´š à´•à´´à´¿à´žàµà´žàµ|വൈകàµà´¨àµà´¨àµ‡à´°à´‚|രാതàµà´°à´¿/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'രാതàµà´°à´¿' && hour >= 4 || meridiem === 'ഉചàµà´š à´•à´´à´¿à´žàµà´žàµ' || meridiem === 'വൈകàµà´¨àµà´¨àµ‡à´°à´‚') {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാതàµà´°à´¿';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉചàµà´š à´•à´´à´¿à´žàµà´žàµ';\n } else if (hour < 20) {\n return 'വൈകàµà´¨àµà´¨àµ‡à´°à´‚';\n } else {\n return 'രാതàµà´°à´¿';\n }\n }\n });\n return ml;\n});","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'Ñ…ÑдхÑн Ñекунд' : 'Ñ…ÑдхÑн Ñекундын';\n case 'ss':\n return number + (withoutSuffix ? ' Ñекунд' : ' Ñекундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' Ñар' : ' Ñарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n var mn = moment.defineLocale('mn', {\n months: 'ÐÑгдүгÑÑÑ€ Ñар_Хоёрдугаар Ñар_Гуравдугаар Ñар_ДөрөвдүгÑÑÑ€ Ñар_Тавдугаар Ñар_Зургадугаар Ñар_Долдугаар Ñар_Ðаймдугаар Ñар_ЕÑдүгÑÑÑ€ Ñар_Ðравдугаар Ñар_Ðрван нÑгдүгÑÑÑ€ Ñар_Ðрван хоёрдугаар Ñар'.split('_'),\n monthsShort: '1 Ñар_2 Ñар_3 Ñар_4 Ñар_5 Ñар_6 Ñар_7 Ñар_8 Ñар_9 Ñар_10 Ñар_11 Ñар_12 Ñар'.split('_'),\n monthsParseExact: true,\n weekdays: 'ÐÑм_Даваа_МÑгмар_Лхагва_ПүрÑв_БааÑан_БÑмба'.split('_'),\n weekdaysShort: 'ÐÑм_Дав_МÑг_Лха_Пүр_Баа_БÑм'.split('_'),\n weekdaysMin: 'ÐÑ_Да_МÑ_Лх_Пү_Ба_БÑ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm'\n },\n meridiemParse: /Ò®Ó¨|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'Ò®Ó¨';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[ИрÑÑ…] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[ӨнгөрÑөн] dddd LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n }\n });\n return mn;\n});","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: 'à¥',\n 8: '८',\n 9: '९',\n 0: '०'\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n 'à¥': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n };\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = 'काही सेकंद';\n break;\n case 'ss':\n output = '%d सेकंद';\n break;\n case 'm':\n output = 'à¤à¤• मिनिट';\n break;\n case 'mm':\n output = '%d मिनिटे';\n break;\n case 'h':\n output = 'à¤à¤• तास';\n break;\n case 'hh':\n output = '%d तास';\n break;\n case 'd':\n output = 'à¤à¤• दिवस';\n break;\n case 'dd':\n output = '%d दिवस';\n break;\n case 'M':\n output = 'à¤à¤• महिना';\n break;\n case 'MM':\n output = '%d महिने';\n break;\n case 'y':\n output = 'à¤à¤• वरà¥à¤·';\n break;\n case 'yy':\n output = '%d वरà¥à¤·à¥‡';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = 'काही सेकंदां';\n break;\n case 'ss':\n output = '%d सेकंदां';\n break;\n case 'm':\n output = 'à¤à¤•ा मिनिटा';\n break;\n case 'mm':\n output = '%d मिनिटां';\n break;\n case 'h':\n output = 'à¤à¤•ा तासा';\n break;\n case 'hh':\n output = '%d तासां';\n break;\n case 'd':\n output = 'à¤à¤•ा दिवसा';\n break;\n case 'dd':\n output = '%d दिवसां';\n break;\n case 'M':\n output = 'à¤à¤•ा महिनà¥à¤¯à¤¾';\n break;\n case 'MM':\n output = '%d महिनà¥à¤¯à¤¾à¤‚';\n break;\n case 'y':\n output = 'à¤à¤•ा वरà¥à¤·à¤¾';\n break;\n case 'yy':\n output = '%d वरà¥à¤·à¤¾à¤‚';\n break;\n }\n }\n return output.replace(/%d/i, number);\n }\n var mr = moment.defineLocale('mr', {\n months: 'जानेवारी_फेबà¥à¤°à¥à¤µà¤¾à¤°à¥€_मारà¥à¤š_à¤à¤ªà¥à¤°à¤¿à¤²_मे_जून_जà¥à¤²à¥ˆ_ऑगसà¥à¤Ÿ_सपà¥à¤Ÿà¥‡à¤‚बर_ऑकà¥à¤Ÿà¥‹à¤¬à¤°_नोवà¥à¤¹à¥‡à¤‚बर_डिसेंबर'.split('_'),\n monthsShort: 'जाने._फेबà¥à¤°à¥._मारà¥à¤š._à¤à¤ªà¥à¤°à¤¿._मे._जून._जà¥à¤²à¥ˆ._ऑग._सपà¥à¤Ÿà¥‡à¤‚._ऑकà¥à¤Ÿà¥‹._नोवà¥à¤¹à¥‡à¤‚._डिसें.'.split('_'),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगळवार_बà¥à¤§à¤µà¤¾à¤°_गà¥à¤°à¥‚वार_शà¥à¤•à¥à¤°à¤µà¤¾à¤°_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगळ_बà¥à¤§_गà¥à¤°à¥‚_शà¥à¤•à¥à¤°_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बà¥_गà¥_शà¥_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm वाजता',\n LTS: 'A h:mm:ss वाजता',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm वाजता',\n LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता'\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[उदà¥à¤¯à¤¾] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%sमधà¥à¤¯à¥‡',\n past: '%sपूरà¥à¤µà¥€',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६à¥à¥®à¥¯à¥¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /पहाटे|सकाळी|दà¥à¤ªà¤¾à¤°à¥€|सायंकाळी|रातà¥à¤°à¥€/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n return hour;\n } else if (meridiem === 'दà¥à¤ªà¤¾à¤°à¥€' || meridiem === 'सायंकाळी' || meridiem === 'रातà¥à¤°à¥€') {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return 'पहाटे';\n } else if (hour < 12) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दà¥à¤ªà¤¾à¤°à¥€';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रातà¥à¤°à¥€';\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return mr;\n});","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ms = moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return ms;\n});","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var msMy = moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return msMy;\n});","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var mt = moment.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ä unju_Lulju_Awwissu_Settembru_Ottubru_Novembru_DiÄ‹embru'.split('_'),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ä un_Lul_Aww_Set_Ott_Nov_DiÄ‹'.split('_'),\n weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ä imgħa_Is-Sibt'.split('_'),\n weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ä im_Sib'.split('_'),\n weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ä i_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[Għada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-bieraħ fil-]LT',\n lastWeek: 'dddd [li għadda] [fil-]LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'f’ %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'siegħa',\n hh: '%d siegħat',\n d: 'Ä¡urnata',\n dd: '%d Ä¡ranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return mt;\n});","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: 'á',\n 2: 'á‚',\n 3: 'áƒ',\n 4: 'á„',\n 5: 'á…',\n 6: 'á†',\n 7: 'á‡',\n 8: 'áˆ',\n 9: 'á‰',\n 0: 'á€'\n },\n numberMap = {\n 'á': '1',\n 'á‚': '2',\n 'áƒ': '3',\n 'á„': '4',\n 'á…': '5',\n 'á†': '6',\n 'á‡': '7',\n 'áˆ': '8',\n 'á‰': '9',\n 'á€': '0'\n };\n var my = moment.defineLocale('my', {\n months: 'ဇန်နá€á€«á€›á€®_ဖေဖော်á€á€«á€›á€®_မá€á€º_ဧပြီ_မေ_ဇွန်_ဇူလá€á€¯á€„်_သြဂုá€á€º_စက်á€á€„်ဘာ_အောက်á€á€á€¯á€˜á€¬_နá€á€¯á€á€„်ဘာ_ဒီဇင်ဘာ'.split('_'),\n monthsShort: 'ဇန်_ဖေ_မá€á€º_ပြီ_မေ_ဇွန်_လá€á€¯á€„်_သြ_စက်_အောက်_နá€á€¯_ဒီ'.split('_'),\n weekdays: 'á€á€”င်္ဂနွေ_á€á€”င်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပá€á€±á€¸_သောကြာ_စနေ'.split('_'),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးá€á€²á€·á€žá€±á€¬] dddd LT [မှာ]',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်á€á€²á€·á€žá€±á€¬ %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss: '%d စက္ကန့်',\n m: 'á€á€…်မá€á€”စ်',\n mm: '%d မá€á€”စ်',\n h: 'á€á€…်နာရီ',\n hh: '%d နာရီ',\n d: 'á€á€…်ရက်',\n dd: '%d ရက်',\n M: 'á€á€…်လ',\n MM: '%d လ',\n y: 'á€á€…်နှစ်',\n yy: '%d နှစ်'\n },\n preparse: function (string) {\n return string.replace(/[áá‚áƒá„á…á†á‡áˆá‰á€]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return my;\n});","//! moment.js locale configuration\n//! locale : Norwegian BokmÃ¥l [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var nb = moment.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm'\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i gÃ¥r kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dager',\n w: 'en uke',\n ww: '%d uker',\n M: 'en mÃ¥ned',\n MM: '%d mÃ¥neder',\n y: 'ett Ã¥r',\n yy: '%d Ã¥r'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return nb;\n});","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: 'à¥',\n 8: '८',\n 9: '९',\n 0: '०'\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n 'à¥': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n };\n var ne = moment.defineLocale('ne', {\n months: 'जनवरी_फेबà¥à¤°à¥à¤µà¤°à¥€_मारà¥à¤š_अपà¥à¤°à¤¿à¤²_मई_जà¥à¤¨_जà¥à¤²à¤¾à¤ˆ_अगषà¥à¤Ÿ_सेपà¥à¤Ÿà¥‡à¤®à¥à¤¬à¤°_अकà¥à¤Ÿà¥‹à¤¬à¤°_नोà¤à¥‡à¤®à¥à¤¬à¤°_डिसेमà¥à¤¬à¤°'.split('_'),\n monthsShort: 'जन._फेबà¥à¤°à¥._मारà¥à¤š_अपà¥à¤°à¤¿._मई_जà¥à¤¨_जà¥à¤²à¤¾à¤ˆ._अग._सेपà¥à¤Ÿ._अकà¥à¤Ÿà¥‹._नोà¤à¥‡._डिसे.'.split('_'),\n monthsParseExact: true,\n weekdays: 'आइतबार_सोमबार_मङà¥à¤—लबार_बà¥à¤§à¤¬à¤¾à¤°_बिहिबार_शà¥à¤•à¥à¤°à¤¬à¤¾à¤°_शनिबार'.split('_'),\n weekdaysShort: 'आइत._सोम._मङà¥à¤—ल._बà¥à¤§._बिहि._शà¥à¤•à¥à¤°._शनि.'.split('_'),\n weekdaysMin: 'आ._सो._मं._बà¥._बि._शà¥._श.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'Aको h:mm बजे',\n LTS: 'Aको h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, Aको h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे'\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६à¥à¥®à¥¯à¥¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउà¤à¤¸à¥‹|साà¤à¤/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउà¤à¤¸à¥‹') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साà¤à¤') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउà¤à¤¸à¥‹';\n } else if (hour < 20) {\n return 'साà¤à¤';\n } else {\n return 'राति';\n }\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[à¤à¥‹à¤²à¤¿] LT',\n nextWeek: '[आउà¤à¤¦à¥‹] dddd[,] LT',\n lastDay: '[हिजो] LT',\n lastWeek: '[गà¤à¤•ो] dddd[,] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%sमा',\n past: '%s अगाडि',\n s: 'केही कà¥à¤·à¤£',\n ss: '%d सेकेणà¥à¤¡',\n m: 'à¤à¤• मिनेट',\n mm: '%d मिनेट',\n h: 'à¤à¤• घणà¥à¤Ÿà¤¾',\n hh: '%d घणà¥à¤Ÿà¤¾',\n d: 'à¤à¤• दिन',\n dd: '%d दिन',\n M: 'à¤à¤• महिना',\n MM: '%d महिना',\n y: 'à¤à¤• बरà¥à¤·',\n yy: '%d बरà¥à¤·'\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return ne;\n});","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n var nl = moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n w: 'één week',\n ww: '%d weken',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return number + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de');\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return nl;\n});","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return number + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de');\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return nlBe;\n});","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var nn = moment.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'sundag_mÃ¥ndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort: 'su._mÃ¥._ty._on._to._fr._lau.'.split('_'),\n weekdaysMin: 'su_mÃ¥_ty_on_to_fr_la'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm'\n },\n calendar: {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I gÃ¥r klokka] LT',\n lastWeek: '[FøregÃ¥ande] dddd [klokka] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'om %s',\n past: '%s sidan',\n s: 'nokre sekund',\n ss: '%d sekund',\n m: 'eit minutt',\n mm: '%d minutt',\n h: 'ein time',\n hh: '%d timar',\n d: 'ein dag',\n dd: '%d dagar',\n w: 'ei veke',\n ww: '%d veker',\n M: 'ein mÃ¥nad',\n MM: '%d mÃ¥nader',\n y: 'eit Ã¥r',\n yy: '%d Ã¥r'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return nn;\n});","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ocLnc = moment.defineLocale('oc-lnc', {\n months: {\n standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split('_'),\n format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split('_'),\n isFormat: /D[oD]?(\\s)+MMMM/\n },\n monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split('_'),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm'\n },\n calendar: {\n sameDay: '[uèi a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[ièr a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: \"d'aquà %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output = number === 1 ? 'r' : number === 2 ? 'n' : number === 3 ? 'r' : number === 4 ? 't' : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4\n }\n });\n return ocLnc;\n});","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: 'à©§',\n 2: '੨',\n 3: 'à©©',\n 4: '੪',\n 5: 'à©«',\n 6: '੬',\n 7: 'à©',\n 8: 'à©®',\n 9: '੯',\n 0: '੦'\n },\n numberMap = {\n 'à©§': '1',\n '੨': '2',\n 'à©©': '3',\n '੪': '4',\n 'à©«': '5',\n '੬': '6',\n 'à©': '7',\n 'à©®': '8',\n '੯': '9',\n '੦': '0'\n };\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪà©à¨°à©ˆà¨²_ਮਈ_ਜੂਨ_ਜà©à¨²à¨¾à¨ˆ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\n monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪà©à¨°à©ˆà¨²_ਮਈ_ਜੂਨ_ਜà©à¨²à¨¾à¨ˆ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\n weekdays: 'à¨à¨¤à¨µà¨¾à¨°_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬà©à¨§à¨µà¨¾à¨°_ਵੀਰਵਾਰ_ਸ਼à©à©±à¨•ਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'),\n weekdaysShort: 'à¨à¨¤_ਸੋਮ_ਮੰਗਲ_ਬà©à¨§_ਵੀਰ_ਸ਼à©à¨•ਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin: 'à¨à¨¤_ਸੋਮ_ਮੰਗਲ_ਬà©à¨§_ਵੀਰ_ਸ਼à©à¨•ਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm ਵਜੇ',\n LTS: 'A h:mm:ss ਵਜੇ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ'\n },\n calendar: {\n sameDay: '[ਅਜ] LT',\n nextDay: '[ਕਲ] LT',\n nextWeek: '[ਅਗਲਾ] dddd, LT',\n lastDay: '[ਕਲ] LT',\n lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s ਵਿੱਚ',\n past: '%s ਪਿਛਲੇ',\n s: 'ਕà©à¨ ਸਕਿੰਟ',\n ss: '%d ਸਕਿੰਟ',\n m: 'ਇਕ ਮਿੰਟ',\n mm: '%d ਮਿੰਟ',\n h: 'ਇੱਕ ਘੰਟਾ',\n hh: '%d ਘੰਟੇ',\n d: 'ਇੱਕ ਦਿਨ',\n dd: '%d ਦਿਨ',\n M: 'ਇੱਕ ਮਹੀਨਾ',\n MM: '%d ਮਹੀਨੇ',\n y: 'ਇੱਕ ਸਾਲ',\n yy: '%d ਸਾਲ'\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬à©à©®à©¯à©¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦà©à¨ªà¨¹à¨¿à¨°|ਸ਼ਾਮ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦà©à¨ªà¨¹à¨¿à¨°') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦà©à¨ªà¨¹à¨¿à¨°';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return paIn;\n});","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsNominative = 'styczeÅ„_luty_marzec_kwiecieÅ„_maj_czerwiec_lipiec_sierpieÅ„_wrzesieÅ„_październik_listopad_grudzieÅ„'.split('_'),\n monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrzeÅ›nia_października_listopada_grudnia'.split('_'),\n monthsParse = [/^sty/i, /^lut/i, /^mar/i, /^kwi/i, /^maj/i, /^cze/i, /^lip/i, /^sie/i, /^wrz/i, /^paź/i, /^lis/i, /^gru/i];\n function plural(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutÄ™';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinÄ™';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'ww':\n return result + (plural(number) ? 'tygodnie' : 'tygodni');\n case 'MM':\n return result + (plural(number) ? 'miesiÄ…ce' : 'miesiÄ™cy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n var pl = moment.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'niedziela_poniedziaÅ‚ek_wtorek_Å›roda_czwartek_piÄ…tek_sobota'.split('_'),\n weekdaysShort: 'ndz_pon_wt_Å›r_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Åšr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[DziÅ› o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielÄ™ o] LT';\n case 2:\n return '[We wtorek o] LT';\n case 3:\n return '[W Å›rodÄ™ o] LT';\n case 6:\n return '[W sobotÄ™ o] LT';\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielÄ™ o] LT';\n case 3:\n return '[W zeszłą Å›rodÄ™ o] LT';\n case 6:\n return '[W zeszłą sobotÄ™ o] LT';\n default:\n return '[W zeszÅ‚y] dddd [o] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzieÅ„',\n dd: '%d dni',\n w: 'tydzieÅ„',\n ww: translate,\n M: 'miesiÄ…c',\n MM: translate,\n y: 'rok',\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return pl;\n});","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var pt = moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Hoje à s] LT',\n nextDay: '[Amanhã à s] LT',\n nextWeek: 'dddd [à s] LT',\n lastDay: '[Ontem à s] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6 ? '[Último] dddd [à s] LT' // Saturday + Sunday\n : '[Última] dddd [à s] LT'; // Monday - Friday\n },\n\n sameElse: 'L'\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n w: 'uma semana',\n ww: '%d semanas',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return pt;\n});","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split('_'),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [à s] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [à s] HH:mm'\n },\n calendar: {\n sameDay: '[Hoje à s] LT',\n nextDay: '[Amanhã à s] LT',\n nextWeek: 'dddd [à s] LT',\n lastDay: '[Ontem à s] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6 ? '[Último] dddd [à s] LT' // Saturday + Sunday\n : '[Última] dddd [à s] LT'; // Monday - Friday\n },\n\n sameElse: 'L'\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n invalidDate: 'Data inválida'\n });\n return ptBr;\n});","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n ww: 'săptămâni',\n MM: 'luni',\n yy: 'ani'\n },\n separator = ' ';\n if (number % 100 >= 20 || number >= 100 && number % 100 === 0) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n var ro = moment.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),\n monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marÈ›i_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural,\n m: 'un minut',\n mm: relativeTimeWithPlural,\n h: 'o oră',\n hh: relativeTimeWithPlural,\n d: 'o zi',\n dd: relativeTimeWithPlural,\n w: 'o săptămână',\n ww: relativeTimeWithPlural,\n M: 'o lună',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return ro;\n});","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'Ñекунда_Ñекунды_Ñекунд' : 'Ñекунду_Ñекунды_Ñекунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'чаÑ_чаÑа_чаÑов',\n dd: 'день_днÑ_дней',\n ww: 'неделÑ_недели_недель',\n MM: 'меÑÑц_меÑÑца_меÑÑцев',\n yy: 'год_года_лет'\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var monthsParse = [/^Ñнв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йÑ]/i, /^июн/i, /^июл/i, /^авг/i, /^Ñен/i, /^окт/i, /^ноÑ/i, /^дек/i];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Ð¡Ð¾ÐºÑ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð¼ÐµÑÑцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n var ru = moment.defineLocale('ru', {\n months: {\n format: 'ÑнварÑ_февралÑ_марта_апрелÑ_маÑ_июнÑ_июлÑ_авгуÑта_ÑентÑбрÑ_октÑбрÑ_ноÑбрÑ_декабрÑ'.split('_'),\n standalone: 'Ñнварь_февраль_март_апрель_май_июнь_июль_авгуÑÑ‚_ÑентÑбрь_октÑбрь_ноÑбрь_декабрь'.split('_')\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой ÑмыÑл менÑть букву на точку?\n format: 'Ñнв._февр._мар._апр._маÑ_июнÑ_июлÑ_авг._Ñент._окт._ноÑб._дек.'.split('_'),\n standalone: 'Ñнв._февр._март_апр._май_июнь_июль_авг._Ñент._окт._ноÑб._дек.'.split('_')\n },\n weekdays: {\n standalone: 'воÑкреÑенье_понедельник_вторник_Ñреда_четверг_пÑтница_Ñуббота'.split('_'),\n format: 'воÑкреÑенье_понедельник_вторник_Ñреду_четверг_пÑтницу_Ñубботу'.split('_'),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|Ñледующую|Ñту)? ?] ?dddd/\n },\n weekdaysShort: 'вÑ_пн_вт_ÑÑ€_чт_пт_Ñб'.split('_'),\n weekdaysMin: 'вÑ_пн_вт_ÑÑ€_чт_пт_Ñб'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n // полные Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñ Ð¿Ð°Ð´ÐµÐ¶Ð°Ð¼Ð¸, по три буквы, Ð´Ð»Ñ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ…, по 4 буквы, ÑÐ¾ÐºÑ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ñ Ñ‚Ð¾Ñ‡ÐºÐ¾Ð¹ и без точки\n monthsRegex: /^(Ñнвар[ÑŒÑ]|Ñнв\\.?|феврал[ÑŒÑ]|февр?\\.?|марта?|мар\\.?|апрел[ÑŒÑ]|апр\\.?|ма[йÑ]|июн[ÑŒÑ]|июн\\.?|июл[ÑŒÑ]|июл\\.?|авгуÑта?|авг\\.?|ÑентÑбр[ÑŒÑ]|Ñент?\\.?|октÑбр[ÑŒÑ]|окт\\.?|ноÑбр[ÑŒÑ]|ноÑб?\\.?|декабр[ÑŒÑ]|дек\\.?)/i,\n // ÐºÐ¾Ð¿Ð¸Ñ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰ÐµÐ³Ð¾\n monthsShortRegex: /^(Ñнвар[ÑŒÑ]|Ñнв\\.?|феврал[ÑŒÑ]|февр?\\.?|марта?|мар\\.?|апрел[ÑŒÑ]|апр\\.?|ма[йÑ]|июн[ÑŒÑ]|июн\\.?|июл[ÑŒÑ]|июл\\.?|авгуÑта?|авг\\.?|ÑентÑбр[ÑŒÑ]|Ñент?\\.?|октÑбр[ÑŒÑ]|окт\\.?|ноÑбр[ÑŒÑ]|ноÑб?\\.?|декабр[ÑŒÑ]|дек\\.?)/i,\n // полные Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñ Ð¿Ð°Ð´ÐµÐ¶Ð°Ð¼Ð¸\n monthsStrictRegex: /^(Ñнвар[ÑÑŒ]|феврал[ÑÑŒ]|марта?|апрел[ÑÑŒ]|ма[Ñй]|июн[ÑÑŒ]|июл[ÑÑŒ]|авгуÑта?|ÑентÑбр[ÑÑŒ]|октÑбр[ÑÑŒ]|ноÑбр[ÑÑŒ]|декабр[ÑÑŒ])/i,\n // Выражение, которое ÑоответÑтвует только Ñокращённым формам\n monthsShortStrictRegex: /^(Ñнв\\.|февр?\\.|мар[Ñ‚.]|апр\\.|ма[Ñй]|июн[ÑŒÑ.]|июл[ÑŒÑ.]|авг\\.|Ñент?\\.|окт\\.|ноÑб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm'\n },\n calendar: {\n sameDay: '[СегоднÑ, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[Ð’ Ñледующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[Ð’ Ñледующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[Ð’ Ñледующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[Ð’] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[Ð’ прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[Ð’ прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[Ð’ прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[Ð’] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'неÑколько Ñекунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'чаÑ',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n w: 'неделÑ',\n ww: relativeTimeWithPlural,\n M: 'меÑÑц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural\n },\n meridiemParse: /ночи|утра|днÑ|вечера/i,\n isPM: function (input) {\n return /^(днÑ|вечера)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'днÑ';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|Ñ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-Ñ';\n default:\n return number;\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return ru;\n});","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var months = ['جنوري', 'Ùيبروري', 'مارچ', 'اپريل', 'مئي', 'جون', 'جولاءÙ', 'آگسٽ', 'سيپٽمبر', 'آڪٽوبر', 'نومبر', 'ڊسمبر'],\n days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n var sd = moment.defineLocale('sd', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ddddØŒ D MMMM YYYY HH:mm'\n },\n meridiemParse: /صبØ|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبØ';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين Ù‡ÙØªÙŠ ØªÙŠ] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل Ù‡ÙØªÙŠ] dddd [تي] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'Ù‡Úª منٽ',\n mm: '%d منٽ',\n h: 'Ù‡Úª ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'Ù‡Úª Úينهن',\n dd: '%d Úينهن',\n M: 'Ù‡Úª مهينو',\n MM: '%d مهينا',\n y: 'Ù‡Úª سال',\n yy: '%d سال'\n },\n preparse: function (string) {\n return string.replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return sd;\n});","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : BÃ¥rd Rolstad Henriksen : https://github.com/karamell\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var se = moment.defineLocale('se', {\n months: 'ođđajagemánnu_guovvamánnu_njukÄamánnu_cuoÅ‹ománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_ÄakÄamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'),\n monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_ÄakÄ_golg_skáb_juov'.split('_'),\n weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'),\n weekdaysShort: 'sotn_vuos_maÅ‹_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm'\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maÅ‹it %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return se;\n});","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n\n /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months: 'ජනවà·à¶»à·’_පෙබරවà·à¶»à·’_මà·à¶»à·Šà¶à·”_à¶…à¶´à·Šâ€à¶»à·šà¶½à·Š_මà·à¶ºà·’_ජූනි_ජූලි_à¶…à¶œà·à·ƒà·Šà¶à·”_à·ƒà·à¶´à·Šà¶à·à¶¸à·Šà¶¶à¶»à·Š_ඔක්à¶à·à¶¶à¶»à·Š_නොවà·à¶¸à·Šà¶¶à¶»à·Š_දෙසà·à¶¸à·Šà¶¶à¶»à·Š'.split('_'),\n monthsShort: 'ජන_පෙබ_මà·à¶»à·Š_à¶…à¶´à·Š_මà·à¶ºà·’_ජූනි_ජූලි_à¶…à¶œà·_à·ƒà·à¶´à·Š_ඔක්_නොවà·_දෙසà·'.split('_'),\n weekdays: 'ඉරිදà·_සඳුදà·_අඟහරුවà·à¶¯à·_බදà·à¶¯à·_à¶¶à·Šâ€à¶»à·„ස්පà¶à·’න්දà·_සිකුරà·à¶¯à·_සෙනසුරà·à¶¯à·'.split('_'),\n weekdaysShort: 'ඉරි_සඳු_à¶…à¶Ÿ_බදà·_à¶¶à·Šâ€à¶»à·„_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_à·ƒ_à¶…_à¶¶_à¶¶à·Šâ€à¶»_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [à·€à·à¶±à·’] dddd, a h:mm:ss'\n },\n calendar: {\n sameDay: '[අද] LT[à¶§]',\n nextDay: '[හෙට] LT[à¶§]',\n nextWeek: 'dddd LT[à¶§]',\n lastDay: '[ඊයේ] LT[à¶§]',\n lastWeek: '[පසුගිය] dddd LT[à¶§]',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sà¶šà¶§ පෙර',\n s: 'à¶à¶à·Šà¶´à¶» කිහිපය',\n ss: 'à¶à¶à·Šà¶´à¶» %d',\n m: 'මිනිà¶à·Šà¶à·”à·€',\n mm: 'මිනිà¶à·Šà¶à·” %d',\n h: 'à¶´à·à¶º',\n hh: 'à¶´à·à¶º %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මà·à·ƒà¶º',\n MM: 'මà·à·ƒ %d',\n y: 'වසර',\n yy: 'වසර %d'\n },\n dayOfMonthOrdinalParse: /\\d{1,2} à·€à·à¶±à·’/,\n ordinal: function (number) {\n return number + ' à·€à·à¶±à·’';\n },\n meridiemParse: /පෙර වරු|පස් වරු|à¶´à·™.à·€|à¶´.à·€./,\n isPM: function (input) {\n return input === 'à¶´.à·€.' || input === 'පස් වරු';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'à¶´.à·€.' : 'පස් වරු';\n } else {\n return isLower ? 'à¶´à·™.à·€.' : 'පෙර වරු';\n }\n }\n });\n return si;\n});","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var months = 'január_február_marec_aprÃl_máj_jún_júl_august_september_október_november_december'.split('_'),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural(n) {\n return n > 1 && n < 5;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n case 'ss':\n // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n case 'm':\n // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n case 'mm':\n // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n case 'h':\n // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh':\n // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodÃn');\n } else {\n return result + 'hodinami';\n }\n case 'd':\n // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n case 'dd':\n // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dnÃ');\n } else {\n return result + 'dňami';\n }\n case 'M':\n // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM':\n // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n case 'y':\n // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy':\n // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n }\n }\n var sk = moment.defineLocale('sk', {\n months: months,\n monthsShort: monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_Å¡tvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_Å¡t_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_Å¡t_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo Å¡tvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[vÄera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return sk;\n});","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert SedovÅ¡ek : https://github.com/sedovsek\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n var sl = moment.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_Äetrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._Äet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_Äe_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[vÄeraj ob] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prejÅ¡njo] [nedeljo] [ob] LT';\n case 3:\n return '[prejÅ¡njo] [sredo] [ob] LT';\n case 6:\n return '[prejÅ¡njo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejÅ¡nji] dddd [ob] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'Äez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return sl;\n});","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var sq = moment.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'në %s',\n past: '%s më parë',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minutë',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return sq;\n});","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan JanaÄković<milanjanackovic@gmail.com> : https://github.com/milan-j\n//! author : Stefan Crnjaković <stefan@hotmail.rs> : https://github.com/crnjakovic\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jedne minute'],\n mm: ['minut', 'minute', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mesec', 'meseca', 'meseci'],\n yy: ['godina', 'godine', 'godina']\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1 ? wordKey[0] : number >= 2 && number <= 4 ? wordKey[1] : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n }\n }\n };\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_Äetvrtak_petak_subota'.split('_'),\n weekdaysShort: 'ned._pon._uto._sre._Äet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_Äe_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm'\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juÄe u] LT',\n lastWeek: function () {\n var lastWeekDays = ['[proÅ¡le] [nedelje] [u] LT', '[proÅ¡log] [ponedeljka] [u] LT', '[proÅ¡log] [utorka] [u] LT', '[proÅ¡le] [srede] [u] LT', '[proÅ¡log] [Äetvrtka] [u] LT', '[proÅ¡log] [petka] [u] LT', '[proÅ¡le] [subote] [u] LT'];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return sr;\n});","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan JanaÄković<milanjanackovic@gmail.com> : https://github.com/milan-j\n//! author : Stefan Crnjaković <stefan@hotmail.rs> : https://github.com/crnjakovic\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['Ñекунда', 'Ñекунде', 'Ñекунди'],\n m: ['један минут', 'једне минуте'],\n mm: ['минут', 'минуте', 'минута'],\n h: ['један Ñат', 'једног Ñата'],\n hh: ['Ñат', 'Ñата', 'Ñати'],\n dd: ['дан', 'дана', 'дана'],\n MM: ['меÑец', 'меÑеца', 'меÑеци'],\n yy: ['година', 'године', 'година']\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1 ? wordKey[0] : number >= 2 && number <= 4 ? wordKey[1] : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n }\n }\n };\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_авгуÑÑ‚_Ñептембар_октобар_новембар_децембар'.split('_'),\n monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._Ñеп._окт._нов._дец.'.split('_'),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_Ñреда_четвртак_петак_Ñубота'.split('_'),\n weekdaysShort: 'нед._пон._уто._Ñре._чет._пет._Ñуб.'.split('_'),\n weekdaysMin: 'не_по_ут_ÑÑ€_че_пе_Ñу'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm'\n },\n calendar: {\n sameDay: '[Ð´Ð°Ð½Ð°Ñ Ñƒ] LT',\n nextDay: '[Ñутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [Ñреду] [у] LT';\n case 6:\n return '[у] [Ñуботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay: '[јуче у] LT',\n lastWeek: function () {\n var lastWeekDays = ['[прошле] [недеље] [у] LT', '[прошлог] [понедељка] [у] LT', '[прошлог] [уторка] [у] LT', '[прошле] [Ñреде] [у] LT', '[прошлог] [четвртка] [у] LT', '[прошлог] [петка] [у] LT', '[прошле] [Ñуботе] [у] LT'];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'за %s',\n past: 'пре %s',\n s: 'неколико Ñекунди',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'дан',\n dd: translator.translate,\n M: 'меÑец',\n MM: translator.translate,\n y: 'годину',\n yy: translator.translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n }\n });\n\n return srCyrl;\n});","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies<mail@nicolai.io> : https://github.com/nicolaidavies\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ss = moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split('_'),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A'\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka'\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return ss;\n});","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var sv = moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_mÃ¥ndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mÃ¥n_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_mÃ¥_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[IgÃ¥r] LT',\n nextWeek: '[PÃ¥] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'nÃ¥gra sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en mÃ¥nad',\n MM: '%d mÃ¥nader',\n y: 'ett Ã¥r',\n yy: '%d Ã¥r'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? ':e' : b === 1 ? ':a' : b === 2 ? ':a' : b === 3 ? ':e' : ':e';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return sv;\n});","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var sw = moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'hh:mm A',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'siku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return sw;\n});","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: '௧',\n 2: '௨',\n 3: '௩',\n 4: '௪',\n 5: '௫',\n 6: '௬',\n 7: 'à¯',\n 8: '௮',\n 9: '௯',\n 0: '௦'\n },\n numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n 'à¯': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0'\n };\n var ta = moment.defineLocale('ta', {\n months: 'ஜனவரி_பிபà¯à®°à®µà®°à®¿_மாரà¯à®šà¯_à®à®ªà¯à®°à®²à¯_மே_ஜூனà¯_ஜூலை_ஆகஸà¯à®Ÿà¯_செபà¯à®Ÿà¯†à®®à¯à®ªà®°à¯_அகà¯à®Ÿà¯‡à®¾à®ªà®°à¯_நவமà¯à®ªà®°à¯_டிசமà¯à®ªà®°à¯'.split('_'),\n monthsShort: 'ஜனவரி_பிபà¯à®°à®µà®°à®¿_மாரà¯à®šà¯_à®à®ªà¯à®°à®²à¯_மே_ஜூனà¯_ஜூலை_ஆகஸà¯à®Ÿà¯_செபà¯à®Ÿà¯†à®®à¯à®ªà®°à¯_அகà¯à®Ÿà¯‡à®¾à®ªà®°à¯_நவமà¯à®ªà®°à¯_டிசமà¯à®ªà®°à¯'.split('_'),\n weekdays: 'ஞாயிறà¯à®±à¯à®•à¯à®•ிழமை_திஙà¯à®•டà¯à®•ிழமை_செவà¯à®µà®¾à®¯à¯à®•ிழமை_பà¯à®¤à®©à¯à®•ிழமை_வியாழகà¯à®•ிழமை_வெளà¯à®³à®¿à®•à¯à®•ிழமை_சனிகà¯à®•ிழமை'.split('_'),\n weekdaysShort: 'ஞாயிறà¯_திஙà¯à®•ளà¯_செவà¯à®µà®¾à®¯à¯_பà¯à®¤à®©à¯_வியாழனà¯_வெளà¯à®³à®¿_சனி'.split('_'),\n weekdaysMin: 'ஞா_தி_செ_பà¯_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm'\n },\n calendar: {\n sameDay: '[இனà¯à®±à¯] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேறà¯à®±à¯] LT',\n lastWeek: '[கடநà¯à®¤ வாரமà¯] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s இலà¯',\n past: '%s à®®à¯à®©à¯',\n s: 'ஒர௠சில விநாடிகளà¯',\n ss: '%d விநாடிகளà¯',\n m: 'ஒர௠நிமிடமà¯',\n mm: '%d நிமிடஙà¯à®•ளà¯',\n h: 'ஒர௠மணி நேரமà¯',\n hh: '%d மணி நேரமà¯',\n d: 'ஒர௠நாளà¯',\n dd: '%d நாடà¯à®•ளà¯',\n M: 'ஒர௠மாதமà¯',\n MM: '%d மாதஙà¯à®•ளà¯',\n y: 'ஒர௠வரà¯à®Ÿà®®à¯',\n yy: '%d ஆணà¯à®Ÿà¯à®•ளà¯'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வதà¯/,\n ordinal: function (number) {\n return number + 'வதà¯';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬à¯à¯®à¯¯à¯¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமமà¯|வைகறை|காலை|நணà¯à®ªà®•லà¯|எறà¯à®ªà®¾à®Ÿà¯|மாலை/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமமà¯';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நணà¯à®ªà®•லà¯'; // நணà¯à®ªà®•லà¯\n } else if (hour < 18) {\n return ' எறà¯à®ªà®¾à®Ÿà¯'; // எறà¯à®ªà®¾à®Ÿà¯\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமமà¯';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமமà¯') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நணà¯à®ªà®•லà¯') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return ta;\n});","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var te = moment.defineLocale('te', {\n months: 'జనవరి_à°«à°¿à°¬à±à°°à°µà°°à°¿_మారà±à°šà°¿_à°à°ªà±à°°à°¿à°²à±_మే_జూనà±_à°œà±à°²à±ˆ_ఆగసà±à°Ÿà±_సెపà±à°Ÿà±†à°‚బరà±_à°…à°•à±à°Ÿà±‹à°¬à°°à±_నవంబరà±_డిసెంబరà±'.split('_'),\n monthsShort: 'జన._à°«à°¿à°¬à±à°°._మారà±à°šà°¿_à°à°ªà±à°°à°¿._మే_జూనà±_à°œà±à°²à±ˆ_ఆగ._సెపà±._à°…à°•à±à°Ÿà±‹._నవ._డిసె.'.split('_'),\n monthsParseExact: true,\n weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_à°¬à±à°§à°µà°¾à°°à°‚_à°—à±à°°à±à°µà°¾à°°à°‚_à°¶à±à°•à±à°°à°µà°¾à°°à°‚_శనివారం'.split('_'),\n weekdaysShort: 'ఆది_సోమ_మంగళ_à°¬à±à°§_à°—à±à°°à±_à°¶à±à°•à±à°°_శని'.split('_'),\n weekdaysMin: 'à°†_సో_మం_à°¬à±_à°—à±_à°¶à±_à°¶'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm'\n },\n calendar: {\n sameDay: '[నేడà±] LT',\n nextDay: '[రేపà±] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నినà±à°¨] LT',\n lastWeek: '[à°—à°¤] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s లో',\n past: '%s à°•à±à°°à°¿à°¤à°‚',\n s: 'కొనà±à°¨à°¿ à°•à±à°·à°£à°¾à°²à±',\n ss: '%d సెకనà±à°²à±',\n m: 'à°’à°• నిమిషం',\n mm: '%d నిమిషాలà±',\n h: 'à°’à°• à°—à°‚à°Ÿ',\n hh: '%d à°—à°‚à°Ÿà°²à±',\n d: 'à°’à°• రోజà±',\n dd: '%d రోజà±à°²à±',\n M: 'à°’à°• నెల',\n MM: '%d నెలలà±',\n y: 'à°’à°• సంవతà±à°¸à°°à°‚',\n yy: '%d సంవతà±à°¸à°°à°¾à°²à±'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}à°µ/,\n ordinal: '%dà°µ',\n meridiemParse: /రాతà±à°°à°¿|ఉదయం|మధà±à°¯à°¾à°¹à±à°¨à°‚|సాయంతà±à°°à°‚/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాతà±à°°à°¿') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధà±à°¯à°¾à°¹à±à°¨à°‚') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంతà±à°°à°‚') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాతà±à°°à°¿';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధà±à°¯à°¾à°¹à±à°¨à°‚';\n } else if (hour < 20) {\n return 'సాయంతà±à°°à°‚';\n } else {\n return 'రాతà±à°°à°¿';\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return te;\n});","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split('_'),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return tet;\n});","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var suffixes = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум'\n };\n var tg = moment.defineLocale('tg', {\n months: {\n format: 'Ñнвари_феврали_марти_апрели_майи_июни_июли_авгуÑти_ÑентÑбри_октÑбри_ноÑбри_декабри'.split('_'),\n standalone: 'Ñнвар_феврал_март_апрел_май_июн_июл_авгуÑÑ‚_ÑентÑбр_октÑбр_ноÑбр_декабр'.split('_')\n },\n monthsShort: 'Ñнв_фев_мар_апр_май_июн_июл_авг_Ñен_окт_ноÑ_дек'.split('_'),\n weekdays: 'Ñкшанбе_душанбе_Ñешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split('_'),\n weekdaysShort: 'Ñшб_дшб_Ñшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin: 'Ñш_дш_Ñш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Имрӯз Ñоати] LT',\n nextDay: '[Фардо Ñоати] LT',\n lastDay: '[Дирӯз Ñоати] LT',\n nextWeek: 'dddd[и] [ҳафтаи оÑнда Ñоати] LT',\n lastWeek: 'dddd[и] [ҳафтаи гузашта Ñоати] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'баъди %s',\n past: '%s пеш',\n s: 'Ñкчанд ÑониÑ',\n m: 'Ñк дақиқа',\n mm: '%d дақиқа',\n h: 'Ñк Ñоат',\n hh: '%d Ñоат',\n d: 'Ñк рӯз',\n dd: '%d рӯз',\n M: 'Ñк моҳ',\n MM: '%d моҳ',\n y: 'Ñк Ñол',\n yy: '%d Ñол'\n },\n meridiemParse: /шаб|Ñубҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'Ñубҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'Ñубҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 1th is the first week of the year.\n }\n });\n\n return tg;\n});","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var th = moment.defineLocale('th', {\n months: 'มà¸à¸£à¸²à¸„ม_à¸à¸¸à¸¡à¸ าพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_à¸à¸£à¸à¸Žà¸²à¸„ม_สิงหาคม_à¸à¸±à¸™à¸¢à¸²à¸¢à¸™_ตุลาคม_พฤศจิà¸à¸²à¸¢à¸™_ธันวาคม'.split('_'),\n monthsShort: 'ม.ค._à¸.พ._มี.ค._เม.ย._พ.ค._มิ.ย._à¸.ค._ส.ค._à¸.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),\n monthsParseExact: true,\n weekdays: 'à¸à¸²à¸—ิตย์_จันทร์_à¸à¸±à¸‡à¸„าร_พุธ_พฤหัสบดี_ศุà¸à¸£à¹Œ_เสาร์'.split('_'),\n weekdaysShort: 'à¸à¸²à¸—ิตย์_จันทร์_à¸à¸±à¸‡à¸„าร_พุธ_พฤหัส_ศุà¸à¸£à¹Œ_เสาร์'.split('_'),\n // yes, three characters difference\n weekdaysMin: 'à¸à¸²._จ._à¸._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm'\n },\n meridiemParse: /à¸à¹ˆà¸à¸™à¹€à¸—ี่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'à¸à¹ˆà¸à¸™à¹€à¸—ี่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่à¸à¸§à¸²à¸™à¸™à¸µà¹‰ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่à¹à¸¥à¹‰à¸§ เวลา] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'à¸à¸µà¸ %s',\n past: '%sที่à¹à¸¥à¹‰à¸§',\n s: 'ไม่à¸à¸µà¹ˆà¸§à¸´à¸™à¸²à¸—ี',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n w: '1 สัปดาห์',\n ww: '%d สัปดาห์',\n M: '1 เดืà¸à¸™',\n MM: '%d เดืà¸à¸™',\n y: '1 ปี',\n yy: '%d ปี'\n }\n });\n return th;\n});","//! moment.js locale configuration\n//! locale : Turkmen [tk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var suffixes = {\n 1: \"'inji\",\n 5: \"'inji\",\n 8: \"'inji\",\n 70: \"'inji\",\n 80: \"'inji\",\n 2: \"'nji\",\n 7: \"'nji\",\n 20: \"'nji\",\n 50: \"'nji\",\n 3: \"'ünji\",\n 4: \"'ünji\",\n 100: \"'ünji\",\n 6: \"'njy\",\n 9: \"'unjy\",\n 10: \"'unjy\",\n 30: \"'unjy\",\n 60: \"'ynjy\",\n 90: \"'ynjy\"\n };\n var tk = moment.defineLocale('tk', {\n months: 'Ãanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split('_'),\n monthsShort: 'Ãan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n weekdays: 'ÃekÅŸenbe_DuÅŸenbe_SiÅŸenbe_ÇarÅŸenbe_PenÅŸenbe_Anna_Åženbe'.split('_'),\n weekdaysShort: 'Ãek_DuÅŸ_SiÅŸ_Çar_Pen_Ann_Åžen'.split('_'),\n weekdaysMin: 'Ãk_DÅŸ_SÅŸ_Çr_Pn_An_Åžn'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[bugün sagat] LT',\n nextDay: '[ertir sagat] LT',\n nextWeek: '[indiki] dddd [sagat] LT',\n lastDay: '[düýn] LT',\n lastWeek: '[geçen] dddd [sagat] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s soň',\n past: '%s öň',\n s: 'birnäçe sekunt',\n m: 'bir minut',\n mm: '%d minut',\n h: 'bir sagat',\n hh: '%d sagat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir aý',\n MM: '%d aý',\n y: 'bir ýyl',\n yy: '%d ýyl'\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'unjy\";\n }\n var a = number % 10,\n b = number % 100 - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return tk;\n});","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var tlPh = moment.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm'\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return tlPh;\n});","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n function translateFuture(output) {\n var time = output;\n time = output.indexOf('jaj') !== -1 ? time.slice(0, -3) + 'leS' : output.indexOf('jar') !== -1 ? time.slice(0, -3) + 'waQ' : output.indexOf('DIS') !== -1 ? time.slice(0, -3) + 'nem' : time + ' pIq';\n return time;\n }\n function translatePast(output) {\n var time = output;\n time = output.indexOf('jaj') !== -1 ? time.slice(0, -3) + 'Hu’' : output.indexOf('jar') !== -1 ? time.slice(0, -3) + 'wen' : output.indexOf('DIS') !== -1 ? time.slice(0, -3) + 'ben' : time + ' ret';\n return time;\n }\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n function numberAsNoun(number) {\n var hundred = Math.floor(number % 1000 / 100),\n ten = Math.floor(number % 100 / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n return word === '' ? 'pagh' : word;\n }\n var tlh = moment.defineLocale('tlh', {\n months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split('_'),\n monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split('_'),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L'\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate,\n m: 'wa’ tup',\n mm: translate,\n h: 'wa’ rep',\n hh: translate,\n d: 'wa’ jaj',\n dd: translate,\n M: 'wa’ jar',\n MM: translate,\n y: 'wa’ DIS',\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return tlh;\n});","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak YiÄŸit Kaya: https://github.com/BYK\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var suffixes = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\"\n };\n var tr = moment.defineLocale('tr', {\n months: 'Ocak_Åžubat_Mart_Nisan_Mayıs_Haziran_Temmuz_AÄŸustos_Eylül_Ekim_Kasım_Aralık'.split('_'),\n monthsShort: 'Oca_Åžub_Mar_Nis_May_Haz_Tem_AÄŸu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_ÇarÅŸamba_PerÅŸembe_Cuma_Cumartesi'.split('_'),\n weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'öö' : 'ÖÖ';\n } else {\n return isLower ? 'ös' : 'ÖS';\n }\n },\n meridiemParse: /öö|ÖÖ|ös|ÖS/,\n isPM: function (input) {\n return input === 'ös' || input === 'ÖS';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n w: 'bir hafta',\n ww: '%d hafta',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl'\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n var a = number % 10,\n b = number % 100 - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return tr;\n});","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n var tzl = moment.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm'\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function (input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi à ] LT',\n nextDay: '[demà à ] LT',\n nextWeek: 'dddd [à ] LT',\n lastDay: '[ieiri à ] LT',\n lastWeek: '[sür el] dddd [lasteu à ] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n mÃut\", \"'iens mÃut\"],\n mm: [number + ' mÃuts', '' + number + ' mÃuts'],\n h: [\"'n þora\", \"'iensa þora\"],\n hh: [number + ' þoras', '' + number + ' þoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars']\n };\n return isFuture ? format[key][0] : withoutSuffix ? format[key][0] : format[key][1];\n }\n return tzl;\n});","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var tzm = moment.defineLocale('tzm', {\n months: 'ⵉâµâµâ´°âµ¢âµ”_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓâµâµ¢âµ“_ⵢⵓâµâµ¢âµ“âµ£_ⵖⵓⵛⵜ_ⵛⵓⵜⴰâµâ´±âµ‰âµ”_ⴽⵟⵓⴱⵕ_âµâµ“ⵡⴰâµâ´±âµ‰âµ”_ⴷⵓⵊâµâ´±âµ‰âµ”'.split('_'),\n monthsShort: 'ⵉâµâµâ´°âµ¢âµ”_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓâµâµ¢âµ“_ⵢⵓâµâµ¢âµ“âµ£_ⵖⵓⵛⵜ_ⵛⵓⵜⴰâµâ´±âµ‰âµ”_ⴽⵟⵓⴱⵕ_âµâµ“ⵡⴰâµâ´±âµ‰âµ”_ⴷⵓⵊâµâ´±âµ‰âµ”'.split('_'),\n weekdays: 'ⴰⵙⴰⵎⴰⵙ_â´°âµ¢âµâ´°âµ™_ⴰⵙⵉâµâ´°âµ™_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_â´°âµ¢âµâ´°âµ™_ⴰⵙⵉâµâ´°âµ™_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_â´°âµ¢âµâ´°âµ™_ⴰⵙⵉâµâ´°âµ™_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[ⴰⵙⴷⵅ â´´] LT',\n nextDay: '[ⴰⵙⴽⴰ â´´] LT',\n nextWeek: 'dddd [â´´] LT',\n lastDay: '[ⴰⵚⴰâµâµœ â´´] LT',\n lastWeek: 'dddd [â´´] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'â´·â´°â´·âµ… âµ™ ⵢⴰⵠ%s',\n past: 'ⵢⴰⵠ%s',\n s: 'ⵉⵎⵉⴽ',\n ss: '%d ⵉⵎⵉⴽ',\n m: 'ⵎⵉâµâµ“â´º',\n mm: '%d ⵎⵉâµâµ“â´º',\n h: 'ⵙⴰⵄⴰ',\n hh: '%d ⵜⴰⵙⵙⴰⵄⵉâµ',\n d: 'ⴰⵙⵙ',\n dd: '%d oⵙⵙⴰâµ',\n M: 'â´°âµ¢oⵓⵔ',\n MM: '%d ⵉⵢⵢⵉⵔâµ',\n y: 'ⴰⵙⴳⴰⵙ',\n yy: '%d ⵉⵙⴳⴰⵙâµ'\n },\n week: {\n dow: 6,\n // Saturday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return tzm;\n});","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var tzmLatn = moment.defineLocale('tzm-latn', {\n months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_É£wÅ¡t_Å¡wtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\n monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_É£wÅ¡t_Å¡wtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\n weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiá¸yas'.split('_'),\n weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiá¸yas'.split('_'),\n weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiá¸yas'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dadkh s yan %s',\n past: 'yan %s',\n s: 'imik',\n ss: '%d imik',\n m: 'minuá¸',\n mm: '%d minuá¸',\n h: 'saÉ›a',\n hh: '%d tassaÉ›in',\n d: 'ass',\n dd: '%d ossan',\n M: 'ayowr',\n MM: '%d iyyirn',\n y: 'asgas',\n yy: '%d isgasn'\n },\n week: {\n dow: 6,\n // Saturday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return tzmLatn;\n});","//! moment.js locale configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_ÙÛۋرال_مارت_ئاپرÛÙ„_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سÛنتەبىر_ئۆكتەبىر_نويابىر_دÛكابىر'.split('_'),\n monthsShort: 'يانۋار_ÙÛۋرال_مارت_ئاپرÛÙ„_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سÛنتەبىر_ئۆكتەبىر_نويابىر_دÛكابىر'.split('_'),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split('_'),\n weekdaysShort: 'ÙŠÛ•_دۈ_سە_چا_Ù¾Û•_جۈ_Ø´Û•'.split('_'),\n weekdaysMin: 'ÙŠÛ•_دۈ_سە_چا_Ù¾Û•_جۈ_Ø´Û•'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىÚD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىÚD-كۈنى، HH:mm',\n LLLL: 'ddddØŒ YYYY-يىلىM-ئاينىÚD-كۈنى، HH:mm'\n },\n meridiemParse: /ÙŠÛØ±Ù‰Ù… ÙƒÛÚ†Û•|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن ÙƒÛيىن|ÙƒÛ•Ú†/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ÙŠÛØ±Ù‰Ù… ÙƒÛÚ†Û•' || meridiem === 'سەھەر' || meridiem === 'چۈشتىن بۇرۇن') {\n return hour;\n } else if (meridiem === 'چۈشتىن ÙƒÛيىن' || meridiem === 'ÙƒÛ•Ú†') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'ÙŠÛØ±Ù‰Ù… ÙƒÛÚ†Û•';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن ÙƒÛيىن';\n } else {\n return 'ÙƒÛ•Ú†';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[ÙƒÛلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s ÙƒÛيىن',\n past: '%s بۇرۇن',\n s: 'Ù†Û•Ú†Ú†Û• سÛكونت',\n ss: '%d سÛكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر ÙƒÛˆÙ†',\n dd: '%d ÙƒÛˆÙ†',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, 'ØŒ');\n },\n week: {\n // GB/T 7408-1994《数æ®å…ƒå’Œäº¤æ¢æ ¼å¼Â·ä¿¡æ¯äº¤æ¢Â·æ—¥æœŸå’Œæ—¶é—´è¡¨ç¤ºæ³•》与ISO 8601:1988ç‰æ•ˆ\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n }\n });\n\n return ugCn;\n});","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'Ñекунда_Ñекунди_Ñекунд' : 'Ñекунду_Ñекунди_Ñекунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'міÑÑць_міÑÑці_міÑÑців',\n yy: 'рік_роки_років'\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative: 'неділÑ_понеділок_вівторок_Ñереда_четвер_п’ÑтницÑ_Ñубота'.split('_'),\n accusative: 'неділю_понеділок_вівторок_Ñереду_четвер_п’Ñтницю_Ñуботу'.split('_'),\n genitive: 'неділі_понеділка_вівторка_Ñереди_четверга_п’Ñтниці_Ñуботи'.split('_')\n },\n nounCase;\n if (m === true) {\n return weekdays['nominative'].slice(1, 7).concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format) ? 'accusative' : /\\[?(?:минулої|наÑтупної)? ?\\] ?dddd/.test(format) ? 'genitive' : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n var uk = moment.defineLocale('uk', {\n months: {\n format: 'ÑічнÑ_лютого_березнÑ_квітнÑ_травнÑ_червнÑ_липнÑ_ÑерпнÑ_вереÑнÑ_жовтнÑ_лиÑтопада_груднÑ'.split('_'),\n standalone: 'Ñічень_лютий_березень_квітень_травень_червень_липень_Ñерпень_вереÑень_жовтень_лиÑтопад_грудень'.split('_')\n },\n monthsShort: 'Ñіч_лют_бер_квіт_трав_черв_лип_Ñерп_вер_жовт_лиÑÑ‚_груд'.split('_'),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ÑÑ€_чт_пт_Ñб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ÑÑ€_чт_пт_Ñб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY Ñ€.',\n LLL: 'D MMMM YYYY Ñ€., HH:mm',\n LLLL: 'dddd, D MMMM YYYY Ñ€., HH:mm'\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька Ñекунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'міÑÑць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|днÑ|вечора/,\n isPM: function (input) {\n return /^(днÑ|вечора)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'днÑ';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return uk;\n});","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var months = ['جنوری', 'ÙØ±ÙˆØ±ÛŒ', 'مارچ', 'اپریل', 'مئی', 'جون', 'جولائی', 'اگست', 'ستمبر', 'اکتوبر', 'نومبر', 'دسمبر'],\n days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعÛ', 'ÛÙØªÛ'];\n var ur = moment.defineLocale('ur', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ddddØŒ D MMMM YYYY HH:mm'\n },\n meridiemParse: /صبØ|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبØ';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[Ú©Ù„ بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[Ú¯Ø°Ø´ØªÛ Ø±ÙˆØ² بوقت] LT',\n lastWeek: '[گذشتÛ] dddd [بوقت] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹÛ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماÛ',\n MM: '%d ماÛ',\n y: 'ایک سال',\n yy: '%d سال'\n },\n preparse: function (string) {\n return string.replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return ur;\n});","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var uz = moment.defineLocale('uz', {\n months: 'Ñнвар_феврал_март_апрел_май_июн_июл_авгуÑÑ‚_ÑентÑбр_октÑбр_ноÑбр_декабр'.split('_'),\n monthsShort: 'Ñнв_фев_мар_апр_май_июн_июл_авг_Ñен_окт_ноÑ_дек'.split('_'),\n weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm'\n },\n calendar: {\n sameDay: '[Бугун Ñоат] LT [да]',\n nextDay: '[Ðртага] LT [да]',\n nextWeek: 'dddd [куни Ñоат] LT [да]',\n lastDay: '[Кеча Ñоат] LT [да]',\n lastWeek: '[Утган] dddd [куни Ñоат] LT [да]',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'Якин %s ичида',\n past: 'Бир неча %s олдин',\n s: 'фурÑат',\n ss: '%d фурÑат',\n m: 'бир дакика',\n mm: '%d дакика',\n h: 'бир Ñоат',\n hh: '%d Ñоат',\n d: 'бир кун',\n dd: '%d кун',\n M: 'бир ой',\n MM: '%d ой',\n y: 'бир йил',\n yy: '%d йил'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return uz;\n});","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var uzLatn = moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split('_'),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split('_'),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm'\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L'\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return uzLatn;\n});","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var vi = moment.defineLocale('vi', {\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'),\n monthsShort: 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split('_'),\n monthsParseExact: true,\n weekdays: 'chá»§ nháºt_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function (input) {\n return /^ch$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngà y mai lúc] LT',\n nextWeek: 'dddd [tuần tá»›i lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trước lúc] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s tá»›i',\n past: '%s trước',\n s: 'và i giây',\n ss: '%d giây',\n m: 'má»™t phút',\n mm: '%d phút',\n h: 'má»™t giá»',\n hh: '%d giá»',\n d: 'má»™t ngà y',\n dd: '%d ngà y',\n w: 'má»™t tuần',\n ww: '%d tuần',\n M: 'má»™t tháng',\n MM: '%d tháng',\n y: 'má»™t năm',\n yy: '%d năm'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return vi;\n});","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var xPseudo = moment.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Ãp~rÃl_~Máý_~Júñé~_Júl~ý_Ãú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split('_'),\n monthsShort: 'J~áñ_~Féb_~Már_~Ãpr_~Máý_~Júñ_~Júl_~Ãúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'),\n monthsParseExact: true,\n weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~FrÃd~áý_S~átúr~dáý'.split('_'),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~FrÃ_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ã~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'Ã~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~mÃñ~úté',\n mm: '%d m~Ãñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return xPseudo;\n});","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var yo = moment.defineLocale('yo', {\n months: 'SẹÌrẹÌ_EÌ€reÌ€leÌ€_Ẹrẹ̀naÌ€_IÌ€gbeÌ_EÌ€bibi_OÌ€kuÌ€du_Agẹmo_OÌ€guÌn_Owewe_Ọ̀waÌ€raÌ€_BeÌluÌ_Ọ̀pẹ̀̀'.split('_'),\n monthsShort: 'SẹÌr_EÌ€rl_Ẹrn_IÌ€gb_EÌ€bi_OÌ€kuÌ€_Agẹ_OÌ€guÌ_Owe_Ọ̀waÌ€_BeÌl_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'AÌ€iÌ€kuÌ_AjeÌ_IÌ€sẹÌgun_Ọjá»ÌruÌ_Ọjá»Ìbá»_ẸtiÌ€_AÌ€baÌmẹÌta'.split('_'),\n weekdaysShort: 'AÌ€iÌ€k_AjeÌ_IÌ€sẹÌ_Ọjr_Ọjb_ẸtiÌ€_AÌ€baÌ'.split('_'),\n weekdaysMin: 'AÌ€iÌ€_Aj_IÌ€s_Ọr_Ọb_Ẹt_AÌ€b'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A'\n },\n calendar: {\n sameDay: '[OÌ€niÌ€ ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ toÌn'bá»] [ni] LT\",\n lastDay: '[AÌ€na ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ toÌlá»Ì] [ni] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'niÌ %s',\n past: '%s ká»jaÌ',\n s: 'iÌ€sẹjuÌ aayaÌ die',\n ss: 'aayaÌ %d',\n m: 'iÌ€sẹjuÌ kan',\n mm: 'iÌ€sẹjuÌ %d',\n h: 'waÌkati kan',\n hh: 'waÌkati %d',\n d: 'á»já»Ì kan',\n dd: 'á»já»Ì %d',\n M: 'osuÌ€ kan',\n MM: 'osuÌ€ %d',\n y: 'á»duÌn kan',\n yy: 'á»duÌn %d'\n },\n dayOfMonthOrdinalParse: /á»já»Ì\\s\\d{1,2}/,\n ordinal: 'á»já»Ì %d',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return yo;\n});","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var zhCn = moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_å…æœˆ_七月_八月_乿œˆ_åæœˆ_å一月_å二月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期å…'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周å…'.split('_'),\n weekdaysMin: 'æ—¥_一_二_三_å››_五_å…'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYYå¹´M月Dæ—¥',\n LLL: 'YYYYå¹´M月Dæ—¥Ah点mm分',\n LLLL: 'YYYYå¹´M月Dæ—¥ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYYå¹´M月Dæ—¥',\n lll: 'YYYYå¹´M月Dæ—¥ HH:mm',\n llll: 'YYYYå¹´M月Dæ—¥dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上åˆ|ä¸åˆ|下åˆ|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上åˆ') {\n return hour;\n } else if (meridiem === '下åˆ' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // 'ä¸åˆ'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上åˆ';\n } else if (hm < 1230) {\n return 'ä¸åˆ';\n } else if (hm < 1800) {\n return '下åˆ';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(æ—¥|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + 'æ—¥';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%såŽ',\n past: '%så‰',\n s: 'å‡ ç§’',\n ss: '%d ç§’',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 å°æ—¶',\n hh: '%d å°æ—¶',\n d: '1 天',\n dd: '%d 天',\n w: '1 周',\n ww: '%d 周',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 å¹´',\n yy: '%d å¹´'\n },\n week: {\n // GB/T 7408-1994《数æ®å…ƒå’Œäº¤æ¢æ ¼å¼Â·ä¿¡æ¯äº¤æ¢Â·æ—¥æœŸå’Œæ—¶é—´è¡¨ç¤ºæ³•》与ISO 8601:1988ç‰æ•ˆ\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return zhCn;\n});","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var zhHk = moment.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_å…æœˆ_七月_八月_乿œˆ_åæœˆ_å一月_å二月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期å…'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週å…'.split('_'),\n weekdaysMin: 'æ—¥_一_二_三_å››_五_å…'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYYå¹´M月Dæ—¥',\n LLL: 'YYYYå¹´M月Dæ—¥ HH:mm',\n LLLL: 'YYYYå¹´M月Dæ—¥dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYYå¹´M月Dæ—¥',\n lll: 'YYYYå¹´M月Dæ—¥ HH:mm',\n llll: 'YYYYå¹´M月Dæ—¥dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上åˆ|ä¸åˆ|下åˆ|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上åˆ') {\n return hour;\n } else if (meridiem === 'ä¸åˆ') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下åˆ' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上åˆ';\n } else if (hm === 1200) {\n return 'ä¸åˆ';\n } else if (hm < 1800) {\n return '下åˆ';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(æ—¥|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + 'æ—¥';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%så‰',\n s: '幾秒',\n ss: '%d ç§’',\n m: '1 分é˜',\n mm: '%d 分é˜',\n h: '1 å°æ™‚',\n hh: '%d å°æ™‚',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 å¹´',\n yy: '%d å¹´'\n }\n });\n return zhHk;\n});","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var zhMo = moment.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_å…æœˆ_七月_八月_乿œˆ_åæœˆ_å一月_å二月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期å…'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週å…'.split('_'),\n weekdaysMin: 'æ—¥_一_二_三_å››_五_å…'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYYå¹´M月Dæ—¥',\n LLL: 'YYYYå¹´M月Dæ—¥ HH:mm',\n LLLL: 'YYYYå¹´M月Dæ—¥dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYYå¹´M月Dæ—¥',\n lll: 'YYYYå¹´M月Dæ—¥ HH:mm',\n llll: 'YYYYå¹´M月Dæ—¥dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上åˆ|ä¸åˆ|下åˆ|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上åˆ') {\n return hour;\n } else if (meridiem === 'ä¸åˆ') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下åˆ' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上åˆ';\n } else if (hm < 1230) {\n return 'ä¸åˆ';\n } else if (hm < 1800) {\n return '下åˆ';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(æ—¥|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + 'æ—¥';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%så…§',\n past: '%så‰',\n s: '幾秒',\n ss: '%d ç§’',\n m: '1 分é˜',\n mm: '%d 分é˜',\n h: '1 å°æ™‚',\n hh: '%d å°æ™‚',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 å¹´',\n yy: '%d å¹´'\n }\n });\n return zhMo;\n});","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var zhTw = moment.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_å…æœˆ_七月_八月_乿œˆ_åæœˆ_å一月_å二月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期å…'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週å…'.split('_'),\n weekdaysMin: 'æ—¥_一_二_三_å››_五_å…'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYYå¹´M月Dæ—¥',\n LLL: 'YYYYå¹´M月Dæ—¥ HH:mm',\n LLLL: 'YYYYå¹´M月Dæ—¥dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYYå¹´M月Dæ—¥',\n lll: 'YYYYå¹´M月Dæ—¥ HH:mm',\n llll: 'YYYYå¹´M月Dæ—¥dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上åˆ|ä¸åˆ|下åˆ|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上åˆ') {\n return hour;\n } else if (meridiem === 'ä¸åˆ') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下åˆ' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上åˆ';\n } else if (hm < 1230) {\n return 'ä¸åˆ';\n } else if (hm < 1800) {\n return '下åˆ';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(æ—¥|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + 'æ—¥';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%så‰',\n s: '幾秒',\n ss: '%d ç§’',\n m: '1 分é˜',\n mm: '%d 分é˜',\n h: '1 å°æ™‚',\n hh: '%d å°æ™‚',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 å¹´',\n yy: '%d å¹´'\n }\n });\n return zhTw;\n});","/*!\n * Chart.js v2.9.4\n * https://www.chartjs.org\n * (c) 2020 Chart.js Contributors\n * Released under the MIT License\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(function () {\n try {\n return require('moment');\n } catch (e) {}\n }()) : typeof define === 'function' && define.amd ? define(['require'], function (require) {\n return factory(function () {\n try {\n return require('moment');\n } catch (e) {}\n }());\n }) : (global = global || self, global.Chart = factory(global.moment));\n})(this, function (moment) {\n 'use strict';\n\n moment = moment && moment.hasOwnProperty('default') ? moment['default'] : moment;\n function createCommonjsModule(fn, module) {\n return module = {\n exports: {}\n }, fn(module, module.exports), module.exports;\n }\n function getCjsExportFromNamespace(n) {\n return n && n['default'] || n;\n }\n var colorName = {\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 var conversions = createCommonjsModule(function (module) {\n /* MIT license */\n\n // NOTE: conversions should only return primitive values (i.e. arrays, or\n // values that give correct `typeof` results).\n // do not use box values types (i.e. Number(), String(), etc.)\n\n var reverseKeywords = {};\n for (var key in colorName) {\n if (colorName.hasOwnProperty(key)) {\n reverseKeywords[colorName[key]] = key;\n }\n }\n var convert = module.exports = {\n rgb: {\n channels: 3,\n labels: 'rgb'\n },\n hsl: {\n channels: 3,\n labels: 'hsl'\n },\n hsv: {\n channels: 3,\n labels: 'hsv'\n },\n hwb: {\n channels: 3,\n labels: 'hwb'\n },\n cmyk: {\n channels: 4,\n labels: 'cmyk'\n },\n xyz: {\n channels: 3,\n labels: 'xyz'\n },\n lab: {\n channels: 3,\n labels: 'lab'\n },\n lch: {\n channels: 3,\n labels: 'lch'\n },\n hex: {\n channels: 1,\n labels: ['hex']\n },\n keyword: {\n channels: 1,\n labels: ['keyword']\n },\n ansi16: {\n channels: 1,\n labels: ['ansi16']\n },\n ansi256: {\n channels: 1,\n labels: ['ansi256']\n },\n hcg: {\n channels: 3,\n labels: ['h', 'c', 'g']\n },\n apple: {\n channels: 3,\n labels: ['r16', 'g16', 'b16']\n },\n gray: {\n channels: 1,\n labels: ['gray']\n }\n };\n\n // hide .channels and .labels properties\n for (var model in convert) {\n if (convert.hasOwnProperty(model)) {\n if (!('channels' in convert[model])) {\n throw new Error('missing channels property: ' + model);\n }\n if (!('labels' in convert[model])) {\n throw new Error('missing channel labels property: ' + model);\n }\n if (convert[model].labels.length !== convert[model].channels) {\n throw new Error('channel and label counts mismatch: ' + model);\n }\n var channels = convert[model].channels;\n var labels = convert[model].labels;\n delete convert[model].channels;\n delete convert[model].labels;\n Object.defineProperty(convert[model], 'channels', {\n value: channels\n });\n Object.defineProperty(convert[model], 'labels', {\n value: labels\n });\n }\n }\n convert.rgb.hsl = function (rgb) {\n var r = rgb[0] / 255;\n var g = rgb[1] / 255;\n var b = rgb[2] / 255;\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n var h;\n var s;\n var l;\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 if (h < 0) {\n h += 360;\n }\n l = (min + max) / 2;\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 convert.rgb.hsv = function (rgb) {\n var rdif;\n var gdif;\n var bdif;\n var h;\n var s;\n var r = rgb[0] / 255;\n var g = rgb[1] / 255;\n var b = rgb[2] / 255;\n var v = Math.max(r, g, b);\n var diff = v - Math.min(r, g, b);\n var diffc = function (c) {\n return (v - c) / 6 / diff + 1 / 2;\n };\n if (diff === 0) {\n h = s = 0;\n } else {\n s = diff / v;\n rdif = diffc(r);\n gdif = diffc(g);\n bdif = diffc(b);\n if (r === v) {\n h = bdif - gdif;\n } else if (g === v) {\n h = 1 / 3 + rdif - bdif;\n } else if (b === v) {\n h = 2 / 3 + gdif - rdif;\n }\n if (h < 0) {\n h += 1;\n } else if (h > 1) {\n h -= 1;\n }\n }\n return [h * 360, s * 100, v * 100];\n };\n convert.rgb.hwb = function (rgb) {\n var r = rgb[0];\n var g = rgb[1];\n var b = rgb[2];\n var h = convert.rgb.hsl(rgb)[0];\n var w = 1 / 255 * Math.min(r, Math.min(g, b));\n b = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n return [h, w * 100, b * 100];\n };\n convert.rgb.cmyk = function (rgb) {\n var r = rgb[0] / 255;\n var g = rgb[1] / 255;\n var b = rgb[2] / 255;\n var c;\n var m;\n var y;\n var k;\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\n /**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\n function comparativeDistance(x, y) {\n return Math.pow(x[0] - y[0], 2) + Math.pow(x[1] - y[1], 2) + Math.pow(x[2] - y[2], 2);\n }\n convert.rgb.keyword = function (rgb) {\n var reversed = reverseKeywords[rgb];\n if (reversed) {\n return reversed;\n }\n var currentClosestDistance = Infinity;\n var currentClosestKeyword;\n for (var keyword in colorName) {\n if (colorName.hasOwnProperty(keyword)) {\n var value = colorName[keyword];\n\n // Compute comparative distance\n var distance = comparativeDistance(rgb, value);\n\n // Check if its less, if so set as closest\n if (distance < currentClosestDistance) {\n currentClosestDistance = distance;\n currentClosestKeyword = keyword;\n }\n }\n }\n return currentClosestKeyword;\n };\n convert.keyword.rgb = function (keyword) {\n return colorName[keyword];\n };\n convert.rgb.xyz = function (rgb) {\n var r = rgb[0] / 255;\n var g = rgb[1] / 255;\n var 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 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 return [x * 100, y * 100, z * 100];\n };\n convert.rgb.lab = function (rgb) {\n var xyz = convert.rgb.xyz(rgb);\n var x = xyz[0];\n var y = xyz[1];\n var z = xyz[2];\n var l;\n var a;\n var b;\n x /= 95.047;\n y /= 100;\n z /= 108.883;\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 l = 116 * y - 16;\n a = 500 * (x - y);\n b = 200 * (y - z);\n return [l, a, b];\n };\n convert.hsl.rgb = function (hsl) {\n var h = hsl[0] / 360;\n var s = hsl[1] / 100;\n var l = hsl[2] / 100;\n var t1;\n var t2;\n var t3;\n var rgb;\n var val;\n if (s === 0) {\n val = l * 255;\n return [val, val, val];\n }\n if (l < 0.5) {\n t2 = l * (1 + s);\n } else {\n t2 = l + s - l * s;\n }\n t1 = 2 * l - t2;\n rgb = [0, 0, 0];\n for (var i = 0; i < 3; i++) {\n t3 = h + 1 / 3 * -(i - 1);\n if (t3 < 0) {\n t3++;\n }\n if (t3 > 1) {\n 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 return rgb;\n };\n convert.hsl.hsv = function (hsl) {\n var h = hsl[0];\n var s = hsl[1] / 100;\n var l = hsl[2] / 100;\n var smin = s;\n var lmin = Math.max(l, 0.01);\n var sv;\n var v;\n l *= 2;\n s *= l <= 1 ? l : 2 - l;\n smin *= lmin <= 1 ? lmin : 2 - lmin;\n v = (l + s) / 2;\n sv = l === 0 ? 2 * smin / (lmin + smin) : 2 * s / (l + s);\n return [h, sv * 100, v * 100];\n };\n convert.hsv.rgb = function (hsv) {\n var h = hsv[0] / 60;\n var s = hsv[1] / 100;\n var v = hsv[2] / 100;\n var hi = Math.floor(h) % 6;\n var f = h - Math.floor(h);\n var p = 255 * v * (1 - s);\n var q = 255 * v * (1 - s * f);\n var t = 255 * v * (1 - s * (1 - f));\n v *= 255;\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 convert.hsv.hsl = function (hsv) {\n var h = hsv[0];\n var s = hsv[1] / 100;\n var v = hsv[2] / 100;\n var vmin = Math.max(v, 0.01);\n var lmin;\n var sl;\n var l;\n l = (2 - s) * v;\n lmin = (2 - s) * vmin;\n sl = s * vmin;\n sl /= lmin <= 1 ? lmin : 2 - lmin;\n sl = sl || 0;\n l /= 2;\n return [h, sl * 100, l * 100];\n };\n\n // http://dev.w3.org/csswg/css-color/#hwb-to-rgb\n convert.hwb.rgb = function (hwb) {\n var h = hwb[0] / 360;\n var wh = hwb[1] / 100;\n var bl = hwb[2] / 100;\n var ratio = wh + bl;\n var i;\n var v;\n var f;\n var n;\n\n // wh + bl cant be > 1\n if (ratio > 1) {\n wh /= ratio;\n bl /= ratio;\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 var r;\n var g;\n var b;\n switch (i) {\n default:\n case 6:\n case 0:\n r = v;\n g = n;\n b = wh;\n break;\n case 1:\n r = n;\n g = v;\n b = wh;\n break;\n case 2:\n r = wh;\n g = v;\n b = n;\n break;\n case 3:\n r = wh;\n g = n;\n b = v;\n break;\n case 4:\n r = n;\n g = wh;\n b = v;\n break;\n case 5:\n r = v;\n g = wh;\n b = n;\n break;\n }\n return [r * 255, g * 255, b * 255];\n };\n convert.cmyk.rgb = function (cmyk) {\n var c = cmyk[0] / 100;\n var m = cmyk[1] / 100;\n var y = cmyk[2] / 100;\n var k = cmyk[3] / 100;\n var r;\n var g;\n var b;\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 convert.xyz.rgb = function (xyz) {\n var x = xyz[0] / 100;\n var y = xyz[1] / 100;\n var z = xyz[2] / 100;\n var r;\n var g;\n var b;\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 : r * 12.92;\n g = g > 0.0031308 ? 1.055 * Math.pow(g, 1.0 / 2.4) - 0.055 : g * 12.92;\n b = b > 0.0031308 ? 1.055 * Math.pow(b, 1.0 / 2.4) - 0.055 : b * 12.92;\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 return [r * 255, g * 255, b * 255];\n };\n convert.xyz.lab = function (xyz) {\n var x = xyz[0];\n var y = xyz[1];\n var z = xyz[2];\n var l;\n var a;\n var b;\n x /= 95.047;\n y /= 100;\n z /= 108.883;\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 l = 116 * y - 16;\n a = 500 * (x - y);\n b = 200 * (y - z);\n return [l, a, b];\n };\n convert.lab.xyz = function (lab) {\n var l = lab[0];\n var a = lab[1];\n var b = lab[2];\n var x;\n var y;\n var z;\n y = (l + 16) / 116;\n x = a / 500 + y;\n z = y - b / 200;\n var y2 = Math.pow(y, 3);\n var x2 = Math.pow(x, 3);\n var z2 = Math.pow(z, 3);\n y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n x *= 95.047;\n y *= 100;\n z *= 108.883;\n return [x, y, z];\n };\n convert.lab.lch = function (lab) {\n var l = lab[0];\n var a = lab[1];\n var b = lab[2];\n var hr;\n var h;\n var c;\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 convert.lch.lab = function (lch) {\n var l = lch[0];\n var c = lch[1];\n var h = lch[2];\n var a;\n var b;\n var hr;\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 convert.rgb.ansi16 = function (args) {\n var r = args[0];\n var g = args[1];\n var b = args[2];\n var value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n value = Math.round(value / 50);\n if (value === 0) {\n return 30;\n }\n var ansi = 30 + (Math.round(b / 255) << 2 | Math.round(g / 255) << 1 | Math.round(r / 255));\n if (value === 2) {\n ansi += 60;\n }\n return ansi;\n };\n convert.hsv.ansi16 = function (args) {\n // optimization here; we already know the value and don't need to get\n // it converted for us.\n return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n };\n convert.rgb.ansi256 = function (args) {\n var r = args[0];\n var g = args[1];\n var b = args[2];\n\n // we use the extended greyscale palette here, with the exception of\n // black and white. normal palette only has 4 greyscale shades.\n if (r === g && g === b) {\n if (r < 8) {\n return 16;\n }\n if (r > 248) {\n return 231;\n }\n return Math.round((r - 8) / 247 * 24) + 232;\n }\n var ansi = 16 + 36 * Math.round(r / 255 * 5) + 6 * Math.round(g / 255 * 5) + Math.round(b / 255 * 5);\n return ansi;\n };\n convert.ansi16.rgb = function (args) {\n var color = args % 10;\n\n // handle greyscale\n if (color === 0 || color === 7) {\n if (args > 50) {\n color += 3.5;\n }\n color = color / 10.5 * 255;\n return [color, color, color];\n }\n var mult = (~~(args > 50) + 1) * 0.5;\n var r = (color & 1) * mult * 255;\n var g = (color >> 1 & 1) * mult * 255;\n var b = (color >> 2 & 1) * mult * 255;\n return [r, g, b];\n };\n convert.ansi256.rgb = function (args) {\n // handle greyscale\n if (args >= 232) {\n var c = (args - 232) * 10 + 8;\n return [c, c, c];\n }\n args -= 16;\n var rem;\n var r = Math.floor(args / 36) / 5 * 255;\n var g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n var b = rem % 6 / 5 * 255;\n return [r, g, b];\n };\n convert.rgb.hex = function (args) {\n var integer = ((Math.round(args[0]) & 0xFF) << 16) + ((Math.round(args[1]) & 0xFF) << 8) + (Math.round(args[2]) & 0xFF);\n var string = integer.toString(16).toUpperCase();\n return '000000'.substring(string.length) + string;\n };\n convert.hex.rgb = function (args) {\n var match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n if (!match) {\n return [0, 0, 0];\n }\n var colorString = match[0];\n if (match[0].length === 3) {\n colorString = colorString.split('').map(function (char) {\n return char + char;\n }).join('');\n }\n var integer = parseInt(colorString, 16);\n var r = integer >> 16 & 0xFF;\n var g = integer >> 8 & 0xFF;\n var b = integer & 0xFF;\n return [r, g, b];\n };\n convert.rgb.hcg = function (rgb) {\n var r = rgb[0] / 255;\n var g = rgb[1] / 255;\n var b = rgb[2] / 255;\n var max = Math.max(Math.max(r, g), b);\n var min = Math.min(Math.min(r, g), b);\n var chroma = max - min;\n var grayscale;\n var hue;\n if (chroma < 1) {\n grayscale = min / (1 - chroma);\n } else {\n grayscale = 0;\n }\n if (chroma <= 0) {\n hue = 0;\n } else if (max === r) {\n hue = (g - b) / chroma % 6;\n } else if (max === g) {\n hue = 2 + (b - r) / chroma;\n } else {\n hue = 4 + (r - g) / chroma + 4;\n }\n hue /= 6;\n hue %= 1;\n return [hue * 360, chroma * 100, grayscale * 100];\n };\n convert.hsl.hcg = function (hsl) {\n var s = hsl[1] / 100;\n var l = hsl[2] / 100;\n var c = 1;\n var f = 0;\n if (l < 0.5) {\n c = 2.0 * s * l;\n } else {\n c = 2.0 * s * (1.0 - l);\n }\n if (c < 1.0) {\n f = (l - 0.5 * c) / (1.0 - c);\n }\n return [hsl[0], c * 100, f * 100];\n };\n convert.hsv.hcg = function (hsv) {\n var s = hsv[1] / 100;\n var v = hsv[2] / 100;\n var c = s * v;\n var f = 0;\n if (c < 1.0) {\n f = (v - c) / (1 - c);\n }\n return [hsv[0], c * 100, f * 100];\n };\n convert.hcg.rgb = function (hcg) {\n var h = hcg[0] / 360;\n var c = hcg[1] / 100;\n var g = hcg[2] / 100;\n if (c === 0.0) {\n return [g * 255, g * 255, g * 255];\n }\n var pure = [0, 0, 0];\n var hi = h % 1 * 6;\n var v = hi % 1;\n var w = 1 - v;\n var mg = 0;\n switch (Math.floor(hi)) {\n case 0:\n pure[0] = 1;\n pure[1] = v;\n pure[2] = 0;\n break;\n case 1:\n pure[0] = w;\n pure[1] = 1;\n pure[2] = 0;\n break;\n case 2:\n pure[0] = 0;\n pure[1] = 1;\n pure[2] = v;\n break;\n case 3:\n pure[0] = 0;\n pure[1] = w;\n pure[2] = 1;\n break;\n case 4:\n pure[0] = v;\n pure[1] = 0;\n pure[2] = 1;\n break;\n default:\n pure[0] = 1;\n pure[1] = 0;\n pure[2] = w;\n }\n mg = (1.0 - c) * g;\n return [(c * pure[0] + mg) * 255, (c * pure[1] + mg) * 255, (c * pure[2] + mg) * 255];\n };\n convert.hcg.hsv = function (hcg) {\n var c = hcg[1] / 100;\n var g = hcg[2] / 100;\n var v = c + g * (1.0 - c);\n var f = 0;\n if (v > 0.0) {\n f = c / v;\n }\n return [hcg[0], f * 100, v * 100];\n };\n convert.hcg.hsl = function (hcg) {\n var c = hcg[1] / 100;\n var g = hcg[2] / 100;\n var l = g * (1.0 - c) + 0.5 * c;\n var s = 0;\n if (l > 0.0 && l < 0.5) {\n s = c / (2 * l);\n } else if (l >= 0.5 && l < 1.0) {\n s = c / (2 * (1 - l));\n }\n return [hcg[0], s * 100, l * 100];\n };\n convert.hcg.hwb = function (hcg) {\n var c = hcg[1] / 100;\n var g = hcg[2] / 100;\n var v = c + g * (1.0 - c);\n return [hcg[0], (v - c) * 100, (1 - v) * 100];\n };\n convert.hwb.hcg = function (hwb) {\n var w = hwb[1] / 100;\n var b = hwb[2] / 100;\n var v = 1 - b;\n var c = v - w;\n var g = 0;\n if (c < 1) {\n g = (v - c) / (1 - c);\n }\n return [hwb[0], c * 100, g * 100];\n };\n convert.apple.rgb = function (apple) {\n return [apple[0] / 65535 * 255, apple[1] / 65535 * 255, apple[2] / 65535 * 255];\n };\n convert.rgb.apple = function (rgb) {\n return [rgb[0] / 255 * 65535, rgb[1] / 255 * 65535, rgb[2] / 255 * 65535];\n };\n convert.gray.rgb = function (args) {\n return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n };\n convert.gray.hsl = convert.gray.hsv = function (args) {\n return [0, 0, args[0]];\n };\n convert.gray.hwb = function (gray) {\n return [0, 100, gray[0]];\n };\n convert.gray.cmyk = function (gray) {\n return [0, 0, 0, gray[0]];\n };\n convert.gray.lab = function (gray) {\n return [gray[0], 0, 0];\n };\n convert.gray.hex = function (gray) {\n var val = Math.round(gray[0] / 100 * 255) & 0xFF;\n var integer = (val << 16) + (val << 8) + val;\n var string = integer.toString(16).toUpperCase();\n return '000000'.substring(string.length) + string;\n };\n convert.rgb.gray = function (rgb) {\n var val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n return [val / 255 * 100];\n };\n });\n var conversions_1 = conversions.rgb;\n var conversions_2 = conversions.hsl;\n var conversions_3 = conversions.hsv;\n var conversions_4 = conversions.hwb;\n var conversions_5 = conversions.cmyk;\n var conversions_6 = conversions.xyz;\n var conversions_7 = conversions.lab;\n var conversions_8 = conversions.lch;\n var conversions_9 = conversions.hex;\n var conversions_10 = conversions.keyword;\n var conversions_11 = conversions.ansi16;\n var conversions_12 = conversions.ansi256;\n var conversions_13 = conversions.hcg;\n var conversions_14 = conversions.apple;\n var conversions_15 = conversions.gray;\n\n /*\n \tthis function routes a model to all other models.\n \n \tall functions that are routed have a property `.conversion` attached\n \tto the returned synthetic function. This property is an array\n \tof strings, each with the steps in between the 'from' and 'to'\n \tcolor models (inclusive).\n \n \tconversions that are not possible simply are not included.\n */\n\n function buildGraph() {\n var graph = {};\n // https://jsperf.com/object-keys-vs-for-in-with-closure/3\n var models = Object.keys(conversions);\n for (var len = models.length, i = 0; i < len; i++) {\n graph[models[i]] = {\n // http://jsperf.com/1-vs-infinity\n // micro-opt, but this is simple.\n distance: -1,\n parent: null\n };\n }\n return graph;\n }\n\n // https://en.wikipedia.org/wiki/Breadth-first_search\n function deriveBFS(fromModel) {\n var graph = buildGraph();\n var queue = [fromModel]; // unshift -> queue -> pop\n\n graph[fromModel].distance = 0;\n while (queue.length) {\n var current = queue.pop();\n var adjacents = Object.keys(conversions[current]);\n for (var len = adjacents.length, i = 0; i < len; i++) {\n var adjacent = adjacents[i];\n var node = graph[adjacent];\n if (node.distance === -1) {\n node.distance = graph[current].distance + 1;\n node.parent = current;\n queue.unshift(adjacent);\n }\n }\n }\n return graph;\n }\n function link(from, to) {\n return function (args) {\n return to(from(args));\n };\n }\n function wrapConversion(toModel, graph) {\n var path = [graph[toModel].parent, toModel];\n var fn = conversions[graph[toModel].parent][toModel];\n var cur = graph[toModel].parent;\n while (graph[cur].parent) {\n path.unshift(graph[cur].parent);\n fn = link(conversions[graph[cur].parent][cur], fn);\n cur = graph[cur].parent;\n }\n fn.conversion = path;\n return fn;\n }\n var route = function (fromModel) {\n var graph = deriveBFS(fromModel);\n var conversion = {};\n var models = Object.keys(graph);\n for (var len = models.length, i = 0; i < len; i++) {\n var toModel = models[i];\n var node = graph[toModel];\n if (node.parent === null) {\n // no possible conversion, or this node is the source model.\n continue;\n }\n conversion[toModel] = wrapConversion(toModel, graph);\n }\n return conversion;\n };\n var convert = {};\n var models = Object.keys(conversions);\n function wrapRaw(fn) {\n var wrappedFn = function (args) {\n if (args === undefined || args === null) {\n return args;\n }\n if (arguments.length > 1) {\n args = Array.prototype.slice.call(arguments);\n }\n return fn(args);\n };\n\n // preserve .conversion property if there is one\n if ('conversion' in fn) {\n wrappedFn.conversion = fn.conversion;\n }\n return wrappedFn;\n }\n function wrapRounded(fn) {\n var wrappedFn = function (args) {\n if (args === undefined || args === null) {\n return args;\n }\n if (arguments.length > 1) {\n args = Array.prototype.slice.call(arguments);\n }\n var result = fn(args);\n\n // we're assuming the result is an array here.\n // see notice in conversions.js; don't use box types\n // in conversion functions.\n if (typeof result === 'object') {\n for (var len = result.length, i = 0; i < len; i++) {\n result[i] = Math.round(result[i]);\n }\n }\n return result;\n };\n\n // preserve .conversion property if there is one\n if ('conversion' in fn) {\n wrappedFn.conversion = fn.conversion;\n }\n return wrappedFn;\n }\n models.forEach(function (fromModel) {\n convert[fromModel] = {};\n Object.defineProperty(convert[fromModel], 'channels', {\n value: conversions[fromModel].channels\n });\n Object.defineProperty(convert[fromModel], 'labels', {\n value: conversions[fromModel].labels\n });\n var routes = route(fromModel);\n var routeModels = Object.keys(routes);\n routeModels.forEach(function (toModel) {\n var fn = routes[toModel];\n convert[fromModel][toModel] = wrapRounded(fn);\n convert[fromModel][toModel].raw = wrapRaw(fn);\n });\n });\n var colorConvert = convert;\n var colorName$1 = {\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\n /* MIT license */\n\n var colorString = {\n getRgba: getRgba,\n getHsla: getHsla,\n getRgb: getRgb,\n getHsl: getHsl,\n getHwb: getHwb,\n getAlpha: getAlpha,\n hexString: hexString,\n rgbString: rgbString,\n rgbaString: rgbaString,\n percentString: percentString,\n percentaString: percentaString,\n hslString: hslString,\n hslaString: hslaString,\n hwbString: hwbString,\n keyword: keyword\n };\n function getRgba(string) {\n if (!string) {\n return;\n }\n var abbr = /^#([a-fA-F0-9]{3,4})$/i,\n hex = /^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i,\n rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n keyword = /(\\w+)/;\n var rgb = [0, 0, 0],\n a = 1,\n match = string.match(abbr),\n hexAlpha = \"\";\n if (match) {\n match = match[1];\n hexAlpha = match[3];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i] + match[i], 16);\n }\n if (hexAlpha) {\n a = Math.round(parseInt(hexAlpha + hexAlpha, 16) / 255 * 100) / 100;\n }\n } else if (match = string.match(hex)) {\n hexAlpha = match[2];\n match = match[1];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match.slice(i * 2, i * 2 + 2), 16);\n }\n if (hexAlpha) {\n a = Math.round(parseInt(hexAlpha, 16) / 255 * 100) / 100;\n }\n } else if (match = string.match(rgba)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i + 1]);\n }\n a = parseFloat(match[4]);\n } else if (match = string.match(per)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n }\n a = parseFloat(match[4]);\n } else if (match = string.match(keyword)) {\n if (match[1] == \"transparent\") {\n return [0, 0, 0, 0];\n }\n rgb = colorName$1[match[1]];\n if (!rgb) {\n return;\n }\n }\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = scale(rgb[i], 0, 255);\n }\n if (!a && a != 0) {\n a = 1;\n } else {\n a = scale(a, 0, 1);\n }\n rgb[3] = a;\n return rgb;\n }\n function getHsla(string) {\n if (!string) {\n return;\n }\n var hsl = /^hsla?\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hsl);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n s = scale(parseFloat(match[2]), 0, 100),\n l = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, s, l, a];\n }\n }\n function getHwb(string) {\n if (!string) {\n return;\n }\n var hwb = /^hwb\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hwb);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n w = scale(parseFloat(match[2]), 0, 100),\n b = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, w, b, a];\n }\n }\n function getRgb(string) {\n var rgba = getRgba(string);\n return rgba && rgba.slice(0, 3);\n }\n function getHsl(string) {\n var hsla = getHsla(string);\n return hsla && hsla.slice(0, 3);\n }\n function getAlpha(string) {\n var vals = getRgba(string);\n if (vals) {\n return vals[3];\n } else if (vals = getHsla(string)) {\n return vals[3];\n } else if (vals = getHwb(string)) {\n return vals[3];\n }\n }\n\n // generators\n function hexString(rgba, a) {\n var a = a !== undefined && rgba.length === 3 ? a : rgba[3];\n return \"#\" + hexDouble(rgba[0]) + hexDouble(rgba[1]) + hexDouble(rgba[2]) + (a >= 0 && a < 1 ? hexDouble(Math.round(a * 255)) : \"\");\n }\n function rgbString(rgba, alpha) {\n if (alpha < 1 || rgba[3] && rgba[3] < 1) {\n return rgbaString(rgba, alpha);\n }\n return \"rgb(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2] + \")\";\n }\n function rgbaString(rgba, alpha) {\n if (alpha === undefined) {\n alpha = rgba[3] !== undefined ? rgba[3] : 1;\n }\n return \"rgba(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2] + \", \" + alpha + \")\";\n }\n function percentString(rgba, alpha) {\n if (alpha < 1 || rgba[3] && rgba[3] < 1) {\n return percentaString(rgba, alpha);\n }\n var r = Math.round(rgba[0] / 255 * 100),\n g = Math.round(rgba[1] / 255 * 100),\n b = Math.round(rgba[2] / 255 * 100);\n return \"rgb(\" + r + \"%, \" + g + \"%, \" + b + \"%)\";\n }\n function percentaString(rgba, alpha) {\n var r = Math.round(rgba[0] / 255 * 100),\n g = Math.round(rgba[1] / 255 * 100),\n b = Math.round(rgba[2] / 255 * 100);\n return \"rgba(\" + r + \"%, \" + g + \"%, \" + b + \"%, \" + (alpha || rgba[3] || 1) + \")\";\n }\n function hslString(hsla, alpha) {\n if (alpha < 1 || hsla[3] && hsla[3] < 1) {\n return hslaString(hsla, alpha);\n }\n return \"hsl(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%)\";\n }\n function hslaString(hsla, alpha) {\n if (alpha === undefined) {\n alpha = hsla[3] !== undefined ? hsla[3] : 1;\n }\n return \"hsla(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%, \" + alpha + \")\";\n }\n\n // hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n // (hwb have alpha optional & 1 is default value)\n function hwbString(hwb, alpha) {\n if (alpha === undefined) {\n alpha = hwb[3] !== undefined ? hwb[3] : 1;\n }\n return \"hwb(\" + hwb[0] + \", \" + hwb[1] + \"%, \" + hwb[2] + \"%\" + (alpha !== undefined && alpha !== 1 ? \", \" + alpha : \"\") + \")\";\n }\n function keyword(rgb) {\n return reverseNames[rgb.slice(0, 3)];\n }\n\n // helpers\n function scale(num, min, max) {\n return Math.min(Math.max(min, num), max);\n }\n function hexDouble(num) {\n var str = num.toString(16).toUpperCase();\n return str.length < 2 ? \"0\" + str : str;\n }\n\n //create a list of reverse color names\n var reverseNames = {};\n for (var name in colorName$1) {\n reverseNames[colorName$1[name]] = name;\n }\n\n /* MIT license */\n\n var Color = function (obj) {\n if (obj instanceof Color) {\n return obj;\n }\n if (!(this instanceof Color)) {\n return new Color(obj);\n }\n this.valid = false;\n this.values = {\n rgb: [0, 0, 0],\n hsl: [0, 0, 0],\n hsv: [0, 0, 0],\n hwb: [0, 0, 0],\n cmyk: [0, 0, 0, 0],\n alpha: 1\n };\n\n // parse Color() argument\n var vals;\n if (typeof obj === 'string') {\n vals = colorString.getRgba(obj);\n if (vals) {\n this.setValues('rgb', vals);\n } else if (vals = colorString.getHsla(obj)) {\n this.setValues('hsl', vals);\n } else if (vals = colorString.getHwb(obj)) {\n this.setValues('hwb', vals);\n }\n } else if (typeof obj === 'object') {\n vals = obj;\n if (vals.r !== undefined || vals.red !== undefined) {\n this.setValues('rgb', vals);\n } else if (vals.l !== undefined || vals.lightness !== undefined) {\n this.setValues('hsl', vals);\n } else if (vals.v !== undefined || vals.value !== undefined) {\n this.setValues('hsv', vals);\n } else if (vals.w !== undefined || vals.whiteness !== undefined) {\n this.setValues('hwb', vals);\n } else if (vals.c !== undefined || vals.cyan !== undefined) {\n this.setValues('cmyk', vals);\n }\n }\n };\n Color.prototype = {\n isValid: function () {\n return this.valid;\n },\n rgb: function () {\n return this.setSpace('rgb', arguments);\n },\n hsl: function () {\n return this.setSpace('hsl', arguments);\n },\n hsv: function () {\n return this.setSpace('hsv', arguments);\n },\n hwb: function () {\n return this.setSpace('hwb', arguments);\n },\n cmyk: function () {\n return this.setSpace('cmyk', arguments);\n },\n rgbArray: function () {\n return this.values.rgb;\n },\n hslArray: function () {\n return this.values.hsl;\n },\n hsvArray: function () {\n return this.values.hsv;\n },\n hwbArray: function () {\n var values = this.values;\n if (values.alpha !== 1) {\n return values.hwb.concat([values.alpha]);\n }\n return values.hwb;\n },\n cmykArray: function () {\n return this.values.cmyk;\n },\n rgbaArray: function () {\n var values = this.values;\n return values.rgb.concat([values.alpha]);\n },\n hslaArray: function () {\n var values = this.values;\n return values.hsl.concat([values.alpha]);\n },\n alpha: function (val) {\n if (val === undefined) {\n return this.values.alpha;\n }\n this.setValues('alpha', val);\n return this;\n },\n red: function (val) {\n return this.setChannel('rgb', 0, val);\n },\n green: function (val) {\n return this.setChannel('rgb', 1, val);\n },\n blue: function (val) {\n return this.setChannel('rgb', 2, val);\n },\n hue: function (val) {\n if (val) {\n val %= 360;\n val = val < 0 ? 360 + val : val;\n }\n return this.setChannel('hsl', 0, val);\n },\n saturation: function (val) {\n return this.setChannel('hsl', 1, val);\n },\n lightness: function (val) {\n return this.setChannel('hsl', 2, val);\n },\n saturationv: function (val) {\n return this.setChannel('hsv', 1, val);\n },\n whiteness: function (val) {\n return this.setChannel('hwb', 1, val);\n },\n blackness: function (val) {\n return this.setChannel('hwb', 2, val);\n },\n value: function (val) {\n return this.setChannel('hsv', 2, val);\n },\n cyan: function (val) {\n return this.setChannel('cmyk', 0, val);\n },\n magenta: function (val) {\n return this.setChannel('cmyk', 1, val);\n },\n yellow: function (val) {\n return this.setChannel('cmyk', 2, val);\n },\n black: function (val) {\n return this.setChannel('cmyk', 3, val);\n },\n hexString: function () {\n return colorString.hexString(this.values.rgb);\n },\n rgbString: function () {\n return colorString.rgbString(this.values.rgb, this.values.alpha);\n },\n rgbaString: function () {\n return colorString.rgbaString(this.values.rgb, this.values.alpha);\n },\n percentString: function () {\n return colorString.percentString(this.values.rgb, this.values.alpha);\n },\n hslString: function () {\n return colorString.hslString(this.values.hsl, this.values.alpha);\n },\n hslaString: function () {\n return colorString.hslaString(this.values.hsl, this.values.alpha);\n },\n hwbString: function () {\n return colorString.hwbString(this.values.hwb, this.values.alpha);\n },\n keyword: function () {\n return colorString.keyword(this.values.rgb, this.values.alpha);\n },\n rgbNumber: function () {\n var rgb = this.values.rgb;\n return rgb[0] << 16 | rgb[1] << 8 | rgb[2];\n },\n luminosity: function () {\n // http://www.w3.org/TR/WCAG20/#relativeluminancedef\n var rgb = this.values.rgb;\n var lum = [];\n for (var i = 0; i < rgb.length; i++) {\n var chan = rgb[i] / 255;\n lum[i] = chan <= 0.03928 ? chan / 12.92 : Math.pow((chan + 0.055) / 1.055, 2.4);\n }\n return 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n },\n contrast: function (color2) {\n // http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n var lum1 = this.luminosity();\n var lum2 = color2.luminosity();\n if (lum1 > lum2) {\n return (lum1 + 0.05) / (lum2 + 0.05);\n }\n return (lum2 + 0.05) / (lum1 + 0.05);\n },\n level: function (color2) {\n var contrastRatio = this.contrast(color2);\n if (contrastRatio >= 7.1) {\n return 'AAA';\n }\n return contrastRatio >= 4.5 ? 'AA' : '';\n },\n dark: function () {\n // YIQ equation from http://24ways.org/2010/calculating-color-contrast\n var rgb = this.values.rgb;\n var yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n return yiq < 128;\n },\n light: function () {\n return !this.dark();\n },\n negate: function () {\n var rgb = [];\n for (var i = 0; i < 3; i++) {\n rgb[i] = 255 - this.values.rgb[i];\n }\n this.setValues('rgb', rgb);\n return this;\n },\n lighten: function (ratio) {\n var hsl = this.values.hsl;\n hsl[2] += hsl[2] * ratio;\n this.setValues('hsl', hsl);\n return this;\n },\n darken: function (ratio) {\n var hsl = this.values.hsl;\n hsl[2] -= hsl[2] * ratio;\n this.setValues('hsl', hsl);\n return this;\n },\n saturate: function (ratio) {\n var hsl = this.values.hsl;\n hsl[1] += hsl[1] * ratio;\n this.setValues('hsl', hsl);\n return this;\n },\n desaturate: function (ratio) {\n var hsl = this.values.hsl;\n hsl[1] -= hsl[1] * ratio;\n this.setValues('hsl', hsl);\n return this;\n },\n whiten: function (ratio) {\n var hwb = this.values.hwb;\n hwb[1] += hwb[1] * ratio;\n this.setValues('hwb', hwb);\n return this;\n },\n blacken: function (ratio) {\n var hwb = this.values.hwb;\n hwb[2] += hwb[2] * ratio;\n this.setValues('hwb', hwb);\n return this;\n },\n greyscale: function () {\n var rgb = this.values.rgb;\n // http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n var val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n this.setValues('rgb', [val, val, val]);\n return this;\n },\n clearer: function (ratio) {\n var alpha = this.values.alpha;\n this.setValues('alpha', alpha - alpha * ratio);\n return this;\n },\n opaquer: function (ratio) {\n var alpha = this.values.alpha;\n this.setValues('alpha', alpha + alpha * ratio);\n return this;\n },\n rotate: function (degrees) {\n var hsl = this.values.hsl;\n var hue = (hsl[0] + degrees) % 360;\n hsl[0] = hue < 0 ? 360 + hue : hue;\n this.setValues('hsl', hsl);\n return this;\n },\n /**\n * Ported from sass implementation in C\n * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n */\n mix: function (mixinColor, weight) {\n var color1 = this;\n var color2 = mixinColor;\n var p = weight === undefined ? 0.5 : weight;\n var w = 2 * p - 1;\n var a = color1.alpha() - color2.alpha();\n var w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n var w2 = 1 - w1;\n return this.rgb(w1 * color1.red() + w2 * color2.red(), w1 * color1.green() + w2 * color2.green(), w1 * color1.blue() + w2 * color2.blue()).alpha(color1.alpha() * p + color2.alpha() * (1 - p));\n },\n toJSON: function () {\n return this.rgb();\n },\n clone: function () {\n // NOTE(SB): using node-clone creates a dependency to Buffer when using browserify,\n // making the final build way to big to embed in Chart.js. So let's do it manually,\n // assuming that values to clone are 1 dimension arrays containing only numbers,\n // except 'alpha' which is a number.\n var result = new Color();\n var source = this.values;\n var target = result.values;\n var value, type;\n for (var prop in source) {\n if (source.hasOwnProperty(prop)) {\n value = source[prop];\n type = {}.toString.call(value);\n if (type === '[object Array]') {\n target[prop] = value.slice(0);\n } else if (type === '[object Number]') {\n target[prop] = value;\n } else {\n console.error('unexpected color value:', value);\n }\n }\n }\n return result;\n }\n };\n Color.prototype.spaces = {\n rgb: ['red', 'green', 'blue'],\n hsl: ['hue', 'saturation', 'lightness'],\n hsv: ['hue', 'saturation', 'value'],\n hwb: ['hue', 'whiteness', 'blackness'],\n cmyk: ['cyan', 'magenta', 'yellow', 'black']\n };\n Color.prototype.maxes = {\n rgb: [255, 255, 255],\n hsl: [360, 100, 100],\n hsv: [360, 100, 100],\n hwb: [360, 100, 100],\n cmyk: [100, 100, 100, 100]\n };\n Color.prototype.getValues = function (space) {\n var values = this.values;\n var vals = {};\n for (var i = 0; i < space.length; i++) {\n vals[space.charAt(i)] = values[space][i];\n }\n if (values.alpha !== 1) {\n vals.a = values.alpha;\n }\n\n // {r: 255, g: 255, b: 255, a: 0.4}\n return vals;\n };\n Color.prototype.setValues = function (space, vals) {\n var values = this.values;\n var spaces = this.spaces;\n var maxes = this.maxes;\n var alpha = 1;\n var i;\n this.valid = true;\n if (space === 'alpha') {\n alpha = vals;\n } else if (vals.length) {\n // [10, 10, 10]\n values[space] = vals.slice(0, space.length);\n alpha = vals[space.length];\n } else if (vals[space.charAt(0)] !== undefined) {\n // {r: 10, g: 10, b: 10}\n for (i = 0; i < space.length; i++) {\n values[space][i] = vals[space.charAt(i)];\n }\n alpha = vals.a;\n } else if (vals[spaces[space][0]] !== undefined) {\n // {red: 10, green: 10, blue: 10}\n var chans = spaces[space];\n for (i = 0; i < space.length; i++) {\n values[space][i] = vals[chans[i]];\n }\n alpha = vals.alpha;\n }\n values.alpha = Math.max(0, Math.min(1, alpha === undefined ? values.alpha : alpha));\n if (space === 'alpha') {\n return false;\n }\n var capped;\n\n // cap values of the space prior converting all values\n for (i = 0; i < space.length; i++) {\n capped = Math.max(0, Math.min(maxes[space][i], values[space][i]));\n values[space][i] = Math.round(capped);\n }\n\n // convert to all the other color spaces\n for (var sname in spaces) {\n if (sname !== space) {\n values[sname] = colorConvert[space][sname](values[space]);\n }\n }\n return true;\n };\n Color.prototype.setSpace = function (space, args) {\n var vals = args[0];\n if (vals === undefined) {\n // color.rgb()\n return this.getValues(space);\n }\n\n // color.rgb(10, 10, 10)\n if (typeof vals === 'number') {\n vals = Array.prototype.slice.call(args);\n }\n this.setValues(space, vals);\n return this;\n };\n Color.prototype.setChannel = function (space, index, val) {\n var svalues = this.values[space];\n if (val === undefined) {\n // color.red()\n return svalues[index];\n } else if (val === svalues[index]) {\n // color.red(color.red())\n return this;\n }\n\n // color.red(100)\n svalues[index] = val;\n this.setValues(space, svalues);\n return this;\n };\n if (typeof window !== 'undefined') {\n window.Color = Color;\n }\n var chartjsColor = Color;\n function isValidKey(key) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n }\n\n /**\r\n * @namespace Chart.helpers\r\n */\n var helpers = {\n /**\r\n * An empty function that can be used, for example, for optional callback.\r\n */\n noop: function () {},\n /**\r\n * Returns a unique id, sequentially generated from a global variable.\r\n * @returns {number}\r\n * @function\r\n */\n uid: function () {\n var id = 0;\n return function () {\n return id++;\n };\n }(),\n /**\r\n * Returns true if `value` is neither null nor undefined, else returns false.\r\n * @param {*} value - The value to test.\r\n * @returns {boolean}\r\n * @since 2.7.0\r\n */\n isNullOrUndef: function (value) {\n return value === null || typeof value === 'undefined';\n },\n /**\r\n * Returns true if `value` is an array (including typed arrays), else returns false.\r\n * @param {*} value - The value to test.\r\n * @returns {boolean}\r\n * @function\r\n */\n isArray: function (value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n var type = Object.prototype.toString.call(value);\n if (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') {\n return true;\n }\n return false;\n },\n /**\r\n * Returns true if `value` is an object (excluding null), else returns false.\r\n * @param {*} value - The value to test.\r\n * @returns {boolean}\r\n * @since 2.7.0\r\n */\n isObject: function (value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n },\n /**\r\n * Returns true if `value` is a finite number, else returns false\r\n * @param {*} value - The value to test.\r\n * @returns {boolean}\r\n */\n isFinite: function (value) {\n return (typeof value === 'number' || value instanceof Number) && isFinite(value);\n },\n /**\r\n * Returns `value` if defined, else returns `defaultValue`.\r\n * @param {*} value - The value to return if defined.\r\n * @param {*} defaultValue - The value to return if `value` is undefined.\r\n * @returns {*}\r\n */\n valueOrDefault: function (value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n },\n /**\r\n * Returns value at the given `index` in array if defined, else returns `defaultValue`.\r\n * @param {Array} value - The array to lookup for value at `index`.\r\n * @param {number} index - The index in `value` to lookup for value.\r\n * @param {*} defaultValue - The value to return if `value[index]` is undefined.\r\n * @returns {*}\r\n */\n valueAtIndexOrDefault: function (value, index, defaultValue) {\n return helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue);\n },\n /**\r\n * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\r\n * value returned by `fn`. If `fn` is not a function, this method returns undefined.\r\n * @param {function} fn - The function to call.\r\n * @param {Array|undefined|null} args - The arguments with which `fn` should be called.\r\n * @param {object} [thisArg] - The value of `this` provided for the call to `fn`.\r\n * @returns {*}\r\n */\n callback: function (fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n },\n /**\r\n * Note(SB) for performance sake, this method should only be used when loopable type\r\n * is unknown or in none intensive code (not called often and small loopable). Else\r\n * it's preferable to use a regular for() loop and save extra function calls.\r\n * @param {object|Array} loopable - The object or array to be iterated.\r\n * @param {function} fn - The function to call for each item.\r\n * @param {object} [thisArg] - The value of `this` provided for the call to `fn`.\r\n * @param {boolean} [reverse] - If true, iterates backward on the loopable.\r\n */\n each: function (loopable, fn, thisArg, reverse) {\n var i, len, keys;\n if (helpers.isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (helpers.isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n },\n /**\r\n * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\r\n * @see https://stackoverflow.com/a/14853974\r\n * @param {Array} a0 - The array to compare\r\n * @param {Array} a1 - The array to compare\r\n * @returns {boolean}\r\n */\n arrayEquals: function (a0, a1) {\n var i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n if (v0 instanceof Array && v1 instanceof Array) {\n if (!helpers.arrayEquals(v0, v1)) {\n return false;\n }\n } else if (v0 !== v1) {\n // NOTE: two different object instances will never be equal: {x:20} != {x:20}\n return false;\n }\n }\n return true;\n },\n /**\r\n * Returns a deep copy of `source` without keeping references on objects and arrays.\r\n * @param {*} source - The value to clone.\r\n * @returns {*}\r\n */\n clone: function (source) {\n if (helpers.isArray(source)) {\n return source.map(helpers.clone);\n }\n if (helpers.isObject(source)) {\n var target = Object.create(source);\n var keys = Object.keys(source);\n var klen = keys.length;\n var k = 0;\n for (; k < klen; ++k) {\n target[keys[k]] = helpers.clone(source[keys[k]]);\n }\n return target;\n }\n return source;\n },\n /**\r\n * The default merger when Chart.helpers.merge is called without merger option.\r\n * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\r\n * @private\r\n */\n _merger: function (key, target, source, options) {\n if (!isValidKey(key)) {\n // We want to ensure we do not copy prototypes over\n // as this can pollute global namespaces\n return;\n }\n var tval = target[key];\n var sval = source[key];\n if (helpers.isObject(tval) && helpers.isObject(sval)) {\n helpers.merge(tval, sval, options);\n } else {\n target[key] = helpers.clone(sval);\n }\n },\n /**\r\n * Merges source[key] in target[key] only if target[key] is undefined.\r\n * @private\r\n */\n _mergerIf: function (key, target, source) {\n if (!isValidKey(key)) {\n // We want to ensure we do not copy prototypes over\n // as this can pollute global namespaces\n return;\n }\n var tval = target[key];\n var sval = source[key];\n if (helpers.isObject(tval) && helpers.isObject(sval)) {\n helpers.mergeIf(tval, sval);\n } else if (!target.hasOwnProperty(key)) {\n target[key] = helpers.clone(sval);\n }\n },\n /**\r\n * Recursively deep copies `source` properties into `target` with the given `options`.\r\n * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\r\n * @param {object} target - The target object in which all sources are merged into.\r\n * @param {object|object[]} source - Object(s) to merge into `target`.\r\n * @param {object} [options] - Merging options:\r\n * @param {function} [options.merger] - The merge method (key, target, source, options)\r\n * @returns {object} The `target` object.\r\n */\n merge: function (target, source, options) {\n var sources = helpers.isArray(source) ? source : [source];\n var ilen = sources.length;\n var merge, i, keys, klen, k;\n if (!helpers.isObject(target)) {\n return target;\n }\n options = options || {};\n merge = options.merger || helpers._merger;\n for (i = 0; i < ilen; ++i) {\n source = sources[i];\n if (!helpers.isObject(source)) {\n continue;\n }\n keys = Object.keys(source);\n for (k = 0, klen = keys.length; k < klen; ++k) {\n merge(keys[k], target, source, options);\n }\n }\n return target;\n },\n /**\r\n * Recursively deep copies `source` properties into `target` *only* if not defined in target.\r\n * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\r\n * @param {object} target - The target object in which all sources are merged into.\r\n * @param {object|object[]} source - Object(s) to merge into `target`.\r\n * @returns {object} The `target` object.\r\n */\n mergeIf: function (target, source) {\n return helpers.merge(target, source, {\n merger: helpers._mergerIf\n });\n },\n /**\r\n * Applies the contents of two or more objects together into the first object.\r\n * @param {object} target - The target object in which all objects are merged into.\r\n * @param {object} arg1 - Object containing additional properties to merge in target.\r\n * @param {object} argN - Additional objects containing properties to merge in target.\r\n * @returns {object} The `target` object.\r\n */\n extend: Object.assign || function (target) {\n return helpers.merge(target, [].slice.call(arguments, 1), {\n merger: function (key, dst, src) {\n dst[key] = src[key];\n }\n });\n },\n /**\r\n * Basic javascript inheritance based on the model created in Backbone.js\r\n */\n inherits: function (extensions) {\n var me = this;\n var ChartElement = extensions && extensions.hasOwnProperty('constructor') ? extensions.constructor : function () {\n return me.apply(this, arguments);\n };\n var Surrogate = function () {\n this.constructor = ChartElement;\n };\n Surrogate.prototype = me.prototype;\n ChartElement.prototype = new Surrogate();\n ChartElement.extend = helpers.inherits;\n if (extensions) {\n helpers.extend(ChartElement.prototype, extensions);\n }\n ChartElement.__super__ = me.prototype;\n return ChartElement;\n },\n _deprecated: function (scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous + '\" is deprecated. Please use \"' + current + '\" instead');\n }\n }\n };\n var helpers_core = helpers;\n\n // DEPRECATIONS\n\n /**\r\n * Provided for backward compatibility, use Chart.helpers.callback instead.\r\n * @function Chart.helpers.callCallback\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n * @private\r\n */\n helpers.callCallback = helpers.callback;\n\n /**\r\n * Provided for backward compatibility, use Array.prototype.indexOf instead.\r\n * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+\r\n * @function Chart.helpers.indexOf\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\n helpers.indexOf = function (array, item, fromIndex) {\n return Array.prototype.indexOf.call(array, item, fromIndex);\n };\n\n /**\r\n * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead.\r\n * @function Chart.helpers.getValueOrDefault\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\n helpers.getValueOrDefault = helpers.valueOrDefault;\n\n /**\r\n * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead.\r\n * @function Chart.helpers.getValueAtIndexOrDefault\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\n helpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\n /**\r\n * Easing functions adapted from Robert Penner's easing equations.\r\n * @namespace Chart.helpers.easingEffects\r\n * @see http://www.robertpenner.com/easing/\r\n */\n var effects = {\n linear: function (t) {\n return t;\n },\n easeInQuad: function (t) {\n return t * t;\n },\n easeOutQuad: function (t) {\n return -t * (t - 2);\n },\n easeInOutQuad: function (t) {\n if ((t /= 0.5) < 1) {\n return 0.5 * t * t;\n }\n return -0.5 * (--t * (t - 2) - 1);\n },\n easeInCubic: function (t) {\n return t * t * t;\n },\n easeOutCubic: function (t) {\n return (t = t - 1) * t * t + 1;\n },\n easeInOutCubic: function (t) {\n if ((t /= 0.5) < 1) {\n return 0.5 * t * t * t;\n }\n return 0.5 * ((t -= 2) * t * t + 2);\n },\n easeInQuart: function (t) {\n return t * t * t * t;\n },\n easeOutQuart: function (t) {\n return -((t = t - 1) * t * t * t - 1);\n },\n easeInOutQuart: function (t) {\n if ((t /= 0.5) < 1) {\n return 0.5 * t * t * t * t;\n }\n return -0.5 * ((t -= 2) * t * t * t - 2);\n },\n easeInQuint: function (t) {\n return t * t * t * t * t;\n },\n easeOutQuint: function (t) {\n return (t = t - 1) * t * t * t * t + 1;\n },\n easeInOutQuint: function (t) {\n if ((t /= 0.5) < 1) {\n return 0.5 * t * t * t * t * t;\n }\n return 0.5 * ((t -= 2) * t * t * t * t + 2);\n },\n easeInSine: function (t) {\n return -Math.cos(t * (Math.PI / 2)) + 1;\n },\n easeOutSine: function (t) {\n return Math.sin(t * (Math.PI / 2));\n },\n easeInOutSine: function (t) {\n return -0.5 * (Math.cos(Math.PI * t) - 1);\n },\n easeInExpo: function (t) {\n return t === 0 ? 0 : Math.pow(2, 10 * (t - 1));\n },\n easeOutExpo: function (t) {\n return t === 1 ? 1 : -Math.pow(2, -10 * t) + 1;\n },\n easeInOutExpo: function (t) {\n if (t === 0) {\n return 0;\n }\n if (t === 1) {\n return 1;\n }\n if ((t /= 0.5) < 1) {\n return 0.5 * Math.pow(2, 10 * (t - 1));\n }\n return 0.5 * (-Math.pow(2, -10 * --t) + 2);\n },\n easeInCirc: function (t) {\n if (t >= 1) {\n return t;\n }\n return -(Math.sqrt(1 - t * t) - 1);\n },\n easeOutCirc: function (t) {\n return Math.sqrt(1 - (t = t - 1) * t);\n },\n easeInOutCirc: function (t) {\n if ((t /= 0.5) < 1) {\n return -0.5 * (Math.sqrt(1 - t * t) - 1);\n }\n return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n },\n easeInElastic: function (t) {\n var s = 1.70158;\n var p = 0;\n var a = 1;\n if (t === 0) {\n return 0;\n }\n if (t === 1) {\n return 1;\n }\n if (!p) {\n p = 0.3;\n }\n if (a < 1) {\n a = 1;\n s = p / 4;\n } else {\n s = p / (2 * Math.PI) * Math.asin(1 / a);\n }\n return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n },\n easeOutElastic: function (t) {\n var s = 1.70158;\n var p = 0;\n var a = 1;\n if (t === 0) {\n return 0;\n }\n if (t === 1) {\n return 1;\n }\n if (!p) {\n p = 0.3;\n }\n if (a < 1) {\n a = 1;\n s = p / 4;\n } else {\n s = p / (2 * Math.PI) * Math.asin(1 / a);\n }\n return a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1;\n },\n easeInOutElastic: function (t) {\n var s = 1.70158;\n var p = 0;\n var a = 1;\n if (t === 0) {\n return 0;\n }\n if ((t /= 0.5) === 2) {\n return 1;\n }\n if (!p) {\n p = 0.45;\n }\n if (a < 1) {\n a = 1;\n s = p / 4;\n } else {\n s = p / (2 * Math.PI) * Math.asin(1 / a);\n }\n if (t < 1) {\n return -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n }\n return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1;\n },\n easeInBack: function (t) {\n var s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack: function (t) {\n var s = 1.70158;\n return (t = t - 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack: function (t) {\n var s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= 1.525) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2);\n },\n easeInBounce: function (t) {\n return 1 - effects.easeOutBounce(1 - t);\n },\n easeOutBounce: function (t) {\n if (t < 1 / 2.75) {\n return 7.5625 * t * t;\n }\n if (t < 2 / 2.75) {\n return 7.5625 * (t -= 1.5 / 2.75) * t + 0.75;\n }\n if (t < 2.5 / 2.75) {\n return 7.5625 * (t -= 2.25 / 2.75) * t + 0.9375;\n }\n return 7.5625 * (t -= 2.625 / 2.75) * t + 0.984375;\n },\n easeInOutBounce: function (t) {\n if (t < 0.5) {\n return effects.easeInBounce(t * 2) * 0.5;\n }\n return effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;\n }\n };\n var helpers_easing = {\n effects: effects\n };\n\n // DEPRECATIONS\n\n /**\r\n * Provided for backward compatibility, use Chart.helpers.easing.effects instead.\r\n * @function Chart.helpers.easingEffects\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\n helpers_core.easingEffects = effects;\n var PI = Math.PI;\n var RAD_PER_DEG = PI / 180;\n var DOUBLE_PI = PI * 2;\n var HALF_PI = PI / 2;\n var QUARTER_PI = PI / 4;\n var TWO_THIRDS_PI = PI * 2 / 3;\n\n /**\r\n * @namespace Chart.helpers.canvas\r\n */\n var exports$1 = {\n /**\r\n * Clears the entire canvas associated to the given `chart`.\r\n * @param {Chart} chart - The chart for which to clear the canvas.\r\n */\n clear: function (chart) {\n chart.ctx.clearRect(0, 0, chart.width, chart.height);\n },\n /**\r\n * Creates a \"path\" for a rectangle with rounded corners at position (x, y) with a\r\n * given size (width, height) and the same `radius` for all corners.\r\n * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context.\r\n * @param {number} x - The x axis of the coordinate for the rectangle starting point.\r\n * @param {number} y - The y axis of the coordinate for the rectangle starting point.\r\n * @param {number} width - The rectangle's width.\r\n * @param {number} height - The rectangle's height.\r\n * @param {number} radius - The rounded amount (in pixels) for the four corners.\r\n * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object?\r\n */\n roundedRect: function (ctx, x, y, width, height, radius) {\n if (radius) {\n var r = Math.min(radius, height / 2, width / 2);\n var left = x + r;\n var top = y + r;\n var right = x + width - r;\n var bottom = y + height - r;\n ctx.moveTo(x, top);\n if (left < right && top < bottom) {\n ctx.arc(left, top, r, -PI, -HALF_PI);\n ctx.arc(right, top, r, -HALF_PI, 0);\n ctx.arc(right, bottom, r, 0, HALF_PI);\n ctx.arc(left, bottom, r, HALF_PI, PI);\n } else if (left < right) {\n ctx.moveTo(left, y);\n ctx.arc(right, top, r, -HALF_PI, HALF_PI);\n ctx.arc(left, top, r, HALF_PI, PI + HALF_PI);\n } else if (top < bottom) {\n ctx.arc(left, top, r, -PI, 0);\n ctx.arc(left, bottom, r, 0, PI);\n } else {\n ctx.arc(left, top, r, -PI, PI);\n }\n ctx.closePath();\n ctx.moveTo(x, y);\n } else {\n ctx.rect(x, y, width, height);\n }\n },\n drawPoint: function (ctx, style, radius, x, y, rotation) {\n var type, xOffset, yOffset, size, cornerRadius;\n var rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch (style) {\n // Default includes circle\n default:\n ctx.arc(x, y, radius, 0, DOUBLE_PI);\n ctx.closePath();\n break;\n case 'triangle':\n ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n // NOTE: the rounded rect implementation changed to use `arc` instead of\n // `quadraticCurveTo` since it generates better results when rect is\n // almost a circle. 0.516 (instead of 0.5) produces results with visually\n // closer proportion to the previous impl and it is inscribed in the\n // circle with `radius`. For more details, see the following PRs:\n // https://github.com/chartjs/Chart.js/issues/5597\n // https://github.com/chartjs/Chart.js/issues/5858\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n ctx.rect(x - size, y - size, 2 * size, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n /* falls through */\n case 'rectRot':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + yOffset, y - xOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n /* falls through */\n case 'cross':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'star':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n rad += QUARTER_PI;\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'line':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n break;\n }\n ctx.fill();\n ctx.stroke();\n },\n /**\r\n * Returns true if the point is inside the rectangle\r\n * @param {object} point - The point to test\r\n * @param {object} area - The rectangle\r\n * @returns {boolean}\r\n * @private\r\n */\n _isPointInArea: function (point, area) {\n var epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\n\n return point.x > area.left - epsilon && point.x < area.right + epsilon && point.y > area.top - epsilon && point.y < area.bottom + epsilon;\n },\n clipArea: function (ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n },\n unclipArea: function (ctx) {\n ctx.restore();\n },\n lineTo: function (ctx, previous, target, flip) {\n var stepped = target.steppedLine;\n if (stepped) {\n if (stepped === 'middle') {\n var midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, flip ? target.y : previous.y);\n ctx.lineTo(midpoint, flip ? previous.y : target.y);\n } else if (stepped === 'after' && !flip || stepped !== 'after' && flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n return;\n }\n if (!target.tension) {\n ctx.lineTo(target.x, target.y);\n return;\n }\n ctx.bezierCurveTo(flip ? previous.controlPointPreviousX : previous.controlPointNextX, flip ? previous.controlPointPreviousY : previous.controlPointNextY, flip ? target.controlPointNextX : target.controlPointPreviousX, flip ? target.controlPointNextY : target.controlPointPreviousY, target.x, target.y);\n }\n };\n var helpers_canvas = exports$1;\n\n // DEPRECATIONS\n\n /**\r\n * Provided for backward compatibility, use Chart.helpers.canvas.clear instead.\r\n * @namespace Chart.helpers.clear\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\n helpers_core.clear = exports$1.clear;\n\n /**\r\n * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead.\r\n * @namespace Chart.helpers.drawRoundedRectangle\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\n helpers_core.drawRoundedRectangle = function (ctx) {\n ctx.beginPath();\n exports$1.roundedRect.apply(exports$1, arguments);\n };\n var defaults = {\n /**\r\n * @private\r\n */\n _set: function (scope, values) {\n return helpers_core.merge(this[scope] || (this[scope] = {}), values);\n }\n };\n\n // TODO(v3): remove 'global' from namespace. all default are global and\n // there's inconsistency around which options are under 'global'\n defaults._set('global', {\n defaultColor: 'rgba(0,0,0,0.1)',\n defaultFontColor: '#666',\n defaultFontFamily: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n defaultFontSize: 12,\n defaultFontStyle: 'normal',\n defaultLineHeight: 1.2,\n showLines: true\n });\n var core_defaults = defaults;\n var valueOrDefault = helpers_core.valueOrDefault;\n\n /**\r\n * Converts the given font object into a CSS font string.\r\n * @param {object} font - A font object.\r\n * @return {string} The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\r\n * @private\r\n */\n function toFontString(font) {\n if (!font || helpers_core.isNullOrUndef(font.size) || helpers_core.isNullOrUndef(font.family)) {\n return null;\n }\n return (font.style ? font.style + ' ' : '') + (font.weight ? font.weight + ' ' : '') + font.size + 'px ' + font.family;\n }\n\n /**\r\n * @alias Chart.helpers.options\r\n * @namespace\r\n */\n var helpers_options = {\n /**\r\n * Converts the given line height `value` in pixels for a specific font `size`.\r\n * @param {number|string} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\r\n * @param {number} size - The font size (in pixels) used to resolve relative `value`.\r\n * @returns {number} The effective line height in pixels (size * 1.2 if value is invalid).\r\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\r\n * @since 2.7.0\r\n */\n toLineHeight: function (value, size) {\n var matches = ('' + value).match(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n },\n /**\r\n * Converts the given value into a padding object with pre-computed width/height.\r\n * @param {number|object} value - If a number, set the value to all TRBL component,\r\n * else, if and object, use defined properties and sets undefined ones to 0.\r\n * @returns {object} The padding values (top, right, bottom, left, width, height)\r\n * @since 2.7.0\r\n */\n toPadding: function (value) {\n var t, r, b, l;\n if (helpers_core.isObject(value)) {\n t = +value.top || 0;\n r = +value.right || 0;\n b = +value.bottom || 0;\n l = +value.left || 0;\n } else {\n t = r = b = l = +value || 0;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n height: t + b,\n width: l + r\n };\n },\n /**\r\n * Parses font options and returns the font object.\r\n * @param {object} options - A object that contains font options to be parsed.\r\n * @return {object} The font object.\r\n * @todo Support font.* options and renamed to toFont().\r\n * @private\r\n */\n _parseFont: function (options) {\n var globalDefaults = core_defaults.global;\n var size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);\n var font = {\n family: valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily),\n lineHeight: helpers_core.options.toLineHeight(valueOrDefault(options.lineHeight, globalDefaults.defaultLineHeight), size),\n size: size,\n style: valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle),\n weight: null,\n string: ''\n };\n font.string = toFontString(font);\n return font;\n },\n /**\r\n * Evaluates the given `inputs` sequentially and returns the first defined value.\r\n * @param {Array} inputs - An array of values, falling back to the last value.\r\n * @param {object} [context] - If defined and the current value is a function, the value\r\n * is called with `context` as first argument and the result becomes the new input.\r\n * @param {number} [index] - If defined and the current value is an array, the value\r\n * at `index` become the new input.\r\n * @param {object} [info] - object to return information about resolution in\r\n * @param {boolean} [info.cacheable] - Will be set to `false` if option is not cacheable.\r\n * @since 2.7.0\r\n */\n resolve: function (inputs, context, index, info) {\n var cacheable = true;\n var i, ilen, value;\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && helpers_core.isArray(value)) {\n value = value[index];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n }\n };\n\n /**\r\n * @alias Chart.helpers.math\r\n * @namespace\r\n */\n var exports$2 = {\n /**\r\n * Returns an array of factors sorted from 1 to sqrt(value)\r\n * @private\r\n */\n _factorize: function (value) {\n var result = [];\n var sqrt = Math.sqrt(value);\n var i;\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n // if value is a square number\n result.push(sqrt);\n }\n result.sort(function (a, b) {\n return a - b;\n }).pop();\n return result;\n },\n log10: Math.log10 || function (x) {\n var exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10.\n // Check for whole powers of 10,\n // which due to floating point rounding error should be corrected.\n var powerOf10 = Math.round(exponent);\n var isPowerOf10 = x === Math.pow(10, powerOf10);\n return isPowerOf10 ? powerOf10 : exponent;\n }\n };\n var helpers_math = exports$2;\n\n // DEPRECATIONS\n\n /**\r\n * Provided for backward compatibility, use Chart.helpers.math.log10 instead.\r\n * @namespace Chart.helpers.log10\r\n * @deprecated since version 2.9.0\r\n * @todo remove at version 3\r\n * @private\r\n */\n helpers_core.log10 = exports$2.log10;\n var getRtlAdapter = function (rectX, width) {\n return {\n x: function (x) {\n return rectX + rectX + width - x;\n },\n setWidth: function (w) {\n width = w;\n },\n textAlign: function (align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus: function (x, value) {\n return x - value;\n },\n leftForLtr: function (x, itemWidth) {\n return x - itemWidth;\n }\n };\n };\n var getLtrAdapter = function () {\n return {\n x: function (x) {\n return x;\n },\n setWidth: function (w) {// eslint-disable-line no-unused-vars\n },\n textAlign: function (align) {\n return align;\n },\n xPlus: function (x, value) {\n return x + value;\n },\n leftForLtr: function (x, _itemWidth) {\n // eslint-disable-line no-unused-vars\n return x;\n }\n };\n };\n var getAdapter = function (rtl, rectX, width) {\n return rtl ? getRtlAdapter(rectX, width) : getLtrAdapter();\n };\n var overrideTextDirection = function (ctx, direction) {\n var style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [style.getPropertyValue('direction'), style.getPropertyPriority('direction')];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n };\n var restoreTextDirection = function (ctx) {\n var original = ctx.prevTextDirection;\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n };\n var helpers_rtl = {\n getRtlAdapter: getAdapter,\n overrideTextDirection: overrideTextDirection,\n restoreTextDirection: restoreTextDirection\n };\n var helpers$1 = helpers_core;\n var easing = helpers_easing;\n var canvas = helpers_canvas;\n var options = helpers_options;\n var math = helpers_math;\n var rtl = helpers_rtl;\n helpers$1.easing = easing;\n helpers$1.canvas = canvas;\n helpers$1.options = options;\n helpers$1.math = math;\n helpers$1.rtl = rtl;\n function interpolate(start, view, model, ease) {\n var keys = Object.keys(model);\n var i, ilen, key, actual, origin, target, type, c0, c1;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n target = model[key];\n\n // if a value is added to the model after pivot() has been called, the view\n // doesn't contain it, so let's initialize the view to the target value.\n if (!view.hasOwnProperty(key)) {\n view[key] = target;\n }\n actual = view[key];\n if (actual === target || key[0] === '_') {\n continue;\n }\n if (!start.hasOwnProperty(key)) {\n start[key] = actual;\n }\n origin = start[key];\n type = typeof target;\n if (type === typeof origin) {\n if (type === 'string') {\n c0 = chartjsColor(origin);\n if (c0.valid) {\n c1 = chartjsColor(target);\n if (c1.valid) {\n view[key] = c1.mix(c0, ease).rgbString();\n continue;\n }\n }\n } else if (helpers$1.isFinite(origin) && helpers$1.isFinite(target)) {\n view[key] = origin + (target - origin) * ease;\n continue;\n }\n }\n view[key] = target;\n }\n }\n var Element = function (configuration) {\n helpers$1.extend(this, configuration);\n this.initialize.apply(this, arguments);\n };\n helpers$1.extend(Element.prototype, {\n _type: undefined,\n initialize: function () {\n this.hidden = false;\n },\n pivot: function () {\n var me = this;\n if (!me._view) {\n me._view = helpers$1.extend({}, me._model);\n }\n me._start = {};\n return me;\n },\n transition: function (ease) {\n var me = this;\n var model = me._model;\n var start = me._start;\n var view = me._view;\n\n // No animation -> No Transition\n if (!model || ease === 1) {\n me._view = helpers$1.extend({}, model);\n me._start = null;\n return me;\n }\n if (!view) {\n view = me._view = {};\n }\n if (!start) {\n start = me._start = {};\n }\n interpolate(start, view, model, ease);\n return me;\n },\n tooltipPosition: function () {\n return {\n x: this._model.x,\n y: this._model.y\n };\n },\n hasValue: function () {\n return helpers$1.isNumber(this._model.x) && helpers$1.isNumber(this._model.y);\n }\n });\n Element.extend = helpers$1.inherits;\n var core_element = Element;\n var exports$3 = core_element.extend({\n chart: null,\n // the animation associated chart instance\n currentStep: 0,\n // the current animation step\n numSteps: 60,\n // default number of steps\n easing: '',\n // the easing to use for this animation\n render: null,\n // render function used by the animation service\n\n onAnimationProgress: null,\n // user specified callback to fire on each step of the animation\n onAnimationComplete: null // user specified callback to fire when the animation finishes\n });\n\n var core_animation = exports$3;\n\n // DEPRECATIONS\n\n /**\r\n * Provided for backward compatibility, use Chart.Animation instead\r\n * @prop Chart.Animation#animationObject\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n */\n Object.defineProperty(exports$3.prototype, 'animationObject', {\n get: function () {\n return this;\n }\n });\n\n /**\r\n * Provided for backward compatibility, use Chart.Animation#chart instead\r\n * @prop Chart.Animation#chartInstance\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n */\n Object.defineProperty(exports$3.prototype, 'chartInstance', {\n get: function () {\n return this.chart;\n },\n set: function (value) {\n this.chart = value;\n }\n });\n core_defaults._set('global', {\n animation: {\n duration: 1000,\n easing: 'easeOutQuart',\n onProgress: helpers$1.noop,\n onComplete: helpers$1.noop\n }\n });\n var core_animations = {\n animations: [],\n request: null,\n /**\r\n * @param {Chart} chart - The chart to animate.\r\n * @param {Chart.Animation} animation - The animation that we will animate.\r\n * @param {number} duration - The animation duration in ms.\r\n * @param {boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions\r\n */\n addAnimation: function (chart, animation, duration, lazy) {\n var animations = this.animations;\n var i, ilen;\n animation.chart = chart;\n animation.startTime = Date.now();\n animation.duration = duration;\n if (!lazy) {\n chart.animating = true;\n }\n for (i = 0, ilen = animations.length; i < ilen; ++i) {\n if (animations[i].chart === chart) {\n animations[i] = animation;\n return;\n }\n }\n animations.push(animation);\n\n // If there are no animations queued, manually kickstart a digest, for lack of a better word\n if (animations.length === 1) {\n this.requestAnimationFrame();\n }\n },\n cancelAnimation: function (chart) {\n var index = helpers$1.findIndex(this.animations, function (animation) {\n return animation.chart === chart;\n });\n if (index !== -1) {\n this.animations.splice(index, 1);\n chart.animating = false;\n }\n },\n requestAnimationFrame: function () {\n var me = this;\n if (me.request === null) {\n // Skip animation frame requests until the active one is executed.\n // This can happen when processing mouse events, e.g. 'mousemove'\n // and 'mouseout' events will trigger multiple renders.\n me.request = helpers$1.requestAnimFrame.call(window, function () {\n me.request = null;\n me.startDigest();\n });\n }\n },\n /**\r\n * @private\r\n */\n startDigest: function () {\n var me = this;\n me.advance();\n\n // Do we have more stuff to animate?\n if (me.animations.length > 0) {\n me.requestAnimationFrame();\n }\n },\n /**\r\n * @private\r\n */\n advance: function () {\n var animations = this.animations;\n var animation, chart, numSteps, nextStep;\n var i = 0;\n\n // 1 animation per chart, so we are looping charts here\n while (i < animations.length) {\n animation = animations[i];\n chart = animation.chart;\n numSteps = animation.numSteps;\n\n // Make sure that currentStep starts at 1\n // https://github.com/chartjs/Chart.js/issues/6104\n nextStep = Math.floor((Date.now() - animation.startTime) / animation.duration * numSteps) + 1;\n animation.currentStep = Math.min(nextStep, numSteps);\n helpers$1.callback(animation.render, [chart, animation], chart);\n helpers$1.callback(animation.onAnimationProgress, [animation], chart);\n if (animation.currentStep >= numSteps) {\n helpers$1.callback(animation.onAnimationComplete, [animation], chart);\n chart.animating = false;\n animations.splice(i, 1);\n } else {\n ++i;\n }\n }\n }\n };\n var resolve = helpers$1.options.resolve;\n var arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\n\n /**\r\n * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\r\n * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\r\n * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments.\r\n */\n function listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n arrayEvents.forEach(function (key) {\n var method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);\n var base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value: function () {\n var args = Array.prototype.slice.call(arguments);\n var res = base.apply(this, args);\n helpers$1.each(array._chartjs.listeners, function (object) {\n if (typeof object[method] === 'function') {\n object[method].apply(object, args);\n }\n });\n return res;\n }\n });\n });\n }\n\n /**\r\n * Removes the given array event listener and cleanup extra attached properties (such as\r\n * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\r\n */\n function unlistenArrayEvents(array, listener) {\n var stub = array._chartjs;\n if (!stub) {\n return;\n }\n var listeners = stub.listeners;\n var index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach(function (key) {\n delete array[key];\n });\n delete array._chartjs;\n }\n\n // Base class for all dataset controllers (line, bar, etc)\n var DatasetController = function (chart, datasetIndex) {\n this.initialize(chart, datasetIndex);\n };\n helpers$1.extend(DatasetController.prototype, {\n /**\r\n * Element type used to generate a meta dataset (e.g. Chart.element.Line).\r\n * @type {Chart.core.element}\r\n */\n datasetElementType: null,\n /**\r\n * Element type used to generate a meta data (e.g. Chart.element.Point).\r\n * @type {Chart.core.element}\r\n */\n dataElementType: null,\n /**\r\n * Dataset element option keys to be resolved in _resolveDatasetElementOptions.\r\n * A derived controller may override this to resolve controller-specific options.\r\n * The keys defined here are for backward compatibility for legend styles.\r\n * @private\r\n */\n _datasetElementOptions: ['backgroundColor', 'borderCapStyle', 'borderColor', 'borderDash', 'borderDashOffset', 'borderJoinStyle', 'borderWidth'],\n /**\r\n * Data element option keys to be resolved in _resolveDataElementOptions.\r\n * A derived controller may override this to resolve controller-specific options.\r\n * The keys defined here are for backward compatibility for legend styles.\r\n * @private\r\n */\n _dataElementOptions: ['backgroundColor', 'borderColor', 'borderWidth', 'pointStyle'],\n initialize: function (chart, datasetIndex) {\n var me = this;\n me.chart = chart;\n me.index = datasetIndex;\n me.linkScales();\n me.addElements();\n me._type = me.getMeta().type;\n },\n updateIndex: function (datasetIndex) {\n this.index = datasetIndex;\n },\n linkScales: function () {\n var me = this;\n var meta = me.getMeta();\n var chart = me.chart;\n var scales = chart.scales;\n var dataset = me.getDataset();\n var scalesOpts = chart.options.scales;\n if (meta.xAxisID === null || !(meta.xAxisID in scales) || dataset.xAxisID) {\n meta.xAxisID = dataset.xAxisID || scalesOpts.xAxes[0].id;\n }\n if (meta.yAxisID === null || !(meta.yAxisID in scales) || dataset.yAxisID) {\n meta.yAxisID = dataset.yAxisID || scalesOpts.yAxes[0].id;\n }\n },\n getDataset: function () {\n return this.chart.data.datasets[this.index];\n },\n getMeta: function () {\n return this.chart.getDatasetMeta(this.index);\n },\n getScaleForId: function (scaleID) {\n return this.chart.scales[scaleID];\n },\n /**\r\n * @private\r\n */\n _getValueScaleId: function () {\n return this.getMeta().yAxisID;\n },\n /**\r\n * @private\r\n */\n _getIndexScaleId: function () {\n return this.getMeta().xAxisID;\n },\n /**\r\n * @private\r\n */\n _getValueScale: function () {\n return this.getScaleForId(this._getValueScaleId());\n },\n /**\r\n * @private\r\n */\n _getIndexScale: function () {\n return this.getScaleForId(this._getIndexScaleId());\n },\n reset: function () {\n this._update(true);\n },\n /**\r\n * @private\r\n */\n destroy: function () {\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n },\n createMetaDataset: function () {\n var me = this;\n var type = me.datasetElementType;\n return type && new type({\n _chart: me.chart,\n _datasetIndex: me.index\n });\n },\n createMetaData: function (index) {\n var me = this;\n var type = me.dataElementType;\n return type && new type({\n _chart: me.chart,\n _datasetIndex: me.index,\n _index: index\n });\n },\n addElements: function () {\n var me = this;\n var meta = me.getMeta();\n var data = me.getDataset().data || [];\n var metaData = meta.data;\n var i, ilen;\n for (i = 0, ilen = data.length; i < ilen; ++i) {\n metaData[i] = metaData[i] || me.createMetaData(i);\n }\n meta.dataset = meta.dataset || me.createMetaDataset();\n },\n addElementAndReset: function (index) {\n var element = this.createMetaData(index);\n this.getMeta().data.splice(index, 0, element);\n this.updateElement(element, index, true);\n },\n buildOrUpdateElements: function () {\n var me = this;\n var dataset = me.getDataset();\n var data = dataset.data || (dataset.data = []);\n\n // In order to correctly handle data addition/deletion animation (an thus simulate\n // real-time charts), we need to monitor these data modifications and synchronize\n // the internal meta data accordingly.\n if (me._data !== data) {\n if (me._data) {\n // This case happens when the user replaced the data array instance.\n unlistenArrayEvents(me._data, me);\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, me);\n }\n me._data = data;\n }\n\n // Re-sync meta data in case the user replaced the data array or if we missed\n // any updates and so make sure that we handle number of datapoints changing.\n me.resyncElements();\n },\n /**\r\n * Returns the merged user-supplied and default dataset-level options\r\n * @private\r\n */\n _configure: function () {\n var me = this;\n me._config = helpers$1.merge(Object.create(null), [me.chart.options.datasets[me._type], me.getDataset()], {\n merger: function (key, target, source) {\n if (key !== '_meta' && key !== 'data') {\n helpers$1._merger(key, target, source);\n }\n }\n });\n },\n _update: function (reset) {\n var me = this;\n me._configure();\n me._cachedDataOpts = null;\n me.update(reset);\n },\n update: helpers$1.noop,\n transition: function (easingValue) {\n var meta = this.getMeta();\n var elements = meta.data || [];\n var ilen = elements.length;\n var i = 0;\n for (; i < ilen; ++i) {\n elements[i].transition(easingValue);\n }\n if (meta.dataset) {\n meta.dataset.transition(easingValue);\n }\n },\n draw: function () {\n var meta = this.getMeta();\n var elements = meta.data || [];\n var ilen = elements.length;\n var i = 0;\n if (meta.dataset) {\n meta.dataset.draw();\n }\n for (; i < ilen; ++i) {\n elements[i].draw();\n }\n },\n /**\r\n * Returns a set of predefined style properties that should be used to represent the dataset\r\n * or the data if the index is specified\r\n * @param {number} index - data index\r\n * @return {IStyleInterface} style object\r\n */\n getStyle: function (index) {\n var me = this;\n var meta = me.getMeta();\n var dataset = meta.dataset;\n var style;\n me._configure();\n if (dataset && index === undefined) {\n style = me._resolveDatasetElementOptions(dataset || {});\n } else {\n index = index || 0;\n style = me._resolveDataElementOptions(meta.data[index] || {}, index);\n }\n if (style.fill === false || style.fill === null) {\n style.backgroundColor = style.borderColor;\n }\n return style;\n },\n /**\r\n * @private\r\n */\n _resolveDatasetElementOptions: function (element, hover) {\n var me = this;\n var chart = me.chart;\n var datasetOpts = me._config;\n var custom = element.custom || {};\n var options = chart.options.elements[me.datasetElementType.prototype._type] || {};\n var elementOptions = me._datasetElementOptions;\n var values = {};\n var i, ilen, key, readKey;\n\n // Scriptable options\n var context = {\n chart: chart,\n dataset: me.getDataset(),\n datasetIndex: me.index,\n hover: hover\n };\n for (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\n key = elementOptions[i];\n readKey = hover ? 'hover' + key.charAt(0).toUpperCase() + key.slice(1) : key;\n values[key] = resolve([custom[readKey], datasetOpts[readKey], options[readKey]], context);\n }\n return values;\n },\n /**\r\n * @private\r\n */\n _resolveDataElementOptions: function (element, index) {\n var me = this;\n var custom = element && element.custom;\n var cached = me._cachedDataOpts;\n if (cached && !custom) {\n return cached;\n }\n var chart = me.chart;\n var datasetOpts = me._config;\n var options = chart.options.elements[me.dataElementType.prototype._type] || {};\n var elementOptions = me._dataElementOptions;\n var values = {};\n\n // Scriptable options\n var context = {\n chart: chart,\n dataIndex: index,\n dataset: me.getDataset(),\n datasetIndex: me.index\n };\n\n // `resolve` sets cacheable to `false` if any option is indexed or scripted\n var info = {\n cacheable: !custom\n };\n var keys, i, ilen, key;\n custom = custom || {};\n if (helpers$1.isArray(elementOptions)) {\n for (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\n key = elementOptions[i];\n values[key] = resolve([custom[key], datasetOpts[key], options[key]], context, index, info);\n }\n } else {\n keys = Object.keys(elementOptions);\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n values[key] = resolve([custom[key], datasetOpts[elementOptions[key]], datasetOpts[key], options[key]], context, index, info);\n }\n }\n if (info.cacheable) {\n me._cachedDataOpts = Object.freeze(values);\n }\n return values;\n },\n removeHoverStyle: function (element) {\n helpers$1.merge(element._model, element.$previousStyle || {});\n delete element.$previousStyle;\n },\n setHoverStyle: function (element) {\n var dataset = this.chart.data.datasets[element._datasetIndex];\n var index = element._index;\n var custom = element.custom || {};\n var model = element._model;\n var getHoverColor = helpers$1.getHoverColor;\n element.$previousStyle = {\n backgroundColor: model.backgroundColor,\n borderColor: model.borderColor,\n borderWidth: model.borderWidth\n };\n model.backgroundColor = resolve([custom.hoverBackgroundColor, dataset.hoverBackgroundColor, getHoverColor(model.backgroundColor)], undefined, index);\n model.borderColor = resolve([custom.hoverBorderColor, dataset.hoverBorderColor, getHoverColor(model.borderColor)], undefined, index);\n model.borderWidth = resolve([custom.hoverBorderWidth, dataset.hoverBorderWidth, model.borderWidth], undefined, index);\n },\n /**\r\n * @private\r\n */\n _removeDatasetHoverStyle: function () {\n var element = this.getMeta().dataset;\n if (element) {\n this.removeHoverStyle(element);\n }\n },\n /**\r\n * @private\r\n */\n _setDatasetHoverStyle: function () {\n var element = this.getMeta().dataset;\n var prev = {};\n var i, ilen, key, keys, hoverOptions, model;\n if (!element) {\n return;\n }\n model = element._model;\n hoverOptions = this._resolveDatasetElementOptions(element, true);\n keys = Object.keys(hoverOptions);\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n prev[key] = model[key];\n model[key] = hoverOptions[key];\n }\n element.$previousStyle = prev;\n },\n /**\r\n * @private\r\n */\n resyncElements: function () {\n var me = this;\n var meta = me.getMeta();\n var data = me.getDataset().data;\n var numMeta = meta.data.length;\n var numData = data.length;\n if (numData < numMeta) {\n meta.data.splice(numData, numMeta - numData);\n } else if (numData > numMeta) {\n me.insertElements(numMeta, numData - numMeta);\n }\n },\n /**\r\n * @private\r\n */\n insertElements: function (start, count) {\n for (var i = 0; i < count; ++i) {\n this.addElementAndReset(start + i);\n }\n },\n /**\r\n * @private\r\n */\n onDataPush: function () {\n var count = arguments.length;\n this.insertElements(this.getDataset().data.length - count, count);\n },\n /**\r\n * @private\r\n */\n onDataPop: function () {\n this.getMeta().data.pop();\n },\n /**\r\n * @private\r\n */\n onDataShift: function () {\n this.getMeta().data.shift();\n },\n /**\r\n * @private\r\n */\n onDataSplice: function (start, count) {\n this.getMeta().data.splice(start, count);\n this.insertElements(start, arguments.length - 2);\n },\n /**\r\n * @private\r\n */\n onDataUnshift: function () {\n this.insertElements(0, arguments.length);\n }\n });\n DatasetController.extend = helpers$1.inherits;\n var core_datasetController = DatasetController;\n var TAU = Math.PI * 2;\n core_defaults._set('global', {\n elements: {\n arc: {\n backgroundColor: core_defaults.global.defaultColor,\n borderColor: '#fff',\n borderWidth: 2,\n borderAlign: 'center'\n }\n }\n });\n function clipArc(ctx, arc) {\n var startAngle = arc.startAngle;\n var endAngle = arc.endAngle;\n var pixelMargin = arc.pixelMargin;\n var angleMargin = pixelMargin / arc.outerRadius;\n var x = arc.x;\n var y = arc.y;\n\n // Draw an inner border by cliping the arc and drawing a double-width border\n // Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\n ctx.beginPath();\n ctx.arc(x, y, arc.outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (arc.innerRadius > pixelMargin) {\n angleMargin = pixelMargin / arc.innerRadius;\n ctx.arc(x, y, arc.innerRadius - pixelMargin, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + Math.PI / 2, startAngle - Math.PI / 2);\n }\n ctx.closePath();\n ctx.clip();\n }\n function drawFullCircleBorders(ctx, vm, arc, inner) {\n var endAngle = arc.endAngle;\n var i;\n if (inner) {\n arc.endAngle = arc.startAngle + TAU;\n clipArc(ctx, arc);\n arc.endAngle = endAngle;\n if (arc.endAngle === arc.startAngle && arc.fullCircles) {\n arc.endAngle += TAU;\n arc.fullCircles--;\n }\n }\n ctx.beginPath();\n ctx.arc(arc.x, arc.y, arc.innerRadius, arc.startAngle + TAU, arc.startAngle, true);\n for (i = 0; i < arc.fullCircles; ++i) {\n ctx.stroke();\n }\n ctx.beginPath();\n ctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.startAngle + TAU);\n for (i = 0; i < arc.fullCircles; ++i) {\n ctx.stroke();\n }\n }\n function drawBorder(ctx, vm, arc) {\n var inner = vm.borderAlign === 'inner';\n if (inner) {\n ctx.lineWidth = vm.borderWidth * 2;\n ctx.lineJoin = 'round';\n } else {\n ctx.lineWidth = vm.borderWidth;\n ctx.lineJoin = 'bevel';\n }\n if (arc.fullCircles) {\n drawFullCircleBorders(ctx, vm, arc, inner);\n }\n if (inner) {\n clipArc(ctx, arc);\n }\n ctx.beginPath();\n ctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.endAngle);\n ctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\n ctx.closePath();\n ctx.stroke();\n }\n var element_arc = core_element.extend({\n _type: 'arc',\n inLabelRange: function (mouseX) {\n var vm = this._view;\n if (vm) {\n return Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2);\n }\n return false;\n },\n inRange: function (chartX, chartY) {\n var vm = this._view;\n if (vm) {\n var pointRelativePosition = helpers$1.getAngleFromPoint(vm, {\n x: chartX,\n y: chartY\n });\n var angle = pointRelativePosition.angle;\n var distance = pointRelativePosition.distance;\n\n // Sanitise angle range\n var startAngle = vm.startAngle;\n var endAngle = vm.endAngle;\n while (endAngle < startAngle) {\n endAngle += TAU;\n }\n while (angle > endAngle) {\n angle -= TAU;\n }\n while (angle < startAngle) {\n angle += TAU;\n }\n\n // Check if within the range of the open/close angle\n var betweenAngles = angle >= startAngle && angle <= endAngle;\n var withinRadius = distance >= vm.innerRadius && distance <= vm.outerRadius;\n return betweenAngles && withinRadius;\n }\n return false;\n },\n getCenterPoint: function () {\n var vm = this._view;\n var halfAngle = (vm.startAngle + vm.endAngle) / 2;\n var halfRadius = (vm.innerRadius + vm.outerRadius) / 2;\n return {\n x: vm.x + Math.cos(halfAngle) * halfRadius,\n y: vm.y + Math.sin(halfAngle) * halfRadius\n };\n },\n getArea: function () {\n var vm = this._view;\n return Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2));\n },\n tooltipPosition: function () {\n var vm = this._view;\n var centreAngle = vm.startAngle + (vm.endAngle - vm.startAngle) / 2;\n var rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius;\n return {\n x: vm.x + Math.cos(centreAngle) * rangeFromCentre,\n y: vm.y + Math.sin(centreAngle) * rangeFromCentre\n };\n },\n draw: function () {\n var ctx = this._chart.ctx;\n var vm = this._view;\n var pixelMargin = vm.borderAlign === 'inner' ? 0.33 : 0;\n var arc = {\n x: vm.x,\n y: vm.y,\n innerRadius: vm.innerRadius,\n outerRadius: Math.max(vm.outerRadius - pixelMargin, 0),\n pixelMargin: pixelMargin,\n startAngle: vm.startAngle,\n endAngle: vm.endAngle,\n fullCircles: Math.floor(vm.circumference / TAU)\n };\n var i;\n ctx.save();\n ctx.fillStyle = vm.backgroundColor;\n ctx.strokeStyle = vm.borderColor;\n if (arc.fullCircles) {\n arc.endAngle = arc.startAngle + TAU;\n ctx.beginPath();\n ctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle);\n ctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\n ctx.closePath();\n for (i = 0; i < arc.fullCircles; ++i) {\n ctx.fill();\n }\n arc.endAngle = arc.startAngle + vm.circumference % TAU;\n }\n ctx.beginPath();\n ctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle);\n ctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\n ctx.closePath();\n ctx.fill();\n if (vm.borderWidth) {\n drawBorder(ctx, vm, arc);\n }\n ctx.restore();\n }\n });\n var valueOrDefault$1 = helpers$1.valueOrDefault;\n var defaultColor = core_defaults.global.defaultColor;\n core_defaults._set('global', {\n elements: {\n line: {\n tension: 0.4,\n backgroundColor: defaultColor,\n borderWidth: 3,\n borderColor: defaultColor,\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0.0,\n borderJoinStyle: 'miter',\n capBezierPoints: true,\n fill: true // do we fill in the area between the line and its base axis\n }\n }\n });\n\n var element_line = core_element.extend({\n _type: 'line',\n draw: function () {\n var me = this;\n var vm = me._view;\n var ctx = me._chart.ctx;\n var spanGaps = vm.spanGaps;\n var points = me._children.slice(); // clone array\n var globalDefaults = core_defaults.global;\n var globalOptionLineElements = globalDefaults.elements.line;\n var lastDrawnIndex = -1;\n var closePath = me._loop;\n var index, previous, currentVM;\n if (!points.length) {\n return;\n }\n if (me._loop) {\n for (index = 0; index < points.length; ++index) {\n previous = helpers$1.previousItem(points, index);\n // If the line has an open path, shift the point array\n if (!points[index]._view.skip && previous._view.skip) {\n points = points.slice(index).concat(points.slice(0, index));\n closePath = spanGaps;\n break;\n }\n }\n // If the line has a close path, add the first point again\n if (closePath) {\n points.push(points[0]);\n }\n }\n ctx.save();\n\n // Stroke Line Options\n ctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle;\n\n // IE 9 and 10 do not support line dash\n if (ctx.setLineDash) {\n ctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash);\n }\n ctx.lineDashOffset = valueOrDefault$1(vm.borderDashOffset, globalOptionLineElements.borderDashOffset);\n ctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\n ctx.lineWidth = valueOrDefault$1(vm.borderWidth, globalOptionLineElements.borderWidth);\n ctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor;\n\n // Stroke Line\n ctx.beginPath();\n\n // First point moves to it's starting position no matter what\n currentVM = points[0]._view;\n if (!currentVM.skip) {\n ctx.moveTo(currentVM.x, currentVM.y);\n lastDrawnIndex = 0;\n }\n for (index = 1; index < points.length; ++index) {\n currentVM = points[index]._view;\n previous = lastDrawnIndex === -1 ? helpers$1.previousItem(points, index) : points[lastDrawnIndex];\n if (!currentVM.skip) {\n if (lastDrawnIndex !== index - 1 && !spanGaps || lastDrawnIndex === -1) {\n // There was a gap and this is the first point after the gap\n ctx.moveTo(currentVM.x, currentVM.y);\n } else {\n // Line to next point\n helpers$1.canvas.lineTo(ctx, previous._view, currentVM);\n }\n lastDrawnIndex = index;\n }\n }\n if (closePath) {\n ctx.closePath();\n }\n ctx.stroke();\n ctx.restore();\n }\n });\n var valueOrDefault$2 = helpers$1.valueOrDefault;\n var defaultColor$1 = core_defaults.global.defaultColor;\n core_defaults._set('global', {\n elements: {\n point: {\n radius: 3,\n pointStyle: 'circle',\n backgroundColor: defaultColor$1,\n borderColor: defaultColor$1,\n borderWidth: 1,\n // Hover\n hitRadius: 1,\n hoverRadius: 4,\n hoverBorderWidth: 1\n }\n }\n });\n function xRange(mouseX) {\n var vm = this._view;\n return vm ? Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius : false;\n }\n function yRange(mouseY) {\n var vm = this._view;\n return vm ? Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius : false;\n }\n var element_point = core_element.extend({\n _type: 'point',\n inRange: function (mouseX, mouseY) {\n var vm = this._view;\n return vm ? Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2) < Math.pow(vm.hitRadius + vm.radius, 2) : false;\n },\n inLabelRange: xRange,\n inXRange: xRange,\n inYRange: yRange,\n getCenterPoint: function () {\n var vm = this._view;\n return {\n x: vm.x,\n y: vm.y\n };\n },\n getArea: function () {\n return Math.PI * Math.pow(this._view.radius, 2);\n },\n tooltipPosition: function () {\n var vm = this._view;\n return {\n x: vm.x,\n y: vm.y,\n padding: vm.radius + vm.borderWidth\n };\n },\n draw: function (chartArea) {\n var vm = this._view;\n var ctx = this._chart.ctx;\n var pointStyle = vm.pointStyle;\n var rotation = vm.rotation;\n var radius = vm.radius;\n var x = vm.x;\n var y = vm.y;\n var globalDefaults = core_defaults.global;\n var defaultColor = globalDefaults.defaultColor; // eslint-disable-line no-shadow\n\n if (vm.skip) {\n return;\n }\n\n // Clipping for Points.\n if (chartArea === undefined || helpers$1.canvas._isPointInArea(vm, chartArea)) {\n ctx.strokeStyle = vm.borderColor || defaultColor;\n ctx.lineWidth = valueOrDefault$2(vm.borderWidth, globalDefaults.elements.point.borderWidth);\n ctx.fillStyle = vm.backgroundColor || defaultColor;\n helpers$1.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation);\n }\n }\n });\n var defaultColor$2 = core_defaults.global.defaultColor;\n core_defaults._set('global', {\n elements: {\n rectangle: {\n backgroundColor: defaultColor$2,\n borderColor: defaultColor$2,\n borderSkipped: 'bottom',\n borderWidth: 0\n }\n }\n });\n function isVertical(vm) {\n return vm && vm.width !== undefined;\n }\n\n /**\r\n * Helper function to get the bounds of the bar regardless of the orientation\r\n * @param bar {Chart.Element.Rectangle} the bar\r\n * @return {Bounds} bounds of the bar\r\n * @private\r\n */\n function getBarBounds(vm) {\n var x1, x2, y1, y2, half;\n if (isVertical(vm)) {\n half = vm.width / 2;\n x1 = vm.x - half;\n x2 = vm.x + half;\n y1 = Math.min(vm.y, vm.base);\n y2 = Math.max(vm.y, vm.base);\n } else {\n half = vm.height / 2;\n x1 = Math.min(vm.x, vm.base);\n x2 = Math.max(vm.x, vm.base);\n y1 = vm.y - half;\n y2 = vm.y + half;\n }\n return {\n left: x1,\n top: y1,\n right: x2,\n bottom: y2\n };\n }\n function swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n }\n function parseBorderSkipped(vm) {\n var edge = vm.borderSkipped;\n var res = {};\n if (!edge) {\n return res;\n }\n if (vm.horizontal) {\n if (vm.base > vm.x) {\n edge = swap(edge, 'left', 'right');\n }\n } else if (vm.base < vm.y) {\n edge = swap(edge, 'bottom', 'top');\n }\n res[edge] = true;\n return res;\n }\n function parseBorderWidth(vm, maxW, maxH) {\n var value = vm.borderWidth;\n var skip = parseBorderSkipped(vm);\n var t, r, b, l;\n if (helpers$1.isObject(value)) {\n t = +value.top || 0;\n r = +value.right || 0;\n b = +value.bottom || 0;\n l = +value.left || 0;\n } else {\n t = r = b = l = +value || 0;\n }\n return {\n t: skip.top || t < 0 ? 0 : t > maxH ? maxH : t,\n r: skip.right || r < 0 ? 0 : r > maxW ? maxW : r,\n b: skip.bottom || b < 0 ? 0 : b > maxH ? maxH : b,\n l: skip.left || l < 0 ? 0 : l > maxW ? maxW : l\n };\n }\n function boundingRects(vm) {\n var bounds = getBarBounds(vm);\n var width = bounds.right - bounds.left;\n var height = bounds.bottom - bounds.top;\n var border = parseBorderWidth(vm, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b\n }\n };\n }\n function inRange(vm, x, y) {\n var skipX = x === null;\n var skipY = y === null;\n var bounds = !vm || skipX && skipY ? false : getBarBounds(vm);\n return bounds && (skipX || x >= bounds.left && x <= bounds.right) && (skipY || y >= bounds.top && y <= bounds.bottom);\n }\n var element_rectangle = core_element.extend({\n _type: 'rectangle',\n draw: function () {\n var ctx = this._chart.ctx;\n var vm = this._view;\n var rects = boundingRects(vm);\n var outer = rects.outer;\n var inner = rects.inner;\n ctx.fillStyle = vm.backgroundColor;\n ctx.fillRect(outer.x, outer.y, outer.w, outer.h);\n if (outer.w === inner.w && outer.h === inner.h) {\n return;\n }\n ctx.save();\n ctx.beginPath();\n ctx.rect(outer.x, outer.y, outer.w, outer.h);\n ctx.clip();\n ctx.fillStyle = vm.borderColor;\n ctx.rect(inner.x, inner.y, inner.w, inner.h);\n ctx.fill('evenodd');\n ctx.restore();\n },\n height: function () {\n var vm = this._view;\n return vm.base - vm.y;\n },\n inRange: function (mouseX, mouseY) {\n return inRange(this._view, mouseX, mouseY);\n },\n inLabelRange: function (mouseX, mouseY) {\n var vm = this._view;\n return isVertical(vm) ? inRange(vm, mouseX, null) : inRange(vm, null, mouseY);\n },\n inXRange: function (mouseX) {\n return inRange(this._view, mouseX, null);\n },\n inYRange: function (mouseY) {\n return inRange(this._view, null, mouseY);\n },\n getCenterPoint: function () {\n var vm = this._view;\n var x, y;\n if (isVertical(vm)) {\n x = vm.x;\n y = (vm.y + vm.base) / 2;\n } else {\n x = (vm.x + vm.base) / 2;\n y = vm.y;\n }\n return {\n x: x,\n y: y\n };\n },\n getArea: function () {\n var vm = this._view;\n return isVertical(vm) ? vm.width * Math.abs(vm.y - vm.base) : vm.height * Math.abs(vm.x - vm.base);\n },\n tooltipPosition: function () {\n var vm = this._view;\n return {\n x: vm.x,\n y: vm.y\n };\n }\n });\n var elements = {};\n var Arc = element_arc;\n var Line = element_line;\n var Point = element_point;\n var Rectangle = element_rectangle;\n elements.Arc = Arc;\n elements.Line = Line;\n elements.Point = Point;\n elements.Rectangle = Rectangle;\n var deprecated = helpers$1._deprecated;\n var valueOrDefault$3 = helpers$1.valueOrDefault;\n core_defaults._set('bar', {\n hover: {\n mode: 'label'\n },\n scales: {\n xAxes: [{\n type: 'category',\n offset: true,\n gridLines: {\n offsetGridLines: true\n }\n }],\n yAxes: [{\n type: 'linear'\n }]\n }\n });\n core_defaults._set('global', {\n datasets: {\n bar: {\n categoryPercentage: 0.8,\n barPercentage: 0.9\n }\n }\n });\n\n /**\r\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\r\n * @private\r\n */\n function computeMinSampleSize(scale, pixels) {\n var min = scale._length;\n var prev, curr, i, ilen;\n for (i = 1, ilen = pixels.length; i < ilen; ++i) {\n min = Math.min(min, Math.abs(pixels[i] - pixels[i - 1]));\n }\n for (i = 0, ilen = scale.getTicks().length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n min = i > 0 ? Math.min(min, Math.abs(curr - prev)) : min;\n prev = curr;\n }\n return min;\n }\n\n /**\r\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\r\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\r\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\r\n * @private\r\n */\n function computeFitCategoryTraits(index, ruler, options) {\n var thickness = options.barThickness;\n var count = ruler.stackCount;\n var curr = ruler.pixels[index];\n var min = helpers$1.isNullOrUndef(thickness) ? computeMinSampleSize(ruler.scale, ruler.pixels) : -1;\n var size, ratio;\n if (helpers$1.isNullOrUndef(thickness)) {\n size = min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n // When bar thickness is enforced, category and bar percentages are ignored.\n // Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\n // and deprecate barPercentage since this value is ignored when thickness is absolute.\n size = thickness * count;\n ratio = 1;\n }\n return {\n chunk: size / count,\n ratio: ratio,\n start: curr - size / 2\n };\n }\n\n /**\r\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\r\n * percentage options are 1), based on the previous and following categories. This mode\r\n * generates bars with different widths when data are not evenly spaced.\r\n * @private\r\n */\n function computeFlexCategoryTraits(index, ruler, options) {\n var pixels = ruler.pixels;\n var curr = pixels[index];\n var prev = index > 0 ? pixels[index - 1] : null;\n var next = index < pixels.length - 1 ? pixels[index + 1] : null;\n var percent = options.categoryPercentage;\n var start, size;\n if (prev === null) {\n // first data: its size is double based on the next point or,\n // if it's also the last data, we use the scale size.\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n // last data: its size is also double based on the previous point.\n next = curr + curr - prev;\n }\n start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / ruler.stackCount,\n ratio: options.barPercentage,\n start: start\n };\n }\n var controller_bar = core_datasetController.extend({\n dataElementType: elements.Rectangle,\n /**\r\n * @private\r\n */\n _dataElementOptions: ['backgroundColor', 'borderColor', 'borderSkipped', 'borderWidth', 'barPercentage', 'barThickness', 'categoryPercentage', 'maxBarThickness', 'minBarLength'],\n initialize: function () {\n var me = this;\n var meta, scaleOpts;\n core_datasetController.prototype.initialize.apply(me, arguments);\n meta = me.getMeta();\n meta.stack = me.getDataset().stack;\n meta.bar = true;\n scaleOpts = me._getIndexScale().options;\n deprecated('bar chart', scaleOpts.barPercentage, 'scales.[x/y]Axes.barPercentage', 'dataset.barPercentage');\n deprecated('bar chart', scaleOpts.barThickness, 'scales.[x/y]Axes.barThickness', 'dataset.barThickness');\n deprecated('bar chart', scaleOpts.categoryPercentage, 'scales.[x/y]Axes.categoryPercentage', 'dataset.categoryPercentage');\n deprecated('bar chart', me._getValueScale().options.minBarLength, 'scales.[x/y]Axes.minBarLength', 'dataset.minBarLength');\n deprecated('bar chart', scaleOpts.maxBarThickness, 'scales.[x/y]Axes.maxBarThickness', 'dataset.maxBarThickness');\n },\n update: function (reset) {\n var me = this;\n var rects = me.getMeta().data;\n var i, ilen;\n me._ruler = me.getRuler();\n for (i = 0, ilen = rects.length; i < ilen; ++i) {\n me.updateElement(rects[i], i, reset);\n }\n },\n updateElement: function (rectangle, index, reset) {\n var me = this;\n var meta = me.getMeta();\n var dataset = me.getDataset();\n var options = me._resolveDataElementOptions(rectangle, index);\n rectangle._xScale = me.getScaleForId(meta.xAxisID);\n rectangle._yScale = me.getScaleForId(meta.yAxisID);\n rectangle._datasetIndex = me.index;\n rectangle._index = index;\n rectangle._model = {\n backgroundColor: options.backgroundColor,\n borderColor: options.borderColor,\n borderSkipped: options.borderSkipped,\n borderWidth: options.borderWidth,\n datasetLabel: dataset.label,\n label: me.chart.data.labels[index]\n };\n if (helpers$1.isArray(dataset.data[index])) {\n rectangle._model.borderSkipped = null;\n }\n me._updateElementGeometry(rectangle, index, reset, options);\n rectangle.pivot();\n },\n /**\r\n * @private\r\n */\n _updateElementGeometry: function (rectangle, index, reset, options) {\n var me = this;\n var model = rectangle._model;\n var vscale = me._getValueScale();\n var base = vscale.getBasePixel();\n var horizontal = vscale.isHorizontal();\n var ruler = me._ruler || me.getRuler();\n var vpixels = me.calculateBarValuePixels(me.index, index, options);\n var ipixels = me.calculateBarIndexPixels(me.index, index, ruler, options);\n model.horizontal = horizontal;\n model.base = reset ? base : vpixels.base;\n model.x = horizontal ? reset ? base : vpixels.head : ipixels.center;\n model.y = horizontal ? ipixels.center : reset ? base : vpixels.head;\n model.height = horizontal ? ipixels.size : undefined;\n model.width = horizontal ? undefined : ipixels.size;\n },\n /**\r\n * Returns the stacks based on groups and bar visibility.\r\n * @param {number} [last] - The dataset index\r\n * @returns {string[]} The list of stack IDs\r\n * @private\r\n */\n _getStacks: function (last) {\n var me = this;\n var scale = me._getIndexScale();\n var metasets = scale._getMatchingVisibleMetas(me._type);\n var stacked = scale.options.stacked;\n var ilen = metasets.length;\n var stacks = [];\n var i, meta;\n for (i = 0; i < ilen; ++i) {\n meta = metasets[i];\n // stacked | meta.stack\n // | found | not found | undefined\n // false | x | x | x\n // true | | x |\n // undefined | | x | x\n if (stacked === false || stacks.indexOf(meta.stack) === -1 || stacked === undefined && meta.stack === undefined) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n return stacks;\n },\n /**\r\n * Returns the effective number of stacks based on groups and bar visibility.\r\n * @private\r\n */\n getStackCount: function () {\n return this._getStacks().length;\n },\n /**\r\n * Returns the stack index for the given dataset based on groups and bar visibility.\r\n * @param {number} [datasetIndex] - The dataset index\r\n * @param {string} [name] - The stack name to find\r\n * @returns {number} The stack index\r\n * @private\r\n */\n getStackIndex: function (datasetIndex, name) {\n var stacks = this._getStacks(datasetIndex);\n var index = name !== undefined ? stacks.indexOf(name) : -1; // indexOf returns -1 if element is not present\n\n return index === -1 ? stacks.length - 1 : index;\n },\n /**\r\n * @private\r\n */\n getRuler: function () {\n var me = this;\n var scale = me._getIndexScale();\n var pixels = [];\n var i, ilen;\n for (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {\n pixels.push(scale.getPixelForValue(null, i, me.index));\n }\n return {\n pixels: pixels,\n start: scale._startPixel,\n end: scale._endPixel,\n stackCount: me.getStackCount(),\n scale: scale\n };\n },\n /**\r\n * Note: pixel values are not clamped to the scale area.\r\n * @private\r\n */\n calculateBarValuePixels: function (datasetIndex, index, options) {\n var me = this;\n var chart = me.chart;\n var scale = me._getValueScale();\n var isHorizontal = scale.isHorizontal();\n var datasets = chart.data.datasets;\n var metasets = scale._getMatchingVisibleMetas(me._type);\n var value = scale._parseValue(datasets[datasetIndex].data[index]);\n var minBarLength = options.minBarLength;\n var stacked = scale.options.stacked;\n var stack = me.getMeta().stack;\n var start = value.start === undefined ? 0 : value.max >= 0 && value.min >= 0 ? value.min : value.max;\n var length = value.start === undefined ? value.end : value.max >= 0 && value.min >= 0 ? value.max - value.min : value.min - value.max;\n var ilen = metasets.length;\n var i, imeta, ivalue, base, head, size, stackLength;\n if (stacked || stacked === undefined && stack !== undefined) {\n for (i = 0; i < ilen; ++i) {\n imeta = metasets[i];\n if (imeta.index === datasetIndex) {\n break;\n }\n if (imeta.stack === stack) {\n stackLength = scale._parseValue(datasets[imeta.index].data[index]);\n ivalue = stackLength.start === undefined ? stackLength.end : stackLength.min >= 0 && stackLength.max >= 0 ? stackLength.max : stackLength.min;\n if (value.min < 0 && ivalue < 0 || value.max >= 0 && ivalue > 0) {\n start += ivalue;\n }\n }\n }\n }\n base = scale.getPixelForValue(start);\n head = scale.getPixelForValue(start + length);\n size = head - base;\n if (minBarLength !== undefined && Math.abs(size) < minBarLength) {\n size = minBarLength;\n if (length >= 0 && !isHorizontal || length < 0 && isHorizontal) {\n head = base - minBarLength;\n } else {\n head = base + minBarLength;\n }\n }\n return {\n size: size,\n base: base,\n head: head,\n center: head + size / 2\n };\n },\n /**\r\n * @private\r\n */\n calculateBarIndexPixels: function (datasetIndex, index, ruler, options) {\n var me = this;\n var range = options.barThickness === 'flex' ? computeFlexCategoryTraits(index, ruler, options) : computeFitCategoryTraits(index, ruler, options);\n var stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack);\n var center = range.start + range.chunk * stackIndex + range.chunk / 2;\n var size = Math.min(valueOrDefault$3(options.maxBarThickness, Infinity), range.chunk * range.ratio);\n return {\n base: center - size / 2,\n head: center + size / 2,\n center: center,\n size: size\n };\n },\n draw: function () {\n var me = this;\n var chart = me.chart;\n var scale = me._getValueScale();\n var rects = me.getMeta().data;\n var dataset = me.getDataset();\n var ilen = rects.length;\n var i = 0;\n helpers$1.canvas.clipArea(chart.ctx, chart.chartArea);\n for (; i < ilen; ++i) {\n var val = scale._parseValue(dataset.data[i]);\n if (!isNaN(val.min) && !isNaN(val.max)) {\n rects[i].draw();\n }\n }\n helpers$1.canvas.unclipArea(chart.ctx);\n },\n /**\r\n * @private\r\n */\n _resolveDataElementOptions: function () {\n var me = this;\n var values = helpers$1.extend({}, core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments));\n var indexOpts = me._getIndexScale().options;\n var valueOpts = me._getValueScale().options;\n values.barPercentage = valueOrDefault$3(indexOpts.barPercentage, values.barPercentage);\n values.barThickness = valueOrDefault$3(indexOpts.barThickness, values.barThickness);\n values.categoryPercentage = valueOrDefault$3(indexOpts.categoryPercentage, values.categoryPercentage);\n values.maxBarThickness = valueOrDefault$3(indexOpts.maxBarThickness, values.maxBarThickness);\n values.minBarLength = valueOrDefault$3(valueOpts.minBarLength, values.minBarLength);\n return values;\n }\n });\n var valueOrDefault$4 = helpers$1.valueOrDefault;\n var resolve$1 = helpers$1.options.resolve;\n core_defaults._set('bubble', {\n hover: {\n mode: 'single'\n },\n scales: {\n xAxes: [{\n type: 'linear',\n // bubble should probably use a linear scale by default\n position: 'bottom',\n id: 'x-axis-0' // need an ID so datasets can reference the scale\n }],\n\n yAxes: [{\n type: 'linear',\n position: 'left',\n id: 'y-axis-0'\n }]\n },\n tooltips: {\n callbacks: {\n title: function () {\n // Title doesn't make sense for scatter since we format the data as a point\n return '';\n },\n label: function (item, data) {\n var datasetLabel = data.datasets[item.datasetIndex].label || '';\n var dataPoint = data.datasets[item.datasetIndex].data[item.index];\n return datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')';\n }\n }\n }\n });\n var controller_bubble = core_datasetController.extend({\n /**\r\n * @protected\r\n */\n dataElementType: elements.Point,\n /**\r\n * @private\r\n */\n _dataElementOptions: ['backgroundColor', 'borderColor', 'borderWidth', 'hoverBackgroundColor', 'hoverBorderColor', 'hoverBorderWidth', 'hoverRadius', 'hitRadius', 'pointStyle', 'rotation'],\n /**\r\n * @protected\r\n */\n update: function (reset) {\n var me = this;\n var meta = me.getMeta();\n var points = meta.data;\n\n // Update Points\n helpers$1.each(points, function (point, index) {\n me.updateElement(point, index, reset);\n });\n },\n /**\r\n * @protected\r\n */\n updateElement: function (point, index, reset) {\n var me = this;\n var meta = me.getMeta();\n var custom = point.custom || {};\n var xScale = me.getScaleForId(meta.xAxisID);\n var yScale = me.getScaleForId(meta.yAxisID);\n var options = me._resolveDataElementOptions(point, index);\n var data = me.getDataset().data[index];\n var dsIndex = me.index;\n var x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex);\n var y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex);\n point._xScale = xScale;\n point._yScale = yScale;\n point._options = options;\n point._datasetIndex = dsIndex;\n point._index = index;\n point._model = {\n backgroundColor: options.backgroundColor,\n borderColor: options.borderColor,\n borderWidth: options.borderWidth,\n hitRadius: options.hitRadius,\n pointStyle: options.pointStyle,\n rotation: options.rotation,\n radius: reset ? 0 : options.radius,\n skip: custom.skip || isNaN(x) || isNaN(y),\n x: x,\n y: y\n };\n point.pivot();\n },\n /**\r\n * @protected\r\n */\n setHoverStyle: function (point) {\n var model = point._model;\n var options = point._options;\n var getHoverColor = helpers$1.getHoverColor;\n point.$previousStyle = {\n backgroundColor: model.backgroundColor,\n borderColor: model.borderColor,\n borderWidth: model.borderWidth,\n radius: model.radius\n };\n model.backgroundColor = valueOrDefault$4(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n model.borderColor = valueOrDefault$4(options.hoverBorderColor, getHoverColor(options.borderColor));\n model.borderWidth = valueOrDefault$4(options.hoverBorderWidth, options.borderWidth);\n model.radius = options.radius + options.hoverRadius;\n },\n /**\r\n * @private\r\n */\n _resolveDataElementOptions: function (point, index) {\n var me = this;\n var chart = me.chart;\n var dataset = me.getDataset();\n var custom = point.custom || {};\n var data = dataset.data[index] || {};\n var values = core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments);\n\n // Scriptable options\n var context = {\n chart: chart,\n dataIndex: index,\n dataset: dataset,\n datasetIndex: me.index\n };\n\n // In case values were cached (and thus frozen), we need to clone the values\n if (me._cachedDataOpts === values) {\n values = helpers$1.extend({}, values);\n }\n\n // Custom radius resolution\n values.radius = resolve$1([custom.radius, data.r, me._config.radius, chart.options.elements.point.radius], context, index);\n return values;\n }\n });\n var valueOrDefault$5 = helpers$1.valueOrDefault;\n var PI$1 = Math.PI;\n var DOUBLE_PI$1 = PI$1 * 2;\n var HALF_PI$1 = PI$1 / 2;\n core_defaults._set('doughnut', {\n animation: {\n // Boolean - Whether we animate the rotation of the Doughnut\n animateRotate: true,\n // Boolean - Whether we animate scaling the Doughnut from the centre\n animateScale: false\n },\n hover: {\n mode: 'single'\n },\n legendCallback: function (chart) {\n var list = document.createElement('ul');\n var data = chart.data;\n var datasets = data.datasets;\n var labels = data.labels;\n var i, ilen, listItem, listItemSpan;\n list.setAttribute('class', chart.id + '-legend');\n if (datasets.length) {\n for (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) {\n listItem = list.appendChild(document.createElement('li'));\n listItemSpan = listItem.appendChild(document.createElement('span'));\n listItemSpan.style.backgroundColor = datasets[0].backgroundColor[i];\n if (labels[i]) {\n listItem.appendChild(document.createTextNode(labels[i]));\n }\n }\n }\n return list.outerHTML;\n },\n legend: {\n labels: {\n generateLabels: function (chart) {\n var data = chart.data;\n if (data.labels.length && data.datasets.length) {\n return data.labels.map(function (label, i) {\n var meta = chart.getDatasetMeta(0);\n var style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n hidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden,\n // Extra data used for toggling the correct item\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick: function (e, legendItem) {\n var index = legendItem.index;\n var chart = this.chart;\n var i, ilen, meta;\n for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n meta = chart.getDatasetMeta(i);\n // toggle visibility of index if exists\n if (meta.data[index]) {\n meta.data[index].hidden = !meta.data[index].hidden;\n }\n }\n chart.update();\n }\n },\n // The percentage of the chart that we cut out of the middle.\n cutoutPercentage: 50,\n // The rotation of the chart, where the first data arc begins.\n rotation: -HALF_PI$1,\n // The total circumference of the chart.\n circumference: DOUBLE_PI$1,\n // Need to override these to give a nice default\n tooltips: {\n callbacks: {\n title: function () {\n return '';\n },\n label: function (tooltipItem, data) {\n var dataLabel = data.labels[tooltipItem.index];\n var value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\n if (helpers$1.isArray(dataLabel)) {\n // show value on first line of multiline label\n // need to clone because we are changing the value\n dataLabel = dataLabel.slice();\n dataLabel[0] += value;\n } else {\n dataLabel += value;\n }\n return dataLabel;\n }\n }\n }\n });\n var controller_doughnut = core_datasetController.extend({\n dataElementType: elements.Arc,\n linkScales: helpers$1.noop,\n /**\r\n * @private\r\n */\n _dataElementOptions: ['backgroundColor', 'borderColor', 'borderWidth', 'borderAlign', 'hoverBackgroundColor', 'hoverBorderColor', 'hoverBorderWidth'],\n // Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\n getRingIndex: function (datasetIndex) {\n var ringIndex = 0;\n for (var j = 0; j < datasetIndex; ++j) {\n if (this.chart.isDatasetVisible(j)) {\n ++ringIndex;\n }\n }\n return ringIndex;\n },\n update: function (reset) {\n var me = this;\n var chart = me.chart;\n var chartArea = chart.chartArea;\n var opts = chart.options;\n var ratioX = 1;\n var ratioY = 1;\n var offsetX = 0;\n var offsetY = 0;\n var meta = me.getMeta();\n var arcs = meta.data;\n var cutout = opts.cutoutPercentage / 100 || 0;\n var circumference = opts.circumference;\n var chartWeight = me._getRingWeight(me.index);\n var maxWidth, maxHeight, i, ilen;\n\n // If the chart's circumference isn't a full circle, calculate size as a ratio of the width/height of the arc\n if (circumference < DOUBLE_PI$1) {\n var startAngle = opts.rotation % DOUBLE_PI$1;\n startAngle += startAngle >= PI$1 ? -DOUBLE_PI$1 : startAngle < -PI$1 ? DOUBLE_PI$1 : 0;\n var endAngle = startAngle + circumference;\n var startX = Math.cos(startAngle);\n var startY = Math.sin(startAngle);\n var endX = Math.cos(endAngle);\n var endY = Math.sin(endAngle);\n var contains0 = startAngle <= 0 && endAngle >= 0 || endAngle >= DOUBLE_PI$1;\n var contains90 = startAngle <= HALF_PI$1 && endAngle >= HALF_PI$1 || endAngle >= DOUBLE_PI$1 + HALF_PI$1;\n var contains180 = startAngle === -PI$1 || endAngle >= PI$1;\n var contains270 = startAngle <= -HALF_PI$1 && endAngle >= -HALF_PI$1 || endAngle >= PI$1 + HALF_PI$1;\n var minX = contains180 ? -1 : Math.min(startX, startX * cutout, endX, endX * cutout);\n var minY = contains270 ? -1 : Math.min(startY, startY * cutout, endY, endY * cutout);\n var maxX = contains0 ? 1 : Math.max(startX, startX * cutout, endX, endX * cutout);\n var maxY = contains90 ? 1 : Math.max(startY, startY * cutout, endY, endY * cutout);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n arcs[i]._options = me._resolveDataElementOptions(arcs[i], i);\n }\n chart.borderWidth = me.getMaxBorderWidth();\n maxWidth = (chartArea.right - chartArea.left - chart.borderWidth) / ratioX;\n maxHeight = (chartArea.bottom - chartArea.top - chart.borderWidth) / ratioY;\n chart.outerRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n chart.innerRadius = Math.max(chart.outerRadius * cutout, 0);\n chart.radiusLength = (chart.outerRadius - chart.innerRadius) / (me._getVisibleDatasetWeightTotal() || 1);\n chart.offsetX = offsetX * chart.outerRadius;\n chart.offsetY = offsetY * chart.outerRadius;\n meta.total = me.calculateTotal();\n me.outerRadius = chart.outerRadius - chart.radiusLength * me._getRingWeightOffset(me.index);\n me.innerRadius = Math.max(me.outerRadius - chart.radiusLength * chartWeight, 0);\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n me.updateElement(arcs[i], i, reset);\n }\n },\n updateElement: function (arc, index, reset) {\n var me = this;\n var chart = me.chart;\n var chartArea = chart.chartArea;\n var opts = chart.options;\n var animationOpts = opts.animation;\n var centerX = (chartArea.left + chartArea.right) / 2;\n var centerY = (chartArea.top + chartArea.bottom) / 2;\n var startAngle = opts.rotation; // non reset case handled later\n var endAngle = opts.rotation; // non reset case handled later\n var dataset = me.getDataset();\n var circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / DOUBLE_PI$1);\n var innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;\n var outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;\n var options = arc._options || {};\n helpers$1.extend(arc, {\n // Utility\n _datasetIndex: me.index,\n _index: index,\n // Desired view properties\n _model: {\n backgroundColor: options.backgroundColor,\n borderColor: options.borderColor,\n borderWidth: options.borderWidth,\n borderAlign: options.borderAlign,\n x: centerX + chart.offsetX,\n y: centerY + chart.offsetY,\n startAngle: startAngle,\n endAngle: endAngle,\n circumference: circumference,\n outerRadius: outerRadius,\n innerRadius: innerRadius,\n label: helpers$1.valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\n }\n });\n var model = arc._model;\n\n // Set correct angles if not resetting\n if (!reset || !animationOpts.animateRotate) {\n if (index === 0) {\n model.startAngle = opts.rotation;\n } else {\n model.startAngle = me.getMeta().data[index - 1]._model.endAngle;\n }\n model.endAngle = model.startAngle + model.circumference;\n }\n arc.pivot();\n },\n calculateTotal: function () {\n var dataset = this.getDataset();\n var meta = this.getMeta();\n var total = 0;\n var value;\n helpers$1.each(meta.data, function (element, index) {\n value = dataset.data[index];\n if (!isNaN(value) && !element.hidden) {\n total += Math.abs(value);\n }\n });\n\n /* if (total === 0) {\r\n \ttotal = NaN;\r\n }*/\n\n return total;\n },\n calculateCircumference: function (value) {\n var total = this.getMeta().total;\n if (total > 0 && !isNaN(value)) {\n return DOUBLE_PI$1 * (Math.abs(value) / total);\n }\n return 0;\n },\n // gets the max border or hover width to properly scale pie charts\n getMaxBorderWidth: function (arcs) {\n var me = this;\n var max = 0;\n var chart = me.chart;\n var i, ilen, meta, arc, controller, options, borderWidth, hoverWidth;\n if (!arcs) {\n // Find the outmost visible dataset\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n if (i !== me.index) {\n controller = meta.controller;\n }\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n arc = arcs[i];\n if (controller) {\n controller._configure();\n options = controller._resolveDataElementOptions(arc, i);\n } else {\n options = arc._options;\n }\n if (options.borderAlign !== 'inner') {\n borderWidth = options.borderWidth;\n hoverWidth = options.hoverBorderWidth;\n max = borderWidth > max ? borderWidth : max;\n max = hoverWidth > max ? hoverWidth : max;\n }\n }\n return max;\n },\n /**\r\n * @protected\r\n */\n setHoverStyle: function (arc) {\n var model = arc._model;\n var options = arc._options;\n var getHoverColor = helpers$1.getHoverColor;\n arc.$previousStyle = {\n backgroundColor: model.backgroundColor,\n borderColor: model.borderColor,\n borderWidth: model.borderWidth\n };\n model.backgroundColor = valueOrDefault$5(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n model.borderColor = valueOrDefault$5(options.hoverBorderColor, getHoverColor(options.borderColor));\n model.borderWidth = valueOrDefault$5(options.hoverBorderWidth, options.borderWidth);\n },\n /**\r\n * Get radius length offset of the dataset in relation to the visible datasets weights. This allows determining the inner and outer radius correctly\r\n * @private\r\n */\n _getRingWeightOffset: function (datasetIndex) {\n var ringWeightOffset = 0;\n for (var i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n },\n /**\r\n * @private\r\n */\n _getRingWeight: function (dataSetIndex) {\n return Math.max(valueOrDefault$5(this.chart.data.datasets[dataSetIndex].weight, 1), 0);\n },\n /**\r\n * Returns the sum of all visibile data set weights. This value can be 0.\r\n * @private\r\n */\n _getVisibleDatasetWeightTotal: function () {\n return this._getRingWeightOffset(this.chart.data.datasets.length);\n }\n });\n core_defaults._set('horizontalBar', {\n hover: {\n mode: 'index',\n axis: 'y'\n },\n scales: {\n xAxes: [{\n type: 'linear',\n position: 'bottom'\n }],\n yAxes: [{\n type: 'category',\n position: 'left',\n offset: true,\n gridLines: {\n offsetGridLines: true\n }\n }]\n },\n elements: {\n rectangle: {\n borderSkipped: 'left'\n }\n },\n tooltips: {\n mode: 'index',\n axis: 'y'\n }\n });\n core_defaults._set('global', {\n datasets: {\n horizontalBar: {\n categoryPercentage: 0.8,\n barPercentage: 0.9\n }\n }\n });\n var controller_horizontalBar = controller_bar.extend({\n /**\r\n * @private\r\n */\n _getValueScaleId: function () {\n return this.getMeta().xAxisID;\n },\n /**\r\n * @private\r\n */\n _getIndexScaleId: function () {\n return this.getMeta().yAxisID;\n }\n });\n var valueOrDefault$6 = helpers$1.valueOrDefault;\n var resolve$2 = helpers$1.options.resolve;\n var isPointInArea = helpers$1.canvas._isPointInArea;\n core_defaults._set('line', {\n showLines: true,\n spanGaps: false,\n hover: {\n mode: 'label'\n },\n scales: {\n xAxes: [{\n type: 'category',\n id: 'x-axis-0'\n }],\n yAxes: [{\n type: 'linear',\n id: 'y-axis-0'\n }]\n }\n });\n function scaleClip(scale, halfBorderWidth) {\n var tickOpts = scale && scale.options.ticks || {};\n var reverse = tickOpts.reverse;\n var min = tickOpts.min === undefined ? halfBorderWidth : 0;\n var max = tickOpts.max === undefined ? halfBorderWidth : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n }\n function defaultClip(xScale, yScale, borderWidth) {\n var halfBorderWidth = borderWidth / 2;\n var x = scaleClip(xScale, halfBorderWidth);\n var y = scaleClip(yScale, halfBorderWidth);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n }\n function toClip(value) {\n var t, r, b, l;\n if (helpers$1.isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l\n };\n }\n var controller_line = core_datasetController.extend({\n datasetElementType: elements.Line,\n dataElementType: elements.Point,\n /**\r\n * @private\r\n */\n _datasetElementOptions: ['backgroundColor', 'borderCapStyle', 'borderColor', 'borderDash', 'borderDashOffset', 'borderJoinStyle', 'borderWidth', 'cubicInterpolationMode', 'fill'],\n /**\r\n * @private\r\n */\n _dataElementOptions: {\n backgroundColor: 'pointBackgroundColor',\n borderColor: 'pointBorderColor',\n borderWidth: 'pointBorderWidth',\n hitRadius: 'pointHitRadius',\n hoverBackgroundColor: 'pointHoverBackgroundColor',\n hoverBorderColor: 'pointHoverBorderColor',\n hoverBorderWidth: 'pointHoverBorderWidth',\n hoverRadius: 'pointHoverRadius',\n pointStyle: 'pointStyle',\n radius: 'pointRadius',\n rotation: 'pointRotation'\n },\n update: function (reset) {\n var me = this;\n var meta = me.getMeta();\n var line = meta.dataset;\n var points = meta.data || [];\n var options = me.chart.options;\n var config = me._config;\n var showLine = me._showLine = valueOrDefault$6(config.showLine, options.showLines);\n var i, ilen;\n me._xScale = me.getScaleForId(meta.xAxisID);\n me._yScale = me.getScaleForId(meta.yAxisID);\n\n // Update Line\n if (showLine) {\n // Compatibility: If the properties are defined with only the old name, use those values\n if (config.tension !== undefined && config.lineTension === undefined) {\n config.lineTension = config.tension;\n }\n\n // Utility\n line._scale = me._yScale;\n line._datasetIndex = me.index;\n // Data\n line._children = points;\n // Model\n line._model = me._resolveDatasetElementOptions(line);\n line.pivot();\n }\n\n // Update Points\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n me.updateElement(points[i], i, reset);\n }\n if (showLine && line._model.tension !== 0) {\n me.updateBezierControlPoints();\n }\n\n // Now pivot the point for animation\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n points[i].pivot();\n }\n },\n updateElement: function (point, index, reset) {\n var me = this;\n var meta = me.getMeta();\n var custom = point.custom || {};\n var dataset = me.getDataset();\n var datasetIndex = me.index;\n var value = dataset.data[index];\n var xScale = me._xScale;\n var yScale = me._yScale;\n var lineModel = meta.dataset._model;\n var x, y;\n var options = me._resolveDataElementOptions(point, index);\n x = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);\n y = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);\n\n // Utility\n point._xScale = xScale;\n point._yScale = yScale;\n point._options = options;\n point._datasetIndex = datasetIndex;\n point._index = index;\n\n // Desired view properties\n point._model = {\n x: x,\n y: y,\n skip: custom.skip || isNaN(x) || isNaN(y),\n // Appearance\n radius: options.radius,\n pointStyle: options.pointStyle,\n rotation: options.rotation,\n backgroundColor: options.backgroundColor,\n borderColor: options.borderColor,\n borderWidth: options.borderWidth,\n tension: valueOrDefault$6(custom.tension, lineModel ? lineModel.tension : 0),\n steppedLine: lineModel ? lineModel.steppedLine : false,\n // Tooltip\n hitRadius: options.hitRadius\n };\n },\n /**\r\n * @private\r\n */\n _resolveDatasetElementOptions: function (element) {\n var me = this;\n var config = me._config;\n var custom = element.custom || {};\n var options = me.chart.options;\n var lineOptions = options.elements.line;\n var values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments);\n\n // The default behavior of lines is to break at null values, according\n // to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\n // This option gives lines the ability to span gaps\n values.spanGaps = valueOrDefault$6(config.spanGaps, options.spanGaps);\n values.tension = valueOrDefault$6(config.lineTension, lineOptions.tension);\n values.steppedLine = resolve$2([custom.steppedLine, config.steppedLine, lineOptions.stepped]);\n values.clip = toClip(valueOrDefault$6(config.clip, defaultClip(me._xScale, me._yScale, values.borderWidth)));\n return values;\n },\n calculatePointY: function (value, index, datasetIndex) {\n var me = this;\n var chart = me.chart;\n var yScale = me._yScale;\n var sumPos = 0;\n var sumNeg = 0;\n var i, ds, dsMeta, stackedRightValue, rightValue, metasets, ilen;\n if (yScale.options.stacked) {\n rightValue = +yScale.getRightValue(value);\n metasets = chart._getSortedVisibleDatasetMetas();\n ilen = metasets.length;\n for (i = 0; i < ilen; ++i) {\n dsMeta = metasets[i];\n if (dsMeta.index === datasetIndex) {\n break;\n }\n ds = chart.data.datasets[dsMeta.index];\n if (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id) {\n stackedRightValue = +yScale.getRightValue(ds.data[index]);\n if (stackedRightValue < 0) {\n sumNeg += stackedRightValue || 0;\n } else {\n sumPos += stackedRightValue || 0;\n }\n }\n }\n if (rightValue < 0) {\n return yScale.getPixelForValue(sumNeg + rightValue);\n }\n return yScale.getPixelForValue(sumPos + rightValue);\n }\n return yScale.getPixelForValue(value);\n },\n updateBezierControlPoints: function () {\n var me = this;\n var chart = me.chart;\n var meta = me.getMeta();\n var lineModel = meta.dataset._model;\n var area = chart.chartArea;\n var points = meta.data || [];\n var i, ilen, model, controlPoints;\n\n // Only consider points that are drawn in case the spanGaps option is used\n if (lineModel.spanGaps) {\n points = points.filter(function (pt) {\n return !pt._model.skip;\n });\n }\n function capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n }\n if (lineModel.cubicInterpolationMode === 'monotone') {\n helpers$1.splineCurveMonotone(points);\n } else {\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n model = points[i]._model;\n controlPoints = helpers$1.splineCurve(helpers$1.previousItem(points, i)._model, model, helpers$1.nextItem(points, i)._model, lineModel.tension);\n model.controlPointPreviousX = controlPoints.previous.x;\n model.controlPointPreviousY = controlPoints.previous.y;\n model.controlPointNextX = controlPoints.next.x;\n model.controlPointNextY = controlPoints.next.y;\n }\n }\n if (chart.options.elements.line.capBezierPoints) {\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n model = points[i]._model;\n if (isPointInArea(model, area)) {\n if (i > 0 && isPointInArea(points[i - 1]._model, area)) {\n model.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);\n model.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);\n }\n if (i < points.length - 1 && isPointInArea(points[i + 1]._model, area)) {\n model.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);\n model.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);\n }\n }\n }\n }\n },\n draw: function () {\n var me = this;\n var chart = me.chart;\n var meta = me.getMeta();\n var points = meta.data || [];\n var area = chart.chartArea;\n var canvas = chart.canvas;\n var i = 0;\n var ilen = points.length;\n var clip;\n if (me._showLine) {\n clip = meta.dataset._model.clip;\n helpers$1.canvas.clipArea(chart.ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? canvas.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? canvas.height : area.bottom + clip.bottom\n });\n meta.dataset.draw();\n helpers$1.canvas.unclipArea(chart.ctx);\n }\n\n // Draw the points\n for (; i < ilen; ++i) {\n points[i].draw(area);\n }\n },\n /**\r\n * @protected\r\n */\n setHoverStyle: function (point) {\n var model = point._model;\n var options = point._options;\n var getHoverColor = helpers$1.getHoverColor;\n point.$previousStyle = {\n backgroundColor: model.backgroundColor,\n borderColor: model.borderColor,\n borderWidth: model.borderWidth,\n radius: model.radius\n };\n model.backgroundColor = valueOrDefault$6(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n model.borderColor = valueOrDefault$6(options.hoverBorderColor, getHoverColor(options.borderColor));\n model.borderWidth = valueOrDefault$6(options.hoverBorderWidth, options.borderWidth);\n model.radius = valueOrDefault$6(options.hoverRadius, options.radius);\n }\n });\n var resolve$3 = helpers$1.options.resolve;\n core_defaults._set('polarArea', {\n scale: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n gridLines: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n ticks: {\n beginAtZero: true\n }\n },\n // Boolean - Whether to animate the rotation of the chart\n animation: {\n animateRotate: true,\n animateScale: true\n },\n startAngle: -0.5 * Math.PI,\n legendCallback: function (chart) {\n var list = document.createElement('ul');\n var data = chart.data;\n var datasets = data.datasets;\n var labels = data.labels;\n var i, ilen, listItem, listItemSpan;\n list.setAttribute('class', chart.id + '-legend');\n if (datasets.length) {\n for (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) {\n listItem = list.appendChild(document.createElement('li'));\n listItemSpan = listItem.appendChild(document.createElement('span'));\n listItemSpan.style.backgroundColor = datasets[0].backgroundColor[i];\n if (labels[i]) {\n listItem.appendChild(document.createTextNode(labels[i]));\n }\n }\n }\n return list.outerHTML;\n },\n legend: {\n labels: {\n generateLabels: function (chart) {\n var data = chart.data;\n if (data.labels.length && data.datasets.length) {\n return data.labels.map(function (label, i) {\n var meta = chart.getDatasetMeta(0);\n var style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n hidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden,\n // Extra data used for toggling the correct item\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick: function (e, legendItem) {\n var index = legendItem.index;\n var chart = this.chart;\n var i, ilen, meta;\n for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n meta = chart.getDatasetMeta(i);\n meta.data[index].hidden = !meta.data[index].hidden;\n }\n chart.update();\n }\n },\n // Need to override these to give a nice default\n tooltips: {\n callbacks: {\n title: function () {\n return '';\n },\n label: function (item, data) {\n return data.labels[item.index] + ': ' + item.yLabel;\n }\n }\n }\n });\n var controller_polarArea = core_datasetController.extend({\n dataElementType: elements.Arc,\n linkScales: helpers$1.noop,\n /**\r\n * @private\r\n */\n _dataElementOptions: ['backgroundColor', 'borderColor', 'borderWidth', 'borderAlign', 'hoverBackgroundColor', 'hoverBorderColor', 'hoverBorderWidth'],\n /**\r\n * @private\r\n */\n _getIndexScaleId: function () {\n return this.chart.scale.id;\n },\n /**\r\n * @private\r\n */\n _getValueScaleId: function () {\n return this.chart.scale.id;\n },\n update: function (reset) {\n var me = this;\n var dataset = me.getDataset();\n var meta = me.getMeta();\n var start = me.chart.options.startAngle || 0;\n var starts = me._starts = [];\n var angles = me._angles = [];\n var arcs = meta.data;\n var i, ilen, angle;\n me._updateRadius();\n meta.count = me.countVisibleElements();\n for (i = 0, ilen = dataset.data.length; i < ilen; i++) {\n starts[i] = start;\n angle = me._computeAngle(i);\n angles[i] = angle;\n start += angle;\n }\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n arcs[i]._options = me._resolveDataElementOptions(arcs[i], i);\n me.updateElement(arcs[i], i, reset);\n }\n },\n /**\r\n * @private\r\n */\n _updateRadius: function () {\n var me = this;\n var chart = me.chart;\n var chartArea = chart.chartArea;\n var opts = chart.options;\n var minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n chart.outerRadius = Math.max(minSize / 2, 0);\n chart.innerRadius = Math.max(opts.cutoutPercentage ? chart.outerRadius / 100 * opts.cutoutPercentage : 1, 0);\n chart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\n me.outerRadius = chart.outerRadius - chart.radiusLength * me.index;\n me.innerRadius = me.outerRadius - chart.radiusLength;\n },\n updateElement: function (arc, index, reset) {\n var me = this;\n var chart = me.chart;\n var dataset = me.getDataset();\n var opts = chart.options;\n var animationOpts = opts.animation;\n var scale = chart.scale;\n var labels = chart.data.labels;\n var centerX = scale.xCenter;\n var centerY = scale.yCenter;\n\n // var negHalfPI = -0.5 * Math.PI;\n var datasetStartAngle = opts.startAngle;\n var distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n var startAngle = me._starts[index];\n var endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]);\n var resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n var options = arc._options || {};\n helpers$1.extend(arc, {\n // Utility\n _datasetIndex: me.index,\n _index: index,\n _scale: scale,\n // Desired view properties\n _model: {\n backgroundColor: options.backgroundColor,\n borderColor: options.borderColor,\n borderWidth: options.borderWidth,\n borderAlign: options.borderAlign,\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius: reset ? resetRadius : distance,\n startAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\n endAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\n label: helpers$1.valueAtIndexOrDefault(labels, index, labels[index])\n }\n });\n arc.pivot();\n },\n countVisibleElements: function () {\n var dataset = this.getDataset();\n var meta = this.getMeta();\n var count = 0;\n helpers$1.each(meta.data, function (element, index) {\n if (!isNaN(dataset.data[index]) && !element.hidden) {\n count++;\n }\n });\n return count;\n },\n /**\r\n * @protected\r\n */\n setHoverStyle: function (arc) {\n var model = arc._model;\n var options = arc._options;\n var getHoverColor = helpers$1.getHoverColor;\n var valueOrDefault = helpers$1.valueOrDefault;\n arc.$previousStyle = {\n backgroundColor: model.backgroundColor,\n borderColor: model.borderColor,\n borderWidth: model.borderWidth\n };\n model.backgroundColor = valueOrDefault(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n model.borderColor = valueOrDefault(options.hoverBorderColor, getHoverColor(options.borderColor));\n model.borderWidth = valueOrDefault(options.hoverBorderWidth, options.borderWidth);\n },\n /**\r\n * @private\r\n */\n _computeAngle: function (index) {\n var me = this;\n var count = this.getMeta().count;\n var dataset = me.getDataset();\n var meta = me.getMeta();\n if (isNaN(dataset.data[index]) || meta.data[index].hidden) {\n return 0;\n }\n\n // Scriptable options\n var context = {\n chart: me.chart,\n dataIndex: index,\n dataset: dataset,\n datasetIndex: me.index\n };\n return resolve$3([me.chart.options.elements.arc.angle, 2 * Math.PI / count], context, index);\n }\n });\n core_defaults._set('pie', helpers$1.clone(core_defaults.doughnut));\n core_defaults._set('pie', {\n cutoutPercentage: 0\n });\n\n // Pie charts are Doughnut chart with different defaults\n var controller_pie = controller_doughnut;\n var valueOrDefault$7 = helpers$1.valueOrDefault;\n core_defaults._set('radar', {\n spanGaps: false,\n scale: {\n type: 'radialLinear'\n },\n elements: {\n line: {\n fill: 'start',\n tension: 0 // no bezier in radar\n }\n }\n });\n\n var controller_radar = core_datasetController.extend({\n datasetElementType: elements.Line,\n dataElementType: elements.Point,\n linkScales: helpers$1.noop,\n /**\r\n * @private\r\n */\n _datasetElementOptions: ['backgroundColor', 'borderWidth', 'borderColor', 'borderCapStyle', 'borderDash', 'borderDashOffset', 'borderJoinStyle', 'fill'],\n /**\r\n * @private\r\n */\n _dataElementOptions: {\n backgroundColor: 'pointBackgroundColor',\n borderColor: 'pointBorderColor',\n borderWidth: 'pointBorderWidth',\n hitRadius: 'pointHitRadius',\n hoverBackgroundColor: 'pointHoverBackgroundColor',\n hoverBorderColor: 'pointHoverBorderColor',\n hoverBorderWidth: 'pointHoverBorderWidth',\n hoverRadius: 'pointHoverRadius',\n pointStyle: 'pointStyle',\n radius: 'pointRadius',\n rotation: 'pointRotation'\n },\n /**\r\n * @private\r\n */\n _getIndexScaleId: function () {\n return this.chart.scale.id;\n },\n /**\r\n * @private\r\n */\n _getValueScaleId: function () {\n return this.chart.scale.id;\n },\n update: function (reset) {\n var me = this;\n var meta = me.getMeta();\n var line = meta.dataset;\n var points = meta.data || [];\n var scale = me.chart.scale;\n var config = me._config;\n var i, ilen;\n\n // Compatibility: If the properties are defined with only the old name, use those values\n if (config.tension !== undefined && config.lineTension === undefined) {\n config.lineTension = config.tension;\n }\n\n // Utility\n line._scale = scale;\n line._datasetIndex = me.index;\n // Data\n line._children = points;\n line._loop = true;\n // Model\n line._model = me._resolveDatasetElementOptions(line);\n line.pivot();\n\n // Update Points\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n me.updateElement(points[i], i, reset);\n }\n\n // Update bezier control points\n me.updateBezierControlPoints();\n\n // Now pivot the point for animation\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n points[i].pivot();\n }\n },\n updateElement: function (point, index, reset) {\n var me = this;\n var custom = point.custom || {};\n var dataset = me.getDataset();\n var scale = me.chart.scale;\n var pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\n var options = me._resolveDataElementOptions(point, index);\n var lineModel = me.getMeta().dataset._model;\n var x = reset ? scale.xCenter : pointPosition.x;\n var y = reset ? scale.yCenter : pointPosition.y;\n\n // Utility\n point._scale = scale;\n point._options = options;\n point._datasetIndex = me.index;\n point._index = index;\n\n // Desired view properties\n point._model = {\n x: x,\n // value not used in dataset scale, but we want a consistent API between scales\n y: y,\n skip: custom.skip || isNaN(x) || isNaN(y),\n // Appearance\n radius: options.radius,\n pointStyle: options.pointStyle,\n rotation: options.rotation,\n backgroundColor: options.backgroundColor,\n borderColor: options.borderColor,\n borderWidth: options.borderWidth,\n tension: valueOrDefault$7(custom.tension, lineModel ? lineModel.tension : 0),\n // Tooltip\n hitRadius: options.hitRadius\n };\n },\n /**\r\n * @private\r\n */\n _resolveDatasetElementOptions: function () {\n var me = this;\n var config = me._config;\n var options = me.chart.options;\n var values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments);\n values.spanGaps = valueOrDefault$7(config.spanGaps, options.spanGaps);\n values.tension = valueOrDefault$7(config.lineTension, options.elements.line.tension);\n return values;\n },\n updateBezierControlPoints: function () {\n var me = this;\n var meta = me.getMeta();\n var area = me.chart.chartArea;\n var points = meta.data || [];\n var i, ilen, model, controlPoints;\n\n // Only consider points that are drawn in case the spanGaps option is used\n if (meta.dataset._model.spanGaps) {\n points = points.filter(function (pt) {\n return !pt._model.skip;\n });\n }\n function capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n }\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n model = points[i]._model;\n controlPoints = helpers$1.splineCurve(helpers$1.previousItem(points, i, true)._model, model, helpers$1.nextItem(points, i, true)._model, model.tension);\n\n // Prevent the bezier going outside of the bounds of the graph\n model.controlPointPreviousX = capControlPoint(controlPoints.previous.x, area.left, area.right);\n model.controlPointPreviousY = capControlPoint(controlPoints.previous.y, area.top, area.bottom);\n model.controlPointNextX = capControlPoint(controlPoints.next.x, area.left, area.right);\n model.controlPointNextY = capControlPoint(controlPoints.next.y, area.top, area.bottom);\n }\n },\n setHoverStyle: function (point) {\n var model = point._model;\n var options = point._options;\n var getHoverColor = helpers$1.getHoverColor;\n point.$previousStyle = {\n backgroundColor: model.backgroundColor,\n borderColor: model.borderColor,\n borderWidth: model.borderWidth,\n radius: model.radius\n };\n model.backgroundColor = valueOrDefault$7(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n model.borderColor = valueOrDefault$7(options.hoverBorderColor, getHoverColor(options.borderColor));\n model.borderWidth = valueOrDefault$7(options.hoverBorderWidth, options.borderWidth);\n model.radius = valueOrDefault$7(options.hoverRadius, options.radius);\n }\n });\n core_defaults._set('scatter', {\n hover: {\n mode: 'single'\n },\n scales: {\n xAxes: [{\n id: 'x-axis-1',\n // need an ID so datasets can reference the scale\n type: 'linear',\n // scatter should not use a category axis\n position: 'bottom'\n }],\n yAxes: [{\n id: 'y-axis-1',\n type: 'linear',\n position: 'left'\n }]\n },\n tooltips: {\n callbacks: {\n title: function () {\n return ''; // doesn't make sense for scatter since data are formatted as a point\n },\n\n label: function (item) {\n return '(' + item.xLabel + ', ' + item.yLabel + ')';\n }\n }\n }\n });\n core_defaults._set('global', {\n datasets: {\n scatter: {\n showLine: false\n }\n }\n });\n\n // Scatter charts use line controllers\n var controller_scatter = controller_line;\n\n // NOTE export a map in which the key represents the controller type, not\n // the class, and so must be CamelCase in order to be correctly retrieved\n // by the controller in core.controller.js (`controllers[meta.type]`).\n\n var controllers = {\n bar: controller_bar,\n bubble: controller_bubble,\n doughnut: controller_doughnut,\n horizontalBar: controller_horizontalBar,\n line: controller_line,\n polarArea: controller_polarArea,\n pie: controller_pie,\n radar: controller_radar,\n scatter: controller_scatter\n };\n\n /**\r\n * Helper function to get relative position for an event\r\n * @param {Event|IEvent} event - The event to get the position for\r\n * @param {Chart} chart - The chart\r\n * @returns {object} the event position\r\n */\n function getRelativePosition(e, chart) {\n if (e.native) {\n return {\n x: e.x,\n y: e.y\n };\n }\n return helpers$1.getRelativePosition(e, chart);\n }\n\n /**\r\n * Helper function to traverse all of the visible elements in the chart\r\n * @param {Chart} chart - the chart\r\n * @param {function} handler - the callback to execute for each visible item\r\n */\n function parseVisibleItems(chart, handler) {\n var metasets = chart._getSortedVisibleDatasetMetas();\n var metadata, i, j, ilen, jlen, element;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n metadata = metasets[i].data;\n for (j = 0, jlen = metadata.length; j < jlen; ++j) {\n element = metadata[j];\n if (!element._view.skip) {\n handler(element);\n }\n }\n }\n }\n\n /**\r\n * Helper function to get the items that intersect the event position\r\n * @param {ChartElement[]} items - elements to filter\r\n * @param {object} position - the point to be nearest to\r\n * @return {ChartElement[]} the nearest items\r\n */\n function getIntersectItems(chart, position) {\n var elements = [];\n parseVisibleItems(chart, function (element) {\n if (element.inRange(position.x, position.y)) {\n elements.push(element);\n }\n });\n return elements;\n }\n\n /**\r\n * Helper function to get the items nearest to the event position considering all visible items in teh chart\r\n * @param {Chart} chart - the chart to look at elements from\r\n * @param {object} position - the point to be nearest to\r\n * @param {boolean} intersect - if true, only consider items that intersect the position\r\n * @param {function} distanceMetric - function to provide the distance between points\r\n * @return {ChartElement[]} the nearest items\r\n */\n function getNearestItems(chart, position, intersect, distanceMetric) {\n var minDistance = Number.POSITIVE_INFINITY;\n var nearestItems = [];\n parseVisibleItems(chart, function (element) {\n if (intersect && !element.inRange(position.x, position.y)) {\n return;\n }\n var center = element.getCenterPoint();\n var distance = distanceMetric(position, center);\n if (distance < minDistance) {\n nearestItems = [element];\n minDistance = distance;\n } else if (distance === minDistance) {\n // Can have multiple items at the same distance in which case we sort by size\n nearestItems.push(element);\n }\n });\n return nearestItems;\n }\n\n /**\r\n * Get a distance metric function for two points based on the\r\n * axis mode setting\r\n * @param {string} axis - the axis mode. x|y|xy\r\n */\n function getDistanceMetricForAxis(axis) {\n var useX = axis.indexOf('x') !== -1;\n var useY = axis.indexOf('y') !== -1;\n return function (pt1, pt2) {\n var deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n var deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n }\n function indexMode(chart, e, options) {\n var position = getRelativePosition(e, chart);\n // Default axis for index mode is 'x' to match old behaviour\n options.axis = options.axis || 'x';\n var distanceMetric = getDistanceMetricForAxis(options.axis);\n var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n var elements = [];\n if (!items.length) {\n return [];\n }\n chart._getSortedVisibleDatasetMetas().forEach(function (meta) {\n var element = meta.data[items[0]._index];\n\n // don't count items that are skipped (null data)\n if (element && !element._view.skip) {\n elements.push(element);\n }\n });\n return elements;\n }\n\n /**\r\n * @interface IInteractionOptions\r\n */\n /**\r\n * If true, only consider items that intersect the point\r\n * @name IInterfaceOptions#boolean\r\n * @type Boolean\r\n */\n\n /**\r\n * Contains interaction related functions\r\n * @namespace Chart.Interaction\r\n */\n var core_interaction = {\n // Helper function for different modes\n modes: {\n single: function (chart, e) {\n var position = getRelativePosition(e, chart);\n var elements = [];\n parseVisibleItems(chart, function (element) {\n if (element.inRange(position.x, position.y)) {\n elements.push(element);\n return elements;\n }\n });\n return elements.slice(0, 1);\n },\n /**\r\n * @function Chart.Interaction.modes.label\r\n * @deprecated since version 2.4.0\r\n * @todo remove at version 3\r\n * @private\r\n */\n label: indexMode,\n /**\r\n * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\r\n * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\r\n * @function Chart.Interaction.modes.index\r\n * @since v2.4.0\r\n * @param {Chart} chart - the chart we are returning items from\r\n * @param {Event} e - the event we are find things at\r\n * @param {IInteractionOptions} options - options to use during interaction\r\n * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n */\n index: indexMode,\n /**\r\n * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\r\n * If the options.intersect is false, we find the nearest item and return the items in that dataset\r\n * @function Chart.Interaction.modes.dataset\r\n * @param {Chart} chart - the chart we are returning items from\r\n * @param {Event} e - the event we are find things at\r\n * @param {IInteractionOptions} options - options to use during interaction\r\n * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n */\n dataset: function (chart, e, options) {\n var position = getRelativePosition(e, chart);\n options.axis = options.axis || 'xy';\n var distanceMetric = getDistanceMetricForAxis(options.axis);\n var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n if (items.length > 0) {\n items = chart.getDatasetMeta(items[0]._datasetIndex).data;\n }\n return items;\n },\n /**\r\n * @function Chart.Interaction.modes.x-axis\r\n * @deprecated since version 2.4.0. Use index mode and intersect == true\r\n * @todo remove at version 3\r\n * @private\r\n */\n 'x-axis': function (chart, e) {\n return indexMode(chart, e, {\n intersect: false\n });\n },\n /**\r\n * Point mode returns all elements that hit test based on the event position\r\n * of the event\r\n * @function Chart.Interaction.modes.intersect\r\n * @param {Chart} chart - the chart we are returning items from\r\n * @param {Event} e - the event we are find things at\r\n * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n */\n point: function (chart, e) {\n var position = getRelativePosition(e, chart);\n return getIntersectItems(chart, position);\n },\n /**\r\n * nearest mode returns the element closest to the point\r\n * @function Chart.Interaction.modes.intersect\r\n * @param {Chart} chart - the chart we are returning items from\r\n * @param {Event} e - the event we are find things at\r\n * @param {IInteractionOptions} options - options to use\r\n * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n */\n nearest: function (chart, e, options) {\n var position = getRelativePosition(e, chart);\n options.axis = options.axis || 'xy';\n var distanceMetric = getDistanceMetricForAxis(options.axis);\n return getNearestItems(chart, position, options.intersect, distanceMetric);\n },\n /**\r\n * x mode returns the elements that hit-test at the current x coordinate\r\n * @function Chart.Interaction.modes.x\r\n * @param {Chart} chart - the chart we are returning items from\r\n * @param {Event} e - the event we are find things at\r\n * @param {IInteractionOptions} options - options to use\r\n * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n */\n x: function (chart, e, options) {\n var position = getRelativePosition(e, chart);\n var items = [];\n var intersectsItem = false;\n parseVisibleItems(chart, function (element) {\n if (element.inXRange(position.x)) {\n items.push(element);\n }\n if (element.inRange(position.x, position.y)) {\n intersectsItem = true;\n }\n });\n\n // If we want to trigger on an intersect and we don't have any items\n // that intersect the position, return nothing\n if (options.intersect && !intersectsItem) {\n items = [];\n }\n return items;\n },\n /**\r\n * y mode returns the elements that hit-test at the current y coordinate\r\n * @function Chart.Interaction.modes.y\r\n * @param {Chart} chart - the chart we are returning items from\r\n * @param {Event} e - the event we are find things at\r\n * @param {IInteractionOptions} options - options to use\r\n * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n */\n y: function (chart, e, options) {\n var position = getRelativePosition(e, chart);\n var items = [];\n var intersectsItem = false;\n parseVisibleItems(chart, function (element) {\n if (element.inYRange(position.y)) {\n items.push(element);\n }\n if (element.inRange(position.x, position.y)) {\n intersectsItem = true;\n }\n });\n\n // If we want to trigger on an intersect and we don't have any items\n // that intersect the position, return nothing\n if (options.intersect && !intersectsItem) {\n items = [];\n }\n return items;\n }\n }\n };\n var extend = helpers$1.extend;\n function filterByPosition(array, position) {\n return helpers$1.where(array, function (v) {\n return v.pos === position;\n });\n }\n function sortByWeight(array, reverse) {\n return array.sort(function (a, b) {\n var v0 = reverse ? b : a;\n var v1 = reverse ? a : b;\n return v0.weight === v1.weight ? v0.index - v1.index : v0.weight - v1.weight;\n });\n }\n function wrapBoxes(boxes) {\n var layoutBoxes = [];\n var i, ilen, box;\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n layoutBoxes.push({\n index: i,\n box: box,\n pos: box.position,\n horizontal: box.isHorizontal(),\n weight: box.weight\n });\n }\n return layoutBoxes;\n }\n function setLayoutDims(layouts, params) {\n var i, ilen, layout;\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n // store width used instead of chartArea.w in fitBoxes\n layout.width = layout.horizontal ? layout.box.fullWidth && params.availableWidth : params.vBoxMaxWidth;\n // store height used instead of chartArea.h in fitBoxes\n layout.height = layout.horizontal && params.hBoxMaxHeight;\n }\n }\n function buildLayoutBoxes(boxes) {\n var layoutBoxes = wrapBoxes(boxes);\n var left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n var right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n var top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n var bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n return {\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(bottom),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right),\n horizontal: top.concat(bottom)\n };\n }\n function getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n }\n function updateDims(chartArea, params, layout) {\n var box = layout.box;\n var maxPadding = chartArea.maxPadding;\n var newWidth, newHeight;\n if (layout.size) {\n // this layout was already counted for, lets first reduce old size\n chartArea[layout.pos] -= layout.size;\n }\n layout.size = layout.horizontal ? box.height : box.width;\n chartArea[layout.pos] += layout.size;\n if (box.getPadding) {\n var boxPadding = box.getPadding();\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n }\n newWidth = params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right');\n newHeight = params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom');\n if (newWidth !== chartArea.w || newHeight !== chartArea.h) {\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n\n // return true if chart area changed in layout's direction\n var sizes = layout.horizontal ? [newWidth, chartArea.w] : [newHeight, chartArea.h];\n return sizes[0] !== sizes[1] && (!isNaN(sizes[0]) || !isNaN(sizes[1]));\n }\n }\n function handleMaxPadding(chartArea) {\n var maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n var change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n }\n function getMargins(horizontal, chartArea) {\n var maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n var margin = {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n };\n positions.forEach(function (pos) {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal ? marginForPositions(['left', 'right']) : marginForPositions(['top', 'bottom']);\n }\n function fitBoxes(boxes, chartArea, params) {\n var refitBoxes = [];\n var i, ilen, layout, box, refit, changed;\n for (i = 0, ilen = boxes.length; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n box.update(layout.width || chartArea.w, layout.height || chartArea.h, getMargins(layout.horizontal, chartArea));\n if (updateDims(chartArea, params, layout)) {\n changed = true;\n if (refitBoxes.length) {\n // Dimensions changed and there were non full width boxes before this\n // -> we have to refit those\n refit = true;\n }\n }\n if (!box.fullWidth) {\n // fullWidth boxes don't need to be re-fitted in any case\n refitBoxes.push(layout);\n }\n }\n return refit ? fitBoxes(refitBoxes, chartArea, params) || changed : changed;\n }\n function placeBoxes(boxes, chartArea, params) {\n var userPadding = params.padding;\n var x = chartArea.x;\n var y = chartArea.y;\n var i, ilen, layout, box;\n for (i = 0, ilen = boxes.length; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n if (layout.horizontal) {\n box.left = box.fullWidth ? userPadding.left : chartArea.left;\n box.right = box.fullWidth ? params.outerWidth - userPadding.right : chartArea.left + chartArea.w;\n box.top = y;\n box.bottom = y + box.height;\n box.width = box.right - box.left;\n y = box.bottom;\n } else {\n box.left = x;\n box.right = x + box.width;\n box.top = chartArea.top;\n box.bottom = chartArea.top + chartArea.h;\n box.height = box.bottom - box.top;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n }\n core_defaults._set('global', {\n layout: {\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n }\n });\n\n /**\r\n * @interface ILayoutItem\r\n * @prop {string} position - The position of the item in the chart layout. Possible values are\r\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\r\n * @prop {number} weight - The weight used to sort the item. Higher weights are further away from the chart area\r\n * @prop {boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down\r\n * @prop {function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\r\n * @prop {function} update - Takes two parameters: width and height. Returns size of item\r\n * @prop {function} getPadding - Returns an object with padding on the edges\r\n * @prop {number} width - Width of item. Must be valid after update()\r\n * @prop {number} height - Height of item. Must be valid after update()\r\n * @prop {number} left - Left edge of the item. Set by layout system and cannot be used in update\r\n * @prop {number} top - Top edge of the item. Set by layout system and cannot be used in update\r\n * @prop {number} right - Right edge of the item. Set by layout system and cannot be used in update\r\n * @prop {number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\r\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.\n var core_layouts = {\n defaults: {},\n /**\r\n * Register a box to a chart.\r\n * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\r\n * @param {Chart} chart - the chart to use\r\n * @param {ILayoutItem} item - the item to add to be layed out\r\n */\n addBox: function (chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n\n // initialize item with default values\n item.fullWidth = item.fullWidth || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function () {\n return [{\n z: 0,\n draw: function () {\n item.draw.apply(item, arguments);\n }\n }];\n };\n chart.boxes.push(item);\n },\n /**\r\n * Remove a layoutItem from a chart\r\n * @param {Chart} chart - the chart to remove the box from\r\n * @param {ILayoutItem} layoutItem - the item to remove from the layout\r\n */\n removeBox: function (chart, layoutItem) {\n var index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n /**\r\n * Sets (or updates) options on the given `item`.\r\n * @param {Chart} chart - the chart in which the item lives (or will be added to)\r\n * @param {ILayoutItem} item - the item to configure with the given options\r\n * @param {object} options - the new item options.\r\n */\n configure: function (chart, item, options) {\n var props = ['fullWidth', 'position', 'weight'];\n var ilen = props.length;\n var i = 0;\n var prop;\n for (; i < ilen; ++i) {\n prop = props[i];\n if (options.hasOwnProperty(prop)) {\n item[prop] = options[prop];\n }\n }\n },\n /**\r\n * Fits boxes of the given chart into the given size by having each box measure itself\r\n * then running a fitting algorithm\r\n * @param {Chart} chart - the chart\r\n * @param {number} width - the width to fit into\r\n * @param {number} height - the height to fit into\r\n */\n update: function (chart, width, height) {\n if (!chart) {\n return;\n }\n var layoutOptions = chart.options.layout || {};\n var padding = helpers$1.options.toPadding(layoutOptions.padding);\n var availableWidth = width - padding.width;\n var availableHeight = height - padding.height;\n var boxes = buildLayoutBoxes(chart.boxes);\n var verticalBoxes = boxes.vertical;\n var horizontalBoxes = boxes.horizontal;\n\n // Essentially we now have any number of boxes on each of the 4 sides.\n // Our canvas looks like the following.\n // The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\n // B1 is the bottom axis\n // There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\n // These locations are single-box locations only, when trying to register a chartArea location that is already taken,\n // an error will be thrown.\n //\n // |----------------------------------------------------|\n // | T1 (Full Width) |\n // |----------------------------------------------------|\n // | | | T2 | |\n // | |----|-------------------------------------|----|\n // | | | C1 | | C2 | |\n // | | |----| |----| |\n // | | | | |\n // | L1 | L2 | ChartArea (C0) | R1 |\n // | | | | |\n // | | |----| |----| |\n // | | | C3 | | C4 | |\n // | |----|-------------------------------------|----|\n // | | | B1 | |\n // |----------------------------------------------------|\n // | B2 (Full Width) |\n // |----------------------------------------------------|\n //\n\n var params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding: padding,\n availableWidth: availableWidth,\n vBoxMaxWidth: availableWidth / 2 / verticalBoxes.length,\n hBoxMaxHeight: availableHeight / 2\n });\n var chartArea = extend({\n maxPadding: extend({}, padding),\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n\n // First fit vertical boxes\n fitBoxes(verticalBoxes, chartArea, params);\n\n // Then fit horizontal boxes\n if (fitBoxes(horizontalBoxes, chartArea, params)) {\n // if the area changed, re-fit vertical boxes\n fitBoxes(verticalBoxes, chartArea, params);\n }\n handleMaxPadding(chartArea);\n\n // Finally place the boxes to correct coordinates\n placeBoxes(boxes.leftAndTop, chartArea, params);\n\n // Move to opposite side of chart\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h\n };\n\n // Finally update boxes in chartArea (radial scale for example)\n helpers$1.each(boxes.chartArea, function (layout) {\n var box = layout.box;\n extend(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h);\n });\n }\n };\n\n /**\r\n * Platform fallback implementation (minimal).\r\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\r\n */\n\n var platform_basic = {\n acquireContext: function (item) {\n if (item && item.canvas) {\n // Support for any object associated to a canvas (including a context2d)\n item = item.canvas;\n }\n return item && item.getContext('2d') || null;\n }\n };\n var platform_dom = \"/*\\r\\n * DOM element rendering detection\\r\\n * https://davidwalsh.name/detect-node-insertion\\r\\n */\\r\\n@keyframes chartjs-render-animation {\\r\\n\\tfrom { opacity: 0.99; }\\r\\n\\tto { opacity: 1; }\\r\\n}\\r\\n\\r\\n.chartjs-render-monitor {\\r\\n\\tanimation: chartjs-render-animation 0.001s;\\r\\n}\\r\\n\\r\\n/*\\r\\n * DOM element resizing detection\\r\\n * https://github.com/marcj/css-element-queries\\r\\n */\\r\\n.chartjs-size-monitor,\\r\\n.chartjs-size-monitor-expand,\\r\\n.chartjs-size-monitor-shrink {\\r\\n\\tposition: absolute;\\r\\n\\tdirection: ltr;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n\\tright: 0;\\r\\n\\tbottom: 0;\\r\\n\\toverflow: hidden;\\r\\n\\tpointer-events: none;\\r\\n\\tvisibility: hidden;\\r\\n\\tz-index: -1;\\r\\n}\\r\\n\\r\\n.chartjs-size-monitor-expand > div {\\r\\n\\tposition: absolute;\\r\\n\\twidth: 1000000px;\\r\\n\\theight: 1000000px;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n}\\r\\n\\r\\n.chartjs-size-monitor-shrink > div {\\r\\n\\tposition: absolute;\\r\\n\\twidth: 200%;\\r\\n\\theight: 200%;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n}\\r\\n\";\n var platform_dom$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n 'default': platform_dom\n });\n var stylesheet = getCjsExportFromNamespace(platform_dom$1);\n var EXPANDO_KEY = '$chartjs';\n var CSS_PREFIX = 'chartjs-';\n var CSS_SIZE_MONITOR = CSS_PREFIX + 'size-monitor';\n var CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor';\n var CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation';\n var ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart'];\n\n /**\r\n * DOM event types -> Chart.js event types.\r\n * Note: only events with different types are mapped.\r\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\r\n */\n var EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n };\n\n /**\r\n * The \"used\" size is the final value of a dimension property after all calculations have\r\n * been performed. This method uses the computed style of `element` but returns undefined\r\n * if the computed style is not expressed in pixels. That can happen in some cases where\r\n * `element` has a size relative to its parent and this last one is not yet displayed,\r\n * for example because of `display: none` on a parent node.\r\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\r\n * @returns {number} Size in pixels or undefined if unknown.\r\n */\n function readUsedSize(element, property) {\n var value = helpers$1.getStyle(element, property);\n var matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? Number(matches[1]) : undefined;\n }\n\n /**\r\n * Initializes the canvas style and render size without modifying the canvas display size,\r\n * since responsiveness is handled by the controller.resize() method. The config is used\r\n * to determine the aspect ratio to apply in case no explicit height has been specified.\r\n */\n function initCanvas(canvas, config) {\n var style = canvas.style;\n\n // NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\n // returns null or '' if no explicit value has been set to the canvas attribute.\n var renderHeight = canvas.getAttribute('height');\n var renderWidth = canvas.getAttribute('width');\n\n // Chart.js modifies some canvas values that we want to restore on destroy\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n\n // Force canvas to display as block to avoid extra space caused by inline\n // elements, which would interfere with the responsive resize process.\n // https://github.com/chartjs/Chart.js/issues/2538\n style.display = style.display || 'block';\n if (renderWidth === null || renderWidth === '') {\n var displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (renderHeight === null || renderHeight === '') {\n if (canvas.style.height === '') {\n // If no explicit render height and style height, let's apply the aspect ratio,\n // which one can be specified by the user but also by charts as default option\n // (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\n canvas.height = canvas.width / (config.options.aspectRatio || 2);\n } else {\n var displayHeight = readUsedSize(canvas, 'height');\n if (displayWidth !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n }\n\n /**\r\n * Detects support for options object argument in addEventListener.\r\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\r\n * @private\r\n */\n var supportsEventListenerOptions = function () {\n var supports = false;\n try {\n var options = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line getter-return\n get: function () {\n supports = true;\n }\n });\n window.addEventListener('e', null, options);\n } catch (e) {\n // continue regardless of error\n }\n return 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\n var eventListenerOptions = supportsEventListenerOptions ? {\n passive: true\n } : false;\n function addListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n }\n function removeListener(node, type, listener) {\n node.removeEventListener(type, listener, eventListenerOptions);\n }\n function createEvent(type, chart, x, y, nativeEvent) {\n return {\n type: type,\n chart: chart,\n native: nativeEvent || null,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null\n };\n }\n function fromNativeEvent(event, chart) {\n var type = EVENT_TYPES[event.type] || event.type;\n var pos = helpers$1.getRelativePosition(event, chart);\n return createEvent(type, chart, pos.x, pos.y, event);\n }\n function throttled(fn, thisArg) {\n var ticking = false;\n var args = [];\n return function () {\n args = Array.prototype.slice.call(arguments);\n thisArg = thisArg || this;\n if (!ticking) {\n ticking = true;\n helpers$1.requestAnimFrame.call(window, function () {\n ticking = false;\n fn.apply(thisArg, args);\n });\n }\n };\n }\n function createDiv(cls) {\n var el = document.createElement('div');\n el.className = cls || '';\n return el;\n }\n\n // Implementation based on https://github.com/marcj/css-element-queries\n function createResizer(handler) {\n var maxSize = 1000000;\n\n // NOTE(SB) Don't use innerHTML because it could be considered unsafe.\n // https://github.com/chartjs/Chart.js/issues/5902\n var resizer = createDiv(CSS_SIZE_MONITOR);\n var expand = createDiv(CSS_SIZE_MONITOR + '-expand');\n var shrink = createDiv(CSS_SIZE_MONITOR + '-shrink');\n expand.appendChild(createDiv());\n shrink.appendChild(createDiv());\n resizer.appendChild(expand);\n resizer.appendChild(shrink);\n resizer._reset = function () {\n expand.scrollLeft = maxSize;\n expand.scrollTop = maxSize;\n shrink.scrollLeft = maxSize;\n shrink.scrollTop = maxSize;\n };\n var onScroll = function () {\n resizer._reset();\n handler();\n };\n addListener(expand, 'scroll', onScroll.bind(expand, 'expand'));\n addListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink'));\n return resizer;\n }\n\n // https://davidwalsh.name/detect-node-insertion\n function watchForRender(node, handler) {\n var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\n var proxy = expando.renderProxy = function (e) {\n if (e.animationName === CSS_RENDER_ANIMATION) {\n handler();\n }\n };\n helpers$1.each(ANIMATION_START_EVENTS, function (type) {\n addListener(node, type, proxy);\n });\n\n // #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class\n // is removed then added back immediately (same animation frame?). Accessing the\n // `offsetParent` property will force a reflow and re-evaluate the CSS animation.\n // https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics\n // https://github.com/chartjs/Chart.js/issues/4737\n expando.reflow = !!node.offsetParent;\n node.classList.add(CSS_RENDER_MONITOR);\n }\n function unwatchForRender(node) {\n var expando = node[EXPANDO_KEY] || {};\n var proxy = expando.renderProxy;\n if (proxy) {\n helpers$1.each(ANIMATION_START_EVENTS, function (type) {\n removeListener(node, type, proxy);\n });\n delete expando.renderProxy;\n }\n node.classList.remove(CSS_RENDER_MONITOR);\n }\n function addResizeListener(node, listener, chart) {\n var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\n\n // Let's keep track of this added resizer and thus avoid DOM query when removing it.\n var resizer = expando.resizer = createResizer(throttled(function () {\n if (expando.resizer) {\n var container = chart.options.maintainAspectRatio && node.parentNode;\n var w = container ? container.clientWidth : 0;\n listener(createEvent('resize', chart));\n if (container && container.clientWidth < w && chart.canvas) {\n // If the container size shrank during chart resize, let's assume\n // scrollbar appeared. So we resize again with the scrollbar visible -\n // effectively making chart smaller and the scrollbar hidden again.\n // Because we are inside `throttled`, and currently `ticking`, scroll\n // events are ignored during this whole 2 resize process.\n // If we assumed wrong and something else happened, we are resizing\n // twice in a frame (potential performance issue)\n listener(createEvent('resize', chart));\n }\n }\n }));\n\n // The resizer needs to be attached to the node parent, so we first need to be\n // sure that `node` is attached to the DOM before injecting the resizer element.\n watchForRender(node, function () {\n if (expando.resizer) {\n var container = node.parentNode;\n if (container && container !== resizer.parentNode) {\n container.insertBefore(resizer, container.firstChild);\n }\n\n // The container size might have changed, let's reset the resizer state.\n resizer._reset();\n }\n });\n }\n function removeResizeListener(node) {\n var expando = node[EXPANDO_KEY] || {};\n var resizer = expando.resizer;\n delete expando.resizer;\n unwatchForRender(node);\n if (resizer && resizer.parentNode) {\n resizer.parentNode.removeChild(resizer);\n }\n }\n\n /**\r\n * Injects CSS styles inline if the styles are not already present.\r\n * @param {HTMLDocument|ShadowRoot} rootNode - the node to contain the <style>.\r\n * @param {string} css - the CSS to be injected.\r\n */\n function injectCSS(rootNode, css) {\n // https://stackoverflow.com/q/3922139\n var expando = rootNode[EXPANDO_KEY] || (rootNode[EXPANDO_KEY] = {});\n if (!expando.containsStyles) {\n expando.containsStyles = true;\n css = '/* Chart.js */\\n' + css;\n var style = document.createElement('style');\n style.setAttribute('type', 'text/css');\n style.appendChild(document.createTextNode(css));\n rootNode.appendChild(style);\n }\n }\n var platform_dom$2 = {\n /**\r\n * When `true`, prevents the automatic injection of the stylesheet required to\r\n * correctly detect when the chart is added to the DOM and then resized. This\r\n * switch has been added to allow external stylesheet (`dist/Chart(.min)?.js`)\r\n * to be manually imported to make this library compatible with any CSP.\r\n * See https://github.com/chartjs/Chart.js/issues/5208\r\n */\n disableCSSInjection: false,\n /**\r\n * This property holds whether this platform is enabled for the current environment.\r\n * Currently used by platform.js to select the proper implementation.\r\n * @private\r\n */\n _enabled: typeof window !== 'undefined' && typeof document !== 'undefined',\n /**\r\n * Initializes resources that depend on platform options.\r\n * @param {HTMLCanvasElement} canvas - The Canvas element.\r\n * @private\r\n */\n _ensureLoaded: function (canvas) {\n if (!this.disableCSSInjection) {\n // If the canvas is in a shadow DOM, then the styles must also be inserted\n // into the same shadow DOM.\n // https://github.com/chartjs/Chart.js/issues/5763\n var root = canvas.getRootNode ? canvas.getRootNode() : document;\n var targetNode = root.host ? root : document.head;\n injectCSS(targetNode, stylesheet);\n }\n },\n acquireContext: function (item, config) {\n if (typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item.length) {\n // Support for array based queries (such as jQuery)\n item = item[0];\n }\n if (item && item.canvas) {\n // Support for any object associated to a canvas (including a context2d)\n item = item.canvas;\n }\n\n // To prevent canvas fingerprinting, some add-ons undefine the getContext\n // method, for example: https://github.com/kkapsner/CanvasBlocker\n // https://github.com/chartjs/Chart.js/issues/2807\n var context = item && item.getContext && item.getContext('2d');\n\n // `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is\n // inside an iframe or when running in a protected environment. We could guess the\n // types from their toString() value but let's keep things flexible and assume it's\n // a sufficient condition if the item has a context2D which has item as `canvas`.\n // https://github.com/chartjs/Chart.js/issues/3887\n // https://github.com/chartjs/Chart.js/issues/4102\n // https://github.com/chartjs/Chart.js/issues/4152\n if (context && context.canvas === item) {\n // Load platform resources on first chart creation, to make it possible to\n // import the library before setting platform options.\n this._ensureLoaded(item);\n initCanvas(item, config);\n return context;\n }\n return null;\n },\n releaseContext: function (context) {\n var canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return;\n }\n var initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach(function (prop) {\n var value = initial[prop];\n if (helpers$1.isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n helpers$1.each(initial.style || {}, function (value, key) {\n canvas.style[key] = value;\n });\n\n // The canvas render size might have been changed (and thus the state stack discarded),\n // we can't use save() and restore() to restore the initial state. So make sure that at\n // least the canvas context is reset to the default state by setting the canvas width.\n // https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html\n // eslint-disable-next-line no-self-assign\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n },\n addEventListener: function (chart, type, listener) {\n var canvas = chart.canvas;\n if (type === 'resize') {\n // Note: the resize event is not supported on all browsers.\n addResizeListener(canvas, listener, chart);\n return;\n }\n var expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {});\n var proxies = expando.proxies || (expando.proxies = {});\n var proxy = proxies[chart.id + '_' + type] = function (event) {\n listener(fromNativeEvent(event, chart));\n };\n addListener(canvas, type, proxy);\n },\n removeEventListener: function (chart, type, listener) {\n var canvas = chart.canvas;\n if (type === 'resize') {\n // Note: the resize event is not supported on all browsers.\n removeResizeListener(canvas);\n return;\n }\n var expando = listener[EXPANDO_KEY] || {};\n var proxies = expando.proxies || {};\n var proxy = proxies[chart.id + '_' + type];\n if (!proxy) {\n return;\n }\n removeListener(canvas, type, proxy);\n }\n };\n\n // DEPRECATIONS\n\n /**\r\n * Provided for backward compatibility, use EventTarget.addEventListener instead.\r\n * EventTarget.addEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\r\n * @function Chart.helpers.addEvent\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\n helpers$1.addEvent = addListener;\n\n /**\r\n * Provided for backward compatibility, use EventTarget.removeEventListener instead.\r\n * EventTarget.removeEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener\r\n * @function Chart.helpers.removeEvent\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\n helpers$1.removeEvent = removeListener;\n\n // @TODO Make possible to select another platform at build time.\n var implementation = platform_dom$2._enabled ? platform_dom$2 : platform_basic;\n\n /**\r\n * @namespace Chart.platform\r\n * @see https://chartjs.gitbooks.io/proposals/content/Platform.html\r\n * @since 2.4.0\r\n */\n var platform = helpers$1.extend({\n /**\r\n * @since 2.7.0\r\n */\n initialize: function () {},\n /**\r\n * Called at chart construction time, returns a context2d instance implementing\r\n * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.\r\n * @param {*} item - The native item from which to acquire context (platform specific)\r\n * @param {object} options - The chart options\r\n * @returns {CanvasRenderingContext2D} context2d instance\r\n */\n acquireContext: function () {},\n /**\r\n * Called at chart destruction time, releases any resources associated to the context\r\n * previously returned by the acquireContext() method.\r\n * @param {CanvasRenderingContext2D} context - The context2d instance\r\n * @returns {boolean} true if the method succeeded, else false\r\n */\n releaseContext: function () {},\n /**\r\n * Registers the specified listener on the given chart.\r\n * @param {Chart} chart - Chart from which to listen for event\r\n * @param {string} type - The ({@link IEvent}) type to listen for\r\n * @param {function} listener - Receives a notification (an object that implements\r\n * the {@link IEvent} interface) when an event of the specified type occurs.\r\n */\n addEventListener: function () {},\n /**\r\n * Removes the specified listener previously registered with addEventListener.\r\n * @param {Chart} chart - Chart from which to remove the listener\r\n * @param {string} type - The ({@link IEvent}) type to remove\r\n * @param {function} listener - The listener function to remove from the event target.\r\n */\n removeEventListener: function () {}\n }, implementation);\n core_defaults._set('global', {\n plugins: {}\n });\n\n /**\r\n * The plugin service singleton\r\n * @namespace Chart.plugins\r\n * @since 2.1.0\r\n */\n var core_plugins = {\n /**\r\n * Globally registered plugins.\r\n * @private\r\n */\n _plugins: [],\n /**\r\n * This identifier is used to invalidate the descriptors cache attached to each chart\r\n * when a global plugin is registered or unregistered. In this case, the cache ID is\r\n * incremented and descriptors are regenerated during following API calls.\r\n * @private\r\n */\n _cacheId: 0,\n /**\r\n * Registers the given plugin(s) if not already registered.\r\n * @param {IPlugin[]|IPlugin} plugins plugin instance(s).\r\n */\n register: function (plugins) {\n var p = this._plugins;\n [].concat(plugins).forEach(function (plugin) {\n if (p.indexOf(plugin) === -1) {\n p.push(plugin);\n }\n });\n this._cacheId++;\n },\n /**\r\n * Unregisters the given plugin(s) only if registered.\r\n * @param {IPlugin[]|IPlugin} plugins plugin instance(s).\r\n */\n unregister: function (plugins) {\n var p = this._plugins;\n [].concat(plugins).forEach(function (plugin) {\n var idx = p.indexOf(plugin);\n if (idx !== -1) {\n p.splice(idx, 1);\n }\n });\n this._cacheId++;\n },\n /**\r\n * Remove all registered plugins.\r\n * @since 2.1.5\r\n */\n clear: function () {\n this._plugins = [];\n this._cacheId++;\n },\n /**\r\n * Returns the number of registered plugins?\r\n * @returns {number}\r\n * @since 2.1.5\r\n */\n count: function () {\n return this._plugins.length;\n },\n /**\r\n * Returns all registered plugin instances.\r\n * @returns {IPlugin[]} array of plugin objects.\r\n * @since 2.1.5\r\n */\n getAll: function () {\n return this._plugins;\n },\n /**\r\n * Calls enabled plugins for `chart` on the specified hook and with the given args.\r\n * This method immediately returns as soon as a plugin explicitly returns false. The\r\n * returned value can be used, for instance, to interrupt the current action.\r\n * @param {Chart} chart - The chart instance for which plugins should be called.\r\n * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\r\n * @param {Array} [args] - Extra arguments to apply to the hook call.\r\n * @returns {boolean} false if any of the plugins return false, else returns true.\r\n */\n notify: function (chart, hook, args) {\n var descriptors = this.descriptors(chart);\n var ilen = descriptors.length;\n var i, descriptor, plugin, params, method;\n for (i = 0; i < ilen; ++i) {\n descriptor = descriptors[i];\n plugin = descriptor.plugin;\n method = plugin[hook];\n if (typeof method === 'function') {\n params = [chart].concat(args || []);\n params.push(descriptor.options);\n if (method.apply(plugin, params) === false) {\n return false;\n }\n }\n }\n return true;\n },\n /**\r\n * Returns descriptors of enabled plugins for the given chart.\r\n * @returns {object[]} [{ plugin, options }]\r\n * @private\r\n */\n descriptors: function (chart) {\n var cache = chart.$plugins || (chart.$plugins = {});\n if (cache.id === this._cacheId) {\n return cache.descriptors;\n }\n var plugins = [];\n var descriptors = [];\n var config = chart && chart.config || {};\n var options = config.options && config.options.plugins || {};\n this._plugins.concat(config.plugins || []).forEach(function (plugin) {\n var idx = plugins.indexOf(plugin);\n if (idx !== -1) {\n return;\n }\n var id = plugin.id;\n var opts = options[id];\n if (opts === false) {\n return;\n }\n if (opts === true) {\n opts = helpers$1.clone(core_defaults.global.plugins[id]);\n }\n plugins.push(plugin);\n descriptors.push({\n plugin: plugin,\n options: opts || {}\n });\n });\n cache.descriptors = descriptors;\n cache.id = this._cacheId;\n return descriptors;\n },\n /**\r\n * Invalidates cache for the given chart: descriptors hold a reference on plugin option,\r\n * but in some cases, this reference can be changed by the user when updating options.\r\n * https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\r\n * @private\r\n */\n _invalidate: function (chart) {\n delete chart.$plugins;\n }\n };\n var core_scaleService = {\n // Scale registration object. Extensions can register new scale types (such as log or DB scales) and then\n // use the new chart options to grab the correct scale\n constructors: {},\n // Use a registration function so that we can move to an ES6 map when we no longer need to support\n // old browsers\n\n // Scale config defaults\n defaults: {},\n registerScaleType: function (type, scaleConstructor, scaleDefaults) {\n this.constructors[type] = scaleConstructor;\n this.defaults[type] = helpers$1.clone(scaleDefaults);\n },\n getScaleConstructor: function (type) {\n return this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined;\n },\n getScaleDefaults: function (type) {\n // Return the scale defaults merged with the global settings so that we always use the latest ones\n return this.defaults.hasOwnProperty(type) ? helpers$1.merge(Object.create(null), [core_defaults.scale, this.defaults[type]]) : {};\n },\n updateScaleDefaults: function (type, additions) {\n var me = this;\n if (me.defaults.hasOwnProperty(type)) {\n me.defaults[type] = helpers$1.extend(me.defaults[type], additions);\n }\n },\n addScalesToLayout: function (chart) {\n // Adds each scale to the chart.boxes array to be sized accordingly\n helpers$1.each(chart.scales, function (scale) {\n // Set ILayoutItem parameters for backwards compatibility\n scale.fullWidth = scale.options.fullWidth;\n scale.position = scale.options.position;\n scale.weight = scale.options.weight;\n core_layouts.addBox(chart, scale);\n });\n }\n };\n var valueOrDefault$8 = helpers$1.valueOrDefault;\n var getRtlHelper = helpers$1.rtl.getRtlAdapter;\n core_defaults._set('global', {\n tooltips: {\n enabled: true,\n custom: null,\n mode: 'nearest',\n position: 'average',\n intersect: true,\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleFontStyle: 'bold',\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleFontColor: '#fff',\n titleAlign: 'left',\n bodySpacing: 2,\n bodyFontColor: '#fff',\n bodyAlign: 'left',\n footerFontStyle: 'bold',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFontColor: '#fff',\n footerAlign: 'left',\n yPadding: 6,\n xPadding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n multiKeyBackground: '#fff',\n displayColors: true,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n callbacks: {\n // Args are: (tooltipItems, data)\n beforeTitle: helpers$1.noop,\n title: function (tooltipItems, data) {\n var title = '';\n var labels = data.labels;\n var labelCount = labels ? labels.length : 0;\n if (tooltipItems.length > 0) {\n var item = tooltipItems[0];\n if (item.label) {\n title = item.label;\n } else if (item.xLabel) {\n title = item.xLabel;\n } else if (labelCount > 0 && item.index < labelCount) {\n title = labels[item.index];\n }\n }\n return title;\n },\n afterTitle: helpers$1.noop,\n // Args are: (tooltipItems, data)\n beforeBody: helpers$1.noop,\n // Args are: (tooltipItem, data)\n beforeLabel: helpers$1.noop,\n label: function (tooltipItem, data) {\n var label = data.datasets[tooltipItem.datasetIndex].label || '';\n if (label) {\n label += ': ';\n }\n if (!helpers$1.isNullOrUndef(tooltipItem.value)) {\n label += tooltipItem.value;\n } else {\n label += tooltipItem.yLabel;\n }\n return label;\n },\n labelColor: function (tooltipItem, chart) {\n var meta = chart.getDatasetMeta(tooltipItem.datasetIndex);\n var activeElement = meta.data[tooltipItem.index];\n var view = activeElement._view;\n return {\n borderColor: view.borderColor,\n backgroundColor: view.backgroundColor\n };\n },\n labelTextColor: function () {\n return this._options.bodyFontColor;\n },\n afterLabel: helpers$1.noop,\n // Args are: (tooltipItems, data)\n afterBody: helpers$1.noop,\n // Args are: (tooltipItems, data)\n beforeFooter: helpers$1.noop,\n footer: helpers$1.noop,\n afterFooter: helpers$1.noop\n }\n }\n });\n var positioners = {\n /**\r\n * Average mode places the tooltip at the average position of the elements shown\r\n * @function Chart.Tooltip.positioners.average\r\n * @param elements {ChartElement[]} the elements being displayed in the tooltip\r\n * @returns {object} tooltip position\r\n */\n average: function (elements) {\n if (!elements.length) {\n return false;\n }\n var i, len;\n var x = 0;\n var y = 0;\n var count = 0;\n for (i = 0, len = elements.length; i < len; ++i) {\n var el = elements[i];\n if (el && el.hasValue()) {\n var pos = el.tooltipPosition();\n x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n return {\n x: x / count,\n y: y / count\n };\n },\n /**\r\n * Gets the tooltip position nearest of the item nearest to the event position\r\n * @function Chart.Tooltip.positioners.nearest\r\n * @param elements {Chart.Element[]} the tooltip elements\r\n * @param eventPosition {object} the position of the event in canvas coordinates\r\n * @returns {object} the tooltip position\r\n */\n nearest: function (elements, eventPosition) {\n var x = eventPosition.x;\n var y = eventPosition.y;\n var minDistance = Number.POSITIVE_INFINITY;\n var i, len, nearestElement;\n for (i = 0, len = elements.length; i < len; ++i) {\n var el = elements[i];\n if (el && el.hasValue()) {\n var center = el.getCenterPoint();\n var d = helpers$1.distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n var tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x: x,\n y: y\n };\n }\n };\n\n // Helper to push or concat based on if the 2nd parameter is an array or not\n function pushOrConcat(base, toPush) {\n if (toPush) {\n if (helpers$1.isArray(toPush)) {\n // base = base.concat(toPush);\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n }\n\n /**\r\n * Returns array of strings split by newline\r\n * @param {string} value - The value to split by newline.\r\n * @returns {string[]} value if newline present - Returned from String split() method\r\n * @function\r\n */\n function splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n }\n\n /**\r\n * Private helper to create a tooltip item model\r\n * @param element - the chart element (point, arc, bar) to create the tooltip item for\r\n * @return new tooltip item\r\n */\n function createTooltipItem(element) {\n var xScale = element._xScale;\n var yScale = element._yScale || element._scale; // handle radar || polarArea charts\n var index = element._index;\n var datasetIndex = element._datasetIndex;\n var controller = element._chart.getDatasetMeta(datasetIndex).controller;\n var indexScale = controller._getIndexScale();\n var valueScale = controller._getValueScale();\n return {\n xLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '',\n yLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '',\n label: indexScale ? '' + indexScale.getLabelForIndex(index, datasetIndex) : '',\n value: valueScale ? '' + valueScale.getLabelForIndex(index, datasetIndex) : '',\n index: index,\n datasetIndex: datasetIndex,\n x: element._model.x,\n y: element._model.y\n };\n }\n\n /**\r\n * Helper to get the reset model for the tooltip\r\n * @param tooltipOpts {object} the tooltip options\r\n */\n function getBaseModel(tooltipOpts) {\n var globalDefaults = core_defaults.global;\n return {\n // Positioning\n xPadding: tooltipOpts.xPadding,\n yPadding: tooltipOpts.yPadding,\n xAlign: tooltipOpts.xAlign,\n yAlign: tooltipOpts.yAlign,\n // Drawing direction and text direction\n rtl: tooltipOpts.rtl,\n textDirection: tooltipOpts.textDirection,\n // Body\n bodyFontColor: tooltipOpts.bodyFontColor,\n _bodyFontFamily: valueOrDefault$8(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily),\n _bodyFontStyle: valueOrDefault$8(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle),\n _bodyAlign: tooltipOpts.bodyAlign,\n bodyFontSize: valueOrDefault$8(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize),\n bodySpacing: tooltipOpts.bodySpacing,\n // Title\n titleFontColor: tooltipOpts.titleFontColor,\n _titleFontFamily: valueOrDefault$8(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily),\n _titleFontStyle: valueOrDefault$8(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle),\n titleFontSize: valueOrDefault$8(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize),\n _titleAlign: tooltipOpts.titleAlign,\n titleSpacing: tooltipOpts.titleSpacing,\n titleMarginBottom: tooltipOpts.titleMarginBottom,\n // Footer\n footerFontColor: tooltipOpts.footerFontColor,\n _footerFontFamily: valueOrDefault$8(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily),\n _footerFontStyle: valueOrDefault$8(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle),\n footerFontSize: valueOrDefault$8(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize),\n _footerAlign: tooltipOpts.footerAlign,\n footerSpacing: tooltipOpts.footerSpacing,\n footerMarginTop: tooltipOpts.footerMarginTop,\n // Appearance\n caretSize: tooltipOpts.caretSize,\n cornerRadius: tooltipOpts.cornerRadius,\n backgroundColor: tooltipOpts.backgroundColor,\n opacity: 0,\n legendColorBackground: tooltipOpts.multiKeyBackground,\n displayColors: tooltipOpts.displayColors,\n borderColor: tooltipOpts.borderColor,\n borderWidth: tooltipOpts.borderWidth\n };\n }\n\n /**\r\n * Get the size of the tooltip\r\n */\n function getTooltipSize(tooltip, model) {\n var ctx = tooltip._chart.ctx;\n var height = model.yPadding * 2; // Tooltip Padding\n var width = 0;\n\n // Count of all lines in the body\n var body = model.body;\n var combinedBodyLength = body.reduce(function (count, bodyItem) {\n return count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length;\n }, 0);\n combinedBodyLength += model.beforeBody.length + model.afterBody.length;\n var titleLineCount = model.title.length;\n var footerLineCount = model.footer.length;\n var titleFontSize = model.titleFontSize;\n var bodyFontSize = model.bodyFontSize;\n var footerFontSize = model.footerFontSize;\n height += titleLineCount * titleFontSize; // Title Lines\n height += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing\n height += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin\n height += combinedBodyLength * bodyFontSize; // Body Lines\n height += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing\n height += footerLineCount ? model.footerMarginTop : 0; // Footer Margin\n height += footerLineCount * footerFontSize; // Footer Lines\n height += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing\n\n // Title width\n var widthPadding = 0;\n var maxLineWidth = function (line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n ctx.font = helpers$1.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily);\n helpers$1.each(model.title, maxLineWidth);\n\n // Body width\n ctx.font = helpers$1.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily);\n helpers$1.each(model.beforeBody.concat(model.afterBody), maxLineWidth);\n\n // Body lines may include some extra width due to the color box\n widthPadding = model.displayColors ? bodyFontSize + 2 : 0;\n helpers$1.each(body, function (bodyItem) {\n helpers$1.each(bodyItem.before, maxLineWidth);\n helpers$1.each(bodyItem.lines, maxLineWidth);\n helpers$1.each(bodyItem.after, maxLineWidth);\n });\n\n // Reset back to 0\n widthPadding = 0;\n\n // Footer width\n ctx.font = helpers$1.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily);\n helpers$1.each(model.footer, maxLineWidth);\n\n // Add padding\n width += 2 * model.xPadding;\n return {\n width: width,\n height: height\n };\n }\n\n /**\r\n * Helper to get the alignment of a tooltip given the size\r\n */\n function determineAlignment(tooltip, size) {\n var model = tooltip._model;\n var chart = tooltip._chart;\n var chartArea = tooltip._chart.chartArea;\n var xAlign = 'center';\n var yAlign = 'center';\n if (model.y < size.height) {\n yAlign = 'top';\n } else if (model.y > chart.height - size.height) {\n yAlign = 'bottom';\n }\n var lf, rf; // functions to determine left, right alignment\n var olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart\n var yf; // function to get the y alignment if the tooltip goes outside of the left or right edges\n var midX = (chartArea.left + chartArea.right) / 2;\n var midY = (chartArea.top + chartArea.bottom) / 2;\n if (yAlign === 'center') {\n lf = function (x) {\n return x <= midX;\n };\n rf = function (x) {\n return x > midX;\n };\n } else {\n lf = function (x) {\n return x <= size.width / 2;\n };\n rf = function (x) {\n return x >= chart.width - size.width / 2;\n };\n }\n olf = function (x) {\n return x + size.width + model.caretSize + model.caretPadding > chart.width;\n };\n orf = function (x) {\n return x - size.width - model.caretSize - model.caretPadding < 0;\n };\n yf = function (y) {\n return y <= midY ? 'top' : 'bottom';\n };\n if (lf(model.x)) {\n xAlign = 'left';\n\n // Is tooltip too wide and goes over the right side of the chart.?\n if (olf(model.x)) {\n xAlign = 'center';\n yAlign = yf(model.y);\n }\n } else if (rf(model.x)) {\n xAlign = 'right';\n\n // Is tooltip too wide and goes outside left edge of canvas?\n if (orf(model.x)) {\n xAlign = 'center';\n yAlign = yf(model.y);\n }\n }\n var opts = tooltip._options;\n return {\n xAlign: opts.xAlign ? opts.xAlign : xAlign,\n yAlign: opts.yAlign ? opts.yAlign : yAlign\n };\n }\n\n /**\r\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\r\n */\n function getBackgroundPoint(vm, size, alignment, chart) {\n // Background Position\n var x = vm.x;\n var y = vm.y;\n var caretSize = vm.caretSize;\n var caretPadding = vm.caretPadding;\n var cornerRadius = vm.cornerRadius;\n var xAlign = alignment.xAlign;\n var yAlign = alignment.yAlign;\n var paddingAndSize = caretSize + caretPadding;\n var radiusAndPadding = cornerRadius + caretPadding;\n if (xAlign === 'right') {\n x -= size.width;\n } else if (xAlign === 'center') {\n x -= size.width / 2;\n if (x + size.width > chart.width) {\n x = chart.width - size.width;\n }\n if (x < 0) {\n x = 0;\n }\n }\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= size.height + paddingAndSize;\n } else {\n y -= size.height / 2;\n }\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= radiusAndPadding;\n } else if (xAlign === 'right') {\n x += radiusAndPadding;\n }\n return {\n x: x,\n y: y\n };\n }\n function getAlignedX(vm, align) {\n return align === 'center' ? vm.x + vm.width / 2 : align === 'right' ? vm.x + vm.width - vm.xPadding : vm.x + vm.xPadding;\n }\n\n /**\r\n * Helper to build before and after body lines\r\n */\n function getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n }\n var exports$4 = core_element.extend({\n initialize: function () {\n this._model = getBaseModel(this._options);\n this._lastActive = [];\n },\n // Get the title\n // Args are: (tooltipItem, data)\n getTitle: function () {\n var me = this;\n var opts = me._options;\n var callbacks = opts.callbacks;\n var beforeTitle = callbacks.beforeTitle.apply(me, arguments);\n var title = callbacks.title.apply(me, arguments);\n var afterTitle = callbacks.afterTitle.apply(me, arguments);\n var lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n },\n // Args are: (tooltipItem, data)\n getBeforeBody: function () {\n return getBeforeAfterBodyLines(this._options.callbacks.beforeBody.apply(this, arguments));\n },\n // Args are: (tooltipItem, data)\n getBody: function (tooltipItems, data) {\n var me = this;\n var callbacks = me._options.callbacks;\n var bodyItems = [];\n helpers$1.each(tooltipItems, function (tooltipItem) {\n var bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n pushOrConcat(bodyItem.before, splitNewlines(callbacks.beforeLabel.call(me, tooltipItem, data)));\n pushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data));\n pushOrConcat(bodyItem.after, splitNewlines(callbacks.afterLabel.call(me, tooltipItem, data)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n },\n // Args are: (tooltipItem, data)\n getAfterBody: function () {\n return getBeforeAfterBodyLines(this._options.callbacks.afterBody.apply(this, arguments));\n },\n // Get the footer and beforeFooter and afterFooter lines\n // Args are: (tooltipItem, data)\n getFooter: function () {\n var me = this;\n var callbacks = me._options.callbacks;\n var beforeFooter = callbacks.beforeFooter.apply(me, arguments);\n var footer = callbacks.footer.apply(me, arguments);\n var afterFooter = callbacks.afterFooter.apply(me, arguments);\n var lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n },\n update: function (changed) {\n var me = this;\n var opts = me._options;\n\n // Need to regenerate the model because its faster than using extend and it is necessary due to the optimization in Chart.Element.transition\n // 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 // which breaks any animations.\n var existingModel = me._model;\n var model = me._model = getBaseModel(opts);\n var active = me._active;\n var data = me._data;\n\n // In the case where active.length === 0 we need to keep these at existing values for good animations\n var alignment = {\n xAlign: existingModel.xAlign,\n yAlign: existingModel.yAlign\n };\n var backgroundPoint = {\n x: existingModel.x,\n y: existingModel.y\n };\n var tooltipSize = {\n width: existingModel.width,\n height: existingModel.height\n };\n var tooltipPosition = {\n x: existingModel.caretX,\n y: existingModel.caretY\n };\n var i, len;\n if (active.length) {\n model.opacity = 1;\n var labelColors = [];\n var labelTextColors = [];\n tooltipPosition = positioners[opts.position].call(me, active, me._eventPosition);\n var tooltipItems = [];\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(active[i]));\n }\n\n // If the user provided a filter function, use it to modify the tooltip items\n if (opts.filter) {\n tooltipItems = tooltipItems.filter(function (a) {\n return opts.filter(a, data);\n });\n }\n\n // If the user provided a sorting function, use it to modify the tooltip items\n if (opts.itemSort) {\n tooltipItems = tooltipItems.sort(function (a, b) {\n return opts.itemSort(a, b, data);\n });\n }\n\n // Determine colors for boxes\n helpers$1.each(tooltipItems, function (tooltipItem) {\n labelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart));\n labelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart));\n });\n\n // Build the Text Lines\n model.title = me.getTitle(tooltipItems, data);\n model.beforeBody = me.getBeforeBody(tooltipItems, data);\n model.body = me.getBody(tooltipItems, data);\n model.afterBody = me.getAfterBody(tooltipItems, data);\n model.footer = me.getFooter(tooltipItems, data);\n\n // Initial positioning and colors\n model.x = tooltipPosition.x;\n model.y = tooltipPosition.y;\n model.caretPadding = opts.caretPadding;\n model.labelColors = labelColors;\n model.labelTextColors = labelTextColors;\n\n // data points\n model.dataPoints = tooltipItems;\n\n // We need to determine alignment of the tooltip\n tooltipSize = getTooltipSize(this, model);\n alignment = determineAlignment(this, tooltipSize);\n // Final Size and Position\n backgroundPoint = getBackgroundPoint(model, tooltipSize, alignment, me._chart);\n } else {\n model.opacity = 0;\n }\n model.xAlign = alignment.xAlign;\n model.yAlign = alignment.yAlign;\n model.x = backgroundPoint.x;\n model.y = backgroundPoint.y;\n model.width = tooltipSize.width;\n model.height = tooltipSize.height;\n\n // Point where the caret on the tooltip points to\n model.caretX = tooltipPosition.x;\n model.caretY = tooltipPosition.y;\n me._model = model;\n if (changed && opts.custom) {\n opts.custom.call(me, model);\n }\n return me;\n },\n drawCaret: function (tooltipPoint, size) {\n var ctx = this._chart.ctx;\n var vm = this._view;\n var caretPosition = this.getCaretPosition(tooltipPoint, size, vm);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n },\n getCaretPosition: function (tooltipPoint, size, vm) {\n var x1, x2, x3, y1, y2, y3;\n var caretSize = vm.caretSize;\n var cornerRadius = vm.cornerRadius;\n var xAlign = vm.xAlign;\n var yAlign = vm.yAlign;\n var ptX = tooltipPoint.x;\n var ptY = tooltipPoint.y;\n var width = size.width;\n var height = size.height;\n if (yAlign === 'center') {\n y2 = ptY + height / 2;\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n x3 = x1;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n x3 = x1;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n } else {\n if (xAlign === 'left') {\n x2 = ptX + cornerRadius + caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else if (xAlign === 'right') {\n x2 = ptX + width - cornerRadius - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n x2 = vm.caretX;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n y3 = y1;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n y3 = y1;\n // invert drawing order\n var tmp = x3;\n x3 = x1;\n x1 = tmp;\n }\n }\n return {\n x1: x1,\n x2: x2,\n x3: x3,\n y1: y1,\n y2: y2,\n y3: y3\n };\n },\n drawTitle: function (pt, vm, ctx) {\n var title = vm.title;\n var length = title.length;\n var titleFontSize, titleSpacing, i;\n if (length) {\n var rtlHelper = getRtlHelper(vm.rtl, vm.x, vm.width);\n pt.x = getAlignedX(vm, vm._titleAlign);\n ctx.textAlign = rtlHelper.textAlign(vm._titleAlign);\n ctx.textBaseline = 'middle';\n titleFontSize = vm.titleFontSize;\n titleSpacing = vm.titleSpacing;\n ctx.fillStyle = vm.titleFontColor;\n ctx.font = helpers$1.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily);\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFontSize / 2);\n pt.y += titleFontSize + titleSpacing; // Line Height and spacing\n\n if (i + 1 === length) {\n pt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\n }\n }\n }\n },\n\n drawBody: function (pt, vm, ctx) {\n var bodyFontSize = vm.bodyFontSize;\n var bodySpacing = vm.bodySpacing;\n var bodyAlign = vm._bodyAlign;\n var body = vm.body;\n var drawColorBoxes = vm.displayColors;\n var xLinePadding = 0;\n var colorX = drawColorBoxes ? getAlignedX(vm, 'left') : 0;\n var rtlHelper = getRtlHelper(vm.rtl, vm.x, vm.width);\n var fillLineOfText = function (line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyFontSize / 2);\n pt.y += bodyFontSize + bodySpacing;\n };\n var bodyItem, textColor, labelColors, lines, i, j, ilen, jlen;\n var bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = helpers$1.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily);\n pt.x = getAlignedX(vm, bodyAlignForCalculation);\n\n // Before body lines\n ctx.fillStyle = vm.bodyFontColor;\n helpers$1.each(vm.beforeBody, fillLineOfText);\n xLinePadding = drawColorBoxes && bodyAlignForCalculation !== 'right' ? bodyAlign === 'center' ? bodyFontSize / 2 + 1 : bodyFontSize + 2 : 0;\n\n // Draw body lines now\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = vm.labelTextColors[i];\n labelColors = vm.labelColors[i];\n ctx.fillStyle = textColor;\n helpers$1.each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n // Draw Legend-like boxes if needed\n if (drawColorBoxes) {\n var rtlColorX = rtlHelper.x(colorX);\n\n // Fill a white rect so that colours merge nicely if the opacity is < 1\n ctx.fillStyle = vm.legendColorBackground;\n ctx.fillRect(rtlHelper.leftForLtr(rtlColorX, bodyFontSize), pt.y, bodyFontSize, bodyFontSize);\n\n // Border\n ctx.lineWidth = 1;\n ctx.strokeStyle = labelColors.borderColor;\n ctx.strokeRect(rtlHelper.leftForLtr(rtlColorX, bodyFontSize), pt.y, bodyFontSize, bodyFontSize);\n\n // Inner square\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.fillRect(rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), bodyFontSize - 2), pt.y + 1, bodyFontSize - 2, bodyFontSize - 2);\n ctx.fillStyle = textColor;\n }\n fillLineOfText(lines[j]);\n }\n helpers$1.each(bodyItem.after, fillLineOfText);\n }\n\n // Reset back to 0 for after body\n xLinePadding = 0;\n\n // After body lines\n helpers$1.each(vm.afterBody, fillLineOfText);\n pt.y -= bodySpacing; // Remove last body spacing\n },\n\n drawFooter: function (pt, vm, ctx) {\n var footer = vm.footer;\n var length = footer.length;\n var footerFontSize, i;\n if (length) {\n var rtlHelper = getRtlHelper(vm.rtl, vm.x, vm.width);\n pt.x = getAlignedX(vm, vm._footerAlign);\n pt.y += vm.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(vm._footerAlign);\n ctx.textBaseline = 'middle';\n footerFontSize = vm.footerFontSize;\n ctx.fillStyle = vm.footerFontColor;\n ctx.font = helpers$1.fontString(footerFontSize, vm._footerFontStyle, vm._footerFontFamily);\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFontSize / 2);\n pt.y += footerFontSize + vm.footerSpacing;\n }\n }\n },\n drawBackground: function (pt, vm, ctx, tooltipSize) {\n ctx.fillStyle = vm.backgroundColor;\n ctx.strokeStyle = vm.borderColor;\n ctx.lineWidth = vm.borderWidth;\n var xAlign = vm.xAlign;\n var yAlign = vm.yAlign;\n var x = pt.x;\n var y = pt.y;\n var width = tooltipSize.width;\n var height = tooltipSize.height;\n var radius = vm.cornerRadius;\n ctx.beginPath();\n ctx.moveTo(x + radius, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, tooltipSize);\n }\n ctx.lineTo(x + width - radius, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, tooltipSize);\n }\n ctx.lineTo(x + width, y + height - radius);\n ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, tooltipSize);\n }\n ctx.lineTo(x + radius, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, tooltipSize);\n }\n ctx.lineTo(x, y + radius);\n ctx.quadraticCurveTo(x, y, x + radius, y);\n ctx.closePath();\n ctx.fill();\n if (vm.borderWidth > 0) {\n ctx.stroke();\n }\n },\n draw: function () {\n var ctx = this._chart.ctx;\n var vm = this._view;\n if (vm.opacity === 0) {\n return;\n }\n var tooltipSize = {\n width: vm.width,\n height: vm.height\n };\n var pt = {\n x: vm.x,\n y: vm.y\n };\n\n // IE11/Edge does not like very small opacities, so snap to 0\n var opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity;\n\n // Truthy/falsey value for empty tooltip\n var hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length;\n if (this._options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n\n // Draw Background\n this.drawBackground(pt, vm, ctx, tooltipSize);\n\n // Draw Title, Body, and Footer\n pt.y += vm.yPadding;\n helpers$1.rtl.overrideTextDirection(ctx, vm.textDirection);\n\n // Titles\n this.drawTitle(pt, vm, ctx);\n\n // Body\n this.drawBody(pt, vm, ctx);\n\n // Footer\n this.drawFooter(pt, vm, ctx);\n helpers$1.rtl.restoreTextDirection(ctx, vm.textDirection);\n ctx.restore();\n }\n },\n /**\r\n * Handle an event\r\n * @private\r\n * @param {IEvent} event - The event to handle\r\n * @returns {boolean} true if the tooltip changed\r\n */\n handleEvent: function (e) {\n var me = this;\n var options = me._options;\n var changed = false;\n me._lastActive = me._lastActive || [];\n\n // Find Active Elements for tooltips\n if (e.type === 'mouseout') {\n me._active = [];\n } else {\n me._active = me._chart.getElementsAtEventForMode(e, options.mode, options);\n if (options.reverse) {\n me._active.reverse();\n }\n }\n\n // Remember Last Actives\n changed = !helpers$1.arrayEquals(me._active, me._lastActive);\n\n // Only handle target event on tooltip change\n if (changed) {\n me._lastActive = me._active;\n if (options.enabled || options.custom) {\n me._eventPosition = {\n x: e.x,\n y: e.y\n };\n me.update(true);\n me.pivot();\n }\n }\n return changed;\n }\n });\n\n /**\r\n * @namespace Chart.Tooltip.positioners\r\n */\n var positioners_1 = positioners;\n var core_tooltip = exports$4;\n core_tooltip.positioners = positioners_1;\n var valueOrDefault$9 = helpers$1.valueOrDefault;\n core_defaults._set('global', {\n elements: {},\n events: ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove'],\n hover: {\n onHover: null,\n mode: 'nearest',\n intersect: true,\n animationDuration: 400\n },\n onClick: null,\n maintainAspectRatio: true,\n responsive: true,\n responsiveAnimationDuration: 0\n });\n\n /**\r\n * Recursively merge the given config objects representing the `scales` option\r\n * by incorporating scale defaults in `xAxes` and `yAxes` array items, then\r\n * returns a deep copy of the result, thus doesn't alter inputs.\r\n */\n function mergeScaleConfig( /* config objects ... */\n ) {\n return helpers$1.merge(Object.create(null), [].slice.call(arguments), {\n merger: function (key, target, source, options) {\n if (key === 'xAxes' || key === 'yAxes') {\n var slen = source[key].length;\n var i, type, scale;\n if (!target[key]) {\n target[key] = [];\n }\n for (i = 0; i < slen; ++i) {\n scale = source[key][i];\n type = valueOrDefault$9(scale.type, key === 'xAxes' ? 'category' : 'linear');\n if (i >= target[key].length) {\n target[key].push({});\n }\n if (!target[key][i].type || scale.type && scale.type !== target[key][i].type) {\n // new/untyped scale or type changed: let's apply the new defaults\n // then merge source scale to correctly overwrite the defaults.\n helpers$1.merge(target[key][i], [core_scaleService.getScaleDefaults(type), scale]);\n } else {\n // scales type are the same\n helpers$1.merge(target[key][i], scale);\n }\n }\n } else {\n helpers$1._merger(key, target, source, options);\n }\n }\n });\n }\n\n /**\r\n * Recursively merge the given config objects as the root options by handling\r\n * default scale options for the `scales` and `scale` properties, then returns\r\n * a deep copy of the result, thus doesn't alter inputs.\r\n */\n function mergeConfig( /* config objects ... */\n ) {\n return helpers$1.merge(Object.create(null), [].slice.call(arguments), {\n merger: function (key, target, source, options) {\n var tval = target[key] || Object.create(null);\n var sval = source[key];\n if (key === 'scales') {\n // scale config merging is complex. Add our own function here for that\n target[key] = mergeScaleConfig(tval, sval);\n } else if (key === 'scale') {\n // used in polar area & radar charts since there is only one scale\n target[key] = helpers$1.merge(tval, [core_scaleService.getScaleDefaults(sval.type), sval]);\n } else {\n helpers$1._merger(key, target, source, options);\n }\n }\n });\n }\n function initConfig(config) {\n config = config || Object.create(null);\n\n // Do NOT use mergeConfig for the data object because this method merges arrays\n // and so would change references to labels and datasets, preventing data updates.\n var data = config.data = config.data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n config.options = mergeConfig(core_defaults.global, core_defaults[config.type], config.options || {});\n return config;\n }\n function updateConfig(chart) {\n var newOptions = chart.options;\n helpers$1.each(chart.scales, function (scale) {\n core_layouts.removeBox(chart, scale);\n });\n newOptions = mergeConfig(core_defaults.global, core_defaults[chart.config.type], newOptions);\n chart.options = chart.config.options = newOptions;\n chart.ensureScalesHaveIDs();\n chart.buildOrUpdateScales();\n\n // Tooltip\n chart.tooltip._options = newOptions.tooltips;\n chart.tooltip.initialize();\n }\n function nextAvailableScaleId(axesOpts, prefix, index) {\n var id;\n var hasId = function (obj) {\n return obj.id === id;\n };\n do {\n id = prefix + index++;\n } while (helpers$1.findIndex(axesOpts, hasId) >= 0);\n return id;\n }\n function positionIsHorizontal(position) {\n return position === 'top' || position === 'bottom';\n }\n function compare2Level(l1, l2) {\n return function (a, b) {\n return a[l1] === b[l1] ? a[l2] - b[l2] : a[l1] - b[l1];\n };\n }\n var Chart = function (item, config) {\n this.construct(item, config);\n return this;\n };\n helpers$1.extend(Chart.prototype, /** @lends Chart */{\n /**\r\n * @private\r\n */\n construct: function (item, config) {\n var me = this;\n config = initConfig(config);\n var context = platform.acquireContext(item, config);\n var canvas = context && context.canvas;\n var height = canvas && canvas.height;\n var width = canvas && canvas.width;\n me.id = helpers$1.uid();\n me.ctx = context;\n me.canvas = canvas;\n me.config = config;\n me.width = width;\n me.height = height;\n me.aspectRatio = height ? width / height : null;\n me.options = config.options;\n me._bufferedRender = false;\n me._layers = [];\n\n /**\r\n * Provided for backward compatibility, Chart and Chart.Controller have been merged,\r\n * the \"instance\" still need to be defined since it might be called from plugins.\r\n * @prop Chart#chart\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n * @private\r\n */\n me.chart = me;\n me.controller = me; // chart.chart.controller #inception\n\n // Add the chart instance to the global namespace\n Chart.instances[me.id] = me;\n\n // Define alias to the config data: `chart.data === chart.config.data`\n Object.defineProperty(me, 'data', {\n get: function () {\n return me.config.data;\n },\n set: function (value) {\n me.config.data = value;\n }\n });\n if (!context || !canvas) {\n // The given item is not a compatible context2d element, let's return before finalizing\n // the chart initialization but after setting basic chart / controller properties that\n // can help to figure out that the chart is not valid (e.g chart.canvas !== null);\n // https://github.com/chartjs/Chart.js/issues/2807\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n me.initialize();\n me.update();\n },\n /**\r\n * @private\r\n */\n initialize: function () {\n var me = this;\n\n // Before init plugin notification\n core_plugins.notify(me, 'beforeInit');\n helpers$1.retinaScale(me, me.options.devicePixelRatio);\n me.bindEvents();\n if (me.options.responsive) {\n // Initial resize before chart draws (must be silent to preserve initial animations).\n me.resize(true);\n }\n me.initToolTip();\n\n // After init plugin notification\n core_plugins.notify(me, 'afterInit');\n return me;\n },\n clear: function () {\n helpers$1.canvas.clear(this);\n return this;\n },\n stop: function () {\n // Stops any current animation loop occurring\n core_animations.cancelAnimation(this);\n return this;\n },\n resize: function (silent) {\n var me = this;\n var options = me.options;\n var canvas = me.canvas;\n var aspectRatio = options.maintainAspectRatio && me.aspectRatio || null;\n\n // the canvas render width and height will be casted to integers so make sure that\n // the canvas display style uses the same integer values to avoid blurring effect.\n\n // Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collapsed\n var newWidth = Math.max(0, Math.floor(helpers$1.getMaximumWidth(canvas)));\n var newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers$1.getMaximumHeight(canvas)));\n if (me.width === newWidth && me.height === newHeight) {\n return;\n }\n canvas.width = me.width = newWidth;\n canvas.height = me.height = newHeight;\n canvas.style.width = newWidth + 'px';\n canvas.style.height = newHeight + 'px';\n helpers$1.retinaScale(me, options.devicePixelRatio);\n if (!silent) {\n // Notify any plugins about the resize\n var newSize = {\n width: newWidth,\n height: newHeight\n };\n core_plugins.notify(me, 'resize', [newSize]);\n\n // Notify of resize\n if (options.onResize) {\n options.onResize(me, newSize);\n }\n me.stop();\n me.update({\n duration: options.responsiveAnimationDuration\n });\n }\n },\n ensureScalesHaveIDs: function () {\n var options = this.options;\n var scalesOptions = options.scales || {};\n var scaleOptions = options.scale;\n helpers$1.each(scalesOptions.xAxes, function (xAxisOptions, index) {\n if (!xAxisOptions.id) {\n xAxisOptions.id = nextAvailableScaleId(scalesOptions.xAxes, 'x-axis-', index);\n }\n });\n helpers$1.each(scalesOptions.yAxes, function (yAxisOptions, index) {\n if (!yAxisOptions.id) {\n yAxisOptions.id = nextAvailableScaleId(scalesOptions.yAxes, 'y-axis-', index);\n }\n });\n if (scaleOptions) {\n scaleOptions.id = scaleOptions.id || 'scale';\n }\n },\n /**\r\n * Builds a map of scale ID to scale object for future lookup.\r\n */\n buildOrUpdateScales: function () {\n var me = this;\n var options = me.options;\n var scales = me.scales || {};\n var items = [];\n var updated = Object.keys(scales).reduce(function (obj, id) {\n obj[id] = false;\n return obj;\n }, {});\n if (options.scales) {\n items = items.concat((options.scales.xAxes || []).map(function (xAxisOptions) {\n return {\n options: xAxisOptions,\n dtype: 'category',\n dposition: 'bottom'\n };\n }), (options.scales.yAxes || []).map(function (yAxisOptions) {\n return {\n options: yAxisOptions,\n dtype: 'linear',\n dposition: 'left'\n };\n }));\n }\n if (options.scale) {\n items.push({\n options: options.scale,\n dtype: 'radialLinear',\n isDefault: true,\n dposition: 'chartArea'\n });\n }\n helpers$1.each(items, function (item) {\n var scaleOptions = item.options;\n var id = scaleOptions.id;\n var scaleType = valueOrDefault$9(scaleOptions.type, item.dtype);\n if (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n updated[id] = true;\n var scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n scale.options = scaleOptions;\n scale.ctx = me.ctx;\n scale.chart = me;\n } else {\n var scaleClass = core_scaleService.getScaleConstructor(scaleType);\n if (!scaleClass) {\n return;\n }\n scale = new scaleClass({\n id: id,\n type: scaleType,\n options: scaleOptions,\n ctx: me.ctx,\n chart: me\n });\n scales[scale.id] = scale;\n }\n scale.mergeTicksOptions();\n\n // TODO(SB): I think we should be able to remove this custom case (options.scale)\n // and consider it as a regular scale part of the \"scales\"\" map only! This would\n // make the logic easier and remove some useless? custom code.\n if (item.isDefault) {\n me.scale = scale;\n }\n });\n // clear up discarded scales\n helpers$1.each(updated, function (hasUpdated, id) {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n me.scales = scales;\n core_scaleService.addScalesToLayout(this);\n },\n buildOrUpdateControllers: function () {\n var me = this;\n var newControllers = [];\n var datasets = me.data.datasets;\n var i, ilen;\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n var dataset = datasets[i];\n var meta = me.getDatasetMeta(i);\n var type = dataset.type || me.config.type;\n if (meta.type && meta.type !== type) {\n me.destroyDatasetMeta(i);\n meta = me.getDatasetMeta(i);\n }\n meta.type = type;\n meta.order = dataset.order || 0;\n meta.index = i;\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n var ControllerClass = controllers[meta.type];\n if (ControllerClass === undefined) {\n throw new Error('\"' + meta.type + '\" is not a chart type.');\n }\n meta.controller = new ControllerClass(me, i);\n newControllers.push(meta.controller);\n }\n }\n return newControllers;\n },\n /**\r\n * Reset the elements of all datasets\r\n * @private\r\n */\n resetElements: function () {\n var me = this;\n helpers$1.each(me.data.datasets, function (dataset, datasetIndex) {\n me.getDatasetMeta(datasetIndex).controller.reset();\n }, me);\n },\n /**\r\n * Resets the chart back to it's state before the initial animation\r\n */\n reset: function () {\n this.resetElements();\n this.tooltip.initialize();\n },\n update: function (config) {\n var me = this;\n var i, ilen;\n if (!config || typeof config !== 'object') {\n // backwards compatibility\n config = {\n duration: config,\n lazy: arguments[1]\n };\n }\n updateConfig(me);\n\n // plugins options references might have change, let's invalidate the cache\n // https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n core_plugins._invalidate(me);\n if (core_plugins.notify(me, 'beforeUpdate') === false) {\n return;\n }\n\n // In case the entire data object changed\n me.tooltip._data = me.data;\n\n // Make sure dataset controllers are updated and new controllers are reset\n var newControllers = me.buildOrUpdateControllers();\n\n // Make sure all dataset controllers have correct meta data counts\n for (i = 0, ilen = me.data.datasets.length; i < ilen; i++) {\n me.getDatasetMeta(i).controller.buildOrUpdateElements();\n }\n me.updateLayout();\n\n // Can only reset the new controllers after the scales have been updated\n if (me.options.animation && me.options.animation.duration) {\n helpers$1.each(newControllers, function (controller) {\n controller.reset();\n });\n }\n me.updateDatasets();\n\n // Need to reset tooltip in case it is displayed with elements that are removed\n // after update.\n me.tooltip.initialize();\n\n // Last active contains items that were previously in the tooltip.\n // When we reset the tooltip, we need to clear it\n me.lastActive = [];\n\n // Do this before render so that any plugins that need final scale updates can use it\n core_plugins.notify(me, 'afterUpdate');\n me._layers.sort(compare2Level('z', '_idx'));\n if (me._bufferedRender) {\n me._bufferedRequest = {\n duration: config.duration,\n easing: config.easing,\n lazy: config.lazy\n };\n } else {\n me.render(config);\n }\n },\n /**\r\n * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\r\n * hook, in which case, plugins will not be called on `afterLayout`.\r\n * @private\r\n */\n updateLayout: function () {\n var me = this;\n if (core_plugins.notify(me, 'beforeLayout') === false) {\n return;\n }\n core_layouts.update(this, this.width, this.height);\n me._layers = [];\n helpers$1.each(me.boxes, function (box) {\n // _configure is called twice, once in core.scale.update and once here.\n // Here the boxes are fully updated and at their final positions.\n if (box._configure) {\n box._configure();\n }\n me._layers.push.apply(me._layers, box._layers());\n }, me);\n me._layers.forEach(function (item, index) {\n item._idx = index;\n });\n\n /**\r\n * Provided for backward compatibility, use `afterLayout` instead.\r\n * @method IPlugin#afterScaleUpdate\r\n * @deprecated since version 2.5.0\r\n * @todo remove at version 3\r\n * @private\r\n */\n core_plugins.notify(me, 'afterScaleUpdate');\n core_plugins.notify(me, 'afterLayout');\n },\n /**\r\n * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\r\n * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\r\n * @private\r\n */\n updateDatasets: function () {\n var me = this;\n if (core_plugins.notify(me, 'beforeDatasetsUpdate') === false) {\n return;\n }\n for (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n me.updateDataset(i);\n }\n core_plugins.notify(me, 'afterDatasetsUpdate');\n },\n /**\r\n * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\r\n * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\r\n * @private\r\n */\n updateDataset: function (index) {\n var me = this;\n var meta = me.getDatasetMeta(index);\n var args = {\n meta: meta,\n index: index\n };\n if (core_plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) {\n return;\n }\n meta.controller._update();\n core_plugins.notify(me, 'afterDatasetUpdate', [args]);\n },\n render: function (config) {\n var me = this;\n if (!config || typeof config !== 'object') {\n // backwards compatibility\n config = {\n duration: config,\n lazy: arguments[1]\n };\n }\n var animationOptions = me.options.animation;\n var duration = valueOrDefault$9(config.duration, animationOptions && animationOptions.duration);\n var lazy = config.lazy;\n if (core_plugins.notify(me, 'beforeRender') === false) {\n return;\n }\n var onComplete = function (animation) {\n core_plugins.notify(me, 'afterRender');\n helpers$1.callback(animationOptions && animationOptions.onComplete, [animation], me);\n };\n if (animationOptions && duration) {\n var animation = new core_animation({\n numSteps: duration / 16.66,\n // 60 fps\n easing: config.easing || animationOptions.easing,\n render: function (chart, animationObject) {\n var easingFunction = helpers$1.easing.effects[animationObject.easing];\n var currentStep = animationObject.currentStep;\n var stepDecimal = currentStep / animationObject.numSteps;\n chart.draw(easingFunction(stepDecimal), stepDecimal, currentStep);\n },\n onAnimationProgress: animationOptions.onProgress,\n onAnimationComplete: onComplete\n });\n core_animations.addAnimation(me, animation, duration, lazy);\n } else {\n me.draw();\n\n // See https://github.com/chartjs/Chart.js/issues/3781\n onComplete(new core_animation({\n numSteps: 0,\n chart: me\n }));\n }\n return me;\n },\n draw: function (easingValue) {\n var me = this;\n var i, layers;\n me.clear();\n if (helpers$1.isNullOrUndef(easingValue)) {\n easingValue = 1;\n }\n me.transition(easingValue);\n if (me.width <= 0 || me.height <= 0) {\n return;\n }\n if (core_plugins.notify(me, 'beforeDraw', [easingValue]) === false) {\n return;\n }\n\n // Because of plugin hooks (before/afterDatasetsDraw), datasets can't\n // currently be part of layers. Instead, we draw\n // layers <= 0 before(default, backward compat), and the rest after\n layers = me._layers;\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(me.chartArea);\n }\n me.drawDatasets(easingValue);\n\n // Rest of layers\n for (; i < layers.length; ++i) {\n layers[i].draw(me.chartArea);\n }\n me._drawTooltip(easingValue);\n core_plugins.notify(me, 'afterDraw', [easingValue]);\n },\n /**\r\n * @private\r\n */\n transition: function (easingValue) {\n var me = this;\n for (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) {\n if (me.isDatasetVisible(i)) {\n me.getDatasetMeta(i).controller.transition(easingValue);\n }\n }\n me.tooltip.transition(easingValue);\n },\n /**\r\n * @private\r\n */\n _getSortedDatasetMetas: function (filterVisible) {\n var me = this;\n var datasets = me.data.datasets || [];\n var result = [];\n var i, ilen;\n for (i = 0, ilen = datasets.length; i < ilen; ++i) {\n if (!filterVisible || me.isDatasetVisible(i)) {\n result.push(me.getDatasetMeta(i));\n }\n }\n result.sort(compare2Level('order', 'index'));\n return result;\n },\n /**\r\n * @private\r\n */\n _getSortedVisibleDatasetMetas: function () {\n return this._getSortedDatasetMetas(true);\n },\n /**\r\n * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\r\n * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\r\n * @private\r\n */\n drawDatasets: function (easingValue) {\n var me = this;\n var metasets, i;\n if (core_plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) {\n return;\n }\n metasets = me._getSortedVisibleDatasetMetas();\n for (i = metasets.length - 1; i >= 0; --i) {\n me.drawDataset(metasets[i], easingValue);\n }\n core_plugins.notify(me, 'afterDatasetsDraw', [easingValue]);\n },\n /**\r\n * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\r\n * hook, in which case, plugins will not be called on `afterDatasetDraw`.\r\n * @private\r\n */\n drawDataset: function (meta, easingValue) {\n var me = this;\n var args = {\n meta: meta,\n index: meta.index,\n easingValue: easingValue\n };\n if (core_plugins.notify(me, 'beforeDatasetDraw', [args]) === false) {\n return;\n }\n meta.controller.draw(easingValue);\n core_plugins.notify(me, 'afterDatasetDraw', [args]);\n },\n /**\r\n * Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw`\r\n * hook, in which case, plugins will not be called on `afterTooltipDraw`.\r\n * @private\r\n */\n _drawTooltip: function (easingValue) {\n var me = this;\n var tooltip = me.tooltip;\n var args = {\n tooltip: tooltip,\n easingValue: easingValue\n };\n if (core_plugins.notify(me, 'beforeTooltipDraw', [args]) === false) {\n return;\n }\n tooltip.draw();\n core_plugins.notify(me, 'afterTooltipDraw', [args]);\n },\n /**\r\n * Get the single element that was clicked on\r\n * @return An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw\r\n */\n getElementAtEvent: function (e) {\n return core_interaction.modes.single(this, e);\n },\n getElementsAtEvent: function (e) {\n return core_interaction.modes.label(this, e, {\n intersect: true\n });\n },\n getElementsAtXAxis: function (e) {\n return core_interaction.modes['x-axis'](this, e, {\n intersect: true\n });\n },\n getElementsAtEventForMode: function (e, mode, options) {\n var method = core_interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options);\n }\n return [];\n },\n getDatasetAtEvent: function (e) {\n return core_interaction.modes.dataset(this, e, {\n intersect: true\n });\n },\n getDatasetMeta: function (datasetIndex) {\n var me = this;\n var dataset = me.data.datasets[datasetIndex];\n if (!dataset._meta) {\n dataset._meta = {};\n }\n var meta = dataset._meta[me.id];\n if (!meta) {\n meta = dataset._meta[me.id] = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n // See isDatasetVisible() comment\n xAxisID: null,\n yAxisID: null,\n order: dataset.order || 0,\n index: datasetIndex\n };\n }\n return meta;\n },\n getVisibleDatasetCount: function () {\n var count = 0;\n for (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n if (this.isDatasetVisible(i)) {\n count++;\n }\n }\n return count;\n },\n isDatasetVisible: function (datasetIndex) {\n var meta = this.getDatasetMeta(datasetIndex);\n\n // meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\n // the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden;\n },\n generateLegend: function () {\n return this.options.legendCallback(this);\n },\n /**\r\n * @private\r\n */\n destroyDatasetMeta: function (datasetIndex) {\n var id = this.id;\n var dataset = this.data.datasets[datasetIndex];\n var meta = dataset._meta && dataset._meta[id];\n if (meta) {\n meta.controller.destroy();\n delete dataset._meta[id];\n }\n },\n destroy: function () {\n var me = this;\n var canvas = me.canvas;\n var i, ilen;\n me.stop();\n\n // dataset controllers need to cleanup associated data\n for (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n me.destroyDatasetMeta(i);\n }\n if (canvas) {\n me.unbindEvents();\n helpers$1.canvas.clear(me);\n platform.releaseContext(me.ctx);\n me.canvas = null;\n me.ctx = null;\n }\n core_plugins.notify(me, 'destroy');\n delete Chart.instances[me.id];\n },\n toBase64Image: function () {\n return this.canvas.toDataURL.apply(this.canvas, arguments);\n },\n initToolTip: function () {\n var me = this;\n me.tooltip = new core_tooltip({\n _chart: me,\n _chartInstance: me,\n // deprecated, backward compatibility\n _data: me.data,\n _options: me.options.tooltips\n }, me);\n },\n /**\r\n * @private\r\n */\n bindEvents: function () {\n var me = this;\n var listeners = me._listeners = {};\n var listener = function () {\n me.eventHandler.apply(me, arguments);\n };\n helpers$1.each(me.options.events, function (type) {\n platform.addEventListener(me, type, listener);\n listeners[type] = listener;\n });\n\n // Elements used to detect size change should not be injected for non responsive charts.\n // See https://github.com/chartjs/Chart.js/issues/2210\n if (me.options.responsive) {\n listener = function () {\n me.resize();\n };\n platform.addEventListener(me, 'resize', listener);\n listeners.resize = listener;\n }\n },\n /**\r\n * @private\r\n */\n unbindEvents: function () {\n var me = this;\n var listeners = me._listeners;\n if (!listeners) {\n return;\n }\n delete me._listeners;\n helpers$1.each(listeners, function (listener, type) {\n platform.removeEventListener(me, type, listener);\n });\n },\n updateHoverStyle: function (elements, mode, enabled) {\n var prefix = enabled ? 'set' : 'remove';\n var element, i, ilen;\n for (i = 0, ilen = elements.length; i < ilen; ++i) {\n element = elements[i];\n if (element) {\n this.getDatasetMeta(element._datasetIndex).controller[prefix + 'HoverStyle'](element);\n }\n }\n if (mode === 'dataset') {\n this.getDatasetMeta(elements[0]._datasetIndex).controller['_' + prefix + 'DatasetHoverStyle']();\n }\n },\n /**\r\n * @private\r\n */\n eventHandler: function (e) {\n var me = this;\n var tooltip = me.tooltip;\n if (core_plugins.notify(me, 'beforeEvent', [e]) === false) {\n return;\n }\n\n // Buffer any update calls so that renders do not occur\n me._bufferedRender = true;\n me._bufferedRequest = null;\n var changed = me.handleEvent(e);\n // for smooth tooltip animations issue #4989\n // the tooltip should be the source of change\n // Animation check workaround:\n // tooltip._start will be null when tooltip isn't animating\n if (tooltip) {\n changed = tooltip._start ? tooltip.handleEvent(e) : changed | tooltip.handleEvent(e);\n }\n core_plugins.notify(me, 'afterEvent', [e]);\n var bufferedRequest = me._bufferedRequest;\n if (bufferedRequest) {\n // If we have an update that was triggered, we need to do a normal render\n me.render(bufferedRequest);\n } else if (changed && !me.animating) {\n // If entering, leaving, or changing elements, animate the change via pivot\n me.stop();\n\n // We only need to render at this point. Updating will cause scales to be\n // recomputed generating flicker & using more memory than necessary.\n me.render({\n duration: me.options.hover.animationDuration,\n lazy: true\n });\n }\n me._bufferedRender = false;\n me._bufferedRequest = null;\n return me;\n },\n /**\r\n * Handle an event\r\n * @private\r\n * @param {IEvent} event the event to handle\r\n * @return {boolean} true if the chart needs to re-render\r\n */\n handleEvent: function (e) {\n var me = this;\n var options = me.options || {};\n var hoverOptions = options.hover;\n var changed = false;\n me.lastActive = me.lastActive || [];\n\n // Find Active Elements for hover and tooltips\n if (e.type === 'mouseout') {\n me.active = [];\n } else {\n me.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions);\n }\n\n // Invoke onHover hook\n // Need to call with native event here to not break backwards compatibility\n helpers$1.callback(options.onHover || options.hover.onHover, [e.native, me.active], me);\n if (e.type === 'mouseup' || e.type === 'click') {\n if (options.onClick) {\n // Use e.native here for backwards compatibility\n options.onClick.call(me, e.native, me.active);\n }\n }\n\n // Remove styling for last active (even if it may still be active)\n if (me.lastActive.length) {\n me.updateHoverStyle(me.lastActive, hoverOptions.mode, false);\n }\n\n // Built in hover styling\n if (me.active.length && hoverOptions.mode) {\n me.updateHoverStyle(me.active, hoverOptions.mode, true);\n }\n changed = !helpers$1.arrayEquals(me.active, me.lastActive);\n\n // Remember Last Actives\n me.lastActive = me.active;\n return changed;\n }\n });\n\n /**\r\n * NOTE(SB) We actually don't use this container anymore but we need to keep it\r\n * for backward compatibility. Though, it can still be useful for plugins that\r\n * would need to work on multiple charts?!\r\n */\n Chart.instances = {};\n var core_controller = Chart;\n\n // DEPRECATIONS\n\n /**\r\n * Provided for backward compatibility, use Chart instead.\r\n * @class Chart.Controller\r\n * @deprecated since version 2.6\r\n * @todo remove at version 3\r\n * @private\r\n */\n Chart.Controller = Chart;\n\n /**\r\n * Provided for backward compatibility, not available anymore.\r\n * @namespace Chart\r\n * @deprecated since version 2.8\r\n * @todo remove at version 3\r\n * @private\r\n */\n Chart.types = {};\n\n /**\r\n * Provided for backward compatibility, not available anymore.\r\n * @namespace Chart.helpers.configMerge\r\n * @deprecated since version 2.8.0\r\n * @todo remove at version 3\r\n * @private\r\n */\n helpers$1.configMerge = mergeConfig;\n\n /**\r\n * Provided for backward compatibility, not available anymore.\r\n * @namespace Chart.helpers.scaleMerge\r\n * @deprecated since version 2.8.0\r\n * @todo remove at version 3\r\n * @private\r\n */\n helpers$1.scaleMerge = mergeScaleConfig;\n var core_helpers = function () {\n // -- Basic js utility methods\n\n helpers$1.where = function (collection, filterCallback) {\n if (helpers$1.isArray(collection) && Array.prototype.filter) {\n return collection.filter(filterCallback);\n }\n var filtered = [];\n helpers$1.each(collection, function (item) {\n if (filterCallback(item)) {\n filtered.push(item);\n }\n });\n return filtered;\n };\n helpers$1.findIndex = Array.prototype.findIndex ? function (array, callback, scope) {\n return array.findIndex(callback, scope);\n } : function (array, callback, scope) {\n scope = scope === undefined ? array : scope;\n for (var i = 0, ilen = array.length; i < ilen; ++i) {\n if (callback.call(scope, array[i], i, array)) {\n return i;\n }\n }\n return -1;\n };\n helpers$1.findNextWhere = function (arrayToSearch, filterCallback, startIndex) {\n // Default to start of the array\n if (helpers$1.isNullOrUndef(startIndex)) {\n startIndex = -1;\n }\n for (var i = startIndex + 1; i < arrayToSearch.length; i++) {\n var currentItem = arrayToSearch[i];\n if (filterCallback(currentItem)) {\n return currentItem;\n }\n }\n };\n helpers$1.findPreviousWhere = function (arrayToSearch, filterCallback, startIndex) {\n // Default to end of the array\n if (helpers$1.isNullOrUndef(startIndex)) {\n startIndex = arrayToSearch.length;\n }\n for (var i = startIndex - 1; i >= 0; i--) {\n var currentItem = arrayToSearch[i];\n if (filterCallback(currentItem)) {\n return currentItem;\n }\n }\n };\n\n // -- Math methods\n helpers$1.isNumber = function (n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n };\n helpers$1.almostEquals = function (x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n };\n helpers$1.almostWhole = function (x, epsilon) {\n var rounded = Math.round(x);\n return rounded - epsilon <= x && rounded + epsilon >= x;\n };\n helpers$1.max = function (array) {\n return array.reduce(function (max, value) {\n if (!isNaN(value)) {\n return Math.max(max, value);\n }\n return max;\n }, Number.NEGATIVE_INFINITY);\n };\n helpers$1.min = function (array) {\n return array.reduce(function (min, value) {\n if (!isNaN(value)) {\n return Math.min(min, value);\n }\n return min;\n }, Number.POSITIVE_INFINITY);\n };\n helpers$1.sign = Math.sign ? function (x) {\n return Math.sign(x);\n } : function (x) {\n x = +x; // convert to a number\n if (x === 0 || isNaN(x)) {\n return x;\n }\n return x > 0 ? 1 : -1;\n };\n helpers$1.toRadians = function (degrees) {\n return degrees * (Math.PI / 180);\n };\n helpers$1.toDegrees = function (radians) {\n return radians * (180 / Math.PI);\n };\n\n /**\r\n * Returns the number of decimal places\r\n * i.e. the number of digits after the decimal point, of the value of this Number.\r\n * @param {number} x - A number.\r\n * @returns {number} The number of decimal places.\r\n * @private\r\n */\n helpers$1._decimalPlaces = function (x) {\n if (!helpers$1.isFinite(x)) {\n return;\n }\n var e = 1;\n var p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n };\n\n // Gets the angle from vertical upright to the point about a centre.\n helpers$1.getAngleFromPoint = function (centrePoint, anglePoint) {\n var distanceFromXCenter = anglePoint.x - centrePoint.x;\n var distanceFromYCenter = anglePoint.y - centrePoint.y;\n var radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n var angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n if (angle < -0.5 * Math.PI) {\n angle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n }\n\n return {\n angle: angle,\n distance: radialDistanceFromCenter\n };\n };\n helpers$1.distanceBetweenPoints = function (pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n };\n\n /**\r\n * Provided for backward compatibility, not available anymore\r\n * @function Chart.helpers.aliasPixel\r\n * @deprecated since version 2.8.0\r\n * @todo remove at version 3\r\n */\n helpers$1.aliasPixel = function (pixelWidth) {\n return pixelWidth % 2 === 0 ? 0 : 0.5;\n };\n\n /**\r\n * Returns the aligned pixel value to avoid anti-aliasing blur\r\n * @param {Chart} chart - The chart instance.\r\n * @param {number} pixel - A pixel value.\r\n * @param {number} width - The width of the element.\r\n * @returns {number} The aligned pixel value.\r\n * @private\r\n */\n helpers$1._alignPixel = function (chart, pixel, width) {\n var devicePixelRatio = chart.currentDevicePixelRatio;\n var halfWidth = width / 2;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n };\n helpers$1.splineCurve = function (firstPoint, middlePoint, afterPoint, t) {\n // Props to Rob Spencer at scaled innovation for his post on splining between points\n // http://scaledinnovation.com/analytics/splines/aboutSplines.html\n\n // This function must also respect \"skipped\" points\n\n var previous = firstPoint.skip ? middlePoint : firstPoint;\n var current = middlePoint;\n var next = afterPoint.skip ? middlePoint : afterPoint;\n var d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2));\n var d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2));\n var s01 = d01 / (d01 + d12);\n var s12 = d12 / (d01 + d12);\n\n // If all points are the same, s01 & s02 will be inf\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n var fa = t * s01; // scaling factor for triangle Ta\n var fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n };\n helpers$1.EPSILON = Number.EPSILON || 1e-14;\n helpers$1.splineCurveMonotone = function (points) {\n // This function calculates Bézier control points in a similar way than |splineCurve|,\n // but preserves monotonicity of the provided data and ensures no local extremums are added\n // between the dataset discrete points due to the interpolation.\n // See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n\n var pointsWithTangents = (points || []).map(function (point) {\n return {\n model: point._model,\n deltaK: 0,\n mK: 0\n };\n });\n\n // Calculate slopes (deltaK) and initialize tangents (mK)\n var pointsLen = pointsWithTangents.length;\n var i, pointBefore, pointCurrent, pointAfter;\n for (i = 0; i < pointsLen; ++i) {\n pointCurrent = pointsWithTangents[i];\n if (pointCurrent.model.skip) {\n continue;\n }\n pointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\n pointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\n if (pointAfter && !pointAfter.model.skip) {\n var slopeDeltaX = pointAfter.model.x - pointCurrent.model.x;\n\n // In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n pointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0;\n }\n if (!pointBefore || pointBefore.model.skip) {\n pointCurrent.mK = pointCurrent.deltaK;\n } else if (!pointAfter || pointAfter.model.skip) {\n pointCurrent.mK = pointBefore.deltaK;\n } else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) {\n pointCurrent.mK = 0;\n } else {\n pointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2;\n }\n }\n\n // Adjust tangents to ensure monotonic properties\n var alphaK, betaK, tauK, squaredMagnitude;\n for (i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointsWithTangents[i];\n pointAfter = pointsWithTangents[i + 1];\n if (pointCurrent.model.skip || pointAfter.model.skip) {\n continue;\n }\n if (helpers$1.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) {\n pointCurrent.mK = pointAfter.mK = 0;\n continue;\n }\n alphaK = pointCurrent.mK / pointCurrent.deltaK;\n betaK = pointAfter.mK / pointCurrent.deltaK;\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n pointCurrent.mK = alphaK * tauK * pointCurrent.deltaK;\n pointAfter.mK = betaK * tauK * pointCurrent.deltaK;\n }\n\n // Compute control points\n var deltaX;\n for (i = 0; i < pointsLen; ++i) {\n pointCurrent = pointsWithTangents[i];\n if (pointCurrent.model.skip) {\n continue;\n }\n pointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\n pointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\n if (pointBefore && !pointBefore.model.skip) {\n deltaX = (pointCurrent.model.x - pointBefore.model.x) / 3;\n pointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX;\n pointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK;\n }\n if (pointAfter && !pointAfter.model.skip) {\n deltaX = (pointAfter.model.x - pointCurrent.model.x) / 3;\n pointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX;\n pointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK;\n }\n }\n };\n helpers$1.nextItem = function (collection, index, loop) {\n if (loop) {\n return index >= collection.length - 1 ? collection[0] : collection[index + 1];\n }\n return index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1];\n };\n helpers$1.previousItem = function (collection, index, loop) {\n if (loop) {\n return index <= 0 ? collection[collection.length - 1] : collection[index - 1];\n }\n return index <= 0 ? collection[0] : collection[index - 1];\n };\n // Implementation of the nice number algorithm used in determining where axis labels will go\n helpers$1.niceNum = function (range, round) {\n var exponent = Math.floor(helpers$1.log10(range));\n var fraction = range / Math.pow(10, exponent);\n var niceFraction;\n if (round) {\n if (fraction < 1.5) {\n niceFraction = 1;\n } else if (fraction < 3) {\n niceFraction = 2;\n } else if (fraction < 7) {\n niceFraction = 5;\n } else {\n niceFraction = 10;\n }\n } else if (fraction <= 1.0) {\n niceFraction = 1;\n } else if (fraction <= 2) {\n niceFraction = 2;\n } else if (fraction <= 5) {\n niceFraction = 5;\n } else {\n niceFraction = 10;\n }\n return niceFraction * Math.pow(10, exponent);\n };\n // Request animation polyfill - https://www.paulirish.com/2011/requestanimationframe-for-smart-animating/\n helpers$1.requestAnimFrame = function () {\n if (typeof window === 'undefined') {\n return function (callback) {\n callback();\n };\n }\n return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (callback) {\n return window.setTimeout(callback, 1000 / 60);\n };\n }();\n // -- DOM methods\n helpers$1.getRelativePosition = function (evt, chart) {\n var mouseX, mouseY;\n var e = evt.originalEvent || evt;\n var canvas = evt.target || evt.srcElement;\n var boundingRect = canvas.getBoundingClientRect();\n var touches = e.touches;\n if (touches && touches.length > 0) {\n mouseX = touches[0].clientX;\n mouseY = touches[0].clientY;\n } else {\n mouseX = e.clientX;\n mouseY = e.clientY;\n }\n\n // Scale mouse coordinates into canvas coordinates\n // by following the pattern laid out by 'jerryj' in the comments of\n // https://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/\n var paddingLeft = parseFloat(helpers$1.getStyle(canvas, 'padding-left'));\n var paddingTop = parseFloat(helpers$1.getStyle(canvas, 'padding-top'));\n var paddingRight = parseFloat(helpers$1.getStyle(canvas, 'padding-right'));\n var paddingBottom = parseFloat(helpers$1.getStyle(canvas, 'padding-bottom'));\n var width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight;\n var height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom;\n\n // We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However\n // the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here\n mouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / width * canvas.width / chart.currentDevicePixelRatio);\n mouseY = Math.round((mouseY - boundingRect.top - paddingTop) / height * canvas.height / chart.currentDevicePixelRatio);\n return {\n x: mouseX,\n y: mouseY\n };\n };\n\n // Private helper function to convert max-width/max-height values that may be percentages into a number\n function parseMaxStyle(styleValue, node, parentProperty) {\n var valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n // percentage * size in dimension\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n }\n\n /**\r\n * Returns if the given value contains an effective constraint.\r\n * @private\r\n */\n function isConstrainedValue(value) {\n return value !== undefined && value !== null && value !== 'none';\n }\n\n /**\r\n * Returns the max width or height of the given DOM node in a cross-browser compatible fashion\r\n * @param {HTMLElement} domNode - the node to check the constraint on\r\n * @param {string} maxStyle - the style that defines the maximum for the direction we are using ('max-width' / 'max-height')\r\n * @param {string} percentageProperty - property of parent to use when calculating width as a percentage\r\n * @see {@link https://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser}\r\n */\n function getConstraintDimension(domNode, maxStyle, percentageProperty) {\n var view = document.defaultView;\n var parentNode = helpers$1._getParentNode(domNode);\n var constrainedNode = view.getComputedStyle(domNode)[maxStyle];\n var constrainedContainer = view.getComputedStyle(parentNode)[maxStyle];\n var hasCNode = isConstrainedValue(constrainedNode);\n var hasCContainer = isConstrainedValue(constrainedContainer);\n var infinity = Number.POSITIVE_INFINITY;\n if (hasCNode || hasCContainer) {\n return Math.min(hasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity, hasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity);\n }\n return 'none';\n }\n // returns Number or undefined if no constraint\n helpers$1.getConstraintWidth = function (domNode) {\n return getConstraintDimension(domNode, 'max-width', 'clientWidth');\n };\n // returns Number or undefined if no constraint\n helpers$1.getConstraintHeight = function (domNode) {\n return getConstraintDimension(domNode, 'max-height', 'clientHeight');\n };\n /**\r\n * @private\r\n \t */\n helpers$1._calculatePadding = function (container, padding, parentDimension) {\n padding = helpers$1.getStyle(container, padding);\n return padding.indexOf('%') > -1 ? parentDimension * parseInt(padding, 10) / 100 : parseInt(padding, 10);\n };\n /**\r\n * @private\r\n */\n helpers$1._getParentNode = function (domNode) {\n var parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n };\n helpers$1.getMaximumWidth = function (domNode) {\n var container = helpers$1._getParentNode(domNode);\n if (!container) {\n return domNode.clientWidth;\n }\n var clientWidth = container.clientWidth;\n var paddingLeft = helpers$1._calculatePadding(container, 'padding-left', clientWidth);\n var paddingRight = helpers$1._calculatePadding(container, 'padding-right', clientWidth);\n var w = clientWidth - paddingLeft - paddingRight;\n var cw = helpers$1.getConstraintWidth(domNode);\n return isNaN(cw) ? w : Math.min(w, cw);\n };\n helpers$1.getMaximumHeight = function (domNode) {\n var container = helpers$1._getParentNode(domNode);\n if (!container) {\n return domNode.clientHeight;\n }\n var clientHeight = container.clientHeight;\n var paddingTop = helpers$1._calculatePadding(container, 'padding-top', clientHeight);\n var paddingBottom = helpers$1._calculatePadding(container, 'padding-bottom', clientHeight);\n var h = clientHeight - paddingTop - paddingBottom;\n var ch = helpers$1.getConstraintHeight(domNode);\n return isNaN(ch) ? h : Math.min(h, ch);\n };\n helpers$1.getStyle = function (el, property) {\n return el.currentStyle ? el.currentStyle[property] : document.defaultView.getComputedStyle(el, null).getPropertyValue(property);\n };\n helpers$1.retinaScale = function (chart, forceRatio) {\n var pixelRatio = chart.currentDevicePixelRatio = forceRatio || typeof window !== 'undefined' && window.devicePixelRatio || 1;\n if (pixelRatio === 1) {\n return;\n }\n var canvas = chart.canvas;\n var height = chart.height;\n var width = chart.width;\n canvas.height = height * pixelRatio;\n canvas.width = width * pixelRatio;\n chart.ctx.scale(pixelRatio, pixelRatio);\n\n // If no style has been set on the canvas, the render size is used as display size,\n // making the chart visually bigger, so let's enforce it to the \"correct\" values.\n // See https://github.com/chartjs/Chart.js/issues/3575\n if (!canvas.style.height && !canvas.style.width) {\n canvas.style.height = height + 'px';\n canvas.style.width = width + 'px';\n }\n };\n // -- Canvas methods\n helpers$1.fontString = function (pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n };\n helpers$1.longestText = function (ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n var data = cache.data = cache.data || {};\n var gc = cache.garbageCollect = cache.garbageCollect || [];\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n ctx.font = font;\n var longest = 0;\n var ilen = arrayOfThings.length;\n var i, j, jlen, thing, nestedThing;\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n\n // Undefined strings and arrays should not be measured\n if (thing !== undefined && thing !== null && helpers$1.isArray(thing) !== true) {\n longest = helpers$1.measureText(ctx, data, gc, longest, thing);\n } else if (helpers$1.isArray(thing)) {\n // if it is an array lets measure each element\n // to do maybe simplify this function a bit so we can do this more recursively?\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\n // Undefined strings and arrays should not be measured\n if (nestedThing !== undefined && nestedThing !== null && !helpers$1.isArray(nestedThing)) {\n longest = helpers$1.measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n var gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n };\n helpers$1.measureText = function (ctx, data, gc, longest, string) {\n var textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n };\n\n /**\r\n * @deprecated\r\n */\n helpers$1.numberOfLabelLines = function (arrayOfThings) {\n var numberOfLines = 1;\n helpers$1.each(arrayOfThings, function (thing) {\n if (helpers$1.isArray(thing)) {\n if (thing.length > numberOfLines) {\n numberOfLines = thing.length;\n }\n }\n });\n return numberOfLines;\n };\n helpers$1.color = !chartjsColor ? function (value) {\n console.error('Color.js not found!');\n return value;\n } : function (value) {\n /* global CanvasGradient */\n if (value instanceof CanvasGradient) {\n value = core_defaults.global.defaultColor;\n }\n return chartjsColor(value);\n };\n helpers$1.getHoverColor = function (colorValue) {\n /* global CanvasPattern */\n return colorValue instanceof CanvasPattern || colorValue instanceof CanvasGradient ? colorValue : helpers$1.color(colorValue).saturate(0.5).darken(0.1).rgbString();\n };\n };\n function abstract() {\n throw new Error('This method is not implemented: either no adapter can ' + 'be found or an incomplete integration was provided.');\n }\n\n /**\r\n * Date adapter (current used by the time scale)\r\n * @namespace Chart._adapters._date\r\n * @memberof Chart._adapters\r\n * @private\r\n */\n\n /**\r\n * Currently supported unit string values.\r\n * @typedef {('millisecond'|'second'|'minute'|'hour'|'day'|'week'|'month'|'quarter'|'year')}\r\n * @memberof Chart._adapters._date\r\n * @name Unit\r\n */\n\n /**\r\n * @class\r\n */\n function DateAdapter(options) {\n this.options = options || {};\n }\n helpers$1.extend(DateAdapter.prototype, /** @lends DateAdapter */{\n /**\r\n * Returns a map of time formats for the supported formatting units defined\r\n * in Unit as well as 'datetime' representing a detailed date/time string.\r\n * @returns {{string: string}}\r\n */\n formats: abstract,\n /**\r\n * Parses the given `value` and return the associated timestamp.\r\n * @param {any} value - the value to parse (usually comes from the data)\r\n * @param {string} [format] - the expected data format\r\n * @returns {(number|null)}\r\n * @function\r\n */\n parse: abstract,\n /**\r\n * Returns the formatted date in the specified `format` for a given `timestamp`.\r\n * @param {number} timestamp - the timestamp to format\r\n * @param {string} format - the date/time token\r\n * @return {string}\r\n * @function\r\n */\n format: abstract,\n /**\r\n * Adds the specified `amount` of `unit` to the given `timestamp`.\r\n * @param {number} timestamp - the input timestamp\r\n * @param {number} amount - the amount to add\r\n * @param {Unit} unit - the unit as string\r\n * @return {number}\r\n * @function\r\n */\n add: abstract,\n /**\r\n * Returns the number of `unit` between the given timestamps.\r\n * @param {number} max - the input timestamp (reference)\r\n * @param {number} min - the timestamp to substract\r\n * @param {Unit} unit - the unit as string\r\n * @return {number}\r\n * @function\r\n */\n diff: abstract,\n /**\r\n * Returns start of `unit` for the given `timestamp`.\r\n * @param {number} timestamp - the input timestamp\r\n * @param {Unit} unit - the unit as string\r\n * @param {number} [weekday] - the ISO day of the week with 1 being Monday\r\n * and 7 being Sunday (only needed if param *unit* is `isoWeek`).\r\n * @function\r\n */\n startOf: abstract,\n /**\r\n * Returns end of `unit` for the given `timestamp`.\r\n * @param {number} timestamp - the input timestamp\r\n * @param {Unit} unit - the unit as string\r\n * @function\r\n */\n endOf: abstract,\n // DEPRECATIONS\n\n /**\r\n * Provided for backward compatibility for scale.getValueForPixel(),\r\n * this method should be overridden only by the moment adapter.\r\n * @deprecated since version 2.8.0\r\n * @todo remove at version 3\r\n * @private\r\n */\n _create: function (value) {\n return value;\n }\n });\n DateAdapter.override = function (members) {\n helpers$1.extend(DateAdapter.prototype, members);\n };\n var _date = DateAdapter;\n var core_adapters = {\n _date: _date\n };\n\n /**\r\n * Namespace to hold static tick generation functions\r\n * @namespace Chart.Ticks\r\n */\n var core_ticks = {\n /**\r\n * Namespace to hold formatters for different types of ticks\r\n * @namespace Chart.Ticks.formatters\r\n */\n formatters: {\n /**\r\n * Formatter for value labels\r\n * @method Chart.Ticks.formatters.values\r\n * @param value the value to display\r\n * @return {string|string[]} the label to display\r\n */\n values: function (value) {\n return helpers$1.isArray(value) ? value : '' + value;\n },\n /**\r\n * Formatter for linear numeric ticks\r\n * @method Chart.Ticks.formatters.linear\r\n * @param tickValue {number} the value to be formatted\r\n * @param index {number} the position of the tickValue parameter in the ticks array\r\n * @param ticks {number[]} the list of ticks being converted\r\n * @return {string} string representation of the tickValue parameter\r\n */\n linear: function (tickValue, index, ticks) {\n // If we have lots of ticks, don't use the ones\n var delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0];\n\n // If we have a number like 2.5 as the delta, figure out how many decimal places we need\n if (Math.abs(delta) > 1) {\n if (tickValue !== Math.floor(tickValue)) {\n // not an integer\n delta = tickValue - Math.floor(tickValue);\n }\n }\n var logDelta = helpers$1.log10(Math.abs(delta));\n var tickString = '';\n if (tickValue !== 0) {\n var maxTick = Math.max(Math.abs(ticks[0]), Math.abs(ticks[ticks.length - 1]));\n if (maxTick < 1e-4) {\n // all ticks are small numbers; use scientific notation\n var logTick = helpers$1.log10(Math.abs(tickValue));\n var numExponential = Math.floor(logTick) - Math.floor(logDelta);\n numExponential = Math.max(Math.min(numExponential, 20), 0);\n tickString = tickValue.toExponential(numExponential);\n } else {\n var numDecimal = -1 * Math.floor(logDelta);\n numDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places\n tickString = tickValue.toFixed(numDecimal);\n }\n } else {\n tickString = '0'; // never show decimal places for 0\n }\n\n return tickString;\n },\n logarithmic: function (tickValue, index, ticks) {\n var remain = tickValue / Math.pow(10, Math.floor(helpers$1.log10(tickValue)));\n if (tickValue === 0) {\n return '0';\n } else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) {\n return tickValue.toExponential();\n }\n return '';\n }\n }\n };\n var isArray = helpers$1.isArray;\n var isNullOrUndef = helpers$1.isNullOrUndef;\n var valueOrDefault$a = helpers$1.valueOrDefault;\n var valueAtIndexOrDefault = helpers$1.valueAtIndexOrDefault;\n core_defaults._set('scale', {\n display: true,\n position: 'left',\n offset: false,\n // grid line settings\n gridLines: {\n display: true,\n color: 'rgba(0,0,0,0.1)',\n lineWidth: 1,\n drawBorder: true,\n drawOnChartArea: true,\n drawTicks: true,\n tickMarkLength: 10,\n zeroLineWidth: 1,\n zeroLineColor: 'rgba(0,0,0,0.25)',\n zeroLineBorderDash: [],\n zeroLineBorderDashOffset: 0.0,\n offsetGridLines: false,\n borderDash: [],\n borderDashOffset: 0.0\n },\n // scale label\n scaleLabel: {\n // display property\n display: false,\n // actual label\n labelString: '',\n // top/bottom padding\n padding: {\n top: 4,\n bottom: 4\n }\n },\n // label settings\n ticks: {\n beginAtZero: false,\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n padding: 0,\n reverse: false,\n display: true,\n autoSkip: true,\n autoSkipPadding: 0,\n labelOffset: 0,\n // We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\n callback: core_ticks.formatters.values,\n minor: {},\n major: {}\n }\n });\n\n /** Returns a new array containing numItems from arr */\n function sample(arr, numItems) {\n var result = [];\n var increment = arr.length / numItems;\n var i = 0;\n var len = arr.length;\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n return result;\n }\n function getPixelForGridLine(scale, index, offsetGridLines) {\n var length = scale.getTicks().length;\n var validIndex = Math.min(index, length - 1);\n var lineValue = scale.getPixelForTick(validIndex);\n var start = scale._startPixel;\n var end = scale._endPixel;\n var epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\n var offset;\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n\n // Return undefined if the pixel is out of the range\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n }\n function garbageCollect(caches, length) {\n helpers$1.each(caches, function (cache) {\n var gc = cache.gc;\n var gcLen = gc.length / 2;\n var i;\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n }\n\n /**\r\n * Returns {width, height, offset} objects for the first, last, widest, highest tick\r\n * labels where offset indicates the anchor point offset from the top in pixels.\r\n */\n function computeLabelSizes(ctx, tickFonts, ticks, caches) {\n var length = ticks.length;\n var widths = [];\n var heights = [];\n var offsets = [];\n var widestLabelSize = 0;\n var highestLabelSize = 0;\n var i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel, widest, highest;\n for (i = 0; i < length; ++i) {\n label = ticks[i].label;\n tickFont = ticks[i].major ? tickFonts.major : tickFonts.minor;\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {\n data: {},\n gc: []\n };\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n // Undefined labels and arrays should not be measured\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = helpers$1.measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n // if it is an array let's measure each element\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = label[j];\n // Undefined labels and arrays should not be measured\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = helpers$1.measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n offsets.push(lineHeight / 2);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n widest = widths.indexOf(widestLabelSize);\n highest = heights.indexOf(highestLabelSize);\n function valueAt(idx) {\n return {\n width: widths[idx] || 0,\n height: heights[idx] || 0,\n offset: offsets[idx] || 0\n };\n }\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest)\n };\n }\n function getTickMarkLength(options) {\n return options.drawTicks ? options.tickMarkLength : 0;\n }\n function getScaleLabelHeight(options) {\n var font, padding;\n if (!options.display) {\n return 0;\n }\n font = helpers$1.options._parseFont(options);\n padding = helpers$1.options.toPadding(options.padding);\n return font.lineHeight + padding.height;\n }\n function parseFontOptions(options, nestedOpts) {\n return helpers$1.extend(helpers$1.options._parseFont({\n fontFamily: valueOrDefault$a(nestedOpts.fontFamily, options.fontFamily),\n fontSize: valueOrDefault$a(nestedOpts.fontSize, options.fontSize),\n fontStyle: valueOrDefault$a(nestedOpts.fontStyle, options.fontStyle),\n lineHeight: valueOrDefault$a(nestedOpts.lineHeight, options.lineHeight)\n }), {\n color: helpers$1.options.resolve([nestedOpts.fontColor, options.fontColor, core_defaults.global.defaultFontColor])\n });\n }\n function parseTickFontOptions(options) {\n var minor = parseFontOptions(options, options.minor);\n var major = options.major.enabled ? parseFontOptions(options, options.major) : minor;\n return {\n minor: minor,\n major: major\n };\n }\n function nonSkipped(ticksToFilter) {\n var filtered = [];\n var item, index, len;\n for (index = 0, len = ticksToFilter.length; index < len; ++index) {\n item = ticksToFilter[index];\n if (typeof item._index !== 'undefined') {\n filtered.push(item);\n }\n }\n return filtered;\n }\n function getEvenSpacing(arr) {\n var len = arr.length;\n var i, diff;\n if (len < 2) {\n return false;\n }\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n }\n function calculateSpacing(majorIndices, ticks, axisLength, ticksLimit) {\n var evenMajorSpacing = getEvenSpacing(majorIndices);\n var spacing = (ticks.length - 1) / ticksLimit;\n var factors, factor, i, ilen;\n\n // If the major ticks are evenly spaced apart, place the minor ticks\n // so that they divide the major ticks into even chunks\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n factors = helpers$1.math._factorize(evenMajorSpacing);\n for (i = 0, ilen = factors.length - 1; i < ilen; i++) {\n factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n }\n function getMajorIndices(ticks) {\n var result = [];\n var i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n }\n function skipMajors(ticks, majorIndices, spacing) {\n var count = 0;\n var next = majorIndices[0];\n var i, tick;\n spacing = Math.ceil(spacing);\n for (i = 0; i < ticks.length; i++) {\n tick = ticks[i];\n if (i === next) {\n tick._index = i;\n count++;\n next = majorIndices[count * spacing];\n } else {\n delete tick.label;\n }\n }\n }\n function skip(ticks, spacing, majorStart, majorEnd) {\n var start = valueOrDefault$a(majorStart, 0);\n var end = Math.min(valueOrDefault$a(majorEnd, ticks.length), ticks.length);\n var count = 0;\n var length, i, tick, next;\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n for (i = Math.max(start, 0); i < end; i++) {\n tick = ticks[i];\n if (i === next) {\n tick._index = i;\n count++;\n next = Math.round(start + count * spacing);\n } else {\n delete tick.label;\n }\n }\n }\n var Scale = core_element.extend({\n zeroLineIndex: 0,\n /**\r\n * Get the padding needed for the scale\r\n * @method getPadding\r\n * @private\r\n * @returns {Padding} the necessary padding\r\n */\n getPadding: function () {\n var me = this;\n return {\n left: me.paddingLeft || 0,\n top: me.paddingTop || 0,\n right: me.paddingRight || 0,\n bottom: me.paddingBottom || 0\n };\n },\n /**\r\n * Returns the scale tick objects ({label, major})\r\n * @since 2.7\r\n */\n getTicks: function () {\n return this._ticks;\n },\n /**\r\n * @private\r\n */\n _getLabels: function () {\n var data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n },\n // These methods are ordered by lifecyle. Utilities then follow.\n // Any function defined here is inherited by all scale types.\n // Any function can be extended by the scale type\n\n /**\r\n * Provided for backward compatibility, not available anymore\r\n * @function Chart.Scale.mergeTicksOptions\r\n * @deprecated since version 2.8.0\r\n * @todo remove at version 3\r\n */\n mergeTicksOptions: function () {\n // noop\n },\n beforeUpdate: function () {\n helpers$1.callback(this.options.beforeUpdate, [this]);\n },\n /**\r\n * @param {number} maxWidth - the max width in pixels\r\n * @param {number} maxHeight - the max height in pixels\r\n * @param {object} margins - the space between the edge of the other scales and edge of the chart\r\n * This space comes from two sources:\r\n * - padding - space that's required to show the labels at the edges of the scale\r\n * - thickness of scales or legends in another orientation\r\n */\n update: function (maxWidth, maxHeight, margins) {\n var me = this;\n var tickOpts = me.options.ticks;\n var sampleSize = tickOpts.sampleSize;\n var i, ilen, labels, ticks, samplingEnabled;\n\n // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n me.beforeUpdate();\n\n // Absorb the master measurements\n me.maxWidth = maxWidth;\n me.maxHeight = maxHeight;\n me.margins = helpers$1.extend({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n me._ticks = null;\n me.ticks = null;\n me._labelSizes = null;\n me._maxLabelLines = 0;\n me.longestLabelWidth = 0;\n me.longestTextCache = me.longestTextCache || {};\n me._gridLineItems = null;\n me._labelItems = null;\n\n // Dimensions\n me.beforeSetDimensions();\n me.setDimensions();\n me.afterSetDimensions();\n\n // Data min/max\n me.beforeDataLimits();\n me.determineDataLimits();\n me.afterDataLimits();\n\n // Ticks - `this.ticks` is now DEPRECATED!\n // Internal ticks are now stored as objects in the PRIVATE `this._ticks` member\n // and must not be accessed directly from outside this class. `this.ticks` being\n // around for long time and not marked as private, we can't change its structure\n // without unexpected breaking changes. If you need to access the scale ticks,\n // use scale.getTicks() instead.\n\n me.beforeBuildTicks();\n\n // New implementations should return an array of objects but for BACKWARD COMPAT,\n // we still support no return (`this.ticks` internally set by calling this method).\n ticks = me.buildTicks() || [];\n\n // Allow modification of ticks in callback.\n ticks = me.afterBuildTicks(ticks) || ticks;\n\n // Ensure ticks contains ticks in new tick format\n if ((!ticks || !ticks.length) && me.ticks) {\n ticks = [];\n for (i = 0, ilen = me.ticks.length; i < ilen; ++i) {\n ticks.push({\n value: me.ticks[i],\n major: false\n });\n }\n }\n me._ticks = ticks;\n\n // Compute tick rotation and fit using a sampled subset of labels\n // We generally don't need to compute the size of every single label for determining scale size\n samplingEnabled = sampleSize < ticks.length;\n labels = me._convertTicksToLabels(samplingEnabled ? sample(ticks, sampleSize) : ticks);\n\n // _configure is called twice, once here, once from core.controller.updateLayout.\n // Here we haven't been positioned yet, but dimensions are correct.\n // Variables set in _configure are needed for calculateTickRotation, and\n // it's ok that coordinates are not correct there, only dimensions matter.\n me._configure();\n\n // Tick Rotation\n me.beforeCalculateTickRotation();\n me.calculateTickRotation();\n me.afterCalculateTickRotation();\n me.beforeFit();\n me.fit();\n me.afterFit();\n\n // Auto-skip\n me._ticksToDraw = tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto') ? me._autoSkip(ticks) : ticks;\n if (samplingEnabled) {\n // Generate labels using all non-skipped ticks\n labels = me._convertTicksToLabels(me._ticksToDraw);\n }\n me.ticks = labels; // BACKWARD COMPATIBILITY\n\n // IMPORTANT: after this point, we consider that `this.ticks` will NEVER change!\n\n me.afterUpdate();\n\n // TODO(v3): remove minSize as a public property and return value from all layout boxes. It is unused\n // make maxWidth and maxHeight private\n return me.minSize;\n },\n /**\r\n * @private\r\n */\n _configure: function () {\n var me = this;\n var reversePixels = me.options.ticks.reverse;\n var startPixel, endPixel;\n if (me.isHorizontal()) {\n startPixel = me.left;\n endPixel = me.right;\n } else {\n startPixel = me.top;\n endPixel = me.bottom;\n // by default vertical scales are from bottom to top, so pixels are reversed\n reversePixels = !reversePixels;\n }\n me._startPixel = startPixel;\n me._endPixel = endPixel;\n me._reversePixels = reversePixels;\n me._length = endPixel - startPixel;\n },\n afterUpdate: function () {\n helpers$1.callback(this.options.afterUpdate, [this]);\n },\n //\n\n beforeSetDimensions: function () {\n helpers$1.callback(this.options.beforeSetDimensions, [this]);\n },\n setDimensions: function () {\n var me = this;\n // Set the unconstrained dimension before label rotation\n if (me.isHorizontal()) {\n // Reset position before calculating rotation\n me.width = me.maxWidth;\n me.left = 0;\n me.right = me.width;\n } else {\n me.height = me.maxHeight;\n\n // Reset position before calculating rotation\n me.top = 0;\n me.bottom = me.height;\n }\n\n // Reset padding\n me.paddingLeft = 0;\n me.paddingTop = 0;\n me.paddingRight = 0;\n me.paddingBottom = 0;\n },\n afterSetDimensions: function () {\n helpers$1.callback(this.options.afterSetDimensions, [this]);\n },\n // Data limits\n beforeDataLimits: function () {\n helpers$1.callback(this.options.beforeDataLimits, [this]);\n },\n determineDataLimits: helpers$1.noop,\n afterDataLimits: function () {\n helpers$1.callback(this.options.afterDataLimits, [this]);\n },\n //\n beforeBuildTicks: function () {\n helpers$1.callback(this.options.beforeBuildTicks, [this]);\n },\n buildTicks: helpers$1.noop,\n afterBuildTicks: function (ticks) {\n var me = this;\n // ticks is empty for old axis implementations here\n if (isArray(ticks) && ticks.length) {\n return helpers$1.callback(me.options.afterBuildTicks, [me, ticks]);\n }\n // Support old implementations (that modified `this.ticks` directly in buildTicks)\n me.ticks = helpers$1.callback(me.options.afterBuildTicks, [me, me.ticks]) || me.ticks;\n return ticks;\n },\n beforeTickToLabelConversion: function () {\n helpers$1.callback(this.options.beforeTickToLabelConversion, [this]);\n },\n convertTicksToLabels: function () {\n var me = this;\n // Convert ticks to strings\n var tickOpts = me.options.ticks;\n me.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this);\n },\n afterTickToLabelConversion: function () {\n helpers$1.callback(this.options.afterTickToLabelConversion, [this]);\n },\n //\n\n beforeCalculateTickRotation: function () {\n helpers$1.callback(this.options.beforeCalculateTickRotation, [this]);\n },\n calculateTickRotation: function () {\n var me = this;\n var options = me.options;\n var tickOpts = options.ticks;\n var numTicks = me.getTicks().length;\n var minRotation = tickOpts.minRotation || 0;\n var maxRotation = tickOpts.maxRotation;\n var labelRotation = minRotation;\n var labelSizes, maxLabelWidth, maxLabelHeight, maxWidth, tickWidth, maxHeight, maxLabelDiagonal;\n if (!me._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !me.isHorizontal()) {\n me.labelRotation = minRotation;\n return;\n }\n labelSizes = me._getLabelSizes();\n maxLabelWidth = labelSizes.widest.width;\n maxLabelHeight = labelSizes.highest.height - labelSizes.highest.offset;\n\n // Estimate the width of each grid based on the canvas width, the maximum\n // label width and the number of tick intervals\n maxWidth = Math.min(me.maxWidth, me.chart.width - maxLabelWidth);\n tickWidth = options.offset ? me.maxWidth / numTicks : maxWidth / (numTicks - 1);\n\n // Allow 3 pixels x2 padding either side for label readability\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = me.maxHeight - getTickMarkLength(options.gridLines) - tickOpts.padding - getScaleLabelHeight(options.scaleLabel);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = helpers$1.toDegrees(Math.min(Math.asin(Math.min((labelSizes.highest.height + 6) / tickWidth, 1)), Math.asin(Math.min(maxHeight / maxLabelDiagonal, 1)) - Math.asin(maxLabelHeight / maxLabelDiagonal)));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n me.labelRotation = labelRotation;\n },\n afterCalculateTickRotation: function () {\n helpers$1.callback(this.options.afterCalculateTickRotation, [this]);\n },\n //\n\n beforeFit: function () {\n helpers$1.callback(this.options.beforeFit, [this]);\n },\n fit: function () {\n var me = this;\n // Reset\n var minSize = me.minSize = {\n width: 0,\n height: 0\n };\n var chart = me.chart;\n var opts = me.options;\n var tickOpts = opts.ticks;\n var scaleLabelOpts = opts.scaleLabel;\n var gridLineOpts = opts.gridLines;\n var display = me._isVisible();\n var isBottom = opts.position === 'bottom';\n var isHorizontal = me.isHorizontal();\n\n // Width\n if (isHorizontal) {\n minSize.width = me.maxWidth;\n } else if (display) {\n minSize.width = getTickMarkLength(gridLineOpts) + getScaleLabelHeight(scaleLabelOpts);\n }\n\n // height\n if (!isHorizontal) {\n minSize.height = me.maxHeight; // fill all the height\n } else if (display) {\n minSize.height = getTickMarkLength(gridLineOpts) + getScaleLabelHeight(scaleLabelOpts);\n }\n\n // Don't bother fitting the ticks if we are not showing the labels\n if (tickOpts.display && display) {\n var tickFonts = parseTickFontOptions(tickOpts);\n var labelSizes = me._getLabelSizes();\n var firstLabelSize = labelSizes.first;\n var lastLabelSize = labelSizes.last;\n var widestLabelSize = labelSizes.widest;\n var highestLabelSize = labelSizes.highest;\n var lineSpace = tickFonts.minor.lineHeight * 0.4;\n var tickPadding = tickOpts.padding;\n if (isHorizontal) {\n // A horizontal axis is more constrained by the height.\n var isRotated = me.labelRotation !== 0;\n var angleRadians = helpers$1.toRadians(me.labelRotation);\n var cosRotation = Math.cos(angleRadians);\n var sinRotation = Math.sin(angleRadians);\n var labelHeight = sinRotation * widestLabelSize.width + cosRotation * (highestLabelSize.height - (isRotated ? highestLabelSize.offset : 0)) + (isRotated ? 0 : lineSpace); // padding\n\n minSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding);\n var offsetLeft = me.getPixelForTick(0) - me.left;\n var offsetRight = me.right - me.getPixelForTick(me.getTicks().length - 1);\n var paddingLeft, paddingRight;\n\n // Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned\n // which means that the right padding is dominated by the font height\n if (isRotated) {\n paddingLeft = isBottom ? cosRotation * firstLabelSize.width + sinRotation * firstLabelSize.offset : sinRotation * (firstLabelSize.height - firstLabelSize.offset);\n paddingRight = isBottom ? sinRotation * (lastLabelSize.height - lastLabelSize.offset) : cosRotation * lastLabelSize.width + sinRotation * lastLabelSize.offset;\n } else {\n paddingLeft = firstLabelSize.width / 2;\n paddingRight = lastLabelSize.width / 2;\n }\n\n // Adjust padding taking into account changes in offsets\n // and add 3 px to move away from canvas edges\n me.paddingLeft = Math.max((paddingLeft - offsetLeft) * me.width / (me.width - offsetLeft), 0) + 3;\n me.paddingRight = Math.max((paddingRight - offsetRight) * me.width / (me.width - offsetRight), 0) + 3;\n } else {\n // A vertical axis is more constrained by the width. Labels are the\n // dominant factor here, so get that length first and account for padding\n var labelWidth = tickOpts.mirror ? 0 :\n // use lineSpace for consistency with horizontal axis\n // tickPadding is not implemented for horizontal\n widestLabelSize.width + tickPadding + lineSpace;\n minSize.width = Math.min(me.maxWidth, minSize.width + labelWidth);\n me.paddingTop = firstLabelSize.height / 2;\n me.paddingBottom = lastLabelSize.height / 2;\n }\n }\n me.handleMargins();\n if (isHorizontal) {\n me.width = me._length = chart.width - me.margins.left - me.margins.right;\n me.height = minSize.height;\n } else {\n me.width = minSize.width;\n me.height = me._length = chart.height - me.margins.top - me.margins.bottom;\n }\n },\n /**\r\n * Handle margins and padding interactions\r\n * @private\r\n */\n handleMargins: function () {\n var me = this;\n if (me.margins) {\n me.margins.left = Math.max(me.paddingLeft, me.margins.left);\n me.margins.top = Math.max(me.paddingTop, me.margins.top);\n me.margins.right = Math.max(me.paddingRight, me.margins.right);\n me.margins.bottom = Math.max(me.paddingBottom, me.margins.bottom);\n }\n },\n afterFit: function () {\n helpers$1.callback(this.options.afterFit, [this]);\n },\n // Shared Methods\n isHorizontal: function () {\n var pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n },\n isFullWidth: function () {\n return this.options.fullWidth;\n },\n // 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 getRightValue: function (rawValue) {\n // Null and undefined values first\n if (isNullOrUndef(rawValue)) {\n return NaN;\n }\n // isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values\n if ((typeof rawValue === 'number' || rawValue instanceof Number) && !isFinite(rawValue)) {\n return NaN;\n }\n\n // If it is in fact an object, dive in one more level\n if (rawValue) {\n if (this.isHorizontal()) {\n if (rawValue.x !== undefined) {\n return this.getRightValue(rawValue.x);\n }\n } else if (rawValue.y !== undefined) {\n return this.getRightValue(rawValue.y);\n }\n }\n\n // Value is good, return it\n return rawValue;\n },\n _convertTicksToLabels: function (ticks) {\n var me = this;\n var labels, i, ilen;\n me.ticks = ticks.map(function (tick) {\n return tick.value;\n });\n me.beforeTickToLabelConversion();\n\n // New implementations should return the formatted tick labels but for BACKWARD\n // COMPAT, we still support no return (`this.ticks` internally changed by calling\n // this method and supposed to contain only string values).\n labels = me.convertTicksToLabels(ticks) || me.ticks;\n me.afterTickToLabelConversion();\n\n // BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`)\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n ticks[i].label = labels[i];\n }\n return labels;\n },\n /**\r\n * @private\r\n */\n _getLabelSizes: function () {\n var me = this;\n var labelSizes = me._labelSizes;\n if (!labelSizes) {\n me._labelSizes = labelSizes = computeLabelSizes(me.ctx, parseTickFontOptions(me.options.ticks), me.getTicks(), me.longestTextCache);\n me.longestLabelWidth = labelSizes.widest.width;\n }\n return labelSizes;\n },\n /**\r\n * @private\r\n */\n _parseValue: function (value) {\n var start, end, min, max;\n if (isArray(value)) {\n start = +this.getRightValue(value[0]);\n end = +this.getRightValue(value[1]);\n min = Math.min(start, end);\n max = Math.max(start, end);\n } else {\n value = +this.getRightValue(value);\n start = undefined;\n end = value;\n min = value;\n max = value;\n }\n return {\n min: min,\n max: max,\n start: start,\n end: end\n };\n },\n /**\r\n * @private\r\n */\n _getScaleLabel: function (rawValue) {\n var v = this._parseValue(rawValue);\n if (v.start !== undefined) {\n return '[' + v.start + ', ' + v.end + ']';\n }\n return +this.getRightValue(rawValue);\n },\n /**\r\n * Used to get the value to display in the tooltip for the data at the given index\r\n * @param index\r\n * @param datasetIndex\r\n */\n getLabelForIndex: helpers$1.noop,\n /**\r\n * Returns the location of the given data point. Value can either be an index or a numerical value\r\n * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n * @param value\r\n * @param index\r\n * @param datasetIndex\r\n */\n getPixelForValue: helpers$1.noop,\n /**\r\n * Used to get the data value from a given pixel. This is the inverse of getPixelForValue\r\n * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n * @param pixel\r\n */\n getValueForPixel: helpers$1.noop,\n /**\r\n * Returns the location of the tick at the given index\r\n * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n */\n getPixelForTick: function (index) {\n var me = this;\n var offset = me.options.offset;\n var numTicks = me._ticks.length;\n var tickWidth = 1 / Math.max(numTicks - (offset ? 0 : 1), 1);\n return index < 0 || index > numTicks - 1 ? null : me.getPixelForDecimal(index * tickWidth + (offset ? tickWidth / 2 : 0));\n },\n /**\r\n * Utility for getting the pixel location of a percentage of scale\r\n * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n */\n getPixelForDecimal: function (decimal) {\n var me = this;\n if (me._reversePixels) {\n decimal = 1 - decimal;\n }\n return me._startPixel + decimal * me._length;\n },\n getDecimalForPixel: function (pixel) {\n var decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n },\n /**\r\n * Returns the pixel for the minimum chart value\r\n * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n */\n getBasePixel: function () {\n return this.getPixelForValue(this.getBaseValue());\n },\n getBaseValue: function () {\n var me = this;\n var min = me.min;\n var max = me.max;\n return me.beginAtZero ? 0 : min < 0 && max < 0 ? max : min > 0 && max > 0 ? min : 0;\n },\n /**\r\n * Returns a subset of ticks to be plotted to avoid overlapping labels.\r\n * @private\r\n */\n _autoSkip: function (ticks) {\n var me = this;\n var tickOpts = me.options.ticks;\n var axisLength = me._length;\n var ticksLimit = tickOpts.maxTicksLimit || axisLength / me._tickSize() + 1;\n var majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n var numMajorIndices = majorIndices.length;\n var first = majorIndices[0];\n var last = majorIndices[numMajorIndices - 1];\n var i, ilen, spacing, avgMajorSpacing;\n\n // If there are too many major ticks to display them all\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, majorIndices, numMajorIndices / ticksLimit);\n return nonSkipped(ticks);\n }\n spacing = calculateSpacing(majorIndices, ticks, axisLength, ticksLimit);\n if (numMajorIndices > 0) {\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n avgMajorSpacing = numMajorIndices > 1 ? (last - first) / (numMajorIndices - 1) : null;\n skip(ticks, spacing, helpers$1.isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n skip(ticks, spacing, last, helpers$1.isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return nonSkipped(ticks);\n }\n skip(ticks, spacing);\n return nonSkipped(ticks);\n },\n /**\r\n * @private\r\n */\n _tickSize: function () {\n var me = this;\n var optionTicks = me.options.ticks;\n\n // Calculate space needed by label in axis direction.\n var rot = helpers$1.toRadians(me.labelRotation);\n var cos = Math.abs(Math.cos(rot));\n var sin = Math.abs(Math.sin(rot));\n var labelSizes = me._getLabelSizes();\n var padding = optionTicks.autoSkipPadding || 0;\n var w = labelSizes ? labelSizes.widest.width + padding : 0;\n var h = labelSizes ? labelSizes.highest.height + padding : 0;\n\n // Calculate space needed for 1 tick in axis direction.\n return me.isHorizontal() ? h * cos > w * sin ? w / cos : h / sin : h * sin < w * cos ? h / cos : w / sin;\n },\n /**\r\n * @private\r\n */\n _isVisible: function () {\n var me = this;\n var chart = me.chart;\n var display = me.options.display;\n var i, ilen, meta;\n if (display !== 'auto') {\n return !!display;\n }\n\n // When 'auto', the scale is visible if at least one associated dataset is visible.\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n if (meta.xAxisID === me.id || meta.yAxisID === me.id) {\n return true;\n }\n }\n }\n return false;\n },\n /**\r\n * @private\r\n */\n _computeGridLineItems: function (chartArea) {\n var me = this;\n var chart = me.chart;\n var options = me.options;\n var gridLines = options.gridLines;\n var position = options.position;\n var offsetGridLines = gridLines.offsetGridLines;\n var isHorizontal = me.isHorizontal();\n var ticks = me._ticksToDraw;\n var ticksLength = ticks.length + (offsetGridLines ? 1 : 0);\n var tl = getTickMarkLength(gridLines);\n var items = [];\n var axisWidth = gridLines.drawBorder ? valueAtIndexOrDefault(gridLines.lineWidth, 0, 0) : 0;\n var axisHalfWidth = axisWidth / 2;\n var alignPixel = helpers$1._alignPixel;\n var alignBorderValue = function (pixel) {\n return alignPixel(chart, pixel, axisWidth);\n };\n var borderValue, i, tick, lineValue, alignedLineValue;\n var tx1, ty1, tx2, ty2, x1, y1, x2, y2, lineWidth, lineColor, borderDash, borderDashOffset;\n if (position === 'top') {\n borderValue = alignBorderValue(me.bottom);\n ty1 = me.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(me.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = me.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(me.right);\n tx1 = me.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else {\n borderValue = alignBorderValue(me.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = me.left + tl;\n }\n for (i = 0; i < ticksLength; ++i) {\n tick = ticks[i] || {};\n\n // autoskipper skipped this tick (#4635)\n if (isNullOrUndef(tick.label) && i < ticks.length) {\n continue;\n }\n if (i === me.zeroLineIndex && options.offset === offsetGridLines) {\n // Draw the first index specially\n lineWidth = gridLines.zeroLineWidth;\n lineColor = gridLines.zeroLineColor;\n borderDash = gridLines.zeroLineBorderDash || [];\n borderDashOffset = gridLines.zeroLineBorderDashOffset || 0.0;\n } else {\n lineWidth = valueAtIndexOrDefault(gridLines.lineWidth, i, 1);\n lineColor = valueAtIndexOrDefault(gridLines.color, i, 'rgba(0,0,0,0.1)');\n borderDash = gridLines.borderDash || [];\n borderDashOffset = gridLines.borderDashOffset || 0.0;\n }\n lineValue = getPixelForGridLine(me, tick._index || i, offsetGridLines);\n\n // Skip if the pixel is out of the range\n if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n items.push({\n tx1: tx1,\n ty1: ty1,\n tx2: tx2,\n ty2: ty2,\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2,\n width: lineWidth,\n color: lineColor,\n borderDash: borderDash,\n borderDashOffset: borderDashOffset\n });\n }\n items.ticksLength = ticksLength;\n items.borderValue = borderValue;\n return items;\n },\n /**\r\n * @private\r\n */\n _computeLabelItems: function () {\n var me = this;\n var options = me.options;\n var optionTicks = options.ticks;\n var position = options.position;\n var isMirrored = optionTicks.mirror;\n var isHorizontal = me.isHorizontal();\n var ticks = me._ticksToDraw;\n var fonts = parseTickFontOptions(optionTicks);\n var tickPadding = optionTicks.padding;\n var tl = getTickMarkLength(options.gridLines);\n var rotation = -helpers$1.toRadians(me.labelRotation);\n var items = [];\n var i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n if (position === 'top') {\n y = me.bottom - tl - tickPadding;\n textAlign = !rotation ? 'center' : 'left';\n } else if (position === 'bottom') {\n y = me.top + tl + tickPadding;\n textAlign = !rotation ? 'center' : 'right';\n } else if (position === 'left') {\n x = me.right - (isMirrored ? 0 : tl) - tickPadding;\n textAlign = isMirrored ? 'left' : 'right';\n } else {\n x = me.left + (isMirrored ? 0 : tl) + tickPadding;\n textAlign = isMirrored ? 'right' : 'left';\n }\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n\n // autoskipper skipped this tick (#4635)\n if (isNullOrUndef(label)) {\n continue;\n }\n pixel = me.getPixelForTick(tick._index || i) + optionTicks.labelOffset;\n font = tick.major ? fonts.major : fonts.minor;\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n if (isHorizontal) {\n x = pixel;\n textOffset = position === 'top' ? ((!rotation ? 0.5 : 1) - lineCount) * lineHeight : (!rotation ? 0.5 : 0) * lineHeight;\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n items.push({\n x: x,\n y: y,\n rotation: rotation,\n label: label,\n font: font,\n textOffset: textOffset,\n textAlign: textAlign\n });\n }\n return items;\n },\n /**\r\n * @private\r\n */\n _drawGrid: function (chartArea) {\n var me = this;\n var gridLines = me.options.gridLines;\n if (!gridLines.display) {\n return;\n }\n var ctx = me.ctx;\n var chart = me.chart;\n var alignPixel = helpers$1._alignPixel;\n var axisWidth = gridLines.drawBorder ? valueAtIndexOrDefault(gridLines.lineWidth, 0, 0) : 0;\n var items = me._gridLineItems || (me._gridLineItems = me._computeGridLineItems(chartArea));\n var width, color, i, ilen, item;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n width = item.width;\n color = item.color;\n if (width && color) {\n ctx.save();\n ctx.lineWidth = width;\n ctx.strokeStyle = color;\n if (ctx.setLineDash) {\n ctx.setLineDash(item.borderDash);\n ctx.lineDashOffset = item.borderDashOffset;\n }\n ctx.beginPath();\n if (gridLines.drawTicks) {\n ctx.moveTo(item.tx1, item.ty1);\n ctx.lineTo(item.tx2, item.ty2);\n }\n if (gridLines.drawOnChartArea) {\n ctx.moveTo(item.x1, item.y1);\n ctx.lineTo(item.x2, item.y2);\n }\n ctx.stroke();\n ctx.restore();\n }\n }\n if (axisWidth) {\n // Draw the line at the edge of the axis\n var firstLineWidth = axisWidth;\n var lastLineWidth = valueAtIndexOrDefault(gridLines.lineWidth, items.ticksLength - 1, 1);\n var borderValue = items.borderValue;\n var x1, x2, y1, y2;\n if (me.isHorizontal()) {\n x1 = alignPixel(chart, me.left, firstLineWidth) - firstLineWidth / 2;\n x2 = alignPixel(chart, me.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = alignPixel(chart, me.top, firstLineWidth) - firstLineWidth / 2;\n y2 = alignPixel(chart, me.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.lineWidth = axisWidth;\n ctx.strokeStyle = valueAtIndexOrDefault(gridLines.color, 0);\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n }\n },\n /**\r\n * @private\r\n */\n _drawLabels: function () {\n var me = this;\n var optionTicks = me.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n var ctx = me.ctx;\n var items = me._labelItems || (me._labelItems = me._computeLabelItems());\n var i, j, ilen, jlen, item, tickFont, label, y;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n tickFont = item.font;\n\n // Make sure we draw text in the correct color and font\n ctx.save();\n ctx.translate(item.x, item.y);\n ctx.rotate(item.rotation);\n ctx.font = tickFont.string;\n ctx.fillStyle = tickFont.color;\n ctx.textBaseline = 'middle';\n ctx.textAlign = item.textAlign;\n label = item.label;\n y = item.textOffset;\n if (isArray(label)) {\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n // We just make sure the multiline element is a string here..\n ctx.fillText('' + label[j], 0, y);\n y += tickFont.lineHeight;\n }\n } else {\n ctx.fillText(label, 0, y);\n }\n ctx.restore();\n }\n },\n /**\r\n * @private\r\n */\n _drawTitle: function () {\n var me = this;\n var ctx = me.ctx;\n var options = me.options;\n var scaleLabel = options.scaleLabel;\n if (!scaleLabel.display) {\n return;\n }\n var scaleLabelFontColor = valueOrDefault$a(scaleLabel.fontColor, core_defaults.global.defaultFontColor);\n var scaleLabelFont = helpers$1.options._parseFont(scaleLabel);\n var scaleLabelPadding = helpers$1.options.toPadding(scaleLabel.padding);\n var halfLineHeight = scaleLabelFont.lineHeight / 2;\n var position = options.position;\n var rotation = 0;\n var scaleLabelX, scaleLabelY;\n if (me.isHorizontal()) {\n scaleLabelX = me.left + me.width / 2; // midpoint of the width\n scaleLabelY = position === 'bottom' ? me.bottom - halfLineHeight - scaleLabelPadding.bottom : me.top + halfLineHeight + scaleLabelPadding.top;\n } else {\n var isLeft = position === 'left';\n scaleLabelX = isLeft ? me.left + halfLineHeight + scaleLabelPadding.top : me.right - halfLineHeight - scaleLabelPadding.top;\n scaleLabelY = me.top + me.height / 2;\n rotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI;\n }\n ctx.save();\n ctx.translate(scaleLabelX, scaleLabelY);\n ctx.rotate(rotation);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n ctx.fillStyle = scaleLabelFontColor; // render in correct colour\n ctx.font = scaleLabelFont.string;\n ctx.fillText(scaleLabel.labelString, 0, 0);\n ctx.restore();\n },\n draw: function (chartArea) {\n var me = this;\n if (!me._isVisible()) {\n return;\n }\n me._drawGrid(chartArea);\n me._drawTitle();\n me._drawLabels();\n },\n /**\r\n * @private\r\n */\n _layers: function () {\n var me = this;\n var opts = me.options;\n var tz = opts.ticks && opts.ticks.z || 0;\n var gz = opts.gridLines && opts.gridLines.z || 0;\n if (!me._isVisible() || tz === gz || me.draw !== me._draw) {\n // backward compatibility: draw has been overridden by custom scale\n return [{\n z: tz,\n draw: function () {\n me.draw.apply(me, arguments);\n }\n }];\n }\n return [{\n z: gz,\n draw: function () {\n me._drawGrid.apply(me, arguments);\n me._drawTitle.apply(me, arguments);\n }\n }, {\n z: tz,\n draw: function () {\n me._drawLabels.apply(me, arguments);\n }\n }];\n },\n /**\r\n * @private\r\n */\n _getMatchingVisibleMetas: function (type) {\n var me = this;\n var isHorizontal = me.isHorizontal();\n return me.chart._getSortedVisibleDatasetMetas().filter(function (meta) {\n return (!type || meta.type === type) && (isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id);\n });\n }\n });\n Scale.prototype._draw = Scale.prototype.draw;\n var core_scale = Scale;\n var isNullOrUndef$1 = helpers$1.isNullOrUndef;\n var defaultConfig = {\n position: 'bottom'\n };\n var scale_category = core_scale.extend({\n determineDataLimits: function () {\n var me = this;\n var labels = me._getLabels();\n var ticksOpts = me.options.ticks;\n var min = ticksOpts.min;\n var max = ticksOpts.max;\n var minIndex = 0;\n var maxIndex = labels.length - 1;\n var findIndex;\n if (min !== undefined) {\n // user specified min value\n findIndex = labels.indexOf(min);\n if (findIndex >= 0) {\n minIndex = findIndex;\n }\n }\n if (max !== undefined) {\n // user specified max value\n findIndex = labels.indexOf(max);\n if (findIndex >= 0) {\n maxIndex = findIndex;\n }\n }\n me.minIndex = minIndex;\n me.maxIndex = maxIndex;\n me.min = labels[minIndex];\n me.max = labels[maxIndex];\n },\n buildTicks: function () {\n var me = this;\n var labels = me._getLabels();\n var minIndex = me.minIndex;\n var maxIndex = me.maxIndex;\n\n // If we are viewing some subset of labels, slice the original array\n me.ticks = minIndex === 0 && maxIndex === labels.length - 1 ? labels : labels.slice(minIndex, maxIndex + 1);\n },\n getLabelForIndex: function (index, datasetIndex) {\n var me = this;\n var chart = me.chart;\n if (chart.getDatasetMeta(datasetIndex).controller._getValueScaleId() === me.id) {\n return me.getRightValue(chart.data.datasets[datasetIndex].data[index]);\n }\n return me._getLabels()[index];\n },\n _configure: function () {\n var me = this;\n var offset = me.options.offset;\n var ticks = me.ticks;\n core_scale.prototype._configure.call(me);\n if (!me.isHorizontal()) {\n // For backward compatibility, vertical category scale reverse is inverted.\n me._reversePixels = !me._reversePixels;\n }\n if (!ticks) {\n return;\n }\n me._startValue = me.minIndex - (offset ? 0.5 : 0);\n me._valueRange = Math.max(ticks.length - (offset ? 0 : 1), 1);\n },\n // Used to get data value locations. Value can either be an index or a numerical value\n getPixelForValue: function (value, index, datasetIndex) {\n var me = this;\n var valueCategory, labels, idx;\n if (!isNullOrUndef$1(index) && !isNullOrUndef$1(datasetIndex)) {\n value = me.chart.data.datasets[datasetIndex].data[index];\n }\n\n // If value is a data object, then index is the index in the data array,\n // not the index of the scale. We need to change that.\n if (!isNullOrUndef$1(value)) {\n valueCategory = me.isHorizontal() ? value.x : value.y;\n }\n if (valueCategory !== undefined || value !== undefined && isNaN(index)) {\n labels = me._getLabels();\n value = helpers$1.valueOrDefault(valueCategory, value);\n idx = labels.indexOf(value);\n index = idx !== -1 ? idx : index;\n if (isNaN(index)) {\n index = value;\n }\n }\n return me.getPixelForDecimal((index - me._startValue) / me._valueRange);\n },\n getPixelForTick: function (index) {\n var ticks = this.ticks;\n return index < 0 || index > ticks.length - 1 ? null : this.getPixelForValue(ticks[index], index + this.minIndex);\n },\n getValueForPixel: function (pixel) {\n var me = this;\n var value = Math.round(me._startValue + me.getDecimalForPixel(pixel) * me._valueRange);\n return Math.min(Math.max(value, 0), me.ticks.length - 1);\n },\n getBasePixel: function () {\n return this.bottom;\n }\n });\n\n // INTERNAL: static default options, registered in src/index.js\n var _defaults = defaultConfig;\n scale_category._defaults = _defaults;\n var noop = helpers$1.noop;\n var isNullOrUndef$2 = helpers$1.isNullOrUndef;\n\n /**\r\n * Generate a set of linear ticks\r\n * @param generationOptions the options used to generate the ticks\r\n * @param dataRange the range of the data\r\n * @returns {number[]} array of tick values\r\n */\n function generateTicks(generationOptions, dataRange) {\n var ticks = [];\n // To get a \"nice\" value for the tick spacing, we will use the appropriately named\n // \"nice number\" algorithm. See https://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\n // for details.\n\n var MIN_SPACING = 1e-14;\n var stepSize = generationOptions.stepSize;\n var unit = stepSize || 1;\n var maxNumSpaces = generationOptions.maxTicks - 1;\n var min = generationOptions.min;\n var max = generationOptions.max;\n var precision = generationOptions.precision;\n var rmin = dataRange.min;\n var rmax = dataRange.max;\n var spacing = helpers$1.niceNum((rmax - rmin) / maxNumSpaces / unit) * unit;\n var factor, niceMin, niceMax, numSpaces;\n\n // Beyond MIN_SPACING floating point numbers being to lose precision\n // such that we can't do the math necessary to generate ticks\n if (spacing < MIN_SPACING && isNullOrUndef$2(min) && isNullOrUndef$2(max)) {\n return [rmin, rmax];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxNumSpaces) {\n // If the calculated num of spaces exceeds maxNumSpaces, recalculate it\n spacing = helpers$1.niceNum(numSpaces * spacing / maxNumSpaces / unit) * unit;\n }\n if (stepSize || isNullOrUndef$2(precision)) {\n // If a precision is not specified, calculate factor based on spacing\n factor = Math.pow(10, helpers$1._decimalPlaces(spacing));\n } else {\n // If the user specified a precision, round to that number of decimal places\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n\n // If min, max and stepSize is set and they make an evenly spaced scale use it.\n if (stepSize) {\n // If very close to our whole number, use it.\n if (!isNullOrUndef$2(min) && helpers$1.almostWhole(min / spacing, spacing / 1000)) {\n niceMin = min;\n }\n if (!isNullOrUndef$2(max) && helpers$1.almostWhole(max / spacing, spacing / 1000)) {\n niceMax = max;\n }\n }\n numSpaces = (niceMax - niceMin) / spacing;\n // If very close to our rounded value, use it.\n if (helpers$1.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n ticks.push(isNullOrUndef$2(min) ? niceMin : min);\n for (var j = 1; j < numSpaces; ++j) {\n ticks.push(Math.round((niceMin + j * spacing) * factor) / factor);\n }\n ticks.push(isNullOrUndef$2(max) ? niceMax : max);\n return ticks;\n }\n var scale_linearbase = core_scale.extend({\n getRightValue: function (value) {\n if (typeof value === 'string') {\n return +value;\n }\n return core_scale.prototype.getRightValue.call(this, value);\n },\n handleTickRangeOptions: function () {\n var me = this;\n var opts = me.options;\n var tickOpts = opts.ticks;\n\n // If we are forcing it to begin at 0, but 0 will already be rendered on the chart,\n // do nothing since that would make the chart weird. If the user really wants a weird chart\n // axis, they can manually override it\n if (tickOpts.beginAtZero) {\n var minSign = helpers$1.sign(me.min);\n var maxSign = helpers$1.sign(me.max);\n if (minSign < 0 && maxSign < 0) {\n // move the top up to 0\n me.max = 0;\n } else if (minSign > 0 && maxSign > 0) {\n // move the bottom down to 0\n me.min = 0;\n }\n }\n var setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined;\n var setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined;\n if (tickOpts.min !== undefined) {\n me.min = tickOpts.min;\n } else if (tickOpts.suggestedMin !== undefined) {\n if (me.min === null) {\n me.min = tickOpts.suggestedMin;\n } else {\n me.min = Math.min(me.min, tickOpts.suggestedMin);\n }\n }\n if (tickOpts.max !== undefined) {\n me.max = tickOpts.max;\n } else if (tickOpts.suggestedMax !== undefined) {\n if (me.max === null) {\n me.max = tickOpts.suggestedMax;\n } else {\n me.max = Math.max(me.max, tickOpts.suggestedMax);\n }\n }\n if (setMin !== setMax) {\n // We set the min or the max but not both.\n // So ensure that our range is good\n // Inverted or 0 length range can happen when\n // ticks.min is set, and no datasets are visible\n if (me.min >= me.max) {\n if (setMin) {\n me.max = me.min + 1;\n } else {\n me.min = me.max - 1;\n }\n }\n }\n if (me.min === me.max) {\n me.max++;\n if (!tickOpts.beginAtZero) {\n me.min--;\n }\n }\n },\n getTickLimit: function () {\n var me = this;\n var tickOpts = me.options.ticks;\n var stepSize = tickOpts.stepSize;\n var maxTicksLimit = tickOpts.maxTicksLimit;\n var maxTicks;\n if (stepSize) {\n maxTicks = Math.ceil(me.max / stepSize) - Math.floor(me.min / stepSize) + 1;\n } else {\n maxTicks = me._computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n return maxTicks;\n },\n _computeTickLimit: function () {\n return Number.POSITIVE_INFINITY;\n },\n handleDirectionalChanges: noop,\n buildTicks: function () {\n var me = this;\n var opts = me.options;\n var tickOpts = opts.ticks;\n\n // Figure out what the max number of ticks we can support it is based on the size of\n // the axis area. For now, we say that the minimum tick spacing in pixels must be 40\n // We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n // the graph. Make sure we always have at least 2 ticks\n var maxTicks = me.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n var numericGeneratorOptions = {\n maxTicks: maxTicks,\n min: tickOpts.min,\n max: tickOpts.max,\n precision: tickOpts.precision,\n stepSize: helpers$1.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize)\n };\n var ticks = me.ticks = generateTicks(numericGeneratorOptions, me);\n me.handleDirectionalChanges();\n\n // At this point, we need to update our max and min given the tick values since we have expanded the\n // range of the scale\n me.max = helpers$1.max(ticks);\n me.min = helpers$1.min(ticks);\n if (tickOpts.reverse) {\n ticks.reverse();\n me.start = me.max;\n me.end = me.min;\n } else {\n me.start = me.min;\n me.end = me.max;\n }\n },\n convertTicksToLabels: function () {\n var me = this;\n me.ticksAsNumbers = me.ticks.slice();\n me.zeroLineIndex = me.ticks.indexOf(0);\n core_scale.prototype.convertTicksToLabels.call(me);\n },\n _configure: function () {\n var me = this;\n var ticks = me.getTicks();\n var start = me.min;\n var end = me.max;\n var offset;\n core_scale.prototype._configure.call(me);\n if (me.options.offset && ticks.length) {\n offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n me._startValue = start;\n me._endValue = end;\n me._valueRange = end - start;\n }\n });\n var defaultConfig$1 = {\n position: 'left',\n ticks: {\n callback: core_ticks.formatters.linear\n }\n };\n var DEFAULT_MIN = 0;\n var DEFAULT_MAX = 1;\n function getOrCreateStack(stacks, stacked, meta) {\n var key = [meta.type,\n // we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\n stacked === undefined && meta.stack === undefined ? meta.index : '', meta.stack].join('.');\n if (stacks[key] === undefined) {\n stacks[key] = {\n pos: [],\n neg: []\n };\n }\n return stacks[key];\n }\n function stackData(scale, stacks, meta, data) {\n var opts = scale.options;\n var stacked = opts.stacked;\n var stack = getOrCreateStack(stacks, stacked, meta);\n var pos = stack.pos;\n var neg = stack.neg;\n var ilen = data.length;\n var i, value;\n for (i = 0; i < ilen; ++i) {\n value = scale._parseValue(data[i]);\n if (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden) {\n continue;\n }\n pos[i] = pos[i] || 0;\n neg[i] = neg[i] || 0;\n if (opts.relativePoints) {\n pos[i] = 100;\n } else if (value.min < 0 || value.max < 0) {\n neg[i] += value.min;\n } else {\n pos[i] += value.max;\n }\n }\n }\n function updateMinMax(scale, meta, data) {\n var ilen = data.length;\n var i, value;\n for (i = 0; i < ilen; ++i) {\n value = scale._parseValue(data[i]);\n if (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden) {\n continue;\n }\n scale.min = Math.min(scale.min, value.min);\n scale.max = Math.max(scale.max, value.max);\n }\n }\n var scale_linear = scale_linearbase.extend({\n determineDataLimits: function () {\n var me = this;\n var opts = me.options;\n var chart = me.chart;\n var datasets = chart.data.datasets;\n var metasets = me._getMatchingVisibleMetas();\n var hasStacks = opts.stacked;\n var stacks = {};\n var ilen = metasets.length;\n var i, meta, data, values;\n me.min = Number.POSITIVE_INFINITY;\n me.max = Number.NEGATIVE_INFINITY;\n if (hasStacks === undefined) {\n for (i = 0; !hasStacks && i < ilen; ++i) {\n meta = metasets[i];\n hasStacks = meta.stack !== undefined;\n }\n }\n for (i = 0; i < ilen; ++i) {\n meta = metasets[i];\n data = datasets[meta.index].data;\n if (hasStacks) {\n stackData(me, stacks, meta, data);\n } else {\n updateMinMax(me, meta, data);\n }\n }\n helpers$1.each(stacks, function (stackValues) {\n values = stackValues.pos.concat(stackValues.neg);\n me.min = Math.min(me.min, helpers$1.min(values));\n me.max = Math.max(me.max, helpers$1.max(values));\n });\n me.min = helpers$1.isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN;\n me.max = helpers$1.isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX;\n\n // Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\n me.handleTickRangeOptions();\n },\n // Returns the maximum number of ticks based on the scale dimension\n _computeTickLimit: function () {\n var me = this;\n var tickFont;\n if (me.isHorizontal()) {\n return Math.ceil(me.width / 40);\n }\n tickFont = helpers$1.options._parseFont(me.options.ticks);\n return Math.ceil(me.height / tickFont.lineHeight);\n },\n // Called after the ticks are built. We need\n handleDirectionalChanges: function () {\n if (!this.isHorizontal()) {\n // We are in a vertical orientation. The top value is the highest. So reverse the array\n this.ticks.reverse();\n }\n },\n getLabelForIndex: function (index, datasetIndex) {\n return this._getScaleLabel(this.chart.data.datasets[datasetIndex].data[index]);\n },\n // Utils\n getPixelForValue: function (value) {\n var me = this;\n return me.getPixelForDecimal((+me.getRightValue(value) - me._startValue) / me._valueRange);\n },\n getValueForPixel: function (pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n },\n getPixelForTick: function (index) {\n var ticks = this.ticksAsNumbers;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index]);\n }\n });\n\n // INTERNAL: static default options, registered in src/index.js\n var _defaults$1 = defaultConfig$1;\n scale_linear._defaults = _defaults$1;\n var valueOrDefault$b = helpers$1.valueOrDefault;\n var log10 = helpers$1.math.log10;\n\n /**\r\n * Generate a set of logarithmic ticks\r\n * @param generationOptions the options used to generate the ticks\r\n * @param dataRange the range of the data\r\n * @returns {number[]} array of tick values\r\n */\n function generateTicks$1(generationOptions, dataRange) {\n var ticks = [];\n var tickVal = valueOrDefault$b(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\n var endExp = Math.floor(log10(dataRange.max));\n var endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n var exp, significand;\n if (tickVal === 0) {\n exp = Math.floor(log10(dataRange.minNotZero));\n significand = Math.floor(dataRange.minNotZero / Math.pow(10, exp));\n ticks.push(tickVal);\n tickVal = significand * Math.pow(10, exp);\n } else {\n exp = Math.floor(log10(tickVal));\n significand = Math.floor(tickVal / Math.pow(10, exp));\n }\n var precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n do {\n ticks.push(tickVal);\n ++significand;\n if (significand === 10) {\n significand = 1;\n ++exp;\n precision = exp >= 0 ? 1 : precision;\n }\n tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n } while (exp < endExp || exp === endExp && significand < endSignificand);\n var lastTick = valueOrDefault$b(generationOptions.max, tickVal);\n ticks.push(lastTick);\n return ticks;\n }\n var defaultConfig$2 = {\n position: 'left',\n // label settings\n ticks: {\n callback: core_ticks.formatters.logarithmic\n }\n };\n\n // TODO(v3): change this to positiveOrDefault\n function nonNegativeOrDefault(value, defaultValue) {\n return helpers$1.isFinite(value) && value >= 0 ? value : defaultValue;\n }\n var scale_logarithmic = core_scale.extend({\n determineDataLimits: function () {\n var me = this;\n var opts = me.options;\n var chart = me.chart;\n var datasets = chart.data.datasets;\n var isHorizontal = me.isHorizontal();\n function IDMatches(meta) {\n return isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\n }\n var datasetIndex, meta, value, data, i, ilen;\n\n // Calculate Range\n me.min = Number.POSITIVE_INFINITY;\n me.max = Number.NEGATIVE_INFINITY;\n me.minNotZero = Number.POSITIVE_INFINITY;\n var hasStacks = opts.stacked;\n if (hasStacks === undefined) {\n for (datasetIndex = 0; datasetIndex < datasets.length; datasetIndex++) {\n meta = chart.getDatasetMeta(datasetIndex);\n if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) && meta.stack !== undefined) {\n hasStacks = true;\n break;\n }\n }\n }\n if (opts.stacked || hasStacks) {\n var valuesPerStack = {};\n for (datasetIndex = 0; datasetIndex < datasets.length; datasetIndex++) {\n meta = chart.getDatasetMeta(datasetIndex);\n var key = [meta.type,\n // we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\n opts.stacked === undefined && meta.stack === undefined ? datasetIndex : '', meta.stack].join('.');\n if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n if (valuesPerStack[key] === undefined) {\n valuesPerStack[key] = [];\n }\n data = datasets[datasetIndex].data;\n for (i = 0, ilen = data.length; i < ilen; i++) {\n var values = valuesPerStack[key];\n value = me._parseValue(data[i]);\n // invalid, hidden and negative values are ignored\n if (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden || value.min < 0 || value.max < 0) {\n continue;\n }\n values[i] = values[i] || 0;\n values[i] += value.max;\n }\n }\n }\n helpers$1.each(valuesPerStack, function (valuesForType) {\n if (valuesForType.length > 0) {\n var minVal = helpers$1.min(valuesForType);\n var maxVal = helpers$1.max(valuesForType);\n me.min = Math.min(me.min, minVal);\n me.max = Math.max(me.max, maxVal);\n }\n });\n } else {\n for (datasetIndex = 0; datasetIndex < datasets.length; datasetIndex++) {\n meta = chart.getDatasetMeta(datasetIndex);\n if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n data = datasets[datasetIndex].data;\n for (i = 0, ilen = data.length; i < ilen; i++) {\n value = me._parseValue(data[i]);\n // invalid, hidden and negative values are ignored\n if (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden || value.min < 0 || value.max < 0) {\n continue;\n }\n me.min = Math.min(value.min, me.min);\n me.max = Math.max(value.max, me.max);\n if (value.min !== 0) {\n me.minNotZero = Math.min(value.min, me.minNotZero);\n }\n }\n }\n }\n }\n me.min = helpers$1.isFinite(me.min) ? me.min : null;\n me.max = helpers$1.isFinite(me.max) ? me.max : null;\n me.minNotZero = helpers$1.isFinite(me.minNotZero) ? me.minNotZero : null;\n\n // Common base implementation to handle ticks.min, ticks.max\n this.handleTickRangeOptions();\n },\n handleTickRangeOptions: function () {\n var me = this;\n var tickOpts = me.options.ticks;\n var DEFAULT_MIN = 1;\n var DEFAULT_MAX = 10;\n me.min = nonNegativeOrDefault(tickOpts.min, me.min);\n me.max = nonNegativeOrDefault(tickOpts.max, me.max);\n if (me.min === me.max) {\n if (me.min !== 0 && me.min !== null) {\n me.min = Math.pow(10, Math.floor(log10(me.min)) - 1);\n me.max = Math.pow(10, Math.floor(log10(me.max)) + 1);\n } else {\n me.min = DEFAULT_MIN;\n me.max = DEFAULT_MAX;\n }\n }\n if (me.min === null) {\n me.min = Math.pow(10, Math.floor(log10(me.max)) - 1);\n }\n if (me.max === null) {\n me.max = me.min !== 0 ? Math.pow(10, Math.floor(log10(me.min)) + 1) : DEFAULT_MAX;\n }\n if (me.minNotZero === null) {\n if (me.min > 0) {\n me.minNotZero = me.min;\n } else if (me.max < 1) {\n me.minNotZero = Math.pow(10, Math.floor(log10(me.max)));\n } else {\n me.minNotZero = DEFAULT_MIN;\n }\n }\n },\n buildTicks: function () {\n var me = this;\n var tickOpts = me.options.ticks;\n var reverse = !me.isHorizontal();\n var generationOptions = {\n min: nonNegativeOrDefault(tickOpts.min),\n max: nonNegativeOrDefault(tickOpts.max)\n };\n var ticks = me.ticks = generateTicks$1(generationOptions, me);\n\n // At this point, we need to update our max and min given the tick values since we have expanded the\n // range of the scale\n me.max = helpers$1.max(ticks);\n me.min = helpers$1.min(ticks);\n if (tickOpts.reverse) {\n reverse = !reverse;\n me.start = me.max;\n me.end = me.min;\n } else {\n me.start = me.min;\n me.end = me.max;\n }\n if (reverse) {\n ticks.reverse();\n }\n },\n convertTicksToLabels: function () {\n this.tickValues = this.ticks.slice();\n core_scale.prototype.convertTicksToLabels.call(this);\n },\n // Get the correct tooltip label\n getLabelForIndex: function (index, datasetIndex) {\n return this._getScaleLabel(this.chart.data.datasets[datasetIndex].data[index]);\n },\n getPixelForTick: function (index) {\n var ticks = this.tickValues;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index]);\n },\n /**\r\n * Returns the value of the first tick.\r\n * @param {number} value - The minimum not zero value.\r\n * @return {number} The first tick value.\r\n * @private\r\n */\n _getFirstTickValue: function (value) {\n var exp = Math.floor(log10(value));\n var significand = Math.floor(value / Math.pow(10, exp));\n return significand * Math.pow(10, exp);\n },\n _configure: function () {\n var me = this;\n var start = me.min;\n var offset = 0;\n core_scale.prototype._configure.call(me);\n if (start === 0) {\n start = me._getFirstTickValue(me.minNotZero);\n offset = valueOrDefault$b(me.options.ticks.fontSize, core_defaults.global.defaultFontSize) / me._length;\n }\n me._startValue = log10(start);\n me._valueOffset = offset;\n me._valueRange = (log10(me.max) - log10(start)) / (1 - offset);\n },\n getPixelForValue: function (value) {\n var me = this;\n var decimal = 0;\n value = +me.getRightValue(value);\n if (value > me.min && value > 0) {\n decimal = (log10(value) - me._startValue) / me._valueRange + me._valueOffset;\n }\n return me.getPixelForDecimal(decimal);\n },\n getValueForPixel: function (pixel) {\n var me = this;\n var decimal = me.getDecimalForPixel(pixel);\n return decimal === 0 && me.min === 0 ? 0 : Math.pow(10, me._startValue + (decimal - me._valueOffset) * me._valueRange);\n }\n });\n\n // INTERNAL: static default options, registered in src/index.js\n var _defaults$2 = defaultConfig$2;\n scale_logarithmic._defaults = _defaults$2;\n var valueOrDefault$c = helpers$1.valueOrDefault;\n var valueAtIndexOrDefault$1 = helpers$1.valueAtIndexOrDefault;\n var resolve$4 = helpers$1.options.resolve;\n var defaultConfig$3 = {\n display: true,\n // Boolean - Whether to animate scaling the chart from the centre\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n color: 'rgba(0,0,0,0.1)',\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n gridLines: {\n circular: false\n },\n // label settings\n ticks: {\n // Boolean - Show a backdrop to the scale label\n showLabelBackdrop: true,\n // String - The colour of the label backdrop\n backdropColor: 'rgba(255,255,255,0.75)',\n // Number - The backdrop padding above & below the label in pixels\n backdropPaddingY: 2,\n // Number - The backdrop padding to the side of the label in pixels\n backdropPaddingX: 2,\n callback: core_ticks.formatters.linear\n },\n pointLabels: {\n // Boolean - if true, show point labels\n display: true,\n // Number - Point label font size in pixels\n fontSize: 10,\n // Function - Used to convert point labels\n callback: function (label) {\n return label;\n }\n }\n };\n function getTickBackdropHeight(opts) {\n var tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n return valueOrDefault$c(tickOpts.fontSize, core_defaults.global.defaultFontSize) + tickOpts.backdropPaddingY * 2;\n }\n return 0;\n }\n function measureLabelSize(ctx, lineHeight, label) {\n if (helpers$1.isArray(label)) {\n return {\n w: helpers$1.longestText(ctx, ctx.font, label),\n h: label.length * lineHeight\n };\n }\n return {\n w: ctx.measureText(label).width,\n h: lineHeight\n };\n }\n function determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - size / 2,\n end: pos + size / 2\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n return {\n start: pos,\n end: pos + size\n };\n }\n\n /**\r\n * Helper function to fit a radial linear scale with point labels\r\n */\n function fitWithPointLabels(scale) {\n // Right, this is really confusing and there is a lot of maths going on here\n // The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\n //\n // Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\n //\n // Solution:\n //\n // We assume the radius of the polygon is half the size of the canvas at first\n // at each index we check if the text overlaps.\n //\n // Where it does, we store that angle and that index.\n //\n // After finding the largest index and angle we calculate how much we need to remove\n // from the shape radius to move the point inwards by that x.\n //\n // We average the left and right distances to get the maximum shape radius that can fit in the box\n // along with labels.\n //\n // Once we have that, we can find the centre point for the chart, by taking the x text protrusion\n // on each side, removing that from the size, halving it and adding the left x protrusion width.\n //\n // This will mean we have a shape fitted to the canvas, as large as it can be with the labels\n // and position it in the most space efficient manner\n //\n // https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\n\n var plFont = helpers$1.options._parseFont(scale.options.pointLabels);\n\n // Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\n // Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\n var furthestLimits = {\n l: 0,\n r: scale.width,\n t: 0,\n b: scale.height - scale.paddingTop\n };\n var furthestAngles = {};\n var i, textSize, pointPosition;\n scale.ctx.font = plFont.string;\n scale._pointLabelSizes = [];\n var valueCount = scale.chart.data.labels.length;\n for (i = 0; i < valueCount; i++) {\n pointPosition = scale.getPointPosition(i, scale.drawingArea + 5);\n textSize = measureLabelSize(scale.ctx, plFont.lineHeight, scale.pointLabels[i]);\n scale._pointLabelSizes[i] = textSize;\n\n // Add quarter circle to make degree 0 mean top of circle\n var angleRadians = scale.getIndexAngle(i);\n var angle = helpers$1.toDegrees(angleRadians) % 360;\n var hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n var vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n if (hLimits.start < furthestLimits.l) {\n furthestLimits.l = hLimits.start;\n furthestAngles.l = angleRadians;\n }\n if (hLimits.end > furthestLimits.r) {\n furthestLimits.r = hLimits.end;\n furthestAngles.r = angleRadians;\n }\n if (vLimits.start < furthestLimits.t) {\n furthestLimits.t = vLimits.start;\n furthestAngles.t = angleRadians;\n }\n if (vLimits.end > furthestLimits.b) {\n furthestLimits.b = vLimits.end;\n furthestAngles.b = angleRadians;\n }\n }\n scale.setReductions(scale.drawingArea, furthestLimits, furthestAngles);\n }\n function getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n }\n function fillText(ctx, text, position, lineHeight) {\n var y = position.y + lineHeight / 2;\n var i, ilen;\n if (helpers$1.isArray(text)) {\n for (i = 0, ilen = text.length; i < ilen; ++i) {\n ctx.fillText(text[i], position.x, y);\n y += lineHeight;\n }\n } else {\n ctx.fillText(text, position.x, y);\n }\n }\n function adjustPointPositionForLabelHeight(angle, textSize, position) {\n if (angle === 90 || angle === 270) {\n position.y -= textSize.h / 2;\n } else if (angle > 270 || angle < 90) {\n position.y -= textSize.h;\n }\n }\n function drawPointLabels(scale) {\n var ctx = scale.ctx;\n var opts = scale.options;\n var pointLabelOpts = opts.pointLabels;\n var tickBackdropHeight = getTickBackdropHeight(opts);\n var outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max);\n var plFont = helpers$1.options._parseFont(pointLabelOpts);\n ctx.save();\n ctx.font = plFont.string;\n ctx.textBaseline = 'middle';\n for (var i = scale.chart.data.labels.length - 1; i >= 0; i--) {\n // Extra pixels out for some label spacing\n var extra = i === 0 ? tickBackdropHeight / 2 : 0;\n var pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + 5);\n\n // Keep this in loop since we may support array properties here\n var pointLabelFontColor = valueAtIndexOrDefault$1(pointLabelOpts.fontColor, i, core_defaults.global.defaultFontColor);\n ctx.fillStyle = pointLabelFontColor;\n var angleRadians = scale.getIndexAngle(i);\n var angle = helpers$1.toDegrees(angleRadians);\n ctx.textAlign = getTextAlignForAngle(angle);\n adjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition);\n fillText(ctx, scale.pointLabels[i], pointLabelPosition, plFont.lineHeight);\n }\n ctx.restore();\n }\n function drawRadiusLine(scale, gridLineOpts, radius, index) {\n var ctx = scale.ctx;\n var circular = gridLineOpts.circular;\n var valueCount = scale.chart.data.labels.length;\n var lineColor = valueAtIndexOrDefault$1(gridLineOpts.color, index - 1);\n var lineWidth = valueAtIndexOrDefault$1(gridLineOpts.lineWidth, index - 1);\n var pointPosition;\n if (!circular && !valueCount || !lineColor || !lineWidth) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = lineColor;\n ctx.lineWidth = lineWidth;\n if (ctx.setLineDash) {\n ctx.setLineDash(gridLineOpts.borderDash || []);\n ctx.lineDashOffset = gridLineOpts.borderDashOffset || 0.0;\n }\n ctx.beginPath();\n if (circular) {\n // Draw circular arcs between the points\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2);\n } else {\n // Draw straight lines connecting each index\n pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for (var i = 1; i < valueCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n }\n function numberOrZero(param) {\n return helpers$1.isNumber(param) ? param : 0;\n }\n var scale_radialLinear = scale_linearbase.extend({\n setDimensions: function () {\n var me = this;\n\n // Set the unconstrained dimension before label rotation\n me.width = me.maxWidth;\n me.height = me.maxHeight;\n me.paddingTop = getTickBackdropHeight(me.options) / 2;\n me.xCenter = Math.floor(me.width / 2);\n me.yCenter = Math.floor((me.height - me.paddingTop) / 2);\n me.drawingArea = Math.min(me.height - me.paddingTop, me.width) / 2;\n },\n determineDataLimits: function () {\n var me = this;\n var chart = me.chart;\n var min = Number.POSITIVE_INFINITY;\n var max = Number.NEGATIVE_INFINITY;\n helpers$1.each(chart.data.datasets, function (dataset, datasetIndex) {\n if (chart.isDatasetVisible(datasetIndex)) {\n var meta = chart.getDatasetMeta(datasetIndex);\n helpers$1.each(dataset.data, function (rawValue, index) {\n var value = +me.getRightValue(rawValue);\n if (isNaN(value) || meta.data[index].hidden) {\n return;\n }\n min = Math.min(value, min);\n max = Math.max(value, max);\n });\n }\n });\n me.min = min === Number.POSITIVE_INFINITY ? 0 : min;\n me.max = max === Number.NEGATIVE_INFINITY ? 0 : max;\n\n // Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\n me.handleTickRangeOptions();\n },\n // Returns the maximum number of ticks based on the scale dimension\n _computeTickLimit: function () {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n },\n convertTicksToLabels: function () {\n var me = this;\n scale_linearbase.prototype.convertTicksToLabels.call(me);\n\n // Point labels\n me.pointLabels = me.chart.data.labels.map(function () {\n var label = helpers$1.callback(me.options.pointLabels.callback, arguments, me);\n return label || label === 0 ? label : '';\n });\n },\n getLabelForIndex: function (index, datasetIndex) {\n return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n },\n fit: function () {\n var me = this;\n var opts = me.options;\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(me);\n } else {\n me.setCenterPoint(0, 0, 0, 0);\n }\n },\n /**\r\n * Set radius reductions and determine new radius and center point\r\n * @private\r\n */\n setReductions: function (largestPossibleRadius, furthestLimits, furthestAngles) {\n var me = this;\n var radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l);\n var radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r);\n var radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t);\n var radiusReductionBottom = -Math.max(furthestLimits.b - (me.height - me.paddingTop), 0) / Math.cos(furthestAngles.b);\n radiusReductionLeft = numberOrZero(radiusReductionLeft);\n radiusReductionRight = numberOrZero(radiusReductionRight);\n radiusReductionTop = numberOrZero(radiusReductionTop);\n radiusReductionBottom = numberOrZero(radiusReductionBottom);\n me.drawingArea = Math.min(Math.floor(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2), Math.floor(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2));\n me.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom);\n },\n setCenterPoint: function (leftMovement, rightMovement, topMovement, bottomMovement) {\n var me = this;\n var maxRight = me.width - rightMovement - me.drawingArea;\n var maxLeft = leftMovement + me.drawingArea;\n var maxTop = topMovement + me.drawingArea;\n var maxBottom = me.height - me.paddingTop - bottomMovement - me.drawingArea;\n me.xCenter = Math.floor((maxLeft + maxRight) / 2 + me.left);\n me.yCenter = Math.floor((maxTop + maxBottom) / 2 + me.top + me.paddingTop);\n },\n getIndexAngle: function (index) {\n var chart = this.chart;\n var angleMultiplier = 360 / chart.data.labels.length;\n var options = chart.options || {};\n var startAngle = options.startAngle || 0;\n\n // Start from the top instead of right, so remove a quarter of the circle\n var angle = (index * angleMultiplier + startAngle) % 360;\n return (angle < 0 ? angle + 360 : angle) * Math.PI * 2 / 360;\n },\n getDistanceFromCenterForValue: function (value) {\n var me = this;\n if (helpers$1.isNullOrUndef(value)) {\n return NaN;\n }\n\n // Take into account half font size + the yPadding of the top value\n var scalingFactor = me.drawingArea / (me.max - me.min);\n if (me.options.ticks.reverse) {\n return (me.max - value) * scalingFactor;\n }\n return (value - me.min) * scalingFactor;\n },\n getPointPosition: function (index, distanceFromCenter) {\n var me = this;\n var thisAngle = me.getIndexAngle(index) - Math.PI / 2;\n return {\n x: Math.cos(thisAngle) * distanceFromCenter + me.xCenter,\n y: Math.sin(thisAngle) * distanceFromCenter + me.yCenter\n };\n },\n getPointPositionForValue: function (index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n },\n getBasePosition: function (index) {\n var me = this;\n var min = me.min;\n var max = me.max;\n return me.getPointPositionForValue(index || 0, me.beginAtZero ? 0 : min < 0 && max < 0 ? max : min > 0 && max > 0 ? min : 0);\n },\n /**\r\n * @private\r\n */\n _drawGrid: function () {\n var me = this;\n var ctx = me.ctx;\n var opts = me.options;\n var gridLineOpts = opts.gridLines;\n var angleLineOpts = opts.angleLines;\n var lineWidth = valueOrDefault$c(angleLineOpts.lineWidth, gridLineOpts.lineWidth);\n var lineColor = valueOrDefault$c(angleLineOpts.color, gridLineOpts.color);\n var i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(me);\n }\n if (gridLineOpts.display) {\n helpers$1.each(me.ticks, function (label, index) {\n if (index !== 0) {\n offset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\n drawRadiusLine(me, gridLineOpts, offset, index);\n }\n });\n }\n if (angleLineOpts.display && lineWidth && lineColor) {\n ctx.save();\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = lineColor;\n if (ctx.setLineDash) {\n ctx.setLineDash(resolve$4([angleLineOpts.borderDash, gridLineOpts.borderDash, []]));\n ctx.lineDashOffset = resolve$4([angleLineOpts.borderDashOffset, gridLineOpts.borderDashOffset, 0.0]);\n }\n for (i = me.chart.data.labels.length - 1; i >= 0; i--) {\n offset = me.getDistanceFromCenterForValue(opts.ticks.reverse ? me.min : me.max);\n position = me.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(me.xCenter, me.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n },\n /**\r\n * @private\r\n */\n _drawLabels: function () {\n var me = this;\n var ctx = me.ctx;\n var opts = me.options;\n var tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n var startAngle = me.getIndexAngle(0);\n var tickFont = helpers$1.options._parseFont(tickOpts);\n var tickFontColor = valueOrDefault$c(tickOpts.fontColor, core_defaults.global.defaultFontColor);\n var offset, width;\n ctx.save();\n ctx.font = tickFont.string;\n ctx.translate(me.xCenter, me.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n helpers$1.each(me.ticks, function (label, index) {\n if (index === 0 && !tickOpts.reverse) {\n return;\n }\n offset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\n if (tickOpts.showLabelBackdrop) {\n width = ctx.measureText(label).width;\n ctx.fillStyle = tickOpts.backdropColor;\n ctx.fillRect(-width / 2 - tickOpts.backdropPaddingX, -offset - tickFont.size / 2 - tickOpts.backdropPaddingY, width + tickOpts.backdropPaddingX * 2, tickFont.size + tickOpts.backdropPaddingY * 2);\n }\n ctx.fillStyle = tickFontColor;\n ctx.fillText(label, 0, -offset);\n });\n ctx.restore();\n },\n /**\r\n * @private\r\n */\n _drawTitle: helpers$1.noop\n });\n\n // INTERNAL: static default options, registered in src/index.js\n var _defaults$3 = defaultConfig$3;\n scale_radialLinear._defaults = _defaults$3;\n var deprecated$1 = helpers$1._deprecated;\n var resolve$5 = helpers$1.options.resolve;\n var valueOrDefault$d = helpers$1.valueOrDefault;\n\n // Integer constants are from the ES6 spec.\n var MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;\n var MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\n var INTERVALS = {\n millisecond: {\n common: true,\n size: 1,\n steps: 1000\n },\n second: {\n common: true,\n size: 1000,\n steps: 60\n },\n minute: {\n common: true,\n size: 60000,\n steps: 60\n },\n hour: {\n common: true,\n size: 3600000,\n steps: 24\n },\n day: {\n common: true,\n size: 86400000,\n steps: 30\n },\n week: {\n common: false,\n size: 604800000,\n steps: 4\n },\n month: {\n common: true,\n size: 2.628e9,\n steps: 12\n },\n quarter: {\n common: false,\n size: 7.884e9,\n steps: 4\n },\n year: {\n common: true,\n size: 3.154e10\n }\n };\n var UNITS = Object.keys(INTERVALS);\n function sorter(a, b) {\n return a - b;\n }\n function arrayUnique(items) {\n var hash = {};\n var out = [];\n var i, ilen, item;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n if (!hash[item]) {\n hash[item] = true;\n out.push(item);\n }\n }\n return out;\n }\n function getMin(options) {\n return helpers$1.valueOrDefault(options.time.min, options.ticks.min);\n }\n function getMax(options) {\n return helpers$1.valueOrDefault(options.time.max, options.ticks.max);\n }\n\n /**\r\n * Returns an array of {time, pos} objects used to interpolate a specific `time` or position\r\n * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is\r\n * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other\r\n * extremity (left + width or top + height). Note that it would be more optimized to directly\r\n * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need\r\n * to create the lookup table. The table ALWAYS contains at least two items: min and max.\r\n *\r\n * @param {number[]} timestamps - timestamps sorted from lowest to highest.\r\n * @param {string} distribution - If 'linear', timestamps will be spread linearly along the min\r\n * and max range, so basically, the table will contains only two items: {min, 0} and {max, 1}.\r\n * If 'series', timestamps will be positioned at the same distance from each other. In this\r\n * case, only timestamps that break the time linearity are registered, meaning that in the\r\n * best case, all timestamps are linear, the table contains only min and max.\r\n */\n function buildLookupTable(timestamps, min, max, distribution) {\n if (distribution === 'linear' || !timestamps.length) {\n return [{\n time: min,\n pos: 0\n }, {\n time: max,\n pos: 1\n }];\n }\n var table = [];\n var items = [min];\n var i, ilen, prev, curr, next;\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n if (curr > min && curr < max) {\n items.push(curr);\n }\n }\n items.push(max);\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n\n // only add points that breaks the scale linearity\n if (prev === undefined || next === undefined || Math.round((next + prev) / 2) !== curr) {\n table.push({\n time: curr,\n pos: i / (ilen - 1)\n });\n }\n }\n return table;\n }\n\n // @see adapted from https://www.anujgakhar.com/2014/03/01/binary-search-in-javascript/\n function lookup(table, key, value) {\n var lo = 0;\n var hi = table.length - 1;\n var mid, i0, i1;\n while (lo >= 0 && lo <= hi) {\n mid = lo + hi >> 1;\n i0 = table[mid - 1] || null;\n i1 = table[mid];\n if (!i0) {\n // given value is outside table (before first item)\n return {\n lo: null,\n hi: i1\n };\n } else if (i1[key] < value) {\n lo = mid + 1;\n } else if (i0[key] > value) {\n hi = mid - 1;\n } else {\n return {\n lo: i0,\n hi: i1\n };\n }\n }\n\n // given value is outside table (after last item)\n return {\n lo: i1,\n hi: null\n };\n }\n\n /**\r\n * Linearly interpolates the given source `value` using the table items `skey` values and\r\n * returns the associated `tkey` value. For example, interpolate(table, 'time', 42, 'pos')\r\n * returns the position for a timestamp equal to 42. If value is out of bounds, values at\r\n * index [0, 1] or [n - 1, n] are used for the interpolation.\r\n */\n function interpolate$1(table, skey, sval, tkey) {\n var range = lookup(table, skey, sval);\n\n // Note: the lookup table ALWAYS contains at least 2 items (min and max)\n var prev = !range.lo ? table[0] : !range.hi ? table[table.length - 2] : range.lo;\n var next = !range.lo ? table[1] : !range.hi ? table[table.length - 1] : range.hi;\n var span = next[skey] - prev[skey];\n var ratio = span ? (sval - prev[skey]) / span : 0;\n var offset = (next[tkey] - prev[tkey]) * ratio;\n return prev[tkey] + offset;\n }\n function toTimestamp(scale, input) {\n var adapter = scale._adapter;\n var options = scale.options.time;\n var parser = options.parser;\n var format = parser || options.format;\n var value = input;\n if (typeof parser === 'function') {\n value = parser(value);\n }\n\n // Only parse if its not a timestamp already\n if (!helpers$1.isFinite(value)) {\n value = typeof format === 'string' ? adapter.parse(value, format) : adapter.parse(value);\n }\n if (value !== null) {\n return +value;\n }\n\n // Labels are in an incompatible format and no `parser` has been provided.\n // The user might still use the deprecated `format` option for parsing.\n if (!parser && typeof format === 'function') {\n value = format(input);\n\n // `format` could return something else than a timestamp, if so, parse it\n if (!helpers$1.isFinite(value)) {\n value = adapter.parse(value);\n }\n }\n return value;\n }\n function parse(scale, input) {\n if (helpers$1.isNullOrUndef(input)) {\n return null;\n }\n var options = scale.options.time;\n var value = toTimestamp(scale, scale.getRightValue(input));\n if (value === null) {\n return value;\n }\n if (options.round) {\n value = +scale._adapter.startOf(value, options.round);\n }\n return value;\n }\n\n /**\r\n * Figures out what unit results in an appropriate number of auto-generated ticks\r\n */\n function determineUnitForAutoTicks(minUnit, min, max, capacity) {\n var ilen = UNITS.length;\n var i, interval, factor;\n for (i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n interval = INTERVALS[UNITS[i]];\n factor = interval.steps ? interval.steps : MAX_INTEGER;\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\n }\n\n /**\r\n * Figures out what unit to format a set of ticks with\r\n */\n function determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n var i, unit;\n for (i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n }\n function determineMajorUnit(unit) {\n for (var i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n }\n\n /**\r\n * Generates a maximum of `capacity` timestamps between min and max, rounded to the\r\n * `minor` unit using the given scale time `options`.\r\n * Important: this method can return ticks outside the min and max range, it's the\r\n * responsibility of the calling code to clamp values if needed.\r\n */\n function generate(scale, min, max, capacity) {\n var adapter = scale._adapter;\n var options = scale.options;\n var timeOpts = options.time;\n var minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, capacity);\n var stepSize = resolve$5([timeOpts.stepSize, timeOpts.unitStepSize, 1]);\n var weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n var first = min;\n var ticks = [];\n var time;\n\n // For 'week' unit, handle the first day of week option\n if (weekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n\n // Align first ticks on unit\n first = +adapter.startOf(first, weekday ? 'day' : minor);\n\n // Prevent browser from freezing in case user options request millions of milliseconds\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor;\n }\n for (time = first; time < max; time = +adapter.add(time, stepSize, minor)) {\n ticks.push(time);\n }\n if (time === max || options.bounds === 'ticks') {\n ticks.push(time);\n }\n return ticks;\n }\n\n /**\r\n * Returns the start and end offsets from edges in the form of {start, end}\r\n * where each value is a relative width to the scale and ranges between 0 and 1.\r\n * They add extra margins on the both sides by scaling down the original scale.\r\n * Offsets are added when the `offset` option is true.\r\n */\n function computeOffsets(table, ticks, min, max, options) {\n var start = 0;\n var end = 0;\n var first, last;\n if (options.offset && ticks.length) {\n first = interpolate$1(table, 'time', ticks[0], 'pos');\n if (ticks.length === 1) {\n start = 1 - first;\n } else {\n start = (interpolate$1(table, 'time', ticks[1], 'pos') - first) / 2;\n }\n last = interpolate$1(table, 'time', ticks[ticks.length - 1], 'pos');\n if (ticks.length === 1) {\n end = last;\n } else {\n end = (last - interpolate$1(table, 'time', ticks[ticks.length - 2], 'pos')) / 2;\n }\n }\n return {\n start: start,\n end: end,\n factor: 1 / (start + 1 + end)\n };\n }\n function setMajorTicks(scale, ticks, map, majorUnit) {\n var adapter = scale._adapter;\n var first = +adapter.startOf(ticks[0].value, majorUnit);\n var last = ticks[ticks.length - 1].value;\n var major, index;\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n }\n function ticksFromTimestamps(scale, values, majorUnit) {\n var ticks = [];\n var map = {};\n var ilen = values.length;\n var i, value;\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n ticks.push({\n value: value,\n major: false\n });\n }\n\n // We set the major ticks separately from the above loop because calling startOf for every tick\n // is expensive when there is a large number of ticks\n return ilen === 0 || !majorUnit ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n }\n var defaultConfig$4 = {\n position: 'bottom',\n /**\r\n * Data distribution along the scale:\r\n * - 'linear': data are spread according to their time (distances can vary),\r\n * - 'series': data are spread at the same distance from each other.\r\n * @see https://github.com/chartjs/Chart.js/pull/4507\r\n * @since 2.7.0\r\n */\n distribution: 'linear',\n /**\r\n * Scale boundary strategy (bypassed by min/max time options)\r\n * - `data`: make sure data are fully visible, ticks outside are removed\r\n * - `ticks`: make sure ticks are fully visible, data outside are truncated\r\n * @see https://github.com/chartjs/Chart.js/pull/4556\r\n * @since 2.7.0\r\n */\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n // false == a pattern string from https://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment\n unit: false,\n // false == automatic or override with week, month, year, etc.\n round: false,\n // none, or override with week, month, year, etc.\n displayFormat: false,\n // DEPRECATED\n isoWeekday: false,\n // override week start day - see https://momentjs.com/docs/#/get-set/iso-weekday/\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n autoSkip: false,\n /**\r\n * Ticks generation input values:\r\n * - 'auto': generates \"optimal\" ticks based on scale size and time options.\r\n * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\r\n * - 'labels': generates ticks from user given `data.labels` values ONLY.\r\n * @see https://github.com/chartjs/Chart.js/pull/4507\r\n * @since 2.7.0\r\n */\n source: 'auto',\n major: {\n enabled: false\n }\n }\n };\n var scale_time = core_scale.extend({\n initialize: function () {\n this.mergeTicksOptions();\n core_scale.prototype.initialize.call(this);\n },\n update: function () {\n var me = this;\n var options = me.options;\n var time = options.time || (options.time = {});\n var adapter = me._adapter = new core_adapters._date(options.adapters.date);\n\n // DEPRECATIONS: output a message only one time per update\n deprecated$1('time scale', time.format, 'time.format', 'time.parser');\n deprecated$1('time scale', time.min, 'time.min', 'ticks.min');\n deprecated$1('time scale', time.max, 'time.max', 'ticks.max');\n\n // Backward compatibility: before introducing adapter, `displayFormats` was\n // supposed to contain *all* unit/string pairs but this can't be resolved\n // when loading the scale (adapters are loaded afterward), so let's populate\n // missing formats on update\n helpers$1.mergeIf(time.displayFormats, adapter.formats());\n return core_scale.prototype.update.apply(me, arguments);\n },\n /**\r\n * Allows data to be referenced via 't' attribute\r\n */\n getRightValue: function (rawValue) {\n if (rawValue && rawValue.t !== undefined) {\n rawValue = rawValue.t;\n }\n return core_scale.prototype.getRightValue.call(this, rawValue);\n },\n determineDataLimits: function () {\n var me = this;\n var chart = me.chart;\n var adapter = me._adapter;\n var options = me.options;\n var unit = options.time.unit || 'day';\n var min = MAX_INTEGER;\n var max = MIN_INTEGER;\n var timestamps = [];\n var datasets = [];\n var labels = [];\n var i, j, ilen, jlen, data, timestamp, labelsAdded;\n var dataLabels = me._getLabels();\n for (i = 0, ilen = dataLabels.length; i < ilen; ++i) {\n labels.push(parse(me, dataLabels[i]));\n }\n for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n data = chart.data.datasets[i].data;\n\n // Let's consider that all data have the same format.\n if (helpers$1.isObject(data[0])) {\n datasets[i] = [];\n for (j = 0, jlen = data.length; j < jlen; ++j) {\n timestamp = parse(me, data[j]);\n timestamps.push(timestamp);\n datasets[i][j] = timestamp;\n }\n } else {\n datasets[i] = labels.slice(0);\n if (!labelsAdded) {\n timestamps = timestamps.concat(labels);\n labelsAdded = true;\n }\n }\n } else {\n datasets[i] = [];\n }\n }\n if (labels.length) {\n min = Math.min(min, labels[0]);\n max = Math.max(max, labels[labels.length - 1]);\n }\n if (timestamps.length) {\n timestamps = ilen > 1 ? arrayUnique(timestamps).sort(sorter) : timestamps.sort(sorter);\n min = Math.min(min, timestamps[0]);\n max = Math.max(max, timestamps[timestamps.length - 1]);\n }\n min = parse(me, getMin(options)) || min;\n max = parse(me, getMax(options)) || max;\n\n // In case there is no valid min/max, set limits based on unit time option\n min = min === MAX_INTEGER ? +adapter.startOf(Date.now(), unit) : min;\n max = max === MIN_INTEGER ? +adapter.endOf(Date.now(), unit) + 1 : max;\n\n // Make sure that max is strictly higher than min (required by the lookup table)\n me.min = Math.min(min, max);\n me.max = Math.max(min + 1, max);\n\n // PRIVATE\n me._table = [];\n me._timestamps = {\n data: timestamps,\n datasets: datasets,\n labels: labels\n };\n },\n buildTicks: function () {\n var me = this;\n var min = me.min;\n var max = me.max;\n var options = me.options;\n var tickOpts = options.ticks;\n var timeOpts = options.time;\n var timestamps = me._timestamps;\n var ticks = [];\n var capacity = me.getLabelCapacity(min);\n var source = tickOpts.source;\n var distribution = options.distribution;\n var i, ilen, timestamp;\n if (source === 'data' || source === 'auto' && distribution === 'series') {\n timestamps = timestamps.data;\n } else if (source === 'labels') {\n timestamps = timestamps.labels;\n } else {\n timestamps = generate(me, min, max, capacity);\n }\n if (options.bounds === 'ticks' && timestamps.length) {\n min = timestamps[0];\n max = timestamps[timestamps.length - 1];\n }\n\n // Enforce limits with user min/max options\n min = parse(me, getMin(options)) || min;\n max = parse(me, getMax(options)) || max;\n\n // Remove ticks outside the min/max range\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n timestamp = timestamps[i];\n if (timestamp >= min && timestamp <= max) {\n ticks.push(timestamp);\n }\n }\n me.min = min;\n me.max = max;\n\n // PRIVATE\n // determineUnitForFormatting relies on the number of ticks so we don't use it when\n // autoSkip is enabled because we don't yet know what the final number of ticks will be\n me._unit = timeOpts.unit || (tickOpts.autoSkip ? determineUnitForAutoTicks(timeOpts.minUnit, me.min, me.max, capacity) : determineUnitForFormatting(me, ticks.length, timeOpts.minUnit, me.min, me.max));\n me._majorUnit = !tickOpts.major.enabled || me._unit === 'year' ? undefined : determineMajorUnit(me._unit);\n me._table = buildLookupTable(me._timestamps.data, min, max, distribution);\n me._offsets = computeOffsets(me._table, ticks, min, max, options);\n if (tickOpts.reverse) {\n ticks.reverse();\n }\n return ticksFromTimestamps(me, ticks, me._majorUnit);\n },\n getLabelForIndex: function (index, datasetIndex) {\n var me = this;\n var adapter = me._adapter;\n var data = me.chart.data;\n var timeOpts = me.options.time;\n var label = data.labels && index < data.labels.length ? data.labels[index] : '';\n var value = data.datasets[datasetIndex].data[index];\n if (helpers$1.isObject(value)) {\n label = me.getRightValue(value);\n }\n if (timeOpts.tooltipFormat) {\n return adapter.format(toTimestamp(me, label), timeOpts.tooltipFormat);\n }\n if (typeof label === 'string') {\n return label;\n }\n return adapter.format(toTimestamp(me, label), timeOpts.displayFormats.datetime);\n },\n /**\r\n * Function to format an individual tick mark\r\n * @private\r\n */\n tickFormatFunction: function (time, index, ticks, format) {\n var me = this;\n var adapter = me._adapter;\n var options = me.options;\n var formats = options.time.displayFormats;\n var minorFormat = formats[me._unit];\n var majorUnit = me._majorUnit;\n var majorFormat = formats[majorUnit];\n var tick = ticks[index];\n var tickOpts = options.ticks;\n var major = majorUnit && majorFormat && tick && tick.major;\n var label = adapter.format(time, format ? format : major ? majorFormat : minorFormat);\n var nestedTickOpts = major ? tickOpts.major : tickOpts.minor;\n var formatter = resolve$5([nestedTickOpts.callback, nestedTickOpts.userCallback, tickOpts.callback, tickOpts.userCallback]);\n return formatter ? formatter(label, index, ticks) : label;\n },\n convertTicksToLabels: function (ticks) {\n var labels = [];\n var i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n labels.push(this.tickFormatFunction(ticks[i].value, i, ticks));\n }\n return labels;\n },\n /**\r\n * @private\r\n */\n getPixelForOffset: function (time) {\n var me = this;\n var offsets = me._offsets;\n var pos = interpolate$1(me._table, 'time', time, 'pos');\n return me.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n },\n getPixelForValue: function (value, index, datasetIndex) {\n var me = this;\n var time = null;\n if (index !== undefined && datasetIndex !== undefined) {\n time = me._timestamps.datasets[datasetIndex][index];\n }\n if (time === null) {\n time = parse(me, value);\n }\n if (time !== null) {\n return me.getPixelForOffset(time);\n }\n },\n getPixelForTick: function (index) {\n var ticks = this.getTicks();\n return index >= 0 && index < ticks.length ? this.getPixelForOffset(ticks[index].value) : null;\n },\n getValueForPixel: function (pixel) {\n var me = this;\n var offsets = me._offsets;\n var pos = me.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n var time = interpolate$1(me._table, 'pos', pos, 'time');\n\n // DEPRECATION, we should return time directly\n return me._adapter._create(time);\n },\n /**\r\n * @private\r\n */\n _getLabelSize: function (label) {\n var me = this;\n var ticksOpts = me.options.ticks;\n var tickLabelWidth = me.ctx.measureText(label).width;\n var angle = helpers$1.toRadians(me.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n var cosRotation = Math.cos(angle);\n var sinRotation = Math.sin(angle);\n var tickFontSize = valueOrDefault$d(ticksOpts.fontSize, core_defaults.global.defaultFontSize);\n return {\n w: tickLabelWidth * cosRotation + tickFontSize * sinRotation,\n h: tickLabelWidth * sinRotation + tickFontSize * cosRotation\n };\n },\n /**\r\n * Crude approximation of what the label width might be\r\n * @private\r\n */\n getLabelWidth: function (label) {\n return this._getLabelSize(label).w;\n },\n /**\r\n * @private\r\n */\n getLabelCapacity: function (exampleTime) {\n var me = this;\n var timeOpts = me.options.time;\n var displayFormats = timeOpts.displayFormats;\n\n // pick the longest format (milliseconds) for guestimation\n var format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n var exampleLabel = me.tickFormatFunction(exampleTime, 0, ticksFromTimestamps(me, [exampleTime], me._majorUnit), format);\n var size = me._getLabelSize(exampleLabel);\n var capacity = Math.floor(me.isHorizontal() ? me.width / size.w : me.height / size.h);\n if (me.options.offset) {\n capacity--;\n }\n return capacity > 0 ? capacity : 1;\n }\n });\n\n // INTERNAL: static default options, registered in src/index.js\n var _defaults$4 = defaultConfig$4;\n scale_time._defaults = _defaults$4;\n var scales = {\n category: scale_category,\n linear: scale_linear,\n logarithmic: scale_logarithmic,\n radialLinear: scale_radialLinear,\n time: scale_time\n };\n var FORMATS = {\n datetime: 'MMM D, YYYY, h:mm:ss a',\n millisecond: 'h:mm:ss.SSS a',\n second: 'h:mm:ss a',\n minute: 'h:mm a',\n hour: 'hA',\n day: 'MMM D',\n week: 'll',\n month: 'MMM YYYY',\n quarter: '[Q]Q - YYYY',\n year: 'YYYY'\n };\n core_adapters._date.override(typeof moment === 'function' ? {\n _id: 'moment',\n // DEBUG ONLY\n\n formats: function () {\n return FORMATS;\n },\n parse: function (value, format) {\n if (typeof value === 'string' && typeof format === 'string') {\n value = moment(value, format);\n } else if (!(value instanceof moment)) {\n value = moment(value);\n }\n return value.isValid() ? value.valueOf() : null;\n },\n format: function (time, format) {\n return moment(time).format(format);\n },\n add: function (time, amount, unit) {\n return moment(time).add(amount, unit).valueOf();\n },\n diff: function (max, min, unit) {\n return moment(max).diff(moment(min), unit);\n },\n startOf: function (time, unit, weekday) {\n time = moment(time);\n if (unit === 'isoWeek') {\n return time.isoWeekday(weekday).valueOf();\n }\n return time.startOf(unit).valueOf();\n },\n endOf: function (time, unit) {\n return moment(time).endOf(unit).valueOf();\n },\n // DEPRECATIONS\n\n /**\r\n * Provided for backward compatibility with scale.getValueForPixel().\r\n * @deprecated since version 2.8.0\r\n * @todo remove at version 3\r\n * @private\r\n */\n _create: function (time) {\n return moment(time);\n }\n } : {});\n core_defaults._set('global', {\n plugins: {\n filler: {\n propagate: true\n }\n }\n });\n var mappers = {\n dataset: function (source) {\n var index = source.fill;\n var chart = source.chart;\n var meta = chart.getDatasetMeta(index);\n var visible = meta && chart.isDatasetVisible(index);\n var points = visible && meta.dataset._children || [];\n var length = points.length || 0;\n return !length ? null : function (point, i) {\n return i < length && points[i]._view || null;\n };\n },\n boundary: function (source) {\n var boundary = source.boundary;\n var x = boundary ? boundary.x : null;\n var y = boundary ? boundary.y : null;\n if (helpers$1.isArray(boundary)) {\n return function (point, i) {\n return boundary[i];\n };\n }\n return function (point) {\n return {\n x: x === null ? point.x : x,\n y: y === null ? point.y : y\n };\n };\n }\n };\n\n // @todo if (fill[0] === '#')\n function decodeFill(el, index, count) {\n var model = el._model || {};\n var fill = model.fill;\n var target;\n if (fill === undefined) {\n fill = !!model.backgroundColor;\n }\n if (fill === false || fill === null) {\n return false;\n }\n if (fill === true) {\n return 'origin';\n }\n target = parseFloat(fill, 10);\n if (isFinite(target) && Math.floor(target) === target) {\n if (fill[0] === '-' || fill[0] === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n }\n switch (fill) {\n // compatibility\n case 'bottom':\n return 'start';\n case 'top':\n return 'end';\n case 'zero':\n return 'origin';\n // supported boundaries\n case 'origin':\n case 'start':\n case 'end':\n return fill;\n // invalid fill values\n default:\n return false;\n }\n }\n function computeLinearBoundary(source) {\n var model = source.el._model || {};\n var scale = source.el._scale || {};\n var fill = source.fill;\n var target = null;\n var horizontal;\n if (isFinite(fill)) {\n return null;\n }\n\n // Backward compatibility: until v3, we still need to support boundary values set on\n // the model (scaleTop, scaleBottom and scaleZero) because some external plugins and\n // controllers might still use it (e.g. the Smith chart).\n\n if (fill === 'start') {\n target = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom;\n } else if (fill === 'end') {\n target = model.scaleTop === undefined ? scale.top : model.scaleTop;\n } else if (model.scaleZero !== undefined) {\n target = model.scaleZero;\n } else if (scale.getBasePixel) {\n target = scale.getBasePixel();\n }\n if (target !== undefined && target !== null) {\n if (target.x !== undefined && target.y !== undefined) {\n return target;\n }\n if (helpers$1.isFinite(target)) {\n horizontal = scale.isHorizontal();\n return {\n x: horizontal ? target : null,\n y: horizontal ? null : target\n };\n }\n }\n return null;\n }\n function computeCircularBoundary(source) {\n var scale = source.el._scale;\n var options = scale.options;\n var length = scale.chart.data.labels.length;\n var fill = source.fill;\n var target = [];\n var start, end, center, i, point;\n if (!length) {\n return null;\n }\n start = options.ticks.reverse ? scale.max : scale.min;\n end = options.ticks.reverse ? scale.min : scale.max;\n center = scale.getPointPositionForValue(0, start);\n for (i = 0; i < length; ++i) {\n point = fill === 'start' || fill === 'end' ? scale.getPointPositionForValue(i, fill === 'start' ? start : end) : scale.getBasePosition(i);\n if (options.gridLines.circular) {\n point.cx = center.x;\n point.cy = center.y;\n point.angle = scale.getIndexAngle(i) - Math.PI / 2;\n }\n target.push(point);\n }\n return target;\n }\n function computeBoundary(source) {\n var scale = source.el._scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n }\n function resolveTarget(sources, index, propagate) {\n var source = sources[index];\n var fill = source.fill;\n var visited = [index];\n var target;\n if (!propagate) {\n return fill;\n }\n while (fill !== false && visited.indexOf(fill) === -1) {\n if (!isFinite(fill)) {\n return fill;\n }\n target = sources[fill];\n if (!target) {\n return false;\n }\n if (target.visible) {\n return fill;\n }\n visited.push(fill);\n fill = target.fill;\n }\n return false;\n }\n function createMapper(source) {\n var fill = source.fill;\n var type = 'dataset';\n if (fill === false) {\n return null;\n }\n if (!isFinite(fill)) {\n type = 'boundary';\n }\n return mappers[type](source);\n }\n function isDrawable(point) {\n return point && !point.skip;\n }\n function drawArea(ctx, curve0, curve1, len0, len1) {\n var i, cx, cy, r;\n if (!len0 || !len1) {\n return;\n }\n\n // building first area curve (normal)\n ctx.moveTo(curve0[0].x, curve0[0].y);\n for (i = 1; i < len0; ++i) {\n helpers$1.canvas.lineTo(ctx, curve0[i - 1], curve0[i]);\n }\n if (curve1[0].angle !== undefined) {\n cx = curve1[0].cx;\n cy = curve1[0].cy;\n r = Math.sqrt(Math.pow(curve1[0].x - cx, 2) + Math.pow(curve1[0].y - cy, 2));\n for (i = len1 - 1; i > 0; --i) {\n ctx.arc(cx, cy, r, curve1[i].angle, curve1[i - 1].angle, true);\n }\n return;\n }\n\n // joining the two area curves\n ctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y);\n\n // building opposite area curve (reverse)\n for (i = len1 - 1; i > 0; --i) {\n helpers$1.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true);\n }\n }\n function doFill(ctx, points, mapper, view, color, loop) {\n var count = points.length;\n var span = view.spanGaps;\n var curve0 = [];\n var curve1 = [];\n var len0 = 0;\n var len1 = 0;\n var i, ilen, index, p0, p1, d0, d1, loopOffset;\n ctx.beginPath();\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i % count;\n p0 = points[index]._view;\n p1 = mapper(p0, index, view);\n d0 = isDrawable(p0);\n d1 = isDrawable(p1);\n if (loop && loopOffset === undefined && d0) {\n loopOffset = i + 1;\n ilen = count + loopOffset;\n }\n if (d0 && d1) {\n len0 = curve0.push(p0);\n len1 = curve1.push(p1);\n } else if (len0 && len1) {\n if (!span) {\n drawArea(ctx, curve0, curve1, len0, len1);\n len0 = len1 = 0;\n curve0 = [];\n curve1 = [];\n } else {\n if (d0) {\n curve0.push(p0);\n }\n if (d1) {\n curve1.push(p1);\n }\n }\n }\n }\n drawArea(ctx, curve0, curve1, len0, len1);\n ctx.closePath();\n ctx.fillStyle = color;\n ctx.fill();\n }\n var plugin_filler = {\n id: 'filler',\n afterDatasetsUpdate: function (chart, options) {\n var count = (chart.data.datasets || []).length;\n var propagate = options.propagate;\n var sources = [];\n var meta, i, el, source;\n for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n el = meta.dataset;\n source = null;\n if (el && el._model && el instanceof elements.Line) {\n source = {\n visible: chart.isDatasetVisible(i),\n fill: decodeFill(el, i, count),\n chart: chart,\n el: el\n };\n }\n meta.$filler = source;\n sources.push(source);\n }\n for (i = 0; i < count; ++i) {\n source = sources[i];\n if (!source) {\n continue;\n }\n source.fill = resolveTarget(sources, i, propagate);\n source.boundary = computeBoundary(source);\n source.mapper = createMapper(source);\n }\n },\n beforeDatasetsDraw: function (chart) {\n var metasets = chart._getSortedVisibleDatasetMetas();\n var ctx = chart.ctx;\n var meta, i, el, view, points, mapper, color;\n for (i = metasets.length - 1; i >= 0; --i) {\n meta = metasets[i].$filler;\n if (!meta || !meta.visible) {\n continue;\n }\n el = meta.el;\n view = el._view;\n points = el._children || [];\n mapper = meta.mapper;\n color = view.backgroundColor || core_defaults.global.defaultColor;\n if (mapper && color && points.length) {\n helpers$1.canvas.clipArea(ctx, chart.chartArea);\n doFill(ctx, points, mapper, view, color, el._loop);\n helpers$1.canvas.unclipArea(ctx);\n }\n }\n }\n };\n var getRtlHelper$1 = helpers$1.rtl.getRtlAdapter;\n var noop$1 = helpers$1.noop;\n var valueOrDefault$e = helpers$1.valueOrDefault;\n core_defaults._set('global', {\n legend: {\n display: true,\n position: 'top',\n align: 'center',\n fullWidth: true,\n reverse: false,\n weight: 1000,\n // a callback that will handle\n onClick: function (e, legendItem) {\n var index = legendItem.datasetIndex;\n var ci = this.chart;\n var meta = ci.getDatasetMeta(index);\n\n // See controller.isDatasetVisible comment\n meta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;\n\n // We hid a dataset ... rerender the chart\n ci.update();\n },\n onHover: null,\n onLeave: null,\n labels: {\n boxWidth: 40,\n padding: 10,\n // Generates labels shown in the legend\n // Valid properties to return:\n // text : text to display\n // fillStyle : fill of coloured box\n // strokeStyle: stroke of coloured box\n // hidden : if this legend item refers to a hidden item\n // lineCap : cap style for line\n // lineDash\n // lineDashOffset :\n // lineJoin :\n // lineWidth :\n generateLabels: function (chart) {\n var datasets = chart.data.datasets;\n var options = chart.options.legend || {};\n var usePointStyle = options.labels && options.labels.usePointStyle;\n return chart._getSortedDatasetMetas().map(function (meta) {\n var style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n hidden: !chart.isDatasetVisible(meta.index),\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: style.borderWidth,\n strokeStyle: style.borderColor,\n pointStyle: style.pointStyle,\n rotation: style.rotation,\n // Below is extra data used for toggling the datasets\n datasetIndex: meta.index\n };\n }, this);\n }\n }\n },\n legendCallback: function (chart) {\n var list = document.createElement('ul');\n var datasets = chart.data.datasets;\n var i, ilen, listItem, listItemSpan;\n list.setAttribute('class', chart.id + '-legend');\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n listItem = list.appendChild(document.createElement('li'));\n listItemSpan = listItem.appendChild(document.createElement('span'));\n listItemSpan.style.backgroundColor = datasets[i].backgroundColor;\n if (datasets[i].label) {\n listItem.appendChild(document.createTextNode(datasets[i].label));\n }\n }\n return list.outerHTML;\n }\n });\n\n /**\r\n * Helper function to get the box width based on the usePointStyle option\r\n * @param {object} labelopts - the label options on the legend\r\n * @param {number} fontSize - the label font size\r\n * @return {number} width of the color box area\r\n */\n function getBoxWidth(labelOpts, fontSize) {\n return labelOpts.usePointStyle && labelOpts.boxWidth > fontSize ? fontSize : labelOpts.boxWidth;\n }\n\n /**\r\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\r\n */\n var Legend = core_element.extend({\n initialize: function (config) {\n var me = this;\n helpers$1.extend(me, config);\n\n // Contains hit boxes for each dataset (in dataset order)\n me.legendHitBoxes = [];\n\n /**\r\n \t * @private\r\n \t */\n me._hoveredItem = null;\n\n // Are we in doughnut mode which has a different data type\n me.doughnutMode = false;\n },\n // These methods are ordered by lifecycle. Utilities then follow.\n // Any function defined here is inherited by all legend types.\n // Any function can be extended by the legend type\n\n beforeUpdate: noop$1,\n update: function (maxWidth, maxHeight, margins) {\n var me = this;\n\n // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n me.beforeUpdate();\n\n // Absorb the master measurements\n me.maxWidth = maxWidth;\n me.maxHeight = maxHeight;\n me.margins = margins;\n\n // Dimensions\n me.beforeSetDimensions();\n me.setDimensions();\n me.afterSetDimensions();\n // Labels\n me.beforeBuildLabels();\n me.buildLabels();\n me.afterBuildLabels();\n\n // Fit\n me.beforeFit();\n me.fit();\n me.afterFit();\n //\n me.afterUpdate();\n return me.minSize;\n },\n afterUpdate: noop$1,\n //\n\n beforeSetDimensions: noop$1,\n setDimensions: function () {\n var me = this;\n // Set the unconstrained dimension before label rotation\n if (me.isHorizontal()) {\n // Reset position before calculating rotation\n me.width = me.maxWidth;\n me.left = 0;\n me.right = me.width;\n } else {\n me.height = me.maxHeight;\n\n // Reset position before calculating rotation\n me.top = 0;\n me.bottom = me.height;\n }\n\n // Reset padding\n me.paddingLeft = 0;\n me.paddingTop = 0;\n me.paddingRight = 0;\n me.paddingBottom = 0;\n\n // Reset minSize\n me.minSize = {\n width: 0,\n height: 0\n };\n },\n afterSetDimensions: noop$1,\n //\n\n beforeBuildLabels: noop$1,\n buildLabels: function () {\n var me = this;\n var labelOpts = me.options.labels || {};\n var legendItems = helpers$1.callback(labelOpts.generateLabels, [me.chart], me) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter(function (item) {\n return labelOpts.filter(item, me.chart.data);\n });\n }\n if (me.options.reverse) {\n legendItems.reverse();\n }\n me.legendItems = legendItems;\n },\n afterBuildLabels: noop$1,\n //\n\n beforeFit: noop$1,\n fit: function () {\n var me = this;\n var opts = me.options;\n var labelOpts = opts.labels;\n var display = opts.display;\n var ctx = me.ctx;\n var labelFont = helpers$1.options._parseFont(labelOpts);\n var fontSize = labelFont.size;\n\n // Reset hit boxes\n var hitboxes = me.legendHitBoxes = [];\n var minSize = me.minSize;\n var isHorizontal = me.isHorizontal();\n if (isHorizontal) {\n minSize.width = me.maxWidth; // fill all the width\n minSize.height = display ? 10 : 0;\n } else {\n minSize.width = display ? 10 : 0;\n minSize.height = me.maxHeight; // fill all the height\n }\n\n // Increase sizes here\n if (!display) {\n me.width = minSize.width = me.height = minSize.height = 0;\n return;\n }\n ctx.font = labelFont.string;\n if (isHorizontal) {\n // Labels\n\n // Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one\n var lineWidths = me.lineWidths = [0];\n var totalHeight = 0;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n helpers$1.each(me.legendItems, function (legendItem, i) {\n var boxWidth = getBoxWidth(labelOpts, fontSize);\n var width = boxWidth + fontSize / 2 + ctx.measureText(legendItem.text).width;\n if (i === 0 || lineWidths[lineWidths.length - 1] + width + 2 * labelOpts.padding > minSize.width) {\n totalHeight += fontSize + labelOpts.padding;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n }\n\n // Store the hitbox width and height here. Final position will be updated in `draw`\n hitboxes[i] = {\n left: 0,\n top: 0,\n width: width,\n height: fontSize\n };\n lineWidths[lineWidths.length - 1] += width + labelOpts.padding;\n });\n minSize.height += totalHeight;\n } else {\n var vPadding = labelOpts.padding;\n var columnWidths = me.columnWidths = [];\n var columnHeights = me.columnHeights = [];\n var totalWidth = labelOpts.padding;\n var currentColWidth = 0;\n var currentColHeight = 0;\n helpers$1.each(me.legendItems, function (legendItem, i) {\n var boxWidth = getBoxWidth(labelOpts, fontSize);\n var itemWidth = boxWidth + fontSize / 2 + ctx.measureText(legendItem.text).width;\n\n // If too tall, go to new column\n if (i > 0 && currentColHeight + fontSize + 2 * vPadding > minSize.height) {\n totalWidth += currentColWidth + labelOpts.padding;\n columnWidths.push(currentColWidth); // previous column width\n columnHeights.push(currentColHeight);\n currentColWidth = 0;\n currentColHeight = 0;\n }\n\n // Get max width\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += fontSize + vPadding;\n\n // Store the hitbox width and height here. Final position will be updated in `draw`\n hitboxes[i] = {\n left: 0,\n top: 0,\n width: itemWidth,\n height: fontSize\n };\n });\n totalWidth += currentColWidth;\n columnWidths.push(currentColWidth);\n columnHeights.push(currentColHeight);\n minSize.width += totalWidth;\n }\n me.width = minSize.width;\n me.height = minSize.height;\n },\n afterFit: noop$1,\n // Shared Methods\n isHorizontal: function () {\n return this.options.position === 'top' || this.options.position === 'bottom';\n },\n // Actually draw the legend on the canvas\n draw: function () {\n var me = this;\n var opts = me.options;\n var labelOpts = opts.labels;\n var globalDefaults = core_defaults.global;\n var defaultColor = globalDefaults.defaultColor;\n var lineDefault = globalDefaults.elements.line;\n var legendHeight = me.height;\n var columnHeights = me.columnHeights;\n var legendWidth = me.width;\n var lineWidths = me.lineWidths;\n if (!opts.display) {\n return;\n }\n var rtlHelper = getRtlHelper$1(opts.rtl, me.left, me.minSize.width);\n var ctx = me.ctx;\n var fontColor = valueOrDefault$e(labelOpts.fontColor, globalDefaults.defaultFontColor);\n var labelFont = helpers$1.options._parseFont(labelOpts);\n var fontSize = labelFont.size;\n var cursor;\n\n // Canvas setup\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.strokeStyle = fontColor; // for strikethrough effect\n ctx.fillStyle = fontColor; // render in correct colour\n ctx.font = labelFont.string;\n var boxWidth = getBoxWidth(labelOpts, fontSize);\n var hitboxes = me.legendHitBoxes;\n\n // current position\n var drawLegendBox = function (x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0) {\n return;\n }\n\n // Set the ctx for the box\n ctx.save();\n var lineWidth = valueOrDefault$e(legendItem.lineWidth, lineDefault.borderWidth);\n ctx.fillStyle = valueOrDefault$e(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault$e(legendItem.lineCap, lineDefault.borderCapStyle);\n ctx.lineDashOffset = valueOrDefault$e(legendItem.lineDashOffset, lineDefault.borderDashOffset);\n ctx.lineJoin = valueOrDefault$e(legendItem.lineJoin, lineDefault.borderJoinStyle);\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault$e(legendItem.strokeStyle, defaultColor);\n if (ctx.setLineDash) {\n // IE 9 and 10 do not support line dash\n ctx.setLineDash(valueOrDefault$e(legendItem.lineDash, lineDefault.borderDash));\n }\n if (labelOpts && labelOpts.usePointStyle) {\n // Recalculate x and y for drawPoint() because its expecting\n // x and y to be center of figure (instead of top left)\n var radius = boxWidth * Math.SQRT2 / 2;\n var centerX = rtlHelper.xPlus(x, boxWidth / 2);\n var centerY = y + fontSize / 2;\n\n // Draw pointStyle as legend symbol\n helpers$1.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY, legendItem.rotation);\n } else {\n // Draw box as legend symbol\n ctx.fillRect(rtlHelper.leftForLtr(x, boxWidth), y, boxWidth, fontSize);\n if (lineWidth !== 0) {\n ctx.strokeRect(rtlHelper.leftForLtr(x, boxWidth), y, boxWidth, fontSize);\n }\n }\n ctx.restore();\n };\n var fillText = function (x, y, legendItem, textWidth) {\n var halfFontSize = fontSize / 2;\n var xLeft = rtlHelper.xPlus(x, boxWidth + halfFontSize);\n var yMiddle = y + halfFontSize;\n ctx.fillText(legendItem.text, xLeft, yMiddle);\n if (legendItem.hidden) {\n // Strikethrough the text if hidden\n ctx.beginPath();\n ctx.lineWidth = 2;\n ctx.moveTo(xLeft, yMiddle);\n ctx.lineTo(rtlHelper.xPlus(xLeft, textWidth), yMiddle);\n ctx.stroke();\n }\n };\n var alignmentOffset = function (dimension, blockSize) {\n switch (opts.align) {\n case 'start':\n return labelOpts.padding;\n case 'end':\n return dimension - blockSize;\n default:\n // center\n return (dimension - blockSize + labelOpts.padding) / 2;\n }\n };\n\n // Horizontal\n var isHorizontal = me.isHorizontal();\n if (isHorizontal) {\n cursor = {\n x: me.left + alignmentOffset(legendWidth, lineWidths[0]),\n y: me.top + labelOpts.padding,\n line: 0\n };\n } else {\n cursor = {\n x: me.left + labelOpts.padding,\n y: me.top + alignmentOffset(legendHeight, columnHeights[0]),\n line: 0\n };\n }\n helpers$1.rtl.overrideTextDirection(me.ctx, opts.textDirection);\n var itemHeight = fontSize + labelOpts.padding;\n helpers$1.each(me.legendItems, function (legendItem, i) {\n var textWidth = ctx.measureText(legendItem.text).width;\n var width = boxWidth + fontSize / 2 + textWidth;\n var x = cursor.x;\n var y = cursor.y;\n rtlHelper.setWidth(me.minSize.width);\n\n // Use (me.left + me.minSize.width) and (me.top + me.minSize.height)\n // instead of me.right and me.bottom because me.width and me.height\n // may have been changed since me.minSize was calculated\n if (isHorizontal) {\n if (i > 0 && x + width + labelOpts.padding > me.left + me.minSize.width) {\n y = cursor.y += itemHeight;\n cursor.line++;\n x = cursor.x = me.left + alignmentOffset(legendWidth, lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + itemHeight > me.top + me.minSize.height) {\n x = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding;\n cursor.line++;\n y = cursor.y = me.top + alignmentOffset(legendHeight, columnHeights[cursor.line]);\n }\n var realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n hitboxes[i].left = rtlHelper.leftForLtr(realX, hitboxes[i].width);\n hitboxes[i].top = y;\n\n // Fill the actual label\n fillText(realX, y, legendItem, textWidth);\n if (isHorizontal) {\n cursor.x += width + labelOpts.padding;\n } else {\n cursor.y += itemHeight;\n }\n });\n helpers$1.rtl.restoreTextDirection(me.ctx, opts.textDirection);\n },\n /**\r\n * @private\r\n */\n _getLegendItemAt: function (x, y) {\n var me = this;\n var i, hitBox, lh;\n if (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) {\n // See if we are touching one of the dataset boxes\n lh = me.legendHitBoxes;\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n if (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) {\n // Touching an element\n return me.legendItems[i];\n }\n }\n }\n return null;\n },\n /**\r\n * Handle an event\r\n * @private\r\n * @param {IEvent} event - The event to handle\r\n */\n handleEvent: function (e) {\n var me = this;\n var opts = me.options;\n var type = e.type === 'mouseup' ? 'click' : e.type;\n var hoveredItem;\n if (type === 'mousemove') {\n if (!opts.onHover && !opts.onLeave) {\n return;\n }\n } else if (type === 'click') {\n if (!opts.onClick) {\n return;\n }\n } else {\n return;\n }\n\n // Chart event already has relative position in it\n hoveredItem = me._getLegendItemAt(e.x, e.y);\n if (type === 'click') {\n if (hoveredItem && opts.onClick) {\n // use e.native for backwards compatibility\n opts.onClick.call(me, e.native, hoveredItem);\n }\n } else {\n if (opts.onLeave && hoveredItem !== me._hoveredItem) {\n if (me._hoveredItem) {\n opts.onLeave.call(me, e.native, me._hoveredItem);\n }\n me._hoveredItem = hoveredItem;\n }\n if (opts.onHover && hoveredItem) {\n // use e.native for backwards compatibility\n opts.onHover.call(me, e.native, hoveredItem);\n }\n }\n }\n });\n function createNewLegendAndAttach(chart, legendOpts) {\n var legend = new Legend({\n ctx: chart.ctx,\n options: legendOpts,\n chart: chart\n });\n core_layouts.configure(chart, legend, legendOpts);\n core_layouts.addBox(chart, legend);\n chart.legend = legend;\n }\n var plugin_legend = {\n id: 'legend',\n /**\r\n * Backward compatibility: since 2.1.5, the legend is registered as a plugin, making\r\n * Chart.Legend obsolete. To avoid a breaking change, we export the Legend as part of\r\n * the plugin, which one will be re-exposed in the chart.js file.\r\n * https://github.com/chartjs/Chart.js/pull/2640\r\n * @private\r\n */\n _element: Legend,\n beforeInit: function (chart) {\n var legendOpts = chart.options.legend;\n if (legendOpts) {\n createNewLegendAndAttach(chart, legendOpts);\n }\n },\n beforeUpdate: function (chart) {\n var legendOpts = chart.options.legend;\n var legend = chart.legend;\n if (legendOpts) {\n helpers$1.mergeIf(legendOpts, core_defaults.global.legend);\n if (legend) {\n core_layouts.configure(chart, legend, legendOpts);\n legend.options = legendOpts;\n } else {\n createNewLegendAndAttach(chart, legendOpts);\n }\n } else if (legend) {\n core_layouts.removeBox(chart, legend);\n delete chart.legend;\n }\n },\n afterEvent: function (chart, e) {\n var legend = chart.legend;\n if (legend) {\n legend.handleEvent(e);\n }\n }\n };\n var noop$2 = helpers$1.noop;\n core_defaults._set('global', {\n title: {\n display: false,\n fontStyle: 'bold',\n fullWidth: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000 // by default greater than legend (1000) to be above\n }\n });\n\n /**\r\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\r\n */\n var Title = core_element.extend({\n initialize: function (config) {\n var me = this;\n helpers$1.extend(me, config);\n\n // Contains hit boxes for each dataset (in dataset order)\n me.legendHitBoxes = [];\n },\n // These methods are ordered by lifecycle. Utilities then follow.\n\n beforeUpdate: noop$2,\n update: function (maxWidth, maxHeight, margins) {\n var me = this;\n\n // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n me.beforeUpdate();\n\n // Absorb the master measurements\n me.maxWidth = maxWidth;\n me.maxHeight = maxHeight;\n me.margins = margins;\n\n // Dimensions\n me.beforeSetDimensions();\n me.setDimensions();\n me.afterSetDimensions();\n // Labels\n me.beforeBuildLabels();\n me.buildLabels();\n me.afterBuildLabels();\n\n // Fit\n me.beforeFit();\n me.fit();\n me.afterFit();\n //\n me.afterUpdate();\n return me.minSize;\n },\n afterUpdate: noop$2,\n //\n\n beforeSetDimensions: noop$2,\n setDimensions: function () {\n var me = this;\n // Set the unconstrained dimension before label rotation\n if (me.isHorizontal()) {\n // Reset position before calculating rotation\n me.width = me.maxWidth;\n me.left = 0;\n me.right = me.width;\n } else {\n me.height = me.maxHeight;\n\n // Reset position before calculating rotation\n me.top = 0;\n me.bottom = me.height;\n }\n\n // Reset padding\n me.paddingLeft = 0;\n me.paddingTop = 0;\n me.paddingRight = 0;\n me.paddingBottom = 0;\n\n // Reset minSize\n me.minSize = {\n width: 0,\n height: 0\n };\n },\n afterSetDimensions: noop$2,\n //\n\n beforeBuildLabels: noop$2,\n buildLabels: noop$2,\n afterBuildLabels: noop$2,\n //\n\n beforeFit: noop$2,\n fit: function () {\n var me = this;\n var opts = me.options;\n var minSize = me.minSize = {};\n var isHorizontal = me.isHorizontal();\n var lineCount, textSize;\n if (!opts.display) {\n me.width = minSize.width = me.height = minSize.height = 0;\n return;\n }\n lineCount = helpers$1.isArray(opts.text) ? opts.text.length : 1;\n textSize = lineCount * helpers$1.options._parseFont(opts).lineHeight + opts.padding * 2;\n me.width = minSize.width = isHorizontal ? me.maxWidth : textSize;\n me.height = minSize.height = isHorizontal ? textSize : me.maxHeight;\n },\n afterFit: noop$2,\n // Shared Methods\n isHorizontal: function () {\n var pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n },\n // Actually draw the title block on the canvas\n draw: function () {\n var me = this;\n var ctx = me.ctx;\n var opts = me.options;\n if (!opts.display) {\n return;\n }\n var fontOpts = helpers$1.options._parseFont(opts);\n var lineHeight = fontOpts.lineHeight;\n var offset = lineHeight / 2 + opts.padding;\n var rotation = 0;\n var top = me.top;\n var left = me.left;\n var bottom = me.bottom;\n var right = me.right;\n var maxWidth, titleX, titleY;\n ctx.fillStyle = helpers$1.valueOrDefault(opts.fontColor, core_defaults.global.defaultFontColor); // render in correct colour\n ctx.font = fontOpts.string;\n\n // Horizontal\n if (me.isHorizontal()) {\n titleX = left + (right - left) / 2; // midpoint of the width\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n titleX = opts.position === 'left' ? left + offset : right - offset;\n titleY = top + (bottom - top) / 2;\n maxWidth = bottom - top;\n rotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5);\n }\n ctx.save();\n ctx.translate(titleX, titleY);\n ctx.rotate(rotation);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n var text = opts.text;\n if (helpers$1.isArray(text)) {\n var y = 0;\n for (var i = 0; i < text.length; ++i) {\n ctx.fillText(text[i], 0, y, maxWidth);\n y += lineHeight;\n }\n } else {\n ctx.fillText(text, 0, 0, maxWidth);\n }\n ctx.restore();\n }\n });\n function createNewTitleBlockAndAttach(chart, titleOpts) {\n var title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart: chart\n });\n core_layouts.configure(chart, title, titleOpts);\n core_layouts.addBox(chart, title);\n chart.titleBlock = title;\n }\n var plugin_title = {\n id: 'title',\n /**\r\n * Backward compatibility: since 2.1.5, the title is registered as a plugin, making\r\n * Chart.Title obsolete. To avoid a breaking change, we export the Title as part of\r\n * the plugin, which one will be re-exposed in the chart.js file.\r\n * https://github.com/chartjs/Chart.js/pull/2640\r\n * @private\r\n */\n _element: Title,\n beforeInit: function (chart) {\n var titleOpts = chart.options.title;\n if (titleOpts) {\n createNewTitleBlockAndAttach(chart, titleOpts);\n }\n },\n beforeUpdate: function (chart) {\n var titleOpts = chart.options.title;\n var titleBlock = chart.titleBlock;\n if (titleOpts) {\n helpers$1.mergeIf(titleOpts, core_defaults.global.title);\n if (titleBlock) {\n core_layouts.configure(chart, titleBlock, titleOpts);\n titleBlock.options = titleOpts;\n } else {\n createNewTitleBlockAndAttach(chart, titleOpts);\n }\n } else if (titleBlock) {\n core_layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n }\n }\n };\n var plugins = {};\n var filler = plugin_filler;\n var legend = plugin_legend;\n var title = plugin_title;\n plugins.filler = filler;\n plugins.legend = legend;\n plugins.title = title;\n\n /**\r\n * @namespace Chart\r\n */\n\n core_controller.helpers = helpers$1;\n\n // @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests!\n core_helpers();\n core_controller._adapters = core_adapters;\n core_controller.Animation = core_animation;\n core_controller.animationService = core_animations;\n core_controller.controllers = controllers;\n core_controller.DatasetController = core_datasetController;\n core_controller.defaults = core_defaults;\n core_controller.Element = core_element;\n core_controller.elements = elements;\n core_controller.Interaction = core_interaction;\n core_controller.layouts = core_layouts;\n core_controller.platform = platform;\n core_controller.plugins = core_plugins;\n core_controller.Scale = core_scale;\n core_controller.scaleService = core_scaleService;\n core_controller.Ticks = core_ticks;\n core_controller.Tooltip = core_tooltip;\n\n // Register built-in scales\n\n core_controller.helpers.each(scales, function (scale, type) {\n core_controller.scaleService.registerScaleType(type, scale, scale._defaults);\n });\n\n // Load to register built-in adapters (as side effects)\n\n // Loading built-in plugins\n\n for (var k in plugins) {\n if (plugins.hasOwnProperty(k)) {\n core_controller.plugins.register(plugins[k]);\n }\n }\n core_controller.platform.initialize();\n var src = core_controller;\n if (typeof window !== 'undefined') {\n window.Chart = core_controller;\n }\n\n // DEPRECATIONS\n\n /**\r\n * Provided for backward compatibility, not available anymore\r\n * @namespace Chart.Chart\r\n * @deprecated since version 2.8.0\r\n * @todo remove at version 3\r\n * @private\r\n */\n core_controller.Chart = core_controller;\n\n /**\r\n * Provided for backward compatibility, not available anymore\r\n * @namespace Chart.Legend\r\n * @deprecated since version 2.1.5\r\n * @todo remove at version 3\r\n * @private\r\n */\n core_controller.Legend = plugins.legend._element;\n\n /**\r\n * Provided for backward compatibility, not available anymore\r\n * @namespace Chart.Title\r\n * @deprecated since version 2.1.5\r\n * @todo remove at version 3\r\n * @private\r\n */\n core_controller.Title = plugins.title._element;\n\n /**\r\n * Provided for backward compatibility, use Chart.plugins instead\r\n * @namespace Chart.pluginService\r\n * @deprecated since version 2.1.5\r\n * @todo remove at version 3\r\n * @private\r\n */\n core_controller.pluginService = core_controller.plugins;\n\n /**\r\n * Provided for backward compatibility, inheriting from Chart.PlugingBase has no\r\n * effect, instead simply create/register plugins via plain JavaScript objects.\r\n * @interface Chart.PluginBase\r\n * @deprecated since version 2.5.0\r\n * @todo remove at version 3\r\n * @private\r\n */\n core_controller.PluginBase = core_controller.Element.extend({});\n\n /**\r\n * Provided for backward compatibility, use Chart.helpers.canvas instead.\r\n * @namespace Chart.canvasHelpers\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n * @private\r\n */\n core_controller.canvasHelpers = core_controller.helpers.canvas;\n\n /**\r\n * Provided for backward compatibility, use Chart.layouts instead.\r\n * @namespace Chart.layoutService\r\n * @deprecated since version 2.7.3\r\n * @todo remove at version 3\r\n * @private\r\n */\n core_controller.layoutService = core_controller.layouts;\n\n /**\r\n * Provided for backward compatibility, not available anymore.\r\n * @namespace Chart.LinearScaleBase\r\n * @deprecated since version 2.8\r\n * @todo remove at version 3\r\n * @private\r\n */\n core_controller.LinearScaleBase = scale_linearbase;\n\n /**\r\n * Provided for backward compatibility, instead we should create a new Chart\r\n * by setting the type in the config (`new Chart(id, {type: '{chart-type}'}`).\r\n * @deprecated since version 2.8.0\r\n * @todo remove at version 3\r\n */\n core_controller.helpers.each(['Bar', 'Bubble', 'Doughnut', 'Line', 'PolarArea', 'Radar', 'Scatter'], function (klass) {\n core_controller[klass] = function (ctx, cfg) {\n return new core_controller(ctx, core_controller.helpers.merge(cfg || {}, {\n type: klass.charAt(0).toLowerCase() + klass.slice(1)\n }));\n };\n });\n return src;\n});","/*!\n * FilePondPluginImagePreview 4.6.11\n * Licensed under MIT, https://opensource.org/licenses/MIT/\n * Please visit https://pqina.nl/filepond/ for details.\n */\n\n/* eslint-disable */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = global || self, global.FilePondPluginImagePreview = factory());\n})(this, function () {\n 'use strict';\n\n // test if file is of type image and can be viewed in canvas\n var isPreviewableImage = function isPreviewableImage(file) {\n return /^image/.test(file.type);\n };\n function _typeof(obj) {\n if (typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol') {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj;\n };\n }\n return _typeof(obj);\n }\n var REACT_ELEMENT_TYPE;\n function _jsx(type, props, key, children) {\n if (!REACT_ELEMENT_TYPE) {\n REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol.for && Symbol.for('react.element') || 0xeac7;\n }\n var defaultProps = type && type.defaultProps;\n var childrenLength = arguments.length - 3;\n if (!props && childrenLength !== 0) {\n props = {\n children: void 0\n };\n }\n if (props && defaultProps) {\n for (var propName in defaultProps) {\n if (props[propName] === void 0) {\n props[propName] = defaultProps[propName];\n }\n }\n } else if (!props) {\n props = defaultProps || {};\n }\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = new Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 3];\n }\n props.children = childArray;\n }\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key === undefined ? null : '' + key,\n ref: null,\n props: props,\n _owner: null\n };\n }\n function _asyncIterator(iterable) {\n var method;\n if (typeof Symbol === 'function') {\n if (Symbol.asyncIterator) {\n method = iterable[Symbol.asyncIterator];\n if (method != null) return method.call(iterable);\n }\n if (Symbol.iterator) {\n method = iterable[Symbol.iterator];\n if (method != null) return method.call(iterable);\n }\n }\n throw new TypeError('Object is not async iterable');\n }\n function _AwaitValue(value) {\n this.wrapped = value;\n }\n function _AsyncGenerator(gen) {\n var front, back;\n function send(key, arg) {\n return new Promise(function (resolve, reject) {\n var request = {\n key: key,\n arg: arg,\n resolve: resolve,\n reject: reject,\n next: null\n };\n if (back) {\n back = back.next = request;\n } else {\n front = back = request;\n resume(key, arg);\n }\n });\n }\n function resume(key, arg) {\n try {\n var result = gen[key](arg);\n var value = result.value;\n var wrappedAwait = value instanceof _AwaitValue;\n Promise.resolve(wrappedAwait ? value.wrapped : value).then(function (arg) {\n if (wrappedAwait) {\n resume('next', arg);\n return;\n }\n settle(result.done ? 'return' : 'normal', arg);\n }, function (err) {\n resume('throw', err);\n });\n } catch (err) {\n settle('throw', err);\n }\n }\n function settle(type, value) {\n switch (type) {\n case 'return':\n front.resolve({\n value: value,\n done: true\n });\n break;\n case 'throw':\n front.reject(value);\n break;\n default:\n front.resolve({\n value: value,\n done: false\n });\n break;\n }\n front = front.next;\n if (front) {\n resume(front.key, front.arg);\n } else {\n back = null;\n }\n }\n this._invoke = send;\n if (typeof gen.return !== 'function') {\n this.return = undefined;\n }\n }\n if (typeof Symbol === 'function' && Symbol.asyncIterator) {\n _AsyncGenerator.prototype[Symbol.asyncIterator] = function () {\n return this;\n };\n }\n _AsyncGenerator.prototype.next = function (arg) {\n return this._invoke('next', arg);\n };\n _AsyncGenerator.prototype.throw = function (arg) {\n return this._invoke('throw', arg);\n };\n _AsyncGenerator.prototype.return = function (arg) {\n return this._invoke('return', arg);\n };\n function _wrapAsyncGenerator(fn) {\n return function () {\n return new _AsyncGenerator(fn.apply(this, arguments));\n };\n }\n function _awaitAsyncGenerator(value) {\n return new _AwaitValue(value);\n }\n function _asyncGeneratorDelegate(inner, awaitWrap) {\n var iter = {},\n waiting = false;\n function pump(key, value) {\n waiting = true;\n value = new Promise(function (resolve) {\n resolve(inner[key](value));\n });\n return {\n done: false,\n value: awaitWrap(value)\n };\n }\n if (typeof Symbol === 'function' && Symbol.iterator) {\n iter[Symbol.iterator] = function () {\n return this;\n };\n }\n iter.next = function (value) {\n if (waiting) {\n waiting = false;\n return value;\n }\n return pump('next', value);\n };\n if (typeof inner.throw === 'function') {\n iter.throw = function (value) {\n if (waiting) {\n waiting = false;\n throw value;\n }\n return pump('throw', value);\n };\n }\n if (typeof inner.return === 'function') {\n iter.return = function (value) {\n return pump('return', value);\n };\n }\n return iter;\n }\n function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n }\n function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'next', value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'throw', err);\n }\n _next(undefined);\n });\n };\n }\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError('Cannot call a class as a function');\n }\n }\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ('value' in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n function _defineEnumerableProperties(obj, descs) {\n for (var key in descs) {\n var desc = descs[key];\n desc.configurable = desc.enumerable = true;\n if ('value' in desc) desc.writable = true;\n Object.defineProperty(obj, key, desc);\n }\n if (Object.getOwnPropertySymbols) {\n var objectSymbols = Object.getOwnPropertySymbols(descs);\n for (var i = 0; i < objectSymbols.length; i++) {\n var sym = objectSymbols[i];\n var desc = descs[sym];\n desc.configurable = desc.enumerable = true;\n if ('value' in desc) desc.writable = true;\n Object.defineProperty(obj, sym, desc);\n }\n }\n return obj;\n }\n function _defaults(obj, defaults) {\n var keys = Object.getOwnPropertyNames(defaults);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = Object.getOwnPropertyDescriptor(defaults, key);\n if (value && value.configurable && obj[key] === undefined) {\n Object.defineProperty(obj, key, value);\n }\n }\n return obj;\n }\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n }\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n }\n function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n return target;\n }\n function _inherits(subClass, superClass) {\n if (typeof superClass !== 'function' && superClass !== null) {\n throw new TypeError('Super expression must either be null or a function');\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n }\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n }\n function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n }\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n }\n function isNativeReflectConstruct() {\n if (typeof Reflect === 'undefined' || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === 'function') return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n }\n function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n }\n function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf('[native code]') !== -1;\n }\n function _wrapNativeSuper(Class) {\n var _cache = typeof Map === 'function' ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n if (typeof Class !== 'function') {\n throw new TypeError('Super expression must either be null or a function');\n }\n if (typeof _cache !== 'undefined') {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n }\n function _instanceof(left, right) {\n if (right != null && typeof Symbol !== 'undefined' && right[Symbol.hasInstance]) {\n return right[Symbol.hasInstance](left);\n } else {\n return left instanceof right;\n }\n }\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n function _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};\n if (desc.get || desc.set) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n }\n newObj.default = obj;\n return newObj;\n }\n }\n function _newArrowCheck(innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError('Cannot instantiate an arrow function');\n }\n }\n function _objectDestructuringEmpty(obj) {\n if (obj == null) throw new TypeError('Cannot destructure undefined');\n }\n function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n }\n function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n }\n function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n }\n function _possibleConstructorReturn(self, call) {\n if (call && (typeof call === 'object' || typeof call === 'function')) {\n return call;\n }\n return _assertThisInitialized(self);\n }\n function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n }\n function _get(target, property, receiver) {\n if (typeof Reflect !== 'undefined' && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) {\n return desc.get.call(receiver);\n }\n return desc.value;\n };\n }\n return _get(target, property, receiver || target);\n }\n function set(target, property, value, receiver) {\n if (typeof Reflect !== 'undefined' && Reflect.set) {\n set = Reflect.set;\n } else {\n set = function set(target, property, value, receiver) {\n var base = _superPropBase(target, property);\n var desc;\n if (base) {\n desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.set) {\n desc.set.call(receiver, value);\n return true;\n } else if (!desc.writable) {\n return false;\n }\n }\n desc = Object.getOwnPropertyDescriptor(receiver, property);\n if (desc) {\n if (!desc.writable) {\n return false;\n }\n desc.value = value;\n Object.defineProperty(receiver, property, desc);\n } else {\n _defineProperty(receiver, property, value);\n }\n return true;\n };\n }\n return set(target, property, value, receiver);\n }\n function _set(target, property, value, receiver, isStrict) {\n var s = set(target, property, value, receiver || target);\n if (!s && isStrict) {\n throw new Error('failed to set property');\n }\n return value;\n }\n function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n }\n function _taggedTemplateLiteralLoose(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n strings.raw = raw;\n return strings;\n }\n function _temporalRef(val, name) {\n if (val === _temporalUndefined) {\n throw new ReferenceError(name + ' is not defined - temporal dead zone');\n } else {\n return val;\n }\n }\n function _readOnlyError(name) {\n throw new Error('\"' + name + '\" is read-only');\n }\n function _classNameTDZError(name) {\n throw new Error('Class \"' + name + '\" cannot be referenced in computed property keys.');\n }\n var _temporalUndefined = {};\n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n }\n function _slicedToArrayLoose(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimitLoose(arr, i) || _nonIterableRest();\n }\n function _toArray(arr) {\n return _arrayWithHoles(arr) || _iterableToArray(arr) || _nonIterableRest();\n }\n function _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n }\n function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n return arr2;\n }\n }\n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === '[object Arguments]') return Array.from(iter);\n }\n function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i['return'] != null) _i['return']();\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n function _iterableToArrayLimitLoose(arr, i) {\n var _arr = [];\n for (var _iterator = arr[Symbol.iterator](), _step; !(_step = _iterator.next()).done;) {\n _arr.push(_step.value);\n if (i && _arr.length === i) break;\n }\n return _arr;\n }\n function _nonIterableSpread() {\n throw new TypeError('Invalid attempt to spread non-iterable instance');\n }\n function _nonIterableRest() {\n throw new TypeError('Invalid attempt to destructure non-iterable instance');\n }\n function _skipFirstGeneratorNext(fn) {\n return function () {\n var it = fn.apply(this, arguments);\n it.next();\n return it;\n };\n }\n function _toPrimitive(input, hint) {\n if (typeof input !== 'object' || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || 'default');\n if (typeof res !== 'object') return res;\n throw new TypeError('@@toPrimitive must return a primitive value.');\n }\n return (hint === 'string' ? String : Number)(input);\n }\n function _toPropertyKey(arg) {\n var key = _toPrimitive(arg, 'string');\n return typeof key === 'symbol' ? key : String(key);\n }\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that ' + 'proposal-class-properties is enabled and set to use loose mode. ' + 'To use proposal-class-properties in spec mode with decorators, wait for ' + 'the next major version of decorators in stage 2.');\n }\n function _initializerDefineProperty(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object.keys(descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n if (desc.initializer === void 0) {\n Object.defineProperty(target, property, desc);\n desc = null;\n }\n return desc;\n }\n var id = 0;\n function _classPrivateFieldLooseKey(name) {\n return '__private_' + id++ + '_' + name;\n }\n function _classPrivateFieldLooseBase(receiver, privateKey) {\n if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {\n throw new TypeError('attempted to use private field on non-instance');\n }\n return receiver;\n }\n function _classPrivateFieldGet(receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError('attempted to get private field on non-instance');\n }\n var descriptor = privateMap.get(receiver);\n if (descriptor.get) {\n return descriptor.get.call(receiver);\n }\n return descriptor.value;\n }\n function _classPrivateFieldSet(receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError('attempted to set private field on non-instance');\n }\n var descriptor = privateMap.get(receiver);\n if (descriptor.set) {\n descriptor.set.call(receiver, value);\n } else {\n if (!descriptor.writable) {\n throw new TypeError('attempted to set read only private field');\n }\n descriptor.value = value;\n }\n return value;\n }\n function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) {\n if (receiver !== classConstructor) {\n throw new TypeError('Private static access of wrong provenance');\n }\n return descriptor.value;\n }\n function _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) {\n if (receiver !== classConstructor) {\n throw new TypeError('Private static access of wrong provenance');\n }\n if (!descriptor.writable) {\n throw new TypeError('attempted to set read only private field');\n }\n descriptor.value = value;\n return value;\n }\n function _classStaticPrivateMethodGet(receiver, classConstructor, method) {\n if (receiver !== classConstructor) {\n throw new TypeError('Private static access of wrong provenance');\n }\n return method;\n }\n function _classStaticPrivateMethodSet() {\n throw new TypeError('attempted to set read only static private field');\n }\n function _decorate(decorators, factory, superClass, mixins) {\n var api = _getDecoratorsApi();\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n api = mixins[i](api);\n }\n }\n var r = factory(function initialize(O) {\n api.initializeInstanceElements(O, decorated.elements);\n }, superClass);\n var decorated = api.decorateClass(_coalesceClassElements(r.d.map(_createElementDescriptor)), decorators);\n api.initializeClassElements(r.F, decorated.elements);\n return api.runClassFinishers(r.F, decorated.finishers);\n }\n function _getDecoratorsApi() {\n _getDecoratorsApi = function () {\n return api;\n };\n var api = {\n elementsDefinitionOrder: [['method'], ['field']],\n initializeInstanceElements: function (O, elements) {\n ['method', 'field'].forEach(function (kind) {\n elements.forEach(function (element) {\n if (element.kind === kind && element.placement === 'own') {\n this.defineClassElement(O, element);\n }\n }, this);\n }, this);\n },\n initializeClassElements: function (F, elements) {\n var proto = F.prototype;\n ['method', 'field'].forEach(function (kind) {\n elements.forEach(function (element) {\n var placement = element.placement;\n if (element.kind === kind && (placement === 'static' || placement === 'prototype')) {\n var receiver = placement === 'static' ? F : proto;\n this.defineClassElement(receiver, element);\n }\n }, this);\n }, this);\n },\n defineClassElement: function (receiver, element) {\n var descriptor = element.descriptor;\n if (element.kind === 'field') {\n var initializer = element.initializer;\n descriptor = {\n enumerable: descriptor.enumerable,\n writable: descriptor.writable,\n configurable: descriptor.configurable,\n value: initializer === void 0 ? void 0 : initializer.call(receiver)\n };\n }\n Object.defineProperty(receiver, element.key, descriptor);\n },\n decorateClass: function (elements, decorators) {\n var newElements = [];\n var finishers = [];\n var placements = {\n static: [],\n prototype: [],\n own: []\n };\n elements.forEach(function (element) {\n this.addElementPlacement(element, placements);\n }, this);\n elements.forEach(function (element) {\n if (!_hasDecorators(element)) return newElements.push(element);\n var elementFinishersExtras = this.decorateElement(element, placements);\n newElements.push(elementFinishersExtras.element);\n newElements.push.apply(newElements, elementFinishersExtras.extras);\n finishers.push.apply(finishers, elementFinishersExtras.finishers);\n }, this);\n if (!decorators) {\n return {\n elements: newElements,\n finishers: finishers\n };\n }\n var result = this.decorateConstructor(newElements, decorators);\n finishers.push.apply(finishers, result.finishers);\n result.finishers = finishers;\n return result;\n },\n addElementPlacement: function (element, placements, silent) {\n var keys = placements[element.placement];\n if (!silent && keys.indexOf(element.key) !== -1) {\n throw new TypeError('Duplicated element (' + element.key + ')');\n }\n keys.push(element.key);\n },\n decorateElement: function (element, placements) {\n var extras = [];\n var finishers = [];\n for (var decorators = element.decorators, i = decorators.length - 1; i >= 0; i--) {\n var keys = placements[element.placement];\n keys.splice(keys.indexOf(element.key), 1);\n var elementObject = this.fromElementDescriptor(element);\n var elementFinisherExtras = this.toElementFinisherExtras((0, decorators[i])(elementObject) || elementObject);\n element = elementFinisherExtras.element;\n this.addElementPlacement(element, placements);\n if (elementFinisherExtras.finisher) {\n finishers.push(elementFinisherExtras.finisher);\n }\n var newExtras = elementFinisherExtras.extras;\n if (newExtras) {\n for (var j = 0; j < newExtras.length; j++) {\n this.addElementPlacement(newExtras[j], placements);\n }\n extras.push.apply(extras, newExtras);\n }\n }\n return {\n element: element,\n finishers: finishers,\n extras: extras\n };\n },\n decorateConstructor: function (elements, decorators) {\n var finishers = [];\n for (var i = decorators.length - 1; i >= 0; i--) {\n var obj = this.fromClassDescriptor(elements);\n var elementsAndFinisher = this.toClassDescriptor((0, decorators[i])(obj) || obj);\n if (elementsAndFinisher.finisher !== undefined) {\n finishers.push(elementsAndFinisher.finisher);\n }\n if (elementsAndFinisher.elements !== undefined) {\n elements = elementsAndFinisher.elements;\n for (var j = 0; j < elements.length - 1; j++) {\n for (var k = j + 1; k < elements.length; k++) {\n if (elements[j].key === elements[k].key && elements[j].placement === elements[k].placement) {\n throw new TypeError('Duplicated element (' + elements[j].key + ')');\n }\n }\n }\n }\n }\n return {\n elements: elements,\n finishers: finishers\n };\n },\n fromElementDescriptor: function (element) {\n var obj = {\n kind: element.kind,\n key: element.key,\n placement: element.placement,\n descriptor: element.descriptor\n };\n var desc = {\n value: 'Descriptor',\n configurable: true\n };\n Object.defineProperty(obj, Symbol.toStringTag, desc);\n if (element.kind === 'field') obj.initializer = element.initializer;\n return obj;\n },\n toElementDescriptors: function (elementObjects) {\n if (elementObjects === undefined) return;\n return _toArray(elementObjects).map(function (elementObject) {\n var element = this.toElementDescriptor(elementObject);\n this.disallowProperty(elementObject, 'finisher', 'An element descriptor');\n this.disallowProperty(elementObject, 'extras', 'An element descriptor');\n return element;\n }, this);\n },\n toElementDescriptor: function (elementObject) {\n var kind = String(elementObject.kind);\n if (kind !== 'method' && kind !== 'field') {\n throw new TypeError('An element descriptor\\'s .kind property must be either \"method\" or' + ' \"field\", but a decorator created an element descriptor with' + ' .kind \"' + kind + '\"');\n }\n var key = _toPropertyKey(elementObject.key);\n var placement = String(elementObject.placement);\n if (placement !== 'static' && placement !== 'prototype' && placement !== 'own') {\n throw new TypeError('An element descriptor\\'s .placement property must be one of \"static\",' + ' \"prototype\" or \"own\", but a decorator created an element descriptor' + ' with .placement \"' + placement + '\"');\n }\n var descriptor = elementObject.descriptor;\n this.disallowProperty(elementObject, 'elements', 'An element descriptor');\n var element = {\n kind: kind,\n key: key,\n placement: placement,\n descriptor: Object.assign({}, descriptor)\n };\n if (kind !== 'field') {\n this.disallowProperty(elementObject, 'initializer', 'A method descriptor');\n } else {\n this.disallowProperty(descriptor, 'get', 'The property descriptor of a field descriptor');\n this.disallowProperty(descriptor, 'set', 'The property descriptor of a field descriptor');\n this.disallowProperty(descriptor, 'value', 'The property descriptor of a field descriptor');\n element.initializer = elementObject.initializer;\n }\n return element;\n },\n toElementFinisherExtras: function (elementObject) {\n var element = this.toElementDescriptor(elementObject);\n var finisher = _optionalCallableProperty(elementObject, 'finisher');\n var extras = this.toElementDescriptors(elementObject.extras);\n return {\n element: element,\n finisher: finisher,\n extras: extras\n };\n },\n fromClassDescriptor: function (elements) {\n var obj = {\n kind: 'class',\n elements: elements.map(this.fromElementDescriptor, this)\n };\n var desc = {\n value: 'Descriptor',\n configurable: true\n };\n Object.defineProperty(obj, Symbol.toStringTag, desc);\n return obj;\n },\n toClassDescriptor: function (obj) {\n var kind = String(obj.kind);\n if (kind !== 'class') {\n throw new TypeError('A class descriptor\\'s .kind property must be \"class\", but a decorator' + ' created a class descriptor with .kind \"' + kind + '\"');\n }\n this.disallowProperty(obj, 'key', 'A class descriptor');\n this.disallowProperty(obj, 'placement', 'A class descriptor');\n this.disallowProperty(obj, 'descriptor', 'A class descriptor');\n this.disallowProperty(obj, 'initializer', 'A class descriptor');\n this.disallowProperty(obj, 'extras', 'A class descriptor');\n var finisher = _optionalCallableProperty(obj, 'finisher');\n var elements = this.toElementDescriptors(obj.elements);\n return {\n elements: elements,\n finisher: finisher\n };\n },\n runClassFinishers: function (constructor, finishers) {\n for (var i = 0; i < finishers.length; i++) {\n var newConstructor = (0, finishers[i])(constructor);\n if (newConstructor !== undefined) {\n if (typeof newConstructor !== 'function') {\n throw new TypeError('Finishers must return a constructor.');\n }\n constructor = newConstructor;\n }\n }\n return constructor;\n },\n disallowProperty: function (obj, name, objectType) {\n if (obj[name] !== undefined) {\n throw new TypeError(objectType + \" can't have a .\" + name + ' property.');\n }\n }\n };\n return api;\n }\n function _createElementDescriptor(def) {\n var key = _toPropertyKey(def.key);\n var descriptor;\n if (def.kind === 'method') {\n descriptor = {\n value: def.value,\n writable: true,\n configurable: true,\n enumerable: false\n };\n } else if (def.kind === 'get') {\n descriptor = {\n get: def.value,\n configurable: true,\n enumerable: false\n };\n } else if (def.kind === 'set') {\n descriptor = {\n set: def.value,\n configurable: true,\n enumerable: false\n };\n } else if (def.kind === 'field') {\n descriptor = {\n configurable: true,\n writable: true,\n enumerable: true\n };\n }\n var element = {\n kind: def.kind === 'field' ? 'field' : 'method',\n key: key,\n placement: def.static ? 'static' : def.kind === 'field' ? 'own' : 'prototype',\n descriptor: descriptor\n };\n if (def.decorators) element.decorators = def.decorators;\n if (def.kind === 'field') element.initializer = def.value;\n return element;\n }\n function _coalesceGetterSetter(element, other) {\n if (element.descriptor.get !== undefined) {\n other.descriptor.get = element.descriptor.get;\n } else {\n other.descriptor.set = element.descriptor.set;\n }\n }\n function _coalesceClassElements(elements) {\n var newElements = [];\n var isSameElement = function (other) {\n return other.kind === 'method' && other.key === element.key && other.placement === element.placement;\n };\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n var other;\n if (element.kind === 'method' && (other = newElements.find(isSameElement))) {\n if (_isDataDescriptor(element.descriptor) || _isDataDescriptor(other.descriptor)) {\n if (_hasDecorators(element) || _hasDecorators(other)) {\n throw new ReferenceError('Duplicated methods (' + element.key + \") can't be decorated.\");\n }\n other.descriptor = element.descriptor;\n } else {\n if (_hasDecorators(element)) {\n if (_hasDecorators(other)) {\n throw new ReferenceError(\"Decorators can't be placed on different accessors with for \" + 'the same property (' + element.key + ').');\n }\n other.decorators = element.decorators;\n }\n _coalesceGetterSetter(element, other);\n }\n } else {\n newElements.push(element);\n }\n }\n return newElements;\n }\n function _hasDecorators(element) {\n return element.decorators && element.decorators.length;\n }\n function _isDataDescriptor(desc) {\n return desc !== undefined && !(desc.value === undefined && desc.writable === undefined);\n }\n function _optionalCallableProperty(obj, name) {\n var value = obj[name];\n if (value !== undefined && typeof value !== 'function') {\n throw new TypeError(\"Expected '\" + name + \"' to be a function\");\n }\n return value;\n }\n function _classPrivateMethodGet(receiver, privateSet, fn) {\n if (!privateSet.has(receiver)) {\n throw new TypeError('attempted to get private field on non-instance');\n }\n return fn;\n }\n function _classPrivateMethodSet() {\n throw new TypeError('attempted to reassign private method');\n }\n function _wrapRegExp(re, groups) {\n _wrapRegExp = function (re, groups) {\n return new BabelRegExp(re, groups);\n };\n var _RegExp = _wrapNativeSuper(RegExp);\n var _super = RegExp.prototype;\n var _groups = new WeakMap();\n function BabelRegExp(re, groups) {\n var _this = _RegExp.call(this, re);\n _groups.set(_this, groups);\n return _this;\n }\n _inherits(BabelRegExp, _RegExp);\n BabelRegExp.prototype.exec = function (str) {\n var result = _super.exec.call(this, str);\n if (result) result.groups = buildGroups(result, this);\n return result;\n };\n BabelRegExp.prototype[Symbol.replace] = function (str, substitution) {\n if (typeof substitution === 'string') {\n var groups = _groups.get(this);\n return _super[Symbol.replace].call(this, str, substitution.replace(/\\$<([^>]+)>/g, function (_, name) {\n return '$' + groups[name];\n }));\n } else if (typeof substitution === 'function') {\n var _this = this;\n return _super[Symbol.replace].call(this, str, function () {\n var args = [];\n args.push.apply(args, arguments);\n if (typeof args[args.length - 1] !== 'object') {\n args.push(buildGroups(args, _this));\n }\n return substitution.apply(this, args);\n });\n } else {\n return _super[Symbol.replace].call(this, str, substitution);\n }\n };\n function buildGroups(result, re) {\n var g = _groups.get(re);\n return Object.keys(g).reduce(function (groups, name) {\n groups[name] = result[g[name]];\n return groups;\n }, Object.create(null));\n }\n return _wrapRegExp.apply(this, arguments);\n }\n var vectorMultiply = function vectorMultiply(v, amount) {\n return createVector(v.x * amount, v.y * amount);\n };\n var vectorAdd = function vectorAdd(a, b) {\n return createVector(a.x + b.x, a.y + b.y);\n };\n var vectorNormalize = function vectorNormalize(v) {\n var l = Math.sqrt(v.x * v.x + v.y * v.y);\n if (l === 0) {\n return {\n x: 0,\n y: 0\n };\n }\n return createVector(v.x / l, v.y / l);\n };\n var vectorRotate = function vectorRotate(v, radians, origin) {\n var cos = Math.cos(radians);\n var sin = Math.sin(radians);\n var t = createVector(v.x - origin.x, v.y - origin.y);\n return createVector(origin.x + cos * t.x - sin * t.y, origin.y + sin * t.x + cos * t.y);\n };\n var createVector = function createVector() {\n var x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return {\n x: x,\n y: y\n };\n };\n var getMarkupValue = function getMarkupValue(value, size) {\n var scalar = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var axis = arguments.length > 3 ? arguments[3] : undefined;\n if (typeof value === 'string') {\n return parseFloat(value) * scalar;\n }\n if (typeof value === 'number') {\n return value * (axis ? size[axis] : Math.min(size.width, size.height));\n }\n return;\n };\n var getMarkupStyles = function getMarkupStyles(markup, size, scale) {\n var lineStyle = markup.borderStyle || markup.lineStyle || 'solid';\n var fill = markup.backgroundColor || markup.fontColor || 'transparent';\n var stroke = markup.borderColor || markup.lineColor || 'transparent';\n var strokeWidth = getMarkupValue(markup.borderWidth || markup.lineWidth, size, scale);\n var lineCap = markup.lineCap || 'round';\n var lineJoin = markup.lineJoin || 'round';\n var dashes = typeof lineStyle === 'string' ? '' : lineStyle.map(function (v) {\n return getMarkupValue(v, size, scale);\n }).join(',');\n var opacity = markup.opacity || 1;\n return {\n 'stroke-linecap': lineCap,\n 'stroke-linejoin': lineJoin,\n 'stroke-width': strokeWidth || 0,\n 'stroke-dasharray': dashes,\n stroke: stroke,\n fill: fill,\n opacity: opacity\n };\n };\n var isDefined = function isDefined(value) {\n return value != null;\n };\n var getMarkupRect = function getMarkupRect(rect, size) {\n var scalar = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var left = getMarkupValue(rect.x, size, scalar, 'width') || getMarkupValue(rect.left, size, scalar, 'width');\n var top = getMarkupValue(rect.y, size, scalar, 'height') || getMarkupValue(rect.top, size, scalar, 'height');\n var width = getMarkupValue(rect.width, size, scalar, 'width');\n var height = getMarkupValue(rect.height, size, scalar, 'height');\n var right = getMarkupValue(rect.right, size, scalar, 'width');\n var bottom = getMarkupValue(rect.bottom, size, scalar, 'height');\n if (!isDefined(top)) {\n if (isDefined(height) && isDefined(bottom)) {\n top = size.height - height - bottom;\n } else {\n top = bottom;\n }\n }\n if (!isDefined(left)) {\n if (isDefined(width) && isDefined(right)) {\n left = size.width - width - right;\n } else {\n left = right;\n }\n }\n if (!isDefined(width)) {\n if (isDefined(left) && isDefined(right)) {\n width = size.width - left - right;\n } else {\n width = 0;\n }\n }\n if (!isDefined(height)) {\n if (isDefined(top) && isDefined(bottom)) {\n height = size.height - top - bottom;\n } else {\n height = 0;\n }\n }\n return {\n x: left || 0,\n y: top || 0,\n width: width || 0,\n height: height || 0\n };\n };\n var pointsToPathShape = function pointsToPathShape(points) {\n return points.map(function (point, index) {\n return ''.concat(index === 0 ? 'M' : 'L', ' ').concat(point.x, ' ').concat(point.y);\n }).join(' ');\n };\n var setAttributes = function setAttributes(element, attr) {\n return Object.keys(attr).forEach(function (key) {\n return element.setAttribute(key, attr[key]);\n });\n };\n var ns = 'http://www.w3.org/2000/svg';\n var svg = function svg(tag, attr) {\n var element = document.createElementNS(ns, tag);\n if (attr) {\n setAttributes(element, attr);\n }\n return element;\n };\n var updateRect = function updateRect(element) {\n return setAttributes(element, Object.assign({}, element.rect, element.styles));\n };\n var updateEllipse = function updateEllipse(element) {\n var cx = element.rect.x + element.rect.width * 0.5;\n var cy = element.rect.y + element.rect.height * 0.5;\n var rx = element.rect.width * 0.5;\n var ry = element.rect.height * 0.5;\n return setAttributes(element, Object.assign({\n cx: cx,\n cy: cy,\n rx: rx,\n ry: ry\n }, element.styles));\n };\n var IMAGE_FIT_STYLE = {\n contain: 'xMidYMid meet',\n cover: 'xMidYMid slice'\n };\n var updateImage = function updateImage(element, markup) {\n setAttributes(element, Object.assign({}, element.rect, element.styles, {\n preserveAspectRatio: IMAGE_FIT_STYLE[markup.fit] || 'none'\n }));\n };\n var TEXT_ANCHOR = {\n left: 'start',\n center: 'middle',\n right: 'end'\n };\n var updateText = function updateText(element, markup, size, scale) {\n var fontSize = getMarkupValue(markup.fontSize, size, scale);\n var fontFamily = markup.fontFamily || 'sans-serif';\n var fontWeight = markup.fontWeight || 'normal';\n var textAlign = TEXT_ANCHOR[markup.textAlign] || 'start';\n setAttributes(element, Object.assign({}, element.rect, element.styles, {\n 'stroke-width': 0,\n 'font-weight': fontWeight,\n 'font-size': fontSize,\n 'font-family': fontFamily,\n 'text-anchor': textAlign\n }));\n\n // update text\n if (element.text !== markup.text) {\n element.text = markup.text;\n element.textContent = markup.text.length ? markup.text : ' ';\n }\n };\n var updateLine = function updateLine(element, markup, size, scale) {\n setAttributes(element, Object.assign({}, element.rect, element.styles, {\n fill: 'none'\n }));\n var line = element.childNodes[0];\n var begin = element.childNodes[1];\n var end = element.childNodes[2];\n var origin = element.rect;\n var target = {\n x: element.rect.x + element.rect.width,\n y: element.rect.y + element.rect.height\n };\n setAttributes(line, {\n x1: origin.x,\n y1: origin.y,\n x2: target.x,\n y2: target.y\n });\n if (!markup.lineDecoration) return;\n begin.style.display = 'none';\n end.style.display = 'none';\n var v = vectorNormalize({\n x: target.x - origin.x,\n y: target.y - origin.y\n });\n var l = getMarkupValue(0.05, size, scale);\n if (markup.lineDecoration.indexOf('arrow-begin') !== -1) {\n var arrowBeginRotationPoint = vectorMultiply(v, l);\n var arrowBeginCenter = vectorAdd(origin, arrowBeginRotationPoint);\n var arrowBeginA = vectorRotate(origin, 2, arrowBeginCenter);\n var arrowBeginB = vectorRotate(origin, -2, arrowBeginCenter);\n setAttributes(begin, {\n style: 'display:block;',\n d: 'M'.concat(arrowBeginA.x, ',').concat(arrowBeginA.y, ' L').concat(origin.x, ',').concat(origin.y, ' L').concat(arrowBeginB.x, ',').concat(arrowBeginB.y)\n });\n }\n if (markup.lineDecoration.indexOf('arrow-end') !== -1) {\n var arrowEndRotationPoint = vectorMultiply(v, -l);\n var arrowEndCenter = vectorAdd(target, arrowEndRotationPoint);\n var arrowEndA = vectorRotate(target, 2, arrowEndCenter);\n var arrowEndB = vectorRotate(target, -2, arrowEndCenter);\n setAttributes(end, {\n style: 'display:block;',\n d: 'M'.concat(arrowEndA.x, ',').concat(arrowEndA.y, ' L').concat(target.x, ',').concat(target.y, ' L').concat(arrowEndB.x, ',').concat(arrowEndB.y)\n });\n }\n };\n var updatePath = function updatePath(element, markup, size, scale) {\n setAttributes(element, Object.assign({}, element.styles, {\n fill: 'none',\n d: pointsToPathShape(markup.points.map(function (point) {\n return {\n x: getMarkupValue(point.x, size, scale, 'width'),\n y: getMarkupValue(point.y, size, scale, 'height')\n };\n }))\n }));\n };\n var createShape = function createShape(node) {\n return function (markup) {\n return svg(node, {\n id: markup.id\n });\n };\n };\n var createImage = function createImage(markup) {\n var shape = svg('image', {\n id: markup.id,\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n opacity: '0'\n });\n shape.onload = function () {\n shape.setAttribute('opacity', markup.opacity || 1);\n };\n shape.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', markup.src);\n return shape;\n };\n var createLine = function createLine(markup) {\n var shape = svg('g', {\n id: markup.id,\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round'\n });\n var line = svg('line');\n shape.appendChild(line);\n var begin = svg('path');\n shape.appendChild(begin);\n var end = svg('path');\n shape.appendChild(end);\n return shape;\n };\n var CREATE_TYPE_ROUTES = {\n image: createImage,\n rect: createShape('rect'),\n ellipse: createShape('ellipse'),\n text: createShape('text'),\n path: createShape('path'),\n line: createLine\n };\n var UPDATE_TYPE_ROUTES = {\n rect: updateRect,\n ellipse: updateEllipse,\n image: updateImage,\n text: updateText,\n path: updatePath,\n line: updateLine\n };\n var createMarkupByType = function createMarkupByType(type, markup) {\n return CREATE_TYPE_ROUTES[type](markup);\n };\n var updateMarkupByType = function updateMarkupByType(element, type, markup, size, scale) {\n if (type !== 'path') {\n element.rect = getMarkupRect(markup, size, scale);\n }\n element.styles = getMarkupStyles(markup, size, scale);\n UPDATE_TYPE_ROUTES[type](element, markup, size, scale);\n };\n var MARKUP_RECT = ['x', 'y', 'left', 'top', 'right', 'bottom', 'width', 'height'];\n var toOptionalFraction = function toOptionalFraction(value) {\n return typeof value === 'string' && /%/.test(value) ? parseFloat(value) / 100 : value;\n };\n\n // adds default markup properties, clones markup\n var prepareMarkup = function prepareMarkup(markup) {\n var _markup = _slicedToArray(markup, 2),\n type = _markup[0],\n props = _markup[1];\n var rect = props.points ? {} : MARKUP_RECT.reduce(function (prev, curr) {\n prev[curr] = toOptionalFraction(props[curr]);\n return prev;\n }, {});\n return [type, Object.assign({\n zIndex: 0\n }, props, rect)];\n };\n var sortMarkupByZIndex = function sortMarkupByZIndex(a, b) {\n if (a[1].zIndex > b[1].zIndex) {\n return 1;\n }\n if (a[1].zIndex < b[1].zIndex) {\n return -1;\n }\n return 0;\n };\n var createMarkupView = function createMarkupView(_) {\n return _.utils.createView({\n name: 'image-preview-markup',\n tag: 'svg',\n ignoreRect: true,\n mixins: {\n apis: ['width', 'height', 'crop', 'markup', 'resize', 'dirty']\n },\n write: function write(_ref) {\n var root = _ref.root,\n props = _ref.props;\n if (!props.dirty) return;\n var crop = props.crop,\n resize = props.resize,\n markup = props.markup;\n var viewWidth = props.width;\n var viewHeight = props.height;\n var cropWidth = crop.width;\n var cropHeight = crop.height;\n if (resize) {\n var _size = resize.size;\n var outputWidth = _size && _size.width;\n var outputHeight = _size && _size.height;\n var outputFit = resize.mode;\n var outputUpscale = resize.upscale;\n if (outputWidth && !outputHeight) outputHeight = outputWidth;\n if (outputHeight && !outputWidth) outputWidth = outputHeight;\n var shouldUpscale = cropWidth < outputWidth && cropHeight < outputHeight;\n if (!shouldUpscale || shouldUpscale && outputUpscale) {\n var scalarWidth = outputWidth / cropWidth;\n var scalarHeight = outputHeight / cropHeight;\n if (outputFit === 'force') {\n cropWidth = outputWidth;\n cropHeight = outputHeight;\n } else {\n var scalar;\n if (outputFit === 'cover') {\n scalar = Math.max(scalarWidth, scalarHeight);\n } else if (outputFit === 'contain') {\n scalar = Math.min(scalarWidth, scalarHeight);\n }\n cropWidth = cropWidth * scalar;\n cropHeight = cropHeight * scalar;\n }\n }\n }\n var size = {\n width: viewWidth,\n height: viewHeight\n };\n root.element.setAttribute('width', size.width);\n root.element.setAttribute('height', size.height);\n var scale = Math.min(viewWidth / cropWidth, viewHeight / cropHeight);\n\n // clear\n root.element.innerHTML = '';\n\n // get filter\n var markupFilter = root.query('GET_IMAGE_PREVIEW_MARKUP_FILTER');\n\n // draw new\n markup.filter(markupFilter).map(prepareMarkup).sort(sortMarkupByZIndex).forEach(function (markup) {\n var _markup = _slicedToArray(markup, 2),\n type = _markup[0],\n settings = _markup[1];\n\n // create\n var element = createMarkupByType(type, settings);\n\n // update\n updateMarkupByType(element, type, settings, size, scale);\n\n // add\n root.element.appendChild(element);\n });\n }\n });\n };\n var createVector$1 = function createVector(x, y) {\n return {\n x: x,\n y: y\n };\n };\n var vectorDot = function vectorDot(a, b) {\n return a.x * b.x + a.y * b.y;\n };\n var vectorSubtract = function vectorSubtract(a, b) {\n return createVector$1(a.x - b.x, a.y - b.y);\n };\n var vectorDistanceSquared = function vectorDistanceSquared(a, b) {\n return vectorDot(vectorSubtract(a, b), vectorSubtract(a, b));\n };\n var vectorDistance = function vectorDistance(a, b) {\n return Math.sqrt(vectorDistanceSquared(a, b));\n };\n var getOffsetPointOnEdge = function getOffsetPointOnEdge(length, rotation) {\n var a = length;\n var A = 1.5707963267948966;\n var B = rotation;\n var C = 1.5707963267948966 - rotation;\n var sinA = Math.sin(A);\n var sinB = Math.sin(B);\n var sinC = Math.sin(C);\n var cosC = Math.cos(C);\n var ratio = a / sinA;\n var b = ratio * sinB;\n var c = ratio * sinC;\n return createVector$1(cosC * b, cosC * c);\n };\n var getRotatedRectSize = function getRotatedRectSize(rect, rotation) {\n var w = rect.width;\n var h = rect.height;\n var hor = getOffsetPointOnEdge(w, rotation);\n var ver = getOffsetPointOnEdge(h, rotation);\n var tl = createVector$1(rect.x + Math.abs(hor.x), rect.y - Math.abs(hor.y));\n var tr = createVector$1(rect.x + rect.width + Math.abs(ver.y), rect.y + Math.abs(ver.x));\n var bl = createVector$1(rect.x - Math.abs(ver.y), rect.y + rect.height - Math.abs(ver.x));\n return {\n width: vectorDistance(tl, tr),\n height: vectorDistance(tl, bl)\n };\n };\n var calculateCanvasSize = function calculateCanvasSize(image, canvasAspectRatio) {\n var zoom = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var imageAspectRatio = image.height / image.width;\n\n // determine actual pixels on x and y axis\n var canvasWidth = 1;\n var canvasHeight = canvasAspectRatio;\n var imgWidth = 1;\n var imgHeight = imageAspectRatio;\n if (imgHeight > canvasHeight) {\n imgHeight = canvasHeight;\n imgWidth = imgHeight / imageAspectRatio;\n }\n var scalar = Math.max(canvasWidth / imgWidth, canvasHeight / imgHeight);\n var width = image.width / (zoom * scalar * imgWidth);\n var height = width * canvasAspectRatio;\n return {\n width: width,\n height: height\n };\n };\n var getImageRectZoomFactor = function getImageRectZoomFactor(imageRect, cropRect, rotation, center) {\n // calculate available space round image center position\n var cx = center.x > 0.5 ? 1 - center.x : center.x;\n var cy = center.y > 0.5 ? 1 - center.y : center.y;\n var imageWidth = cx * 2 * imageRect.width;\n var imageHeight = cy * 2 * imageRect.height;\n\n // calculate rotated crop rectangle size\n var rotatedCropSize = getRotatedRectSize(cropRect, rotation);\n\n // calculate scalar required to fit image\n return Math.max(rotatedCropSize.width / imageWidth, rotatedCropSize.height / imageHeight);\n };\n var getCenteredCropRect = function getCenteredCropRect(container, aspectRatio) {\n var width = container.width;\n var height = width * aspectRatio;\n if (height > container.height) {\n height = container.height;\n width = height / aspectRatio;\n }\n var x = (container.width - width) * 0.5;\n var y = (container.height - height) * 0.5;\n return {\n x: x,\n y: y,\n width: width,\n height: height\n };\n };\n var getCurrentCropSize = function getCurrentCropSize(imageSize) {\n var crop = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var zoom = crop.zoom,\n rotation = crop.rotation,\n center = crop.center,\n aspectRatio = crop.aspectRatio;\n if (!aspectRatio) aspectRatio = imageSize.height / imageSize.width;\n var canvasSize = calculateCanvasSize(imageSize, aspectRatio, zoom);\n var canvasCenter = {\n x: canvasSize.width * 0.5,\n y: canvasSize.height * 0.5\n };\n var stage = {\n x: 0,\n y: 0,\n width: canvasSize.width,\n height: canvasSize.height,\n center: canvasCenter\n };\n var shouldLimit = typeof crop.scaleToFit === 'undefined' || crop.scaleToFit;\n var stageZoomFactor = getImageRectZoomFactor(imageSize, getCenteredCropRect(stage, aspectRatio), rotation, shouldLimit ? center : {\n x: 0.5,\n y: 0.5\n });\n var scale = zoom * stageZoomFactor;\n\n // start drawing\n return {\n widthFloat: canvasSize.width / scale,\n heightFloat: canvasSize.height / scale,\n width: Math.round(canvasSize.width / scale),\n height: Math.round(canvasSize.height / scale)\n };\n };\n var IMAGE_SCALE_SPRING_PROPS = {\n type: 'spring',\n stiffness: 0.5,\n damping: 0.45,\n mass: 10\n };\n\n // does horizontal and vertical flipping\n var createBitmapView = function createBitmapView(_) {\n return _.utils.createView({\n name: 'image-bitmap',\n ignoreRect: true,\n mixins: {\n styles: ['scaleX', 'scaleY']\n },\n create: function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n root.appendChild(props.image);\n }\n });\n };\n\n // shifts and rotates image\n var createImageCanvasWrapper = function createImageCanvasWrapper(_) {\n return _.utils.createView({\n name: 'image-canvas-wrapper',\n tag: 'div',\n ignoreRect: true,\n mixins: {\n apis: ['crop', 'width', 'height'],\n styles: ['originX', 'originY', 'translateX', 'translateY', 'scaleX', 'scaleY', 'rotateZ'],\n animations: {\n originX: IMAGE_SCALE_SPRING_PROPS,\n originY: IMAGE_SCALE_SPRING_PROPS,\n scaleX: IMAGE_SCALE_SPRING_PROPS,\n scaleY: IMAGE_SCALE_SPRING_PROPS,\n translateX: IMAGE_SCALE_SPRING_PROPS,\n translateY: IMAGE_SCALE_SPRING_PROPS,\n rotateZ: IMAGE_SCALE_SPRING_PROPS\n }\n },\n create: function create(_ref2) {\n var root = _ref2.root,\n props = _ref2.props;\n props.width = props.image.width;\n props.height = props.image.height;\n root.ref.bitmap = root.appendChildView(root.createChildView(createBitmapView(_), {\n image: props.image\n }));\n },\n write: function write(_ref3) {\n var root = _ref3.root,\n props = _ref3.props;\n var flip = props.crop.flip;\n var bitmap = root.ref.bitmap;\n bitmap.scaleX = flip.horizontal ? -1 : 1;\n bitmap.scaleY = flip.vertical ? -1 : 1;\n }\n });\n };\n\n // clips canvas to correct aspect ratio\n var createClipView = function createClipView(_) {\n return _.utils.createView({\n name: 'image-clip',\n tag: 'div',\n ignoreRect: true,\n mixins: {\n apis: ['crop', 'markup', 'resize', 'width', 'height', 'dirty', 'background'],\n styles: ['width', 'height', 'opacity'],\n animations: {\n opacity: {\n type: 'tween',\n duration: 250\n }\n }\n },\n didWriteView: function didWriteView(_ref4) {\n var root = _ref4.root,\n props = _ref4.props;\n if (!props.background) return;\n root.element.style.backgroundColor = props.background;\n },\n create: function create(_ref5) {\n var root = _ref5.root,\n props = _ref5.props;\n root.ref.image = root.appendChildView(root.createChildView(createImageCanvasWrapper(_), Object.assign({}, props)));\n root.ref.createMarkup = function () {\n if (root.ref.markup) return;\n root.ref.markup = root.appendChildView(root.createChildView(createMarkupView(_), Object.assign({}, props)));\n };\n root.ref.destroyMarkup = function () {\n if (!root.ref.markup) return;\n root.removeChildView(root.ref.markup);\n root.ref.markup = null;\n };\n\n // set up transparency grid\n var transparencyIndicator = root.query('GET_IMAGE_PREVIEW_TRANSPARENCY_INDICATOR');\n if (transparencyIndicator === null) return;\n\n // grid pattern\n if (transparencyIndicator === 'grid') {\n root.element.dataset.transparencyIndicator = transparencyIndicator;\n }\n // basic color\n else {\n root.element.dataset.transparencyIndicator = 'color';\n }\n },\n write: function write(_ref6) {\n var root = _ref6.root,\n props = _ref6.props,\n shouldOptimize = _ref6.shouldOptimize;\n var crop = props.crop,\n markup = props.markup,\n resize = props.resize,\n dirty = props.dirty,\n width = props.width,\n height = props.height;\n root.ref.image.crop = crop;\n var stage = {\n x: 0,\n y: 0,\n width: width,\n height: height,\n center: {\n x: width * 0.5,\n y: height * 0.5\n }\n };\n var image = {\n width: root.ref.image.width,\n height: root.ref.image.height\n };\n var origin = {\n x: crop.center.x * image.width,\n y: crop.center.y * image.height\n };\n var translation = {\n x: stage.center.x - image.width * crop.center.x,\n y: stage.center.y - image.height * crop.center.y\n };\n var rotation = Math.PI * 2 + crop.rotation % (Math.PI * 2);\n var cropAspectRatio = crop.aspectRatio || image.height / image.width;\n var shouldLimit = typeof crop.scaleToFit === 'undefined' || crop.scaleToFit;\n var stageZoomFactor = getImageRectZoomFactor(image, getCenteredCropRect(stage, cropAspectRatio), rotation, shouldLimit ? crop.center : {\n x: 0.5,\n y: 0.5\n });\n var scale = crop.zoom * stageZoomFactor;\n\n // update markup view\n if (markup && markup.length) {\n root.ref.createMarkup();\n root.ref.markup.width = width;\n root.ref.markup.height = height;\n root.ref.markup.resize = resize;\n root.ref.markup.dirty = dirty;\n root.ref.markup.markup = markup;\n root.ref.markup.crop = getCurrentCropSize(image, crop);\n } else if (root.ref.markup) {\n root.ref.destroyMarkup();\n }\n\n // update image view\n var imageView = root.ref.image;\n\n // don't update clip layout\n if (shouldOptimize) {\n imageView.originX = null;\n imageView.originY = null;\n imageView.translateX = null;\n imageView.translateY = null;\n imageView.rotateZ = null;\n imageView.scaleX = null;\n imageView.scaleY = null;\n return;\n }\n imageView.originX = origin.x;\n imageView.originY = origin.y;\n imageView.translateX = translation.x;\n imageView.translateY = translation.y;\n imageView.rotateZ = rotation;\n imageView.scaleX = scale;\n imageView.scaleY = scale;\n }\n });\n };\n var createImageView = function createImageView(_) {\n return _.utils.createView({\n name: 'image-preview',\n tag: 'div',\n ignoreRect: true,\n mixins: {\n apis: ['image', 'crop', 'markup', 'resize', 'dirty', 'background'],\n styles: ['translateY', 'scaleX', 'scaleY', 'opacity'],\n animations: {\n scaleX: IMAGE_SCALE_SPRING_PROPS,\n scaleY: IMAGE_SCALE_SPRING_PROPS,\n translateY: IMAGE_SCALE_SPRING_PROPS,\n opacity: {\n type: 'tween',\n duration: 400\n }\n }\n },\n create: function create(_ref7) {\n var root = _ref7.root,\n props = _ref7.props;\n root.ref.clip = root.appendChildView(root.createChildView(createClipView(_), {\n id: props.id,\n image: props.image,\n crop: props.crop,\n markup: props.markup,\n resize: props.resize,\n dirty: props.dirty,\n background: props.background\n }));\n },\n write: function write(_ref8) {\n var root = _ref8.root,\n props = _ref8.props,\n shouldOptimize = _ref8.shouldOptimize;\n var clip = root.ref.clip;\n var image = props.image,\n crop = props.crop,\n markup = props.markup,\n resize = props.resize,\n dirty = props.dirty;\n clip.crop = crop;\n clip.markup = markup;\n clip.resize = resize;\n clip.dirty = dirty;\n\n // don't update clip layout\n clip.opacity = shouldOptimize ? 0 : 1;\n\n // don't re-render if optimizing or hidden (width will be zero resulting in weird animations)\n if (shouldOptimize || root.rect.element.hidden) return;\n\n // calculate scaled preview image size\n var imageAspectRatio = image.height / image.width;\n var aspectRatio = crop.aspectRatio || imageAspectRatio;\n\n // calculate container size\n var containerWidth = root.rect.inner.width;\n var containerHeight = root.rect.inner.height;\n var fixedPreviewHeight = root.query('GET_IMAGE_PREVIEW_HEIGHT');\n var minPreviewHeight = root.query('GET_IMAGE_PREVIEW_MIN_HEIGHT');\n var maxPreviewHeight = root.query('GET_IMAGE_PREVIEW_MAX_HEIGHT');\n var panelAspectRatio = root.query('GET_PANEL_ASPECT_RATIO');\n var allowMultiple = root.query('GET_ALLOW_MULTIPLE');\n if (panelAspectRatio && !allowMultiple) {\n fixedPreviewHeight = containerWidth * panelAspectRatio;\n aspectRatio = panelAspectRatio;\n }\n\n // determine clip width and height\n var clipHeight = fixedPreviewHeight !== null ? fixedPreviewHeight : Math.max(minPreviewHeight, Math.min(containerWidth * aspectRatio, maxPreviewHeight));\n var clipWidth = clipHeight / aspectRatio;\n if (clipWidth > containerWidth) {\n clipWidth = containerWidth;\n clipHeight = clipWidth * aspectRatio;\n }\n if (clipHeight > containerHeight) {\n clipHeight = containerHeight;\n clipWidth = containerHeight / aspectRatio;\n }\n clip.width = clipWidth;\n clip.height = clipHeight;\n }\n });\n };\n var SVG_MASK = '<svg width=\"500\" height=\"200\" viewBox=\"0 0 500 200\" preserveAspectRatio=\"none\">\\n <defs>\\n <radialGradient id=\"gradient-__UID__\" cx=\".5\" cy=\"1.25\" r=\"1.15\">\\n <stop offset=\\'50%\\' stop-color=\\'#000000\\'/>\\n <stop offset=\\'56%\\' stop-color=\\'#0a0a0a\\'/>\\n <stop offset=\\'63%\\' stop-color=\\'#262626\\'/>\\n <stop offset=\\'69%\\' stop-color=\\'#4f4f4f\\'/>\\n <stop offset=\\'75%\\' stop-color=\\'#808080\\'/>\\n <stop offset=\\'81%\\' stop-color=\\'#b1b1b1\\'/>\\n <stop offset=\\'88%\\' stop-color=\\'#dadada\\'/>\\n <stop offset=\\'94%\\' stop-color=\\'#f6f6f6\\'/>\\n <stop offset=\\'100%\\' stop-color=\\'#ffffff\\'/>\\n </radialGradient>\\n <mask id=\"mask-__UID__\">\\n <rect x=\"0\" y=\"0\" width=\"500\" height=\"200\" fill=\"url(#gradient-__UID__)\"></rect>\\n </mask>\\n </defs>\\n <rect x=\"0\" width=\"500\" height=\"200\" fill=\"currentColor\" mask=\"url(#mask-__UID__)\"></rect>\\n</svg>';\n var SVGMaskUniqueId = 0;\n var createImageOverlayView = function createImageOverlayView(fpAPI) {\n return fpAPI.utils.createView({\n name: 'image-preview-overlay',\n tag: 'div',\n ignoreRect: true,\n create: function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n var mask = SVG_MASK;\n if (document.querySelector('base')) {\n var url = new URL(window.location.href.replace(window.location.hash, '')).href;\n mask = mask.replace(/url\\(\\#/g, 'url(' + url + '#');\n }\n SVGMaskUniqueId++;\n root.element.classList.add('filepond--image-preview-overlay-'.concat(props.status));\n root.element.innerHTML = mask.replace(/__UID__/g, SVGMaskUniqueId);\n },\n mixins: {\n styles: ['opacity'],\n animations: {\n opacity: {\n type: 'spring',\n mass: 25\n }\n }\n }\n });\n };\n\n /**\n * Bitmap Worker\n */\n var BitmapWorker = function BitmapWorker() {\n self.onmessage = function (e) {\n createImageBitmap(e.data.message.file).then(function (bitmap) {\n self.postMessage({\n id: e.data.id,\n message: bitmap\n }, [bitmap]);\n });\n };\n };\n\n /**\n * ColorMatrix Worker\n */\n var ColorMatrixWorker = function ColorMatrixWorker() {\n self.onmessage = function (e) {\n var imageData = e.data.message.imageData;\n var matrix = e.data.message.colorMatrix;\n var data = imageData.data;\n var l = data.length;\n var m11 = matrix[0];\n var m12 = matrix[1];\n var m13 = matrix[2];\n var m14 = matrix[3];\n var m15 = matrix[4];\n var m21 = matrix[5];\n var m22 = matrix[6];\n var m23 = matrix[7];\n var m24 = matrix[8];\n var m25 = matrix[9];\n var m31 = matrix[10];\n var m32 = matrix[11];\n var m33 = matrix[12];\n var m34 = matrix[13];\n var m35 = matrix[14];\n var m41 = matrix[15];\n var m42 = matrix[16];\n var m43 = matrix[17];\n var m44 = matrix[18];\n var m45 = matrix[19];\n var index = 0,\n r = 0.0,\n g = 0.0,\n b = 0.0,\n a = 0.0;\n for (; index < l; index += 4) {\n r = data[index] / 255;\n g = data[index + 1] / 255;\n b = data[index + 2] / 255;\n a = data[index + 3] / 255;\n data[index] = Math.max(0, Math.min((r * m11 + g * m12 + b * m13 + a * m14 + m15) * 255, 255));\n data[index + 1] = Math.max(0, Math.min((r * m21 + g * m22 + b * m23 + a * m24 + m25) * 255, 255));\n data[index + 2] = Math.max(0, Math.min((r * m31 + g * m32 + b * m33 + a * m34 + m35) * 255, 255));\n data[index + 3] = Math.max(0, Math.min((r * m41 + g * m42 + b * m43 + a * m44 + m45) * 255, 255));\n }\n self.postMessage({\n id: e.data.id,\n message: imageData\n }, [imageData.data.buffer]);\n };\n };\n var getImageSize = function getImageSize(url, cb) {\n var image = new Image();\n image.onload = function () {\n var width = image.naturalWidth;\n var height = image.naturalHeight;\n image = null;\n cb(width, height);\n };\n image.src = url;\n };\n var transforms = {\n 1: function _() {\n return [1, 0, 0, 1, 0, 0];\n },\n 2: function _(width) {\n return [-1, 0, 0, 1, width, 0];\n },\n 3: function _(width, height) {\n return [-1, 0, 0, -1, width, height];\n },\n 4: function _(width, height) {\n return [1, 0, 0, -1, 0, height];\n },\n 5: function _() {\n return [0, 1, 1, 0, 0, 0];\n },\n 6: function _(width, height) {\n return [0, 1, -1, 0, height, 0];\n },\n 7: function _(width, height) {\n return [0, -1, -1, 0, height, width];\n },\n 8: function _(width) {\n return [0, -1, 1, 0, 0, width];\n }\n };\n var fixImageOrientation = function fixImageOrientation(ctx, width, height, orientation) {\n // no orientation supplied\n if (orientation === -1) {\n return;\n }\n ctx.transform.apply(ctx, transforms[orientation](width, height));\n };\n\n // draws the preview image to canvas\n var createPreviewImage = function createPreviewImage(data, width, height, orientation) {\n // can't draw on half pixels\n width = Math.round(width);\n height = Math.round(height);\n\n // draw image\n var canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n var ctx = canvas.getContext('2d');\n\n // if is rotated incorrectly swap width and height\n if (orientation >= 5 && orientation <= 8) {\n var _ref = [height, width];\n width = _ref[0];\n height = _ref[1];\n }\n\n // correct image orientation\n fixImageOrientation(ctx, width, height, orientation);\n\n // draw the image\n ctx.drawImage(data, 0, 0, width, height);\n return canvas;\n };\n var isBitmap = function isBitmap(file) {\n return /^image/.test(file.type) && !/svg/.test(file.type);\n };\n var MAX_WIDTH = 10;\n var MAX_HEIGHT = 10;\n var calculateAverageColor = function calculateAverageColor(image) {\n var scalar = Math.min(MAX_WIDTH / image.width, MAX_HEIGHT / image.height);\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n var width = canvas.width = Math.ceil(image.width * scalar);\n var height = canvas.height = Math.ceil(image.height * scalar);\n ctx.drawImage(image, 0, 0, width, height);\n var data = null;\n try {\n data = ctx.getImageData(0, 0, width, height).data;\n } catch (e) {\n return null;\n }\n var l = data.length;\n var r = 0;\n var g = 0;\n var b = 0;\n var i = 0;\n for (; i < l; i += 4) {\n r += data[i] * data[i];\n g += data[i + 1] * data[i + 1];\n b += data[i + 2] * data[i + 2];\n }\n r = averageColor(r, l);\n g = averageColor(g, l);\n b = averageColor(b, l);\n return {\n r: r,\n g: g,\n b: b\n };\n };\n var averageColor = function averageColor(c, l) {\n return Math.floor(Math.sqrt(c / (l / 4)));\n };\n var cloneCanvas = function cloneCanvas(origin, target) {\n target = target || document.createElement('canvas');\n target.width = origin.width;\n target.height = origin.height;\n var ctx = target.getContext('2d');\n ctx.drawImage(origin, 0, 0);\n return target;\n };\n var cloneImageData = function cloneImageData(imageData) {\n var id;\n try {\n id = new ImageData(imageData.width, imageData.height);\n } catch (e) {\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n id = ctx.createImageData(imageData.width, imageData.height);\n }\n id.data.set(new Uint8ClampedArray(imageData.data));\n return id;\n };\n var loadImage = function loadImage(url) {\n return new Promise(function (resolve, reject) {\n var img = new Image();\n img.crossOrigin = 'Anonymous';\n img.onload = function () {\n resolve(img);\n };\n img.onerror = function (e) {\n reject(e);\n };\n img.src = url;\n });\n };\n var createImageWrapperView = function createImageWrapperView(_) {\n // create overlay view\n var OverlayView = createImageOverlayView(_);\n var ImageView = createImageView(_);\n var createWorker = _.utils.createWorker;\n var applyFilter = function applyFilter(root, filter, target) {\n return new Promise(function (resolve) {\n // will store image data for future filter updates\n if (!root.ref.imageData) {\n root.ref.imageData = target.getContext('2d').getImageData(0, 0, target.width, target.height);\n }\n\n // get image data reference\n var imageData = cloneImageData(root.ref.imageData);\n if (!filter || filter.length !== 20) {\n target.getContext('2d').putImageData(imageData, 0, 0);\n return resolve();\n }\n var worker = createWorker(ColorMatrixWorker);\n worker.post({\n imageData: imageData,\n colorMatrix: filter\n }, function (response) {\n // apply filtered colors\n target.getContext('2d').putImageData(response, 0, 0);\n\n // stop worker\n worker.terminate();\n\n // done!\n resolve();\n }, [imageData.data.buffer]);\n });\n };\n var removeImageView = function removeImageView(root, imageView) {\n root.removeChildView(imageView);\n imageView.image.width = 1;\n imageView.image.height = 1;\n imageView._destroy();\n };\n\n // remove an image\n var shiftImage = function shiftImage(_ref) {\n var root = _ref.root;\n var imageView = root.ref.images.shift();\n imageView.opacity = 0;\n imageView.translateY = -15;\n root.ref.imageViewBin.push(imageView);\n return imageView;\n };\n\n // add new image\n var pushImage = function pushImage(_ref2) {\n var root = _ref2.root,\n props = _ref2.props,\n image = _ref2.image;\n var id = props.id;\n var item = root.query('GET_ITEM', {\n id: id\n });\n if (!item) return;\n var crop = item.getMetadata('crop') || {\n center: {\n x: 0.5,\n y: 0.5\n },\n flip: {\n horizontal: false,\n vertical: false\n },\n zoom: 1,\n rotation: 0,\n aspectRatio: null\n };\n var background = root.query('GET_IMAGE_TRANSFORM_CANVAS_BACKGROUND_COLOR');\n var markup;\n var resize;\n var dirty = false;\n if (root.query('GET_IMAGE_PREVIEW_MARKUP_SHOW')) {\n markup = item.getMetadata('markup') || [];\n resize = item.getMetadata('resize');\n dirty = true;\n }\n\n // append image presenter\n var imageView = root.appendChildView(root.createChildView(ImageView, {\n id: id,\n image: image,\n crop: crop,\n resize: resize,\n markup: markup,\n dirty: dirty,\n background: background,\n opacity: 0,\n scaleX: 1.15,\n scaleY: 1.15,\n translateY: 15\n }), root.childViews.length);\n root.ref.images.push(imageView);\n\n // reveal the preview image\n imageView.opacity = 1;\n imageView.scaleX = 1;\n imageView.scaleY = 1;\n imageView.translateY = 0;\n\n // the preview is now ready to be drawn\n setTimeout(function () {\n root.dispatch('DID_IMAGE_PREVIEW_SHOW', {\n id: id\n });\n }, 250);\n };\n var updateImage = function updateImage(_ref3) {\n var root = _ref3.root,\n props = _ref3.props;\n var item = root.query('GET_ITEM', {\n id: props.id\n });\n if (!item) return;\n var imageView = root.ref.images[root.ref.images.length - 1];\n imageView.crop = item.getMetadata('crop');\n imageView.background = root.query('GET_IMAGE_TRANSFORM_CANVAS_BACKGROUND_COLOR');\n if (root.query('GET_IMAGE_PREVIEW_MARKUP_SHOW')) {\n imageView.dirty = true;\n imageView.resize = item.getMetadata('resize');\n imageView.markup = item.getMetadata('markup');\n }\n };\n\n // replace image preview\n var didUpdateItemMetadata = function didUpdateItemMetadata(_ref4) {\n var root = _ref4.root,\n props = _ref4.props,\n action = _ref4.action;\n // only filter and crop trigger redraw\n if (!/crop|filter|markup|resize/.test(action.change.key)) return;\n\n // no images to update, exit\n if (!root.ref.images.length) return;\n\n // no item found, exit\n var item = root.query('GET_ITEM', {\n id: props.id\n });\n if (!item) return;\n\n // for now, update existing image when filtering\n if (/filter/.test(action.change.key)) {\n var imageView = root.ref.images[root.ref.images.length - 1];\n applyFilter(root, action.change.value, imageView.image);\n return;\n }\n if (/crop|markup|resize/.test(action.change.key)) {\n var crop = item.getMetadata('crop');\n var image = root.ref.images[root.ref.images.length - 1];\n\n // if aspect ratio has changed, we need to create a new image\n if (crop && crop.aspectRatio && image.crop && image.crop.aspectRatio && Math.abs(crop.aspectRatio - image.crop.aspectRatio) > 0.00001) {\n var _imageView = shiftImage({\n root: root\n });\n pushImage({\n root: root,\n props: props,\n image: cloneCanvas(_imageView.image)\n });\n }\n // if not, we can update the current image\n else {\n updateImage({\n root: root,\n props: props\n });\n }\n }\n };\n var canCreateImageBitmap = function canCreateImageBitmap(file) {\n // Firefox versions before 58 will freeze when running createImageBitmap\n // in a Web Worker so we detect those versions and return false for support\n var userAgent = window.navigator.userAgent;\n var isFirefox = userAgent.match(/Firefox\\/([0-9]+)\\./);\n var firefoxVersion = isFirefox ? parseInt(isFirefox[1]) : null;\n if (firefoxVersion <= 58) return false;\n return 'createImageBitmap' in window && isBitmap(file);\n };\n\n /**\n * Write handler for when preview container has been created\n */\n var didCreatePreviewContainer = function didCreatePreviewContainer(_ref5) {\n var root = _ref5.root,\n props = _ref5.props;\n var id = props.id;\n\n // we need to get the file data to determine the eventual image size\n var item = root.query('GET_ITEM', id);\n if (!item) return;\n\n // get url to file (we'll revoke it later on when done)\n var fileURL = URL.createObjectURL(item.file);\n\n // determine image size of this item\n getImageSize(fileURL, function (width, height) {\n // we can now scale the panel to the final size\n root.dispatch('DID_IMAGE_PREVIEW_CALCULATE_SIZE', {\n id: id,\n width: width,\n height: height\n });\n });\n };\n var drawPreview = function drawPreview(_ref6) {\n var root = _ref6.root,\n props = _ref6.props;\n var id = props.id;\n\n // we need to get the file data to determine the eventual image size\n var item = root.query('GET_ITEM', id);\n if (!item) return;\n\n // get url to file (we'll revoke it later on when done)\n var fileURL = URL.createObjectURL(item.file);\n\n // fallback\n var loadPreviewFallback = function loadPreviewFallback() {\n // let's scale the image in the main thread :(\n loadImage(fileURL).then(previewImageLoaded);\n };\n\n // image is now ready\n var previewImageLoaded = function previewImageLoaded(imageData) {\n // the file url is no longer needed\n URL.revokeObjectURL(fileURL);\n\n // draw the scaled down version here and use that as source so bitmapdata can be closed\n // orientation info\n var exif = item.getMetadata('exif') || {};\n var orientation = exif.orientation || -1;\n\n // get width and height from action, and swap if orientation is incorrect\n var width = imageData.width,\n height = imageData.height;\n\n // if no width or height, just return early.\n if (!width || !height) return;\n if (orientation >= 5 && orientation <= 8) {\n var _ref7 = [height, width];\n width = _ref7[0];\n height = _ref7[1];\n }\n\n // scale canvas based on pixel density\n // we multiply by .75 as that creates smaller but still clear images on screens with high res displays\n var pixelDensityFactor = Math.max(1, window.devicePixelRatio * 0.75);\n\n // we want as much pixels to work with as possible,\n // this multiplies the minimum image resolution,\n // so when zooming in it doesn't get too blurry\n var zoomFactor = root.query('GET_IMAGE_PREVIEW_ZOOM_FACTOR');\n\n // imaeg scale factor\n var scaleFactor = zoomFactor * pixelDensityFactor;\n\n // calculate scaled preview image size\n var previewImageRatio = height / width;\n\n // calculate image preview height and width\n var previewContainerWidth = root.rect.element.width;\n var previewContainerHeight = root.rect.element.height;\n var imageWidth = previewContainerWidth;\n var imageHeight = imageWidth * previewImageRatio;\n if (previewImageRatio > 1) {\n imageWidth = Math.min(width, previewContainerWidth * scaleFactor);\n imageHeight = imageWidth * previewImageRatio;\n } else {\n imageHeight = Math.min(height, previewContainerHeight * scaleFactor);\n imageWidth = imageHeight / previewImageRatio;\n }\n\n // transfer to image tag so no canvas memory wasted on iOS\n var previewImage = createPreviewImage(imageData, imageWidth, imageHeight, orientation);\n\n // done\n var done = function done() {\n // calculate average image color, disabled for now\n var averageColor = root.query('GET_IMAGE_PREVIEW_CALCULATE_AVERAGE_IMAGE_COLOR') ? calculateAverageColor(data) : null;\n item.setMetadata('color', averageColor, true);\n\n // data has been transferred to canvas ( if was ImageBitmap )\n if ('close' in imageData) {\n imageData.close();\n }\n\n // show the overlay\n root.ref.overlayShadow.opacity = 1;\n\n // create the first image\n pushImage({\n root: root,\n props: props,\n image: previewImage\n });\n };\n\n // apply filter\n var filter = item.getMetadata('filter');\n if (filter) {\n applyFilter(root, filter, previewImage).then(done);\n } else {\n done();\n }\n };\n\n // if we support scaling using createImageBitmap we use a worker\n if (canCreateImageBitmap(item.file)) {\n // let's scale the image in a worker\n var worker = createWorker(BitmapWorker);\n worker.post({\n file: item.file\n }, function (imageBitmap) {\n // destroy worker\n worker.terminate();\n\n // no bitmap returned, must be something wrong,\n // try the oldschool way\n if (!imageBitmap) {\n loadPreviewFallback();\n return;\n }\n\n // yay we got our bitmap, let's continue showing the preview\n previewImageLoaded(imageBitmap);\n });\n } else {\n // create fallback preview\n loadPreviewFallback();\n }\n };\n\n /**\n * Write handler for when the preview image is ready to be animated\n */\n var didDrawPreview = function didDrawPreview(_ref8) {\n var root = _ref8.root;\n // get last added image\n var image = root.ref.images[root.ref.images.length - 1];\n image.translateY = 0;\n image.scaleX = 1.0;\n image.scaleY = 1.0;\n image.opacity = 1;\n };\n\n /**\n * Write handler for when the preview has been loaded\n */\n var restoreOverlay = function restoreOverlay(_ref9) {\n var root = _ref9.root;\n root.ref.overlayShadow.opacity = 1;\n root.ref.overlayError.opacity = 0;\n root.ref.overlaySuccess.opacity = 0;\n };\n var didThrowError = function didThrowError(_ref10) {\n var root = _ref10.root;\n root.ref.overlayShadow.opacity = 0.25;\n root.ref.overlayError.opacity = 1;\n };\n var didCompleteProcessing = function didCompleteProcessing(_ref11) {\n var root = _ref11.root;\n root.ref.overlayShadow.opacity = 0.25;\n root.ref.overlaySuccess.opacity = 1;\n };\n\n /**\n * Constructor\n */\n var create = function create(_ref12) {\n var root = _ref12.root;\n // image view\n root.ref.images = [];\n\n // the preview image data (we need this to filter the image)\n root.ref.imageData = null;\n\n // image bin\n root.ref.imageViewBin = [];\n\n // image overlays\n root.ref.overlayShadow = root.appendChildView(root.createChildView(OverlayView, {\n opacity: 0,\n status: 'idle'\n }));\n root.ref.overlaySuccess = root.appendChildView(root.createChildView(OverlayView, {\n opacity: 0,\n status: 'success'\n }));\n root.ref.overlayError = root.appendChildView(root.createChildView(OverlayView, {\n opacity: 0,\n status: 'failure'\n }));\n };\n return _.utils.createView({\n name: 'image-preview-wrapper',\n create: create,\n styles: ['height'],\n apis: ['height'],\n destroy: function destroy(_ref13) {\n var root = _ref13.root;\n // we resize the image so memory on iOS 12 is released more quickly (it seems)\n root.ref.images.forEach(function (imageView) {\n imageView.image.width = 1;\n imageView.image.height = 1;\n });\n },\n didWriteView: function didWriteView(_ref14) {\n var root = _ref14.root;\n root.ref.images.forEach(function (imageView) {\n imageView.dirty = false;\n });\n },\n write: _.utils.createRoute({\n // image preview stated\n DID_IMAGE_PREVIEW_DRAW: didDrawPreview,\n DID_IMAGE_PREVIEW_CONTAINER_CREATE: didCreatePreviewContainer,\n DID_FINISH_CALCULATE_PREVIEWSIZE: drawPreview,\n DID_UPDATE_ITEM_METADATA: didUpdateItemMetadata,\n // file states\n DID_THROW_ITEM_LOAD_ERROR: didThrowError,\n DID_THROW_ITEM_PROCESSING_ERROR: didThrowError,\n DID_THROW_ITEM_INVALID: didThrowError,\n DID_COMPLETE_ITEM_PROCESSING: didCompleteProcessing,\n DID_START_ITEM_PROCESSING: restoreOverlay,\n DID_REVERT_ITEM_PROCESSING: restoreOverlay\n }, function (_ref15) {\n var root = _ref15.root;\n // views on death row\n var viewsToRemove = root.ref.imageViewBin.filter(function (imageView) {\n return imageView.opacity === 0;\n });\n\n // views to retain\n root.ref.imageViewBin = root.ref.imageViewBin.filter(function (imageView) {\n return imageView.opacity > 0;\n });\n\n // remove these views\n viewsToRemove.forEach(function (imageView) {\n return removeImageView(root, imageView);\n });\n viewsToRemove.length = 0;\n })\n });\n };\n\n /**\n * Image Preview Plugin\n */\n var plugin = function plugin(fpAPI) {\n var addFilter = fpAPI.addFilter,\n utils = fpAPI.utils;\n var Type = utils.Type,\n createRoute = utils.createRoute,\n isFile = utils.isFile;\n\n // imagePreviewView\n var imagePreviewView = createImageWrapperView(fpAPI);\n\n // called for each view that is created right after the 'create' method\n addFilter('CREATE_VIEW', function (viewAPI) {\n // get reference to created view\n var is = viewAPI.is,\n view = viewAPI.view,\n query = viewAPI.query;\n\n // only hook up to item view and only if is enabled for this cropper\n if (!is('file') || !query('GET_ALLOW_IMAGE_PREVIEW')) return;\n\n // create the image preview plugin, but only do so if the item is an image\n var didLoadItem = function didLoadItem(_ref) {\n var root = _ref.root,\n props = _ref.props;\n var id = props.id;\n var item = query('GET_ITEM', id);\n\n // item could theoretically have been removed in the mean time\n if (!item || !isFile(item.file) || item.archived) return;\n\n // get the file object\n var file = item.file;\n\n // exit if this is not an image\n if (!isPreviewableImage(file)) return;\n\n // test if is filtered\n if (!query('GET_IMAGE_PREVIEW_FILTER_ITEM')(item)) return;\n\n // exit if image size is too high and no createImageBitmap support\n // this would simply bring the browser to its knees and that is not what we want\n var supportsCreateImageBitmap = ('createImageBitmap' in (window || {}));\n var maxPreviewFileSize = query('GET_IMAGE_PREVIEW_MAX_FILE_SIZE');\n if (!supportsCreateImageBitmap && maxPreviewFileSize && file.size > maxPreviewFileSize) return;\n\n // set preview view\n root.ref.imagePreview = view.appendChildView(view.createChildView(imagePreviewView, {\n id: id\n }));\n\n // update height if is fixed\n var fixedPreviewHeight = root.query('GET_IMAGE_PREVIEW_HEIGHT');\n if (fixedPreviewHeight) {\n root.dispatch('DID_UPDATE_PANEL_HEIGHT', {\n id: item.id,\n height: fixedPreviewHeight\n });\n }\n\n // now ready\n var queue = !supportsCreateImageBitmap && file.size > query('GET_IMAGE_PREVIEW_MAX_INSTANT_PREVIEW_FILE_SIZE');\n root.dispatch('DID_IMAGE_PREVIEW_CONTAINER_CREATE', {\n id: id\n }, queue);\n };\n var rescaleItem = function rescaleItem(root, props) {\n if (!root.ref.imagePreview) return;\n var id = props.id;\n\n // get item\n var item = root.query('GET_ITEM', {\n id: id\n });\n if (!item) return;\n\n // if is fixed height or panel has aspect ratio, exit here, height has already been defined\n var panelAspectRatio = root.query('GET_PANEL_ASPECT_RATIO');\n var itemPanelAspectRatio = root.query('GET_ITEM_PANEL_ASPECT_RATIO');\n var fixedHeight = root.query('GET_IMAGE_PREVIEW_HEIGHT');\n if (panelAspectRatio || itemPanelAspectRatio || fixedHeight) return;\n\n // no data!\n var _root$ref = root.ref,\n imageWidth = _root$ref.imageWidth,\n imageHeight = _root$ref.imageHeight;\n if (!imageWidth || !imageHeight) return;\n\n // get height min and max\n var minPreviewHeight = root.query('GET_IMAGE_PREVIEW_MIN_HEIGHT');\n var maxPreviewHeight = root.query('GET_IMAGE_PREVIEW_MAX_HEIGHT');\n\n // orientation info\n var exif = item.getMetadata('exif') || {};\n var orientation = exif.orientation || -1;\n\n // get width and height from action, and swap of orientation is incorrect\n if (orientation >= 5 && orientation <= 8) {\n var _ref2 = [imageHeight, imageWidth];\n imageWidth = _ref2[0];\n imageHeight = _ref2[1];\n }\n\n // scale up width and height when we're dealing with an SVG\n if (!isBitmap(item.file) || root.query('GET_IMAGE_PREVIEW_UPSCALE')) {\n var scalar = 2048 / imageWidth;\n imageWidth *= scalar;\n imageHeight *= scalar;\n }\n\n // image aspect ratio\n var imageAspectRatio = imageHeight / imageWidth;\n\n // we need the item to get to the crop size\n var previewAspectRatio = (item.getMetadata('crop') || {}).aspectRatio || imageAspectRatio;\n\n // preview height range\n var previewHeightMax = Math.max(minPreviewHeight, Math.min(imageHeight, maxPreviewHeight));\n var itemWidth = root.rect.element.width;\n var previewHeight = Math.min(itemWidth * previewAspectRatio, previewHeightMax);\n\n // request update to panel height\n root.dispatch('DID_UPDATE_PANEL_HEIGHT', {\n id: item.id,\n height: previewHeight\n });\n };\n var didResizeView = function didResizeView(_ref3) {\n var root = _ref3.root;\n // actions in next write operation\n root.ref.shouldRescale = true;\n };\n var didUpdateItemMetadata = function didUpdateItemMetadata(_ref4) {\n var root = _ref4.root,\n action = _ref4.action;\n if (action.change.key !== 'crop') return;\n\n // actions in next write operation\n root.ref.shouldRescale = true;\n };\n var didCalculatePreviewSize = function didCalculatePreviewSize(_ref5) {\n var root = _ref5.root,\n action = _ref5.action;\n // remember dimensions\n root.ref.imageWidth = action.width;\n root.ref.imageHeight = action.height;\n\n // actions in next write operation\n root.ref.shouldRescale = true;\n root.ref.shouldDrawPreview = true;\n\n // as image load could take a while and fire when draw loop is resting we need to give it a kick\n root.dispatch('KICK');\n };\n\n // start writing\n view.registerWriter(createRoute({\n DID_RESIZE_ROOT: didResizeView,\n DID_STOP_RESIZE: didResizeView,\n DID_LOAD_ITEM: didLoadItem,\n DID_IMAGE_PREVIEW_CALCULATE_SIZE: didCalculatePreviewSize,\n DID_UPDATE_ITEM_METADATA: didUpdateItemMetadata\n }, function (_ref6) {\n var root = _ref6.root,\n props = _ref6.props;\n // no preview view attached\n if (!root.ref.imagePreview) return;\n\n // don't do anything while hidden\n if (root.rect.element.hidden) return;\n\n // resize the item panel\n if (root.ref.shouldRescale) {\n rescaleItem(root, props);\n root.ref.shouldRescale = false;\n }\n if (root.ref.shouldDrawPreview) {\n // queue till next frame so we're sure the height has been applied this forces the draw image call inside the wrapper view to use the correct height\n requestAnimationFrame(function () {\n // this requestAnimationFrame nesting is horrible but it fixes an issue with 100hz displays on Chrome\n // https://github.com/pqina/filepond-plugin-image-preview/issues/57\n requestAnimationFrame(function () {\n root.dispatch('DID_FINISH_CALCULATE_PREVIEWSIZE', {\n id: props.id\n });\n });\n });\n root.ref.shouldDrawPreview = false;\n }\n }));\n });\n\n // expose plugin\n return {\n options: {\n // Enable or disable image preview\n allowImagePreview: [true, Type.BOOLEAN],\n // filters file items to determine which are shown as preview\n imagePreviewFilterItem: [function () {\n return true;\n }, Type.FUNCTION],\n // Fixed preview height\n imagePreviewHeight: [null, Type.INT],\n // Min image height\n imagePreviewMinHeight: [44, Type.INT],\n // Max image height\n imagePreviewMaxHeight: [256, Type.INT],\n // Max size of preview file for when createImageBitmap is not supported\n imagePreviewMaxFileSize: [null, Type.INT],\n // The amount of extra pixels added to the image preview to allow comfortable zooming\n imagePreviewZoomFactor: [2, Type.INT],\n // Should we upscale small images to fit the max bounding box of the preview area\n imagePreviewUpscale: [false, Type.BOOLEAN],\n // Max size of preview file that we allow to try to instant preview if createImageBitmap is not supported, else image is queued for loading\n imagePreviewMaxInstantPreviewFileSize: [1000000, Type.INT],\n // Style of the transparancy indicator used behind images\n imagePreviewTransparencyIndicator: [null, Type.STRING],\n // Enables or disables reading average image color\n imagePreviewCalculateAverageImageColor: [false, Type.BOOLEAN],\n // Enables or disables the previewing of markup\n imagePreviewMarkupShow: [true, Type.BOOLEAN],\n // Allows filtering of markup to only show certain shapes\n imagePreviewMarkupFilter: [function () {\n return true;\n }, Type.FUNCTION]\n }\n };\n };\n\n // fire pluginloaded event if running in browser, this allows registering the plugin when using async script tags\n var isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n if (isBrowser) {\n document.dispatchEvent(new CustomEvent('FilePond:pluginloaded', {\n detail: plugin\n }));\n }\n return plugin;\n});","/*!\n * FilePondPluginFileMetadata 1.0.8\n * Licensed under MIT, https://opensource.org/licenses/MIT/\n * Please visit https://pqina.nl/filepond/ for details.\n */\n\n/* eslint-disable */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = global || self, global.FilePondPluginFileMetadata = factory());\n})(this, function () {\n 'use strict';\n\n var plugin = function plugin(_ref) {\n var addFilter = _ref.addFilter,\n utils = _ref.utils;\n\n // get quick reference to Type utils\n var Type = utils.Type;\n\n // setup attribute mapping for accept\n addFilter('SET_ATTRIBUTE_TO_OPTION_MAP', function (map) {\n return Object.assign(map, {\n '^fileMetadata': {\n group: 'fileMetadataObject'\n }\n });\n });\n addFilter('DID_LOAD_ITEM', function (item, _ref2) {\n var query = _ref2.query;\n return new Promise(function (resolve) {\n if (!query('GET_ALLOW_FILE_METADATA')) {\n return resolve(item);\n }\n\n // get default object and add as metadata\n var data = query('GET_FILE_METADATA_OBJECT');\n if (typeof data === 'object' && data !== null) {\n Object.keys(data).forEach(function (key) {\n item.setMetadata(key, data[key], true);\n });\n }\n resolve(item);\n });\n });\n return {\n options: {\n // Enable or disable file renaming\n allowFileMetadata: [true, Type.BOOLEAN],\n // A metadata object to add to all files\n fileMetadataObject: [null, Type.OBJECT]\n }\n };\n };\n\n // fire pluginloaded event if running in browser, this allows registering the plugin when using async script tags\n var isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n if (isBrowser) {\n document.dispatchEvent(new CustomEvent('FilePond:pluginloaded', {\n detail: plugin\n }));\n }\n return plugin;\n});","/*!\n * FilePondPluginFileValidateType 1.2.8\n * Licensed under MIT, https://opensource.org/licenses/MIT/\n * Please visit https://pqina.nl/filepond/ for details.\n */\n\n/* eslint-disable */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = global || self, global.FilePondPluginFileValidateType = factory());\n})(this, function () {\n 'use strict';\n\n var plugin = function plugin(_ref) {\n var addFilter = _ref.addFilter,\n utils = _ref.utils;\n // get quick reference to Type utils\n var Type = utils.Type,\n isString = utils.isString,\n replaceInString = utils.replaceInString,\n guesstimateMimeType = utils.guesstimateMimeType,\n getExtensionFromFilename = utils.getExtensionFromFilename,\n getFilenameFromURL = utils.getFilenameFromURL;\n var mimeTypeMatchesWildCard = function mimeTypeMatchesWildCard(mimeType, wildcard) {\n var mimeTypeGroup = (/^[^/]+/.exec(mimeType) || []).pop(); // image/png -> image\n var wildcardGroup = wildcard.slice(0, -2); // image/* -> image\n return mimeTypeGroup === wildcardGroup;\n };\n var isValidMimeType = function isValidMimeType(acceptedTypes, userInputType) {\n return acceptedTypes.some(function (acceptedType) {\n // accepted is wildcard mime type\n if (/\\*$/.test(acceptedType)) {\n return mimeTypeMatchesWildCard(userInputType, acceptedType);\n }\n\n // is normal mime type\n return acceptedType === userInputType;\n });\n };\n var getItemType = function getItemType(item) {\n // if the item is a url we guess the mime type by the extension\n var type = '';\n if (isString(item)) {\n var filename = getFilenameFromURL(item);\n var extension = getExtensionFromFilename(filename);\n if (extension) {\n type = guesstimateMimeType(extension);\n }\n } else {\n type = item.type;\n }\n return type;\n };\n var validateFile = function validateFile(item, acceptedFileTypes, typeDetector) {\n // no types defined, everything is allowed \\o/\n if (acceptedFileTypes.length === 0) {\n return true;\n }\n\n // gets the item type\n var type = getItemType(item);\n\n // no type detector, test now\n if (!typeDetector) {\n return isValidMimeType(acceptedFileTypes, type);\n }\n\n // use type detector\n return new Promise(function (resolve, reject) {\n typeDetector(item, type).then(function (detectedType) {\n if (isValidMimeType(acceptedFileTypes, detectedType)) {\n resolve();\n } else {\n reject();\n }\n }).catch(reject);\n });\n };\n var applyMimeTypeMap = function applyMimeTypeMap(map) {\n return function (acceptedFileType) {\n return map[acceptedFileType] === null ? false : map[acceptedFileType] || acceptedFileType;\n };\n };\n\n // setup attribute mapping for accept\n addFilter('SET_ATTRIBUTE_TO_OPTION_MAP', function (map) {\n return Object.assign(map, {\n accept: 'acceptedFileTypes'\n });\n });\n\n // filtering if an item is allowed in hopper\n addFilter('ALLOW_HOPPER_ITEM', function (file, _ref2) {\n var query = _ref2.query;\n // if we are not doing file type validation exit\n if (!query('GET_ALLOW_FILE_TYPE_VALIDATION')) {\n return true;\n }\n\n // we validate the file against the accepted file types\n return validateFile(file, query('GET_ACCEPTED_FILE_TYPES'));\n });\n\n // called for each file that is loaded\n // right before it is set to the item state\n // should return a promise\n addFilter('LOAD_FILE', function (file, _ref3) {\n var query = _ref3.query;\n return new Promise(function (resolve, reject) {\n if (!query('GET_ALLOW_FILE_TYPE_VALIDATION')) {\n resolve(file);\n return;\n }\n var acceptedFileTypes = query('GET_ACCEPTED_FILE_TYPES');\n\n // custom type detector method\n var typeDetector = query('GET_FILE_VALIDATE_TYPE_DETECT_TYPE');\n\n // if invalid, exit here\n var validationResult = validateFile(file, acceptedFileTypes, typeDetector);\n var handleRejection = function handleRejection() {\n var acceptedFileTypesMapped = acceptedFileTypes.map(applyMimeTypeMap(query('GET_FILE_VALIDATE_TYPE_LABEL_EXPECTED_TYPES_MAP'))).filter(function (label) {\n return label !== false;\n });\n var acceptedFileTypesMapped_unique = acceptedFileTypesMapped.filter(function (item, index) {\n return acceptedFileTypesMapped.indexOf(item) === index;\n });\n reject({\n status: {\n main: query('GET_LABEL_FILE_TYPE_NOT_ALLOWED'),\n sub: replaceInString(query('GET_FILE_VALIDATE_TYPE_LABEL_EXPECTED_TYPES'), {\n allTypes: acceptedFileTypesMapped_unique.join(', '),\n allButLastType: acceptedFileTypesMapped_unique.slice(0, -1).join(', '),\n lastType: acceptedFileTypesMapped_unique[acceptedFileTypesMapped.length - 1]\n })\n }\n });\n };\n\n // has returned new filename immidiately\n if (typeof validationResult === 'boolean') {\n if (!validationResult) {\n return handleRejection();\n }\n return resolve(file);\n }\n\n // is promise\n validationResult.then(function () {\n resolve(file);\n }).catch(handleRejection);\n });\n });\n\n // expose plugin\n return {\n // default options\n options: {\n // Enable or disable file type validation\n allowFileTypeValidation: [true, Type.BOOLEAN],\n // What file types to accept\n acceptedFileTypes: [[], Type.ARRAY],\n // - must be comma separated\n // - mime types: image/png, image/jpeg, image/gif\n // - extensions: .png, .jpg, .jpeg ( not enabled yet )\n // - wildcards: image/*\n\n // label to show when a type is not allowed\n labelFileTypeNotAllowed: ['File is of invalid type', Type.STRING],\n // nicer label\n fileValidateTypeLabelExpectedTypes: ['Expects {allButLastType} or {lastType}', Type.STRING],\n // map mime types to extensions\n fileValidateTypeLabelExpectedTypesMap: [{}, Type.OBJECT],\n // Custom function to detect type of file\n fileValidateTypeDetectType: [null, Type.FUNCTION]\n }\n };\n };\n\n // fire pluginloaded event if running in browser, this allows registering the plugin when using async script tags\n var isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n if (isBrowser) {\n document.dispatchEvent(new CustomEvent('FilePond:pluginloaded', {\n detail: plugin\n }));\n }\n return plugin;\n});","/*!\n * FilePondPluginFileValidateSize 2.2.8\n * Licensed under MIT, https://opensource.org/licenses/MIT/\n * Please visit https://pqina.nl/filepond/ for details.\n */\n\n/* eslint-disable */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = global || self, global.FilePondPluginFileValidateSize = factory());\n})(this, function () {\n 'use strict';\n\n var plugin = function plugin(_ref) {\n var addFilter = _ref.addFilter,\n utils = _ref.utils;\n // get quick reference to Type utils\n var Type = utils.Type,\n replaceInString = utils.replaceInString,\n toNaturalFileSize = utils.toNaturalFileSize;\n\n // filtering if an item is allowed in hopper\n addFilter('ALLOW_HOPPER_ITEM', function (file, _ref2) {\n var query = _ref2.query;\n if (!query('GET_ALLOW_FILE_SIZE_VALIDATION')) {\n return true;\n }\n var sizeMax = query('GET_MAX_FILE_SIZE');\n if (sizeMax !== null && file.size > sizeMax) {\n return false;\n }\n var sizeMin = query('GET_MIN_FILE_SIZE');\n if (sizeMin !== null && file.size < sizeMin) {\n return false;\n }\n return true;\n });\n\n // called for each file that is loaded\n // right before it is set to the item state\n // should return a promise\n addFilter('LOAD_FILE', function (file, _ref3) {\n var query = _ref3.query;\n return new Promise(function (resolve, reject) {\n // if not allowed, all fine, exit\n if (!query('GET_ALLOW_FILE_SIZE_VALIDATION')) {\n return resolve(file);\n }\n\n // check if file should be filtered\n var fileFilter = query('GET_FILE_VALIDATE_SIZE_FILTER');\n if (fileFilter && !fileFilter(file)) {\n return resolve(file);\n }\n\n // reject or resolve based on file size\n var sizeMax = query('GET_MAX_FILE_SIZE');\n if (sizeMax !== null && file.size > sizeMax) {\n reject({\n status: {\n main: query('GET_LABEL_MAX_FILE_SIZE_EXCEEDED'),\n sub: replaceInString(query('GET_LABEL_MAX_FILE_SIZE'), {\n filesize: toNaturalFileSize(sizeMax, '.', query('GET_FILE_SIZE_BASE'), query('GET_FILE_SIZE_LABELS', query))\n })\n }\n });\n return;\n }\n\n // reject or resolve based on file size\n var sizeMin = query('GET_MIN_FILE_SIZE');\n if (sizeMin !== null && file.size < sizeMin) {\n reject({\n status: {\n main: query('GET_LABEL_MIN_FILE_SIZE_EXCEEDED'),\n sub: replaceInString(query('GET_LABEL_MIN_FILE_SIZE'), {\n filesize: toNaturalFileSize(sizeMin, '.', query('GET_FILE_SIZE_BASE'), query('GET_FILE_SIZE_LABELS', query))\n })\n }\n });\n return;\n }\n\n // returns the current option value\n var totalSizeMax = query('GET_MAX_TOTAL_FILE_SIZE');\n if (totalSizeMax !== null) {\n // get the current total file size\n var currentTotalSize = query('GET_ACTIVE_ITEMS').reduce(function (total, item) {\n return total + item.fileSize;\n }, 0);\n\n // get the size of the new file\n if (currentTotalSize > totalSizeMax) {\n reject({\n status: {\n main: query('GET_LABEL_MAX_TOTAL_FILE_SIZE_EXCEEDED'),\n sub: replaceInString(query('GET_LABEL_MAX_TOTAL_FILE_SIZE'), {\n filesize: toNaturalFileSize(totalSizeMax, '.', query('GET_FILE_SIZE_BASE'), query('GET_FILE_SIZE_LABELS', query))\n })\n }\n });\n return;\n }\n }\n\n // file is fine, let's pass it back\n resolve(file);\n });\n });\n return {\n options: {\n // Enable or disable file type validation\n allowFileSizeValidation: [true, Type.BOOLEAN],\n // Max individual file size in bytes\n maxFileSize: [null, Type.INT],\n // Min individual file size in bytes\n minFileSize: [null, Type.INT],\n // Max total file size in bytes\n maxTotalFileSize: [null, Type.INT],\n // Filter the files that need to be validated for size\n fileValidateSizeFilter: [null, Type.FUNCTION],\n // error labels\n labelMinFileSizeExceeded: ['File is too small', Type.STRING],\n labelMinFileSize: ['Minimum file size is {filesize}', Type.STRING],\n labelMaxFileSizeExceeded: ['File is too large', Type.STRING],\n labelMaxFileSize: ['Maximum file size is {filesize}', Type.STRING],\n labelMaxTotalFileSizeExceeded: ['Maximum total size exceeded', Type.STRING],\n labelMaxTotalFileSize: ['Maximum total file size is {filesize}', Type.STRING]\n }\n };\n };\n\n // fire pluginloaded event if running in browser, this allows registering the plugin when using async script tags\n var isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n if (isBrowser) {\n document.dispatchEvent(new CustomEvent('FilePond:pluginloaded', {\n detail: plugin\n }));\n }\n return plugin;\n});","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(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","var isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw $TypeError($String(argument) + ' is not an object');\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","var g;\n\n// This works in non-strict mode\ng = function () {\n return this;\n}();\ntry {\n // This works if eval is allowed (see CSP)\n g = g || new Function(\"return this\")();\n} catch (e) {\n // This works if the window reference is available\n if (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;","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","var global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\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 global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","module.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n","var isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a function');\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","var trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\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","import jquery from 'jquery'\nwindow.jQuery = jquery\nwindow.$ = jquery","// Replaces card-img-top thumbnails that error out (mainly on staging) with a placeholder image\n// Useful for testing production data on staging where the image data is present but from the wrong bucket\ndocument.addEventListener('error', function(e) {\n // Prevent infinite loops in case the placeholder image fails to load by checking dataset.errorHandled\n if (e.target.tagName.toLowerCase() == 'img' && e.target.classList.contains('card-img-top') && !e.target.dataset.errorHandled) {\n e.target.dataset.errorHandled = true\n e.target.src = \"https://assets.superhivestaging.com/site_assets/image-placeholder.png\"\n }\n}, true)\n","import Cookies from 'js-cookie';\n\n$(document).on('turbolinks:load', function () {\n $('.js-admin-menu_toggle, .js-creator-menu_toggle').on('click', function(e) {\n var lastSetting = $('.js-admin-menu, .js-creator-menu').hasClass('show');\n Cookies.set('manageui_menu_closed', !lastSetting);\n });\n\n if (matchMedia) {\n const mq = window.matchMedia(\"(max-width: 1200px)\");\n mq.addListener(menuWidthChange);\n menuWidthChange(mq);\n }\n\n function menuWidthChange(mq) {\n if (mq.matches) {\n closeBackendMenu();\n } else {\n openBackendMenu();\n }\n }\n\n function closeBackendMenu() {\n Cookies.set('manageui_menu_closed', true);\n $('.js-admin-menu, .js-creator-menu').removeClass('show');\n }\n\n function openBackendMenu() {\n Cookies.set('manageui_menu_closed', false);\n $('.js-admin-menu, .js-creator-menu').addClass('show');\n }\n});\n","$(document).on('turbolinks:load', function(){\n\n\t\tvar main = '#ls'\n\t\t,\tresults = '#ls--results'\n\t\t,\tloader = '#ls--loading'\n\t\t,\tinput \t\t\t= '#ls--input'\n\t\t,\thelper = '#ls--helper'\n\t\t, $spinner\t\t= $('.js-backend-search-spinner')\n\t\t,\ttimer\n\n\t\t$(input).on('keyup keypress', function ( e ) {\n\n\t\t\t// clear the previous timer\n\t\t\tclearTimeout(timer)\n\n\t\t\tvar key = e.which\n\t\t\t,\tthat = this\n\t\t\t,\tval \t\t\t\t= $.trim( $(this).val() )\n\t\t\t,\tvalEqual = val == $(that).val()\n\t\t\t,\tnotEmpty = '' !== val\n\t\t\t, searchPath = $(main).data('search-path')\n\t\t\t, basePath \t=\t $(main).data('base-path')\n\n\t\t\t// 600ms delay so we dont exectute excessively\n\t\t\ttimer = setTimeout(function() {\n\n\t\t\t\t// don't proceed if the value is empty or not equal to itself\n\t\t\t\tif ( !valEqual && !notEmpty )\n\t\t\t\t\treturn false;\n\n\t\t\t\t// if we have more than 1 character\n\t\t\t\tif ( val.length >= 1 || val.length >= 1 && 13 == key ) {\n\n\t\t\t\t\t// dont run on escape or arrow keys\n\t\t\t\t\tif( blacklistedKeys( key ) )\n\t\t\t\t\t\treturn false;\n\n\t\t\t\t\t// show loader\n\t\t\t\t\t$spinner.show()\n\n\t\t\t\t\t// remove any helpers\n\t\t\t\t\t$( helper ).fadeOut().remove();\n\n\t\t\t\t\t// make the search request\n\t\t\t\t $.ajax({\n\t\t\t\t type:'GET',\n\t\t\t\t \turl: searchPath+'/?q='+encodeURIComponent(val),\n\t\t\t\t dataType : 'script',\n\t\t\t\t success: function(){\n\t\t\t\t\t\t\t$spinner.hide()\n\t\t\t\t }\n\t\t\t\t });\n\n\t\t\t\t} else if (val == '') {\n\n\t\t\t\t\t// show loader\n\t\t\t\t\t$spinner.show()\n\n\t\t\t\t $.ajax({\n\t\t\t\t type:'GET',\n\t\t\t\t \turl: basePath,\n\t\t\t\t dataType : 'script',\n\t\t\t\t success: function(){\n\t\t\t\t\t\t\t$spinner.hide()\n\t\t\t\t }\n\t\t\t\t });\n\n\t\t\t\t}\n\n\t\t\t}, 600);\n\n\t\t});\n\n\t\t/**\n\t\t*\tUtility function to destroy the search\n\t\t*/\n\t\tfunction destroySearch(){\n\n\t\t\t$( input ).val('');\n\t\t}\n\n\t\t/**\n\t\t* \tBlacklisted keys - dont allow search on escape or arrow keys\n\t\t*/\n\t\tfunction blacklistedKeys( key ){\n\n\t\t\treturn 27 == key || 37 == key || 38 == key || 39 == key || 40 == key;\n\n\t\t}\n});\n","import Chartkick from \"chartkick\"\nimport Chart from \"chart.js\"\n\nChartkick.use(Chart);\nChartkick.configure({\n width: \"100%\",\n height:'250px',\n colors: [\"#1dbdff\",\"#697182\",\"#55a626\",\"#a920ae\", \"#c15c50\", \"#0082c8\", \"#f58231\", \"#911eb4\", \"#46f0f0\", \"#f032e6\", \"#d2f53c\", \"#fabebe\", \"#008080\", \"#e6beff\", \"#aa6e28\", \"#fffac8\", \"#800000\", \"#aaffc3\", \"#808000\", \"#ffd8b1\"],\n curve:false,\n points:false,\n library:{\n scales:{\n xAxes:[{\n ticks: {\n beginAtZero: true,\n fontColor:'#818a9e'\n },\n gridLines:{\n display:false\n }\n }],\n yAxes: [{\n ticks: {\n fontColor:'#818a9e'\n },\n gridLines:{\n display:false\n }\n }]\n }\n }\n});\n","module.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n module.paths = [];\n // module.parent = undefined by default\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function () {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function () {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n return module;\n};","var map = {\n\t\"./af\": 27,\n\t\"./af.js\": 27,\n\t\"./ar\": 28,\n\t\"./ar-dz\": 29,\n\t\"./ar-dz.js\": 29,\n\t\"./ar-kw\": 30,\n\t\"./ar-kw.js\": 30,\n\t\"./ar-ly\": 31,\n\t\"./ar-ly.js\": 31,\n\t\"./ar-ma\": 32,\n\t\"./ar-ma.js\": 32,\n\t\"./ar-sa\": 33,\n\t\"./ar-sa.js\": 33,\n\t\"./ar-tn\": 34,\n\t\"./ar-tn.js\": 34,\n\t\"./ar.js\": 28,\n\t\"./az\": 35,\n\t\"./az.js\": 35,\n\t\"./be\": 36,\n\t\"./be.js\": 36,\n\t\"./bg\": 37,\n\t\"./bg.js\": 37,\n\t\"./bm\": 38,\n\t\"./bm.js\": 38,\n\t\"./bn\": 39,\n\t\"./bn-bd\": 40,\n\t\"./bn-bd.js\": 40,\n\t\"./bn.js\": 39,\n\t\"./bo\": 41,\n\t\"./bo.js\": 41,\n\t\"./br\": 42,\n\t\"./br.js\": 42,\n\t\"./bs\": 43,\n\t\"./bs.js\": 43,\n\t\"./ca\": 44,\n\t\"./ca.js\": 44,\n\t\"./cs\": 45,\n\t\"./cs.js\": 45,\n\t\"./cv\": 46,\n\t\"./cv.js\": 46,\n\t\"./cy\": 47,\n\t\"./cy.js\": 47,\n\t\"./da\": 48,\n\t\"./da.js\": 48,\n\t\"./de\": 49,\n\t\"./de-at\": 50,\n\t\"./de-at.js\": 50,\n\t\"./de-ch\": 51,\n\t\"./de-ch.js\": 51,\n\t\"./de.js\": 49,\n\t\"./dv\": 52,\n\t\"./dv.js\": 52,\n\t\"./el\": 53,\n\t\"./el.js\": 53,\n\t\"./en-au\": 54,\n\t\"./en-au.js\": 54,\n\t\"./en-ca\": 55,\n\t\"./en-ca.js\": 55,\n\t\"./en-gb\": 56,\n\t\"./en-gb.js\": 56,\n\t\"./en-ie\": 57,\n\t\"./en-ie.js\": 57,\n\t\"./en-il\": 58,\n\t\"./en-il.js\": 58,\n\t\"./en-in\": 59,\n\t\"./en-in.js\": 59,\n\t\"./en-nz\": 60,\n\t\"./en-nz.js\": 60,\n\t\"./en-sg\": 61,\n\t\"./en-sg.js\": 61,\n\t\"./eo\": 62,\n\t\"./eo.js\": 62,\n\t\"./es\": 63,\n\t\"./es-do\": 64,\n\t\"./es-do.js\": 64,\n\t\"./es-mx\": 65,\n\t\"./es-mx.js\": 65,\n\t\"./es-us\": 66,\n\t\"./es-us.js\": 66,\n\t\"./es.js\": 63,\n\t\"./et\": 67,\n\t\"./et.js\": 67,\n\t\"./eu\": 68,\n\t\"./eu.js\": 68,\n\t\"./fa\": 69,\n\t\"./fa.js\": 69,\n\t\"./fi\": 70,\n\t\"./fi.js\": 70,\n\t\"./fil\": 71,\n\t\"./fil.js\": 71,\n\t\"./fo\": 72,\n\t\"./fo.js\": 72,\n\t\"./fr\": 73,\n\t\"./fr-ca\": 74,\n\t\"./fr-ca.js\": 74,\n\t\"./fr-ch\": 75,\n\t\"./fr-ch.js\": 75,\n\t\"./fr.js\": 73,\n\t\"./fy\": 76,\n\t\"./fy.js\": 76,\n\t\"./ga\": 77,\n\t\"./ga.js\": 77,\n\t\"./gd\": 78,\n\t\"./gd.js\": 78,\n\t\"./gl\": 79,\n\t\"./gl.js\": 79,\n\t\"./gom-deva\": 80,\n\t\"./gom-deva.js\": 80,\n\t\"./gom-latn\": 81,\n\t\"./gom-latn.js\": 81,\n\t\"./gu\": 82,\n\t\"./gu.js\": 82,\n\t\"./he\": 83,\n\t\"./he.js\": 83,\n\t\"./hi\": 84,\n\t\"./hi.js\": 84,\n\t\"./hr\": 85,\n\t\"./hr.js\": 85,\n\t\"./hu\": 86,\n\t\"./hu.js\": 86,\n\t\"./hy-am\": 87,\n\t\"./hy-am.js\": 87,\n\t\"./id\": 88,\n\t\"./id.js\": 88,\n\t\"./is\": 89,\n\t\"./is.js\": 89,\n\t\"./it\": 90,\n\t\"./it-ch\": 91,\n\t\"./it-ch.js\": 91,\n\t\"./it.js\": 90,\n\t\"./ja\": 92,\n\t\"./ja.js\": 92,\n\t\"./jv\": 93,\n\t\"./jv.js\": 93,\n\t\"./ka\": 94,\n\t\"./ka.js\": 94,\n\t\"./kk\": 95,\n\t\"./kk.js\": 95,\n\t\"./km\": 96,\n\t\"./km.js\": 96,\n\t\"./kn\": 97,\n\t\"./kn.js\": 97,\n\t\"./ko\": 98,\n\t\"./ko.js\": 98,\n\t\"./ku\": 99,\n\t\"./ku.js\": 99,\n\t\"./ky\": 100,\n\t\"./ky.js\": 100,\n\t\"./lb\": 101,\n\t\"./lb.js\": 101,\n\t\"./lo\": 102,\n\t\"./lo.js\": 102,\n\t\"./lt\": 103,\n\t\"./lt.js\": 103,\n\t\"./lv\": 104,\n\t\"./lv.js\": 104,\n\t\"./me\": 105,\n\t\"./me.js\": 105,\n\t\"./mi\": 106,\n\t\"./mi.js\": 106,\n\t\"./mk\": 107,\n\t\"./mk.js\": 107,\n\t\"./ml\": 108,\n\t\"./ml.js\": 108,\n\t\"./mn\": 109,\n\t\"./mn.js\": 109,\n\t\"./mr\": 110,\n\t\"./mr.js\": 110,\n\t\"./ms\": 111,\n\t\"./ms-my\": 112,\n\t\"./ms-my.js\": 112,\n\t\"./ms.js\": 111,\n\t\"./mt\": 113,\n\t\"./mt.js\": 113,\n\t\"./my\": 114,\n\t\"./my.js\": 114,\n\t\"./nb\": 115,\n\t\"./nb.js\": 115,\n\t\"./ne\": 116,\n\t\"./ne.js\": 116,\n\t\"./nl\": 117,\n\t\"./nl-be\": 118,\n\t\"./nl-be.js\": 118,\n\t\"./nl.js\": 117,\n\t\"./nn\": 119,\n\t\"./nn.js\": 119,\n\t\"./oc-lnc\": 120,\n\t\"./oc-lnc.js\": 120,\n\t\"./pa-in\": 121,\n\t\"./pa-in.js\": 121,\n\t\"./pl\": 122,\n\t\"./pl.js\": 122,\n\t\"./pt\": 123,\n\t\"./pt-br\": 124,\n\t\"./pt-br.js\": 124,\n\t\"./pt.js\": 123,\n\t\"./ro\": 125,\n\t\"./ro.js\": 125,\n\t\"./ru\": 126,\n\t\"./ru.js\": 126,\n\t\"./sd\": 127,\n\t\"./sd.js\": 127,\n\t\"./se\": 128,\n\t\"./se.js\": 128,\n\t\"./si\": 129,\n\t\"./si.js\": 129,\n\t\"./sk\": 130,\n\t\"./sk.js\": 130,\n\t\"./sl\": 131,\n\t\"./sl.js\": 131,\n\t\"./sq\": 132,\n\t\"./sq.js\": 132,\n\t\"./sr\": 133,\n\t\"./sr-cyrl\": 134,\n\t\"./sr-cyrl.js\": 134,\n\t\"./sr.js\": 133,\n\t\"./ss\": 135,\n\t\"./ss.js\": 135,\n\t\"./sv\": 136,\n\t\"./sv.js\": 136,\n\t\"./sw\": 137,\n\t\"./sw.js\": 137,\n\t\"./ta\": 138,\n\t\"./ta.js\": 138,\n\t\"./te\": 139,\n\t\"./te.js\": 139,\n\t\"./tet\": 140,\n\t\"./tet.js\": 140,\n\t\"./tg\": 141,\n\t\"./tg.js\": 141,\n\t\"./th\": 142,\n\t\"./th.js\": 142,\n\t\"./tk\": 143,\n\t\"./tk.js\": 143,\n\t\"./tl-ph\": 144,\n\t\"./tl-ph.js\": 144,\n\t\"./tlh\": 145,\n\t\"./tlh.js\": 145,\n\t\"./tr\": 146,\n\t\"./tr.js\": 146,\n\t\"./tzl\": 147,\n\t\"./tzl.js\": 147,\n\t\"./tzm\": 148,\n\t\"./tzm-latn\": 149,\n\t\"./tzm-latn.js\": 149,\n\t\"./tzm.js\": 148,\n\t\"./ug-cn\": 150,\n\t\"./ug-cn.js\": 150,\n\t\"./uk\": 151,\n\t\"./uk.js\": 151,\n\t\"./ur\": 152,\n\t\"./ur.js\": 152,\n\t\"./uz\": 153,\n\t\"./uz-latn\": 154,\n\t\"./uz-latn.js\": 154,\n\t\"./uz.js\": 153,\n\t\"./vi\": 155,\n\t\"./vi.js\": 155,\n\t\"./x-pseudo\": 156,\n\t\"./x-pseudo.js\": 156,\n\t\"./yo\": 157,\n\t\"./yo.js\": 157,\n\t\"./zh-cn\": 158,\n\t\"./zh-cn.js\": 158,\n\t\"./zh-hk\": 159,\n\t\"./zh-hk.js\": 159,\n\t\"./zh-mo\": 160,\n\t\"./zh-mo.js\": 160,\n\t\"./zh-tw\": 161,\n\t\"./zh-tw.js\": 161\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 190;","import Highcharts from 'highcharts'\n\n$(document).on('ready turbolinks:load', function(){\n\n Highcharts.setOptions({\n colors: ['#0070F3', '#9747FF', '#FF47CC', '#F0D800', '#FD4F01', '#00F37E'],\n credits: { enabled: false },\n plotOptions: {\n line: {\n marker: {\n symbol: 'circle'\n }\n }\n }\n })\n\n var $charts = $('.js-chart')\n $charts.each(function(index, el){\n var $el = $(el)\n if ($el.data('path')){\n $.ajax({\n url: $el.data('path'),\n success: function(data, status){\n Highcharts.chart(el, data)\n },\n error: function(request, errorMessage){\n $el.empty()\n var $error = $('<div/>', { class: 'text-center text-danger lead mb-3' })\n var $icon = $('<i/>', { class: 'fa fa-exclamation-triangle fa-2x mt-4 mb-3 d-block' })\n $error.append($icon)\n $error.append('Sorry, there was an error while trying to load the chart.')\n $el.append($error)\n }\n })\n }\n })\n\n})\n","$(document).on('turbolinks:load', function () {\n\n // clear/hide discount code field on all browsers\n if ($('#discount_code').length) {\n $('#discount_code').val('').hide();\n }\n\n // only allow alphanumeric chars on paste\n $('#discount_code').on('paste', function(e) {\n e.preventDefault();\n let pastedText = (e.originalEvent || e).clipboardData.getData('text/plain')\n .replace(/[^a-zA-Z0-9-]/g, '');\n\n const input = $(this)[0];\n input.setRangeText(\n pastedText,\n input.selectionStart,\n input.selectionEnd,\n 'end'\n );\n });\n\n // existing operations code\n\n $('#discount_code').hide();\n\n $('#discount_code').on('keyup', function(e){\n\n $('.apply-coupon').attr('href', '/carts/checkout/discount/'+$(this).val());\n\n\t}).on('keypress', function(e){\n\n // don't allow anything weird (except hyphens)\n if (e.which != 45 && (e.which < 48 || (e.which > 57 && e.which < 65) || (e.which > 90 && e.which < 97) || e.which > 122)) {\n return false;\n }\n\t}).on('input keyup', function(e) {\n $(this).val($(this).val().replace(/[^a-zA-Z0-9-]/g, ''));\n });\n\n\t$('a[data-bs-toggle-coupon]').on('click',function(e){\n e.preventDefault();\n $('.coupon-code-wrap, #discount_code').toggle('fast');\n $(this).closest('.fieldset').fadeOut().remove();\n });\n\n var $body = $('body');\n var $cart_total = $('#amount').val()\n $('#payment-form').on('submit', function(){\n $body.addClass('loading').prepend('<div class=\"loading-messages\">' + 'Submitting order...' + '</div>');\n });\n\n if ($body.hasClass('layout-carts-checkout') && $cart_total > 0) {\n initPaypalCheckout(true);\n }\n\n});\n\nfunction initPaypalCheckout(active){\n if ($('body').hasClass('layout-carts-checkout') && active) {\n paypal.Buttons({\n fundingSource: paypal.FUNDING.PAYPAL,\n style: {\n color: 'blue',\n label: 'checkout'\n },\n createOrder: function(data, actions) {\n // Set up the transaction\n return actions.order.create({\n purchase_units: [{\n amount: {\n value: $(\"#amount\").val() / 100,\n currency_code: 'USD',\n breakdown: {\n item_total: {\n value: $(\"#subtotal_amount\").val() / 100,\n currency_code: 'USD'\n },\n tax_total: {\n value: $(\"#tax_amount\").val() / 100,\n currency_code: 'USD'\n }\n }\n },\n description: \"Blender Market order\",\n items: $('.js-order-item').map(function(i, item) {\n var $item = $(item);\n return {\n name: $item.data('title'),\n quantity: 1,\n description: $item.data('version'),\n unit_amount: {\n value: $item.data('price') / 100,\n currency_code: 'USD'\n },\n category: 'DIGITAL_GOODS'\n };\n }).toArray()\n }]\n });\n },\n onApprove: function(data, actions) {\n // Authorize the transaction\n actions.order.authorize().then(function(authorization) {\n $('body').addClass('loading').prepend('<div class=\"loading-messages\">Please wait ...</div>');\n // Call server to validate and capture the transaction\n return $.ajax({\n type: 'POST',\n url: '/orders',\n data: {\n gateway: 'paypal',\n amount: $(\"#amount\").val(),\n coupon_id: $(\"#coupon_id\").val(),\n paypal_payment: authorization,\n subtotal_amount: $('#subtotal_amount').val()\n },\n dataType: 'json',\n success: function(response){\n location.replace(response['pickup']);\n },\n error: function(response){\n location.replace(response['checkout']);\n }\n });\n });\n }\n }).render('#paypal-button-container');\n }\n}\n","import { url_get_param, url_add_param, url_remove_param } from '../../util/methods';\n\n$(document).on('turbolinks:load', function(){\n // Flatpickr initialization\n initializeFlatpickr();\n});\n\nfunction initializeFlatpickr(){\n $('.js-datepicker').flatpickr();\n $('.js-datetimepicker').flatpickr({\n enableTime: true,\n });\n\n var startDate = $('#dp-start').val()\n var endDate = $('#dp-end').val()\n\n $('#dp-start').flatpickr(\n {\n minDate: '2014-06-10',\n maxDate: $('#dp-end').data('end-date'),\n onChange: function (selectedDates, dateStr, instance) {\n if (selectedDates[0] > Date.parse(endDate) ) {\n alert('The start date can not be greater than the end date');\n } else {\n var url = url_add_param(location.href, 'start_date', dateStr);\n if( !url_get_param('end_date') ) {\n var url = url_add_param(url, 'end_date', endDate)\n }\n Turbolinks.visit(url)\n }\n }\n }\n );\n\n $('#dp-end').flatpickr(\n {\n minDate: '2014-06-10',\n maxDate: $('#dp-end').data('end-date'),\n onChange: function (selectedDates, dateStr, instance) {\n if (selectedDates[0] < Date.parse(startDate) ) {\n alert('The end date can not be less than the start date');\n } else {\n var url = url_add_param(location.href, 'end_date', dateStr);\n if( !url_get_param('start_date') ) {\n var url = url_add_param(url, 'start_date', startDate)\n }\n Turbolinks.visit(url)\n }\n }\n }\n );\n\n $('#subscription_expiration').flatpickr()\n}\n","import * as FilePond from 'filepond';\nimport FilePondPluginImagePreview from 'filepond-plugin-image-preview';\nimport FilePondPluginFileMetadata from 'filepond-plugin-file-metadata';\nimport FilePondPluginFileValidateType from 'filepond-plugin-file-validate-type';\nimport FilePondPluginFileValidateSize from 'filepond-plugin-file-validate-size';\nimport { checkProductFormCompletion } from '../../views/creator/products/form_sections';\nimport { transferFileElementOutOfPond } from '../../views/creator/products/version_form';\n\n$(document).on('turbolinks:load', function () {\n\n // FilePond setup\n FilePond.registerPlugin(FilePondPluginImagePreview);\n FilePond.registerPlugin(FilePondPluginFileMetadata);\n FilePond.registerPlugin(FilePondPluginFileValidateType);\n FilePond.registerPlugin(FilePondPluginFileValidateSize);\n\n var $featuredImageInputs = $('.js-imageInputFeatured');\n $featuredImageInputs.each(function(index, el){\n var $el = $(el);\n var pond = FilePond.create(el,\n {\n maxFiles: 1,\n maxFileSize: '5MB',\n acceptedFileTypes: ['image/png', 'image/jpeg', 'image/gif'],\n allowMultiple: false,\n allowImagePreview: true,\n allowPaste: false,\n server: {\n load: loadFile,\n process: processFeaturedImage,\n revert: removeFeaturedImage,\n remove: removeFeaturedImage\n },\n files: $el.data('files')\n });\n });\n\n var $multiImageInputs = $('.js-imageInputMulti');\n var $addToTop = $('#js-image-add-to-top');\n $multiImageInputs.each(function(index, el){\n var $el = $(el);\n var imageInsertLocation = $addToTop.val() === 'true' ? 'before' : 'after';\n var pond = FilePond.create(el,\n {\n maxFileSize: '5MB',\n acceptedFileTypes: ['image/*'],\n allowMultiple: true,\n allowImagePreview: true,\n imagePreviewHeight: 200,\n itemInsertLocation: imageInsertLocation,\n allowReorder: true,\n allowPaste: false,\n server: {\n load: loadFile,\n process: processImageFile,\n revert: removeImage,\n remove: removeImage\n },\n files: $el.data('files'),\n onprocessfile: setImageOrder,\n onreorderfiles: reorderProductImages\n });\n\n function setImageOrder(){\n reorderProductImages(pond.getFiles());\n };\n });\n\n var $downloadInputs = $('.js-fileInputDownload');\n $downloadInputs.each(function(index, el){\n var pond = FilePond.create(el,\n {\n allowMultiple: true,\n allowRevert: false,\n allowRemove: false,\n allowPaste: false,\n server: {\n process: processDownloadFile\n }\n });\n });\n\n var $versionDownloadInputs = $('.js-versionFileInputDownload');\n $versionDownloadInputs.each(function(index, el){\n var pond = FilePond.create(el,\n {\n allowMultiple: true,\n allowRevert: false,\n allowRemove: false,\n allowPaste: false,\n server: {\n process: processVersionDownloadFile\n }\n });\n });\n\n var $avatarInputs = $('.js-imageInputAvatar');\n $avatarInputs.each(function(index, el){\n var $el = $(el);\n var pond = FilePond.create(el,\n {\n maxFileSize: '5MB',\n acceptedFileTypes: ['image/*'],\n maxFiles: 1,\n allowMultiple: false,\n allowImagePreview: true,\n server: {\n load: loadFile,\n process: processAvatarImage,\n revert: removeAvatarImage,\n remove: removeAvatarImage\n },\n files: $el.data('files')\n });\n });\n\n var $messageInputs = $('.js-fileInputMessage');\n $messageInputs.each(function(index, el){\n var pond = FilePond.create(el,\n {\n maxFileSize: '5MB',\n maxFiles: 1,\n allowMultiple: false,\n allowRevert: false,\n allowRemove: false,\n server: {\n process: processMessageFile\n }\n });\n });\n\n var $postImageInputs = $('.js-imageInputPost');\n $postImageInputs.each(function(index, el){\n var $el = $(el);\n var pond = FilePond.create(el,\n {\n maxFiles: 1,\n maxFileSize: '5MB',\n acceptedFileTypes: ['image/png', 'image/jpeg', 'image/gif'],\n allowMultiple: false,\n allowImagePreview: true,\n server: {\n load: loadFile,\n process: processPostImage,\n revert: removePostImage,\n remove: removePostImage\n },\n files: $el.data('files')\n });\n });\n\n var $shopBannerInputs = $('.js-imageInputBanner');\n $shopBannerInputs.each(function(index, el){\n var $el = $(el);\n var pond = FilePond.create(el,\n {\n maxFiles: 1,\n maxFileSize: '5MB',\n acceptedFileTypes: ['image/png', 'image/jpeg', 'image/gif'],\n allowMultiple: false,\n allowImagePreview: true,\n server: {\n load: loadFile,\n process: processBannerImage,\n revert: removeBannerImage,\n remove: removeBannerImage\n },\n files: $el.data('files')\n });\n });\n\n});\n\nfunction loadFile(source, load, error, progress, abort, headers) {\n $.ajax({\n url: source.split(\"|\")[1], // [0] is the database ID\n method: 'get',\n cache: false, // avoid S3 cors issues\n xhrFields: {\n responseType: 'blob'\n },\n success: function(response){\n load(response);\n }\n })\n}\n\n//\n// 1. PROCESS\n//\nfunction processImageFile(fieldName, file, metadata, load, error, progress, abort) {\n // Begin processing image by sending a request to the server\n // Subsequent methods are handled in 2 callbacks: sendFileToS3, createProductImage\n // SetTimeout causes this to be started in a thread, which helps with animations\n setTimeout(getPresignParams(file, load, error, createProductImage, '/s3/public_params'), 0);\n}\n\nfunction processFeaturedImage(fieldName, file, metadata, load, error, progress, abort) {\n setTimeout(getPresignParams(file, load, error, updateProductFeaturedImage, '/s3/public_params'), 0);\n}\n\nfunction processDownloadFile(fieldName, file, metadata, load, error, progress, abort) {\n setTimeout(getPresignParams(file, load, error, createProductDownload), 0);\n}\n\nfunction processVersionDownloadFile(fieldName, file, metadata, load, error, progress, abort) {\n setTimeout(getPresignParams(file, load, error, createProductVersionDownload), 0);\n}\n\nfunction processAvatarImage(fieldName, file, metadata, load, error, progress, abort) {\n setTimeout(getPresignParams(file, load, error, updateUserAvatarImage, '/s3/public_params'), 0);\n}\n\nfunction processMessageFile(fieldName, file, metadata, load, error, progress, abort) {\n setTimeout(getPresignParams(file, load, error, assignMessageFiles), 0);\n}\n\nfunction processPostImage(fieldName, file, metadata, load, error, progress, abort) {\n setTimeout(getPresignParams(file, load, error, updatePostImage, '/s3/public_params'), 0);\n}\n\nfunction processBannerImage(fieldName, file, metadata, load, error, progress, abort) {\n setTimeout(getPresignParams(file, load, error, updateShopBannerImage, '/s3/public_params'), 0);\n}\n\n//\n// 2. PRESIGN\n//\nfunction getPresignParams(file, load, error, callbackMethod, url='/s3/params') {\n // Server should presign the file and return params for S3\n $.ajax({\n url: url,\n method: 'get',\n data: {\n filename: file.name,\n type: file.type\n },\n success: function(presignResponse){\n setTimeout(sendFileToS3(file, presignResponse, load, error, callbackMethod), 0);\n }\n });\n}\n\n//\n// 3. S3 Storage\n//\nfunction sendFileToS3(file, presignResponse, load, error, callbackMethod){\n\n // Presign succeeded\n var url = new URL(presignResponse['url']);\n\n $.ajax({\n url: url,\n method: 'PUT',\n headers: presignResponse['headers'],\n data: file,\n processData: false,\n contentType: file.type,\n success: function(awsResponse){\n // File has been successfully uploaded to S3!\n // Now we have to inform our server of the upload.\n\n var presignFileData = {\n 'key': url.pathname\n }\n setTimeout(callbackMethod(file, presignFileData, load, error), 0);\n }\n });\n}\n\n//\n// 4. APP HOOKUPS\n//\n\nfunction formatCachedUpload(file, presignFileData, storage='cache') {\n return {\n id: presignFileData['key'].match(/^\\/cache\\/(.+)/)[1], // object key without cache prefix\n storage: storage,\n metadata: {\n size: file.size,\n filename: file.name,\n mime_type: file.type,\n }\n };\n}\n\n// This method takes the CSRF token from a form and submits it remotely\nfunction ajaxUpdateForm(formSelector, requestMethod, data, successCallback) {\n var $form = $(formSelector);\n var formData = {\n _method: requestMethod,\n authenticity_token: $form.find('input[name=\"authenticity_token\"]').val()\n };\n $.ajax({\n url: $form.attr('action'),\n method: 'post',\n dataType: 'json',\n data: {\n ...formData,\n ...data\n },\n success: successCallback\n });\n}\n\nfunction updateProductFeaturedImage(file, presignFileData, load, error) {\n // Construct uploaded file data in the format that Shrine expects\n var uploadedFileData = formatCachedUpload(file, presignFileData, 'public_cache');\n\n // Make an AJAX request to update our server with the new image\n ajaxUpdateForm(\n '.edit_product',\n 'patch',\n { product: { image: uploadedFileData } },\n function(response){\n if (response['success'] == true){\n load(uploadedFileData['id']);\n checkProductFormCompletion(); // update form circles\n } else {\n error('Something went wrong');\n checkProductFormCompletion();\n }\n }\n );\n}\n\nfunction createProductImage(file, presignFileData, load, error) {\n var uploadedFileData = formatCachedUpload(file, presignFileData, 'public_cache');\n\n ajaxUpdateForm(\n '.edit_product',\n 'patch',\n { product: { images_attributes: [{ id: null, image: uploadedFileData }] } },\n function(response){\n // Tell FilePond to finish. last_image_id is used to associate the image\n // to the newly created ProductImage in the back end.\n if (response['success'] == true){\n load(response['last_image_id'] + \"|\" + uploadedFileData['id']);\n } else {\n error('Something went wrong');\n }\n }\n );\n}\n\nfunction createProductDownload(file, presignFileData, load, error) {\n // Construct uploaded file data in the format that Shrine expects\n var uploadedFileData = formatCachedUpload(file, presignFileData);\n\n // Make an AJAX request to update our server with the new image\n ajaxUpdateForm(\n '.edit_product',\n 'patch',\n { product: { downloads_attributes: [{ id: null, title: file.name, file: uploadedFileData }] } },\n function(response){\n // Tell FilePond to finish. This ID doesn't matter, we will not use FP to revert downloads.\n if (response['success'] == true){\n load(uploadedFileData['id']);\n } else {\n error('Something went wrong');\n }\n }\n );\n}\n\nfunction createProductVersionDownload(file, presignFileData, load, error) {\n // Construct uploaded file data in the format that Shrine expects\n var uploadedFileData = formatCachedUpload(file, presignFileData);\n\n // Make an AJAX request to update our server with the new product file\n ajaxUpdateForm(\n '.new_download',\n 'post',\n { download: { id: null, title: file.name, file: uploadedFileData } },\n function(response){\n // Tell FilePond to finish and create html element for response data\n if (response['success'] == true){\n load(uploadedFileData['id']);\n var pond = FilePond.find($('.js-versionFileInputDownload')[0]);\n\n setTimeout(function() {\n transferFileElementOutOfPond(pond, file, response['html']);\n }, 2000);\n\n } else {\n error('Something went wrong');\n }\n }\n );\n\n}\n\n\nfunction updateUserAvatarImage(file, presignFileData, load, error) {\n // Construct uploaded file data in the format that Shrine expects\n var uploadedFileData = formatCachedUpload(file, presignFileData, 'public_cache');\n\n // Make an AJAX request to update our server with the new image\n ajaxUpdateForm(\n '.edit_user',\n 'patch',\n { user: { avatar: uploadedFileData } },\n function(response){\n if (response['success'] == true){\n load(uploadedFileData['id']);\n } else {\n error('Something went wrong');\n }\n }\n );\n}\n\nfunction assignMessageFiles(file, presignFileData, load, error) {\n // Construct uploaded file data in the format that Shrine expects\n var uploadedFileData = formatCachedUpload(file, presignFileData);\n // Put it in a hidden field to be used on form submit\n $('.js-fileInputMessage-target').val(JSON.stringify(uploadedFileData));\n load(uploadedFileData['id']);\n}\n\nfunction updatePostImage(file, presignFileData, load, error) {\n // Construct uploaded file data in the format that Shrine expects\n var uploadedFileData = formatCachedUpload(file, presignFileData, 'public_cache');\n\n // Make an AJAX request to update our server with the new image\n ajaxUpdateForm(\n '.edit_post',\n 'patch',\n { post: { image: uploadedFileData } },\n function(response){\n if (response['success'] == true){\n load(uploadedFileData['id']);\n } else {\n error('Something went wrong');\n }\n }\n );\n}\n\nfunction updateShopBannerImage(file, presignFileData, load, error) {\n // Construct uploaded file data in the format that Shrine expects\n var uploadedFileData = formatCachedUpload(file, presignFileData, 'public_cache');\n\n //the controller expects a settings id, otherwise it will create a new ShopSetting\n var $settingsId = $('input[name=\"shop[settings_attributes][id]\"]').val()\n\n // Make an AJAX request to update our server with the new image\n ajaxUpdateForm(\n '.edit_shop',\n 'patch',\n { \n shop: {\n settings_attributes: { \n id: $settingsId,\n banner: uploadedFileData \n }\n } \n },\n function(response){\n if (response['success'] == true){\n load(uploadedFileData['id']);\n } else {\n error('Something went wrong');\n }\n }\n );\n}\n\n//\n// 4a. IMAGE GALLERY REORDERING\n//\n\n// This only works with 1 multiple image gallery at a time due to the global variable.\n// If needed we can refactor this later to be more flexible.\nvar temporaryImageReorderTimeout;\nfunction reorderProductImages(filesArray) {\n // Set a timeout. After 5 seconds of no activity, let's update the server\n clearTimeout(temporaryImageReorderTimeout);\n temporaryImageReorderTimeout = setTimeout(function(){\n updateProductImageOrdinals(filesArray);\n }, 5000);\n}\n\nfunction updateProductImageOrdinals(filesArray) {\n var formattedData = [];\n for (var i=0; i<filesArray.length; i++){\n formattedData.push({\n id: filesArray[i].serverId.split(\"|\")[0],\n ordinal: i\n });\n }\n\n ajaxUpdateForm(\n '.edit_product',\n 'patch',\n { product: { images_attributes: formattedData } },\n function(response){\n // pass\n }\n );\n}\n\n//\n// 5. REMOVE / REVERT\n//\nfunction removeFeaturedImage(source, load, error) {\n // Make an AJAX request to delete the image\n ajaxUpdateForm(\n '.edit_product',\n 'patch',\n { product: { remove_image: true } },\n function(response){\n if (response['success'] == true){\n load();\n setTimeout(checkProductFormCompletion, 300);\n } else {\n error('File could not be removed');\n checkProductFormCompletion();\n }\n }\n );\n}\n\nfunction removeImage(source, load, error) {\n var productImageID = source.split(\"|\")[0];\n\n // Make an AJAX request to delete the image\n ajaxUpdateForm(\n '.edit_product',\n 'patch',\n { product: { destroy_product_images: [productImageID] } },\n function(response){\n if (response['success'] == true){\n load();\n } else {\n error('File could not be removed');\n }\n }\n );\n}\n\nfunction removeAvatarImage(source, load, error) {\n // Make an AJAX request to delete the image\n ajaxUpdateForm(\n '.edit_user',\n 'patch',\n { user: { remove_avatar: true } },\n function(response){\n if (response['success'] == true){\n load();\n } else {\n error('File could not be removed');\n }\n }\n );\n}\n\nfunction removePostImage(source, load, error) {\n // Make an AJAX request to delete the image\n ajaxUpdateForm(\n '.edit_post',\n 'patch',\n { post: { remove_image: true } },\n function(response){\n if (response['success'] == true){\n load();\n setTimeout(checkProductFormCompletion, 300);\n } else {\n error('File could not be removed');\n checkProductFormCompletion();\n }\n }\n );\n}\n\nfunction removeBannerImage(source, load, error) {\n var $settingsId = $('input[name=\"shop[settings_attributes][id]\"]').val()\n\n // Make an AJAX request to delete the image\n ajaxUpdateForm(\n '.edit_shop',\n 'patch',\n { \n shop: {\n settings_attributes: { \n id: $settingsId,\n remove_banner: true\n }\n } \n },\n function(response){\n if (response['success'] == true){\n load();\n } else {\n error('File could not be removed');\n }\n }\n );\n}\n","$(document).on('turbolinks:load', function(){\n $(\".show-password\").each(function (index, input) {\n var $input = $(input);\n var $toggler = $('.toggle-show-password');\n\n $toggler.on('click', function () {\n var change = \"\";\n if ($(this).hasClass('fa-eye')) {\n $(this).removeClass('fa-eye').addClass('fa-eye-slash')\n change = \"text\";\n } else {\n $(this).removeClass('fa-eye-slash').addClass('fa-eye')\n change = \"password\";\n }\n var $rep = $(\"<input type='\" + change + \"' required />\")\n .attr(\"id\", $input.attr(\"id\"))\n .attr(\"name\", $input.attr(\"name\"))\n .attr('class', $input.attr('class'))\n .val($input.val())\n .insertBefore($input);\n $input.remove();\n $input = $rep;\n }).insertAfter($input);\n });\n});","$(document).on('turbolinks:load', function (){\n var placeholderText = 'Search...'; \n\tcleanupLastLoad();\n\n $('.js-select-multi').select2({\n multiple: true,\n width: '100%'\n });\n\n function initializeSelect2(selectElement) {\n var $selectElement = $(selectElement);\n if ($selectElement.data('url')) {\n $selectElement.select2({\n ajax: {\n url: $selectElement.data('url'),\n dataType: 'json',\n delay: 250,\n data: function (params) {\n return {\n q: params.term // search term\n };\n },\n processResults: function (data) {\n return {\n results: data.results\n };\n },\n cache: true\n },\n minimumInputLength: 3,\n placeholder: placeholderText,\n width: '100%'\n }); \n } else {\n $selectElement.select2({\n width: '100%'\n }); \n }\n }\n // Initialize for static page load\n $('.js-select, .js-input-select').each(function() {\n \tinitializeSelect2(this);\n });\n\n // Reinitialize for dynamically added elements (e.g., via Cocoon)\n $(document).on('cocoon:after-insert', function(e, insertedItem) {\n $(insertedItem).find('.js-select, .js-input-select').each(function() {\n initializeSelect2(this);\n });\n });\n\n\tfunction cleanupLastLoad(){\n\t\t// Select2 cleanup\n\t\tvar $selects = $('.js-select');\n\t\tfor (var i=0; i<$selects.length; i++){\n\t\t\tvar $sel = $($selects[i]);\n\t\t\tif ($sel.data('select2')) $sel.select2('destroy');\n\t\t}\n\t\n\t\tvar $multiSelects = $('.js-select');\n\t\tfor (var i=0; i<$multiSelects.length; i++){\n\t\t\tvar $sel = $($multiSelects[i]);\n\t\t\tif ($sel.data('select2')) $sel.select2('destroy');\n\t\t}\n\t\t\n\t}\n\n});\n","$(document).on('turbolinks:load', function(){\n\n $userSelect = $('.js-user-select')\n $selectSpinner = $('.js-select2-spinner')\n\n $userSelect.select2({\n placeholder: \"Search by username...\",\n ajax: {\n url: '/users/autocomplete',\n dataType: 'json',\n delay: 500,\n data: function(params){\n if (params.term && params.term.length > 0) $selectSpinner.show() //display spinner when user starts typing\n\n return {\n query: params.term\n }\n },\n processResults: function(data) {\n if (data) $selectSpinner.hide() //hide spinner when API returns a response\n\n data = $.map(data, function (obj) {\n obj.text = obj.username; // select2 looks for a text key in data to display as option\n return obj;\n })\n\n return {\n results: data\n }\n }\n },\n })\n\n $userSelect.on('select2:select', function(e) {\n let data = e.params.data;\n let options = `<option value=${data.id} selected>${data.text}</option>`\n $userSelect.empty().append(options).val(data.id).trigger('change')\n }); \n})\n\n","$(document).on('turbolinks:load', function() {\n\n var $variantFormsContainer = $('#js-sortable-variants');\n var productId = $('input[name=\"data_product_id\"]').val();\n\n if ($variantFormsContainer.length) {\n \n var $variantNestedFields = $('.js-variant-nested-field');\n\n if ($variantNestedFields.length) {\n $variantNestedFields.each(function() {\n var $this = $(this);\n var $variantFileSelect = $this.find('.js-variant-file-select');\n\n // initialize file select dropdown for existing variant files\n if ($variantFileSelect.length) {\n $variantFileSelect.each(function() {\n initializeVariantFileSelect(this);\n });\n }\n\n // initialize newly added file select dropdown\n $this.on('cocoon:after-insert', function(e, $insertedItem) {\n if ($insertedItem.hasClass('js-variant-file-wrapper')) {\n let $insertedVariantFileSelect = $insertedItem.find('.js-variant-file-select');\n\n $insertedVariantFileSelect.each(function() {\n initializeVariantFileSelect(this);\n });\n }\n });\n });\n }\n\n // Initialize file select dropdown for newly added Variant nested form fields\n $variantFormsContainer.on('cocoon:after-insert', function(e, $insertedItem) {\n\n if ($insertedItem.hasClass('js-variant-nested-field')) {\n\n $insertedItem.on('cocoon:after-insert', function(e, $insertedItem) {\n \n if ($insertedItem.hasClass('js-variant-file-wrapper')) {\n let $insertedVariantFileSelect = $insertedItem.find('.js-variant-file-select');\n\n $insertedVariantFileSelect.each(function() {\n initializeVariantFileSelect(this);\n });\n }\n });\n }\n });\n\n function initializeVariantFileSelect(fileSelect) {\n let $fileSelect = $(fileSelect);\n\n $fileSelect.select2({\n width: '100%',\n ajax: {\n url: '/api/v1/products/files/search/' + productId,\n dataType: 'json',\n delay: 250,\n data: function(params) {\n return { q: params.term }\n },\n processResults: function(data) {\n return { results: data }\n },\n cache: true\n },\n placeholder: 'Select or Search by filename...'\n });\n \n $fileSelect.on('select2:select', function(e) {\n let data = e.params.data;\n let selected = new Option(data.text, data.id, true, true);\n $fileSelect.empty().append(selected).trigger('change');\n });\n };\n };\n});","$(document).on('turbolinks:load', function(){\n\n var $slugInputs = $('.js-input-slug');\n if ($slugInputs.length > 0) {\n $slugInputs.on('keypress', preventInvalidSlugInput);\n $slugInputs.on('paste', preventPasteSlugInput);\n $slugInputs.on('change', lowercaseSlugValue);\n\n $slugInputs.each(function(index, item) {\n var $item = $(item);\n var checkApiToUse = $item.data('check');\n\n if (checkApiToUse == \"users\") {\n checkSlug($item, '/api/v1/users/checkslug/');\n } else if (checkApiToUse == \"products\") {\n checkSlug($item, '/api/v1/checkslug/');\n }\n });\n\n }\n\n var $couponCodeInput = $('.js-input-coupon_code');\n if ($couponCodeInput.length > 0) {\n $couponCodeInput.on('keypress', preventInvalidSlugInput);\n $couponCodeInput.on('paste', preventPasteSlugInput);\n $couponCodeInput.on('change', lowercaseSlugValue);\n }\n\n})\n\nfunction preventInvalidSlugInput(e) {\n // Prevent user from entering characters not supported in slugs\n if (\n e.which == 32 ||\n (e.which < 48 && e.which !== 45 ) ||\n (e.which > 57 && e.which < 65) ||\n (e.which > 90 && e.which < 97) ||\n e.which > 122\n ) {\n return false;\n }\n}\n\nfunction preventPasteSlugInput(e) {\n e.preventDefault();\n}\n\nfunction lowercaseSlugValue(e) {\n var $this = $(this);\n $this.val($this.val().toLowerCase());\n}\n\nfunction checkSlug($el, path) {\n var slugTimer;\n\n $el.on('input', function(e){\n clearTimeout(slugTimer);\n\n var $this = $(this);\n var slug = stringToSlug($.trim($this.val().toLowerCase()));\n\n clearSlugFeedback($this);\n\n slugTimer = setTimeout(function(){\n // See if we should check the slug\n if (slug == '' || slug.length <= 5) {\n return;\n }\n\n $this.addClass('is-loading');\n\n $.ajax({\n url: path + slug,\n success: function(response){\n if (response && response['slug_taken'] == false) {\n slugSuccess($this, response);\n }\n else if (response && response['slug_taken'] == true && response['user_id'] == $this.data('user')) {\n slugSuccess($this, response);\n }\n else {\n slugFail($this, response);\n }\n }\n }); // end ajax\n }, 600); // end slugTimer = setTimeout(...);\n }); // end $el.on('keypress');\n}\n\nfunction clearSlugFeedback($target){\n $target.removeClass('is-loading is-valid is-invalid');\n $target.closest('.form-group').find('label.text-danger').remove();\n}\n\nfunction slugFail($target, response){\n clearSlugFeedback($target);\n $target.addClass('is-invalid');\n $target.after('<label class=\"text-danger small mb-2\">Slug has been taken.</label>');\n}\n\nfunction slugSuccess($target, response){\n clearSlugFeedback($target);\n $target.addClass('is-valid');\n}\n\nfunction stringToSlug(str){\n return (\n str.toLowerCase()\n .replace(/\\.[^/.]+$/, \"\")\n .replace(/ /g,'-')\n .replace(/[^\\w-]+/g,'')\n );\n}\n","$(document).on('turbolinks:load', function () {\n\n // Clean up any pre existing text editors\n $('.js-textEditor-basic').summernote('destroy');\n $('.js-textEditor-expanded').summernote('destroy');\n $('.js-textEditor-slim').summernote('destroy');\n $('.js-textEditor-simple').summernote('destroy');\n\n // Initialize basic Summernote text editor\n var basicEditors = $('.js-textEditor-basic');\n for (var i=0; i<basicEditors.length; i++){\n var $basicNote = $(basicEditors[i]);\n $basicNote.summernote({\n height: 140,\n toolbar: [\n ['style', ['style']],\n ['font', ['bold', 'italic', 'underline', 'strikethrough', 'clear']],\n ['color', ['color']],\n ['para', ['ul', 'ol', 'paragraph']],\n ['table', ['table']],\n ['insert', ['link', 'picture', 'video']],\n ['view', ['fullscreen', 'codeview', 'help']],\n ],\n callbacks: {\n onImageUpload: function(files){\n summernoteImageUpload(files, $basicNote);\n },\n onImageLinkInsert: function(url) {\n insertDefaultWidthImage(url, $basicNote);\n },\n onBlurCodeview: function () {\n // ensure that text entered inside code view is saved without having to switch back to visual mode\n // more info: https://github.com/summernote/django-summernote/issues/127#issuecomment-714735251\n let codeviewHtml = $(this).summernote('code');\n $(this).val(codeviewHtml);\n },\n },\n prettifyHtml: true,\n codemirror: {\n htmlMode: true,\n lineWrapping: true,\n lineNumbers: true,\n mode: 'text/html'\n },\n codeviewFilter: false,\n codeviewIframeFilter: true\n });\n }\n\n // Expanded height text editor\n var expandedEditors = $('.js-textEditor-expanded');\n for (var i=0; i<expandedEditors.length; i++){\n var $expandedNote = $(expandedEditors[i]);\n $expandedNote.summernote({\n height: 400,\n toolbar: [\n ['style', ['style']],\n ['font', ['bold', 'italic', 'underline', 'strikethrough', 'clear']],\n ['color', ['color']],\n ['para', ['ul', 'ol', 'paragraph']],\n ['table', ['table']],\n ['insert', ['link', 'picture', 'video']],\n ['view', ['fullscreen', 'codeview', 'help']],\n ],\n callbacks: {\n onImageUpload: function(files){\n summernoteImageUpload(files, $expandedNote);\n },\n onImageLinkInsert: function (url) {\n insertDefaultWidthImage(url, $expandedNote);\n },\n onBlurCodeview: function () {\n let codeviewHtml = $(this).summernote('code');\n $(this).val(codeviewHtml);\n },\n },\n prettifyHtml: true,\n codemirror: {\n htmlMode: true,\n lineWrapping: true,\n lineNumbers: true,\n mode: 'text/html'\n },\n codeviewFilter: false,\n codeviewIframeFilter: true\n });\n\n //modify the video node that summernote creates and make it responsive with bootstrap classes\n var nativeVideoNodeBuilderFunc = $expandedNote.summernote('module', 'videoDialog').createVideoNode;\n $expandedNote.summernote('module', 'videoDialog').createVideoNode = function(url) {\n url = url.replace(/\\&.*/,'');\n var tmp = nativeVideoNodeBuilderFunc(url);\n var $embed = $('<p><br></p>');\n var $iframeWrapper = $('<div>').addClass('ratio ratio-16x9');\n $(tmp).appendTo($iframeWrapper);\n $iframeWrapper.prependTo($embed);\n return $embed[0];\n };\n }\n\n // Slim text editor\n var slimEditors = $('.js-textEditor-slim');\n for (var i=0; i<slimEditors.length; i++){\n var $slimNote = $(slimEditors[i]);\n $slimNote.summernote({\n height: 140,\n toolbar: [\n ['font', ['bold', 'italic', 'underline', 'strikethrough', 'clear']],\n ['para', ['ul', 'ol', 'paragraph']],\n ['insert', ['link', 'picture']],\n ['view', ['help']],\n ],\n callbacks: {\n onImageUpload: function(files){\n summernoteImageUpload(files, $slimNote);\n },\n onImageLinkInsert: function (url) {\n insertDefaultWidthImage(url, $slimNote);\n }\n }\n });\n }\n\n // Simple text editor\n var simpleEditors = $('.js-textEditor-simple');\n for (var i = 0; i < simpleEditors.length; i++){\n var $simpleNote = $(simpleEditors[i]);\n $simpleNote.summernote({\n height: 140,\n toolbar: [\n ['font', ['bold', 'italic', 'underline', 'strikethrough', 'clear']],\n ['para', ['ul', 'ol', 'paragraph']],\n ['view', ['help']],\n ],\n });\n }\n\n // Clean up initialized text editors before navigating away\n $(document).one('turbolinks:before-cache', function() {\n $('.js-textEditor-basic').summernote('destroy');\n $('.js-textEditor-expanded').summernote('destroy');\n $('.js-textEditor-slim').summernote('destroy');\n $('.js-textEditor-simple').summernote('destroy');\n });\n\n});\n\nfunction summernoteImageUpload(files, $summernote) {\n var file = files[0]; // TODO multiple images at once?\n // Get presign params and initiate upload\n $.ajax({\n url: '/s3/public_params',\n method: 'get',\n data: {\n filename: file.name,\n type: file.type\n },\n success: function(presignResponse){\n setTimeout(function() {\n sendSummernoteFileToS3(file, presignResponse, $summernote);\n }, 0);\n }\n });\n}\n\nfunction sendSummernoteFileToS3(file, presignResponse, $summernote) {\n // Presign succeeded, package file to send via AJAX\n var url = new URL(presignResponse['url']);\n // Upload file to S3\n $.ajax({\n url: url,\n method: 'PUT',\n headers: presignResponse['headers'],\n data: file,\n processData: false,\n contentType: file.type,\n success: function(awsResponse){\n // File has been successfully uploaded to S3!\n // Now we just have to insert the proper URL into the editor.\n insertDefaultWidthImage(cdnImageUrl+url['pathname'], $summernote);\n }\n });\n}\n\nfunction insertDefaultWidthImage(url, $summernote) {\n var $img = $('<img>').attr({ src: url, style: \"max-width: 100%;\" });\n $summernote.summernote('insertNode', $img[0]);\n}\n\n$(document).on('cocoon:after-insert', function (e, $insertedItem) {\n\n var slimEditors = $insertedItem.find('.js-textEditor-slim');\n for (var i=0; i<slimEditors.length; i++){\n var $summernote = $(slimEditors[i]);\n $summernote.summernote({\n height: 140,\n toolbar: [\n ['font', ['bold', 'italic', 'underline', 'strikethrough', 'clear']],\n ['para', ['ul', 'ol', 'paragraph']],\n ['insert', ['link', 'picture']],\n ['view', ['help']],\n ],\n callbacks: {\n onImageUpload: function(files){\n summernoteImageUpload(files, $summernote);\n }\n }\n });\n }\n\n});\n","$(document).on('ready turbolinks:load', function(){\n\n $('.js-input-counted').each(function(){\n var $textarea = $(this)\n var $counter = $textarea.parent().find('.js-input-counted-target')\n var $counterContainer = $counter.parent()\n\n updateCounterInput($textarea, $counter, $counterContainer)\n\n $('.note-editable').on('input', function(){\n var $noteTextarea= $(this)\n updateCounterInput($textarea, $counter, $counterContainer, $noteTextarea)\n })\n })\n\n})\n\nfunction strip_html_tags(str) {\n return str.replace(/<[^>]*>?/gm, '');\n}\n\nfunction updateCounterInput($textarea, $counter, $container, $noteTextarea= null){\n var minLength = $textarea.data('minlength')\n var noteTextLength = $noteTextarea && strip_html_tags($noteTextarea.text()).length \n var strippedInputCountedContainerLength = strip_html_tags($('.js-input-counted').val()).length\n\n function currentLength(){\n if (noteTextLength) {\n return noteTextLength\n } else if(strippedInputCountedContainerLength > 0) {\n return strippedInputCountedContainerLength\n } else {\n return 0\n }\n }\n\n $counter.text(`${currentLength()}/${minLength}`)\n if (currentLength() < minLength) {\n $container.addClass('error text-danger')\n $('.fa-exclamation-triangle').show()\n } else {\n $container.removeClass('error text-danger')\n $('.fa-exclamation-triangle').hide()\n }\n}","$(document).on('turbolinks:load', function () {\n var $createBtn = $('#js-create-account-btn'),\n $loginForm = $('#js-login-form'),\n $loginLink = $('#js-login-link'),\n $signUpForm = $('#js-registration-form');\n\n $createBtn.on('click', function(){\n $loginForm.hide();\n $signUpForm.show();\n });\n\n $loginLink.on('click', function(e){\n e.preventDefault();\n $signUpForm.hide();\n $loginForm.show();\n });\n\n});","import { productImageSwiper } from '../swiper_init/swiper.js';\n\n$(document).on('turbolinks:load', function () {\n\n var $supportModal = $(\".js-support-modal\");\n\n $supportModal.on('show.bs.modal', function() {\n productImageSwiper.keyboard.disable();\n });\n\n $supportModal.on('hide.bs.modal', function() { \n productImageSwiper.keyboard.enable();\n });\n\n});","$(document).on('turbolinks:load', function () {\n\n // Reset YouTube video when modal is closed\n var $modal = $('.js-modal-youtube');\n if ($modal.length > 0) {\n // Store video source for autoplay and auto-stop\n var videoSrc = $('.yvideo').attr('src');\n\n $modal.on('show.bs.modal', function (e) {\n $('.yvideo').attr('src', videoSrc + \"&autoplay=1\");\n });\n\n $modal.on('hidden.bs.modal', function (e) {\n $('.yvideo').attr('src', videoSrc);\n });\n }\n\n});\n","$(document).on('turbolinks:load', function () {\n\n var $productContent;\n\n if ($('.layout-products-show').length) {\n $productContent = $('.js-product-content-show')\n } else if ($('.layout-products-edit').length) {\n $productContent = $('.note-editable');\n };\n\n if ($productContent != undefined && $productContent.length) {\n var $noneResponsiveIframes = $productContent.find('iframe').filter(function(){\n var $this = $(this);\n var src = $this.attr('src') || '';\n if ((src.includes('youtube') || src.includes('vimeo')) && $this.parent().not('div.ratio').length) {\n return $this;\n };\n });\n\n if ($noneResponsiveIframes.length) {\n $noneResponsiveIframes.each(function(){\n var $this = $(this);\n var $wrapper = $('<div>').addClass('ratio ratio-16x9');\n\n if ($this.parent('span.fr-video').length){\n var $span = $this.parent();\n $this.appendTo($wrapper);\n $span.replaceWith($wrapper);\n } else {\n $this.wrap($wrapper);\n };\n });\n };\n };\n});\n","$(document).on('turbolinks:load', function () {\n $('.js-product-variantPrice').on('change', function() {\n $('.js-variant-container.active').removeClass('active');\n $(this).closest('.js-variant-container').addClass('active');\n });\n});\n","import { url_get_param, url_add_param, url_remove_param } from '../../util/methods';\n\n$(document).on('turbolinks:load', function () {\n\n var $priceList = $('.js-product-variantPriceList');\n\n if ($priceList.length > 0) {\n var $priceCart = $('.js-price-cart');\n var $addToCartBtn = $('.js-product-addToCart');\n var $addToCartForm = $addToCartBtn.parent('form');\n var $variantContainer = $('.js-variant-container');\n var $variantPrices = $('.js-product-variantPrice');\n var queryStr = window.location.search;\n var varId = url_get_param('variant');\n\n $variantPrices.on('change', function(e){\n var $this = $(this);\n var price = $this.data('price');\n var variantId = $.trim($this.val());\n\n if ($this.is(':checked')) {\n $priceCart.text(price);\n $addToCartForm.attr('action', function(_, action){\n var baseAction = url_remove_param(action, 'variant');\n return url_add_param(baseAction, 'variant', variantId);\n });\n\n $variantContainer.removeClass('active-variant');\n $variantContainer.addClass('active-variant');\n }\n });\n\n if (queryStr && varId){\n $('#variant-' + varId).trigger('click');\n }\n }\n\n});\n","import { url_get_param, url_add_param, url_remove_param } from '../../util/methods';\n\n$(document).on('turbolinks:load', function () {\n\n function isSortActive(){\n return $('.reset-sort').length\n }\n\n function isSearchActive(){\n return $('body').hasClass('layout-search-index')\n }\n\n function isInbox(){\n return $('body').hasClass('layout-inbox-index')\n }\n\n function removeSortParams(){\n var url = url_remove_param(location.href,'sort_sales')\n url = url_remove_param(url,'sort_date')\n url = url_remove_param(url,'sort_price')\n url = url_remove_param(url,'sort_range')\n url = url_remove_param(url,'sort_reviews')\n url = url_remove_param(url,'sort_about')\n url = url_remove_param(url,'sort_status')\n url = url_remove_param(url,'sort_earnings')\n url = url_remove_param(url,'sort_hearts')\n url = url_remove_param(url,'sort_paid')\n url = url_remove_param(url,'sort_amount')\n url = url_remove_param(url,'sort_items_amount')\n url = url_remove_param(url,'sort_claimed')\n url = url_remove_param(url,'sort_license')\n url = url_remove_param(url,'sort_role')\n url = url_remove_param(url,'sort_rating')\n url = url_remove_param(url,'sort_sale')\n url = url_remove_param(url,'on_sale')\n url = url_remove_param(url,'sort_version')\n url = url_remove_param(url,'sort_referral_status')\n return url\n }\n\n function removeOrderParams(){\n var url = url_remove_param(location.href,'sort_price')\n url = url_remove_param(url,'sort_sales')\n url = url_remove_param(url,'sort_reviews')\n url = url_remove_param(url,'sort_date')\n return url\n }\n\n // When a product sort filter is toggled\n\t$('.js-sort-selectFilter').on('change', function() {\n\n var $this = $(this);\n\t\tvar selected = $this.find('option:selected');\n var type = selected.attr('data-type');\n var value = selected.val();\n var url = location.href;\n\n if (type == 'reset') {\n url = removeSortParams();\n } else if ($this.hasClass('js-order-by') ) {\n url = removeOrderParams();\n url = url_remove_param(url,'page') //reset to first page whenever a new sort is applied\n url = url_add_param(url, type, value);\n } else if (isSearchActive()) {\n url = removeSortParams();\n url = url_add_param(url, type, value);\n } else if (isInbox()) {\n url = url_add_param(location.href, type, value);\n } else {\n url = url_add_param(location.href, type, value);\n }\n\n\t\tTurbolinks.visit(url);\n\t\treturn false;\n\t});\n\n /*\n *\tOn page load, check for any params, highlight active filter dropdowns, and build active labels\n * @since 1.2.5\n */\n var supportedFilters = [\n ['sort_sales', url_get_param('sort_sales')],\n ['sort_earnings', url_get_param('sort_earnings')],\n ['sort_amount', url_get_param('sort_amount')],\n ['sort_items_amount', url_get_param('sort_items_amount')],\n ['sort_date', url_get_param('sort_date')],\n ['sort_price', url_get_param('sort_price')],\n ['sort_range', url_get_param('sort_range')],\n ['sort_hearts', url_get_param('sort_hearts')],\n ['sort_about', url_get_param('sort_about')],\n ['sort_status', url_get_param('sort_status')],\n ['sort_paid', url_get_param('sort_paid')],\n ['sort_event_name', url_get_param('sort_event_name')],\n ['sort_campaign', url_get_param('sort_campaign')],\n ['sort_role', url_get_param('sort_role')],\n ['sort_license', url_get_param('sort_license')],\n ['sort_claimed', url_get_param('sort_claimed')],\n ['sort_reviews', url_get_param('sort_reviews')],\n ['sort_sale', url_get_param('sort_sale')],\n ['on_sale', url_get_param('on_sale')],\n ['sale_campaign', url_get_param('sale_campaign')],\n ['sort_rating', url_get_param('sort_rating')],\n ['sort_version', url_get_param('sort_version')],\n ['sort_referral_status', url_get_param('sort_referral_status')]\n\t\t\t\t\t\t\t\t\t]\n\n\t$.each(supportedFilters, function(index, value){\n\n\t\tvar sort_val = value[1]\n\t\t,\t sort_type = value[0]\n\n if (sort_val && window.location.search.indexOf(sort_type) > -1) {\n $('option[data-type=\"'+sort_type+'\"][value=\"'+sort_val+'\"]').prop('selected', true);\n buildFilterLabel(sort_type);\n }\n\t});\n\n // remove a filter tag and param\n $('div[data-filter-tag] i').click(function(e){\n e.preventDefault();\n\n var tag = $(this).closest('div');\n var type = tag.data('filter-type');\n var target = tag.data('filter-tag');\n\n tag.remove();\n var url = url_remove_param(location.href, target);\n url = url_remove_param(url,'page'); //reset to first page whenever a filter or sort is removed\n Turbolinks.visit(url);\n });\n\n // Build the label for the active sorting filter\n function buildFilterLabel(item){\n if( !$('#js-sort-tag-'+item).length ) {\n $('#js-sort-tags').append(\n '<div data-filter-type=\"' + item + '\" data-filter-tag=\"' + item + \n '\" id=\"js-sort-tag-' + item + '\" class=\"badge badge-products-filter me-2 fw-normal rounded-4\">' + \n '<i class=\"fas fa-times me-1\" role=\"button\"></i>' + \n '<span>' + item.split('_')[1] + '</span>'\n ).addClass('has-filters');\n buildClearAllFiltersLabel()\n }\n }\n\n function buildClearAllFiltersLabel(){\n if( !$('.js-sort-reset').length ) {\n $('#js-sort-tags').prepend('<a href=\"#\" class=\"me-3 js-sort-reset fw-bold text-black\">Clear all Filters</a>')\n }\n }\n\n // Reset\n $('.js-sort-reset').on('click', function(e){\n e.preventDefault();\n var url;\n url = removeSortParams()\n Turbolinks.visit(url)\n })\n\n $('.js-sort-linkFilter').each(function () {\n $(this).on('click', function (e) {\n e.preventDefault();\n var $this = $(this);\n\n var type = $this.attr('data-type');\n var value = $this.attr('data-value');\n\n if (type === 'sort_range') {\n var url = url_add_param(location.href, type, [$this.attr('data-value-min'), $this.attr('data-value-max')] );\n } else if (type === 'sort_hearts' && value === 'reset') {\n var url = url_remove_param(location.href, type)\n } else if (type === 'on_sale') {\n var url;\n $this.prop('checked') ? url = url_add_param(location.href, type, true) : url= url_remove_param(location.href, type)\n } else if (type === 'category') {\n var params = decodeURIComponent(window.location.search.substring(1));\n var url = $this.attr('href') + '?' + params\n } else {\n var url = url_add_param(location.href, type, value);\n }\n\n url = url_remove_param(url,'page'); //reset to first page whenever a new filter is applied\n Turbolinks.visit(url);\n return false;\n });\n });\n});\n","$(document).on('turbolinks:load', function () {\n var savedGridRowAmount = localStorage.getItem('gridRowAmount')\n var $gridImgButton = $('.js-grid-img');\n var $productWrapper = $('.js-product-wrapper');\n\n // Restore state from localStorage\n if (savedGridRowAmount) {\n $gridImgButton.removeClass('active-row-columns-list');\n $gridImgButton.each(function () {\n if ($(this).parent().data('row-amount') == savedGridRowAmount) {\n $(this).addClass('active-row-columns-list');\n }\n });\n }\n \n if (savedGridRowAmount == 4) {\n $productWrapper.each(function () {\n $(this).removeClass('col-sm-6 col-md-6 col-lg-4').addClass('col-sm-6 col-md-4 col-lg-3');\n });\n } else if (savedGridRowAmount == 3) {\n $productWrapper.each(function () {\n $(this).removeClass('col-sm-6 col-md-4 col-lg-3').addClass('col-sm-6 col-md-6 col-lg-4');\n });\n }\n\n // Handle click events\n $('.js-grid-img').on('click', function(e){\n e.preventDefault()\n var $productWrapper = $('.js-product-wrapper')\n var $gridAmount = $(this).parent().data('row-amount');\n\n $('.js-grid-img').removeClass('active-row-columns-list')\n $(this).addClass('active-row-columns-list')\n\n if ($gridAmount == 4){\n $productWrapper.each(function() {\n $(this).removeClass('col-sm-6 col-md-6 col-lg-4').addClass('col-sm-6 col-md-4 col-lg-3');\n localStorage.setItem('gridRowAmount', $gridAmount);\n });\n } else if ($gridAmount == 3){\n $productWrapper.each(function() {\n $(this).removeClass('col-sm-6 col-md-4 col-lg-3').addClass('col-sm-6 col-md-6 col-lg-4');\n localStorage.setItem('gridRowAmount', $gridAmount);\n });\n }\n })\n});\n","const initializeAnalytics = () => {\n const path = window.location.pathname;\n\n const isTrackedPage = (path) => {\n const firstPathSegment = path.split(\"/\")[1];\n return firstPathSegment !== \"admin\";\n };\n\n const isTrackingSetUp = () => {\n return !!window.dataLayer && !!window.gtmId && !!window.gaId;\n };\n\n if (isTrackedPage(path) && isTrackingSetUp()) {\n const logAnalytics = (eventName, eventData, updatedProductViewInfo = {}) => {\n try {\n const userId = typeof window.currentUser !== \"undefined\" ? window.currentUser.id : null;\n\n let gtmData = {\n user_id: userId,\n gtm: {\n pageTitle: eventData.pageTitle,\n pagePath: eventData.pagePath,\n eventName: eventName,\n elementTarget: eventData.elementTarget || \"\",\n productSlug: eventData.productSlug || \"\",\n productViewInfo: updatedProductViewInfo,\n },\n };\n\n window.dataLayer.push(gtmData);\n\n if (typeof window.gtag === \"function\") {\n gtag(\"event\", eventName, {\n ...eventData,\n send_to: window.gaId,\n });\n };\n } catch (error) {\n console.warn(\"Error logging analytics: \" + error.message);\n };\n };\n\n const updateProductData = () => {\n if (isTrackedPage(path) && isTrackingSetUp()) {\n try {\n return window.productData ? (({ image_data, content, ...rest }) => rest)(window.productData) : {};\n\n } catch (error) {\n console.warn(\"Error updating product view info: \" + error.message);\n };\n };\n };\n\n const getEcommerceStep = (path) => {\n if (isTrackedPage(path) && isTrackingSetUp()) {\n try {\n switch (true) {\n case /\\/products\\/[^/]+\\/?$/.test(path):\n return \"view_item\";\n case /\\/cart\\/checkout\\/?$/.test(path):\n return \"begin_checkout\";\n case $(document.body).text().includes(\"Order completed successfully!\"):\n return \"purchase\";\n default:\n return null;\n };\n\n } catch (error) {\n console.warn(\"Error getting ecommerce step: \" + error.message);\n };\n };\n };\n\n const handleEcommerceClick = (event) => {\n if (isTrackedPage(path) && isTrackingSetUp()) {\n try {\n const clickedElement = $(event.target);\n const updatedProductViewInfo = updateProductData(window.productData);\n\n if (clickedElement.hasClass(\"btn-add-to-cart\")) {\n logAnalytics(\"add_to_cart\", {}, updatedProductViewInfo);\n } else if (clickedElement.closest(\".card-product\").length) {\n logAnalytics(\"product_click\", {\n elementTarget: clickedElement[0].outerHTML,\n }, updatedProductViewInfo);\n };\n \n } catch (error) {\n console.warn(\"Error handling ecommerce click: \" + error.message);\n };\n };\n };\n\n $(document).on(\"click\", handleEcommerceClick);\n\n try {\n if (isTrackedPage(path) && isTrackingSetUp()) {\n const updatedProductViewInfo = updateProductData(window.productData);\n const pageViewInfo = {\n pagePath: path,\n pageTitle: document.title,\n };\n\n if ($(\"script[src*='googletagmanager.com/gtag/js']\").length === 0) {\n const script = $(\"<script>\", {\n src: `https://www.googletagmanager.com/gtag/js?id=${window.gtmId}`,\n async: true\n });\n $(\"head\").append(script);\n };\n\n logAnalytics(\"page_view\", pageViewInfo)\n\n if (getEcommerceStep(path)) {\n logAnalytics(getEcommerceStep(path), pageViewInfo, updatedProductViewInfo);\n };\n };\n } catch (error) {\n console.warn(\"Error initializing analytics: \" + error.message);\n };\n };\n};\n\n$(document).on('turbolinks:load', initializeAnalytics);\n","// Instructions:\n// - Add 'copy-text' id to the value you want written to the clipboard.\n// - Add the class 'js-copy-text' to any button you want to activate the copyText component.\n// - Set the 'data-copy-target' attribute on the button to the ID of the element containing the text to copy ie: id=\"copy-text\".\n// \n// Example:\n// <p>\n// Hello World! Copy this link:\n// <a href=\"http://blendermarket.com/?ref=<%= @affiliate.id %>\" id=\"copy-text\">http://blendermarket.com/?ref=<%= @affiliate.id %></a>\n\n// <button class=\"btn btn-primary btn-sm js-copy-text\" data-copy-target=\"copy-text\">\n// <i class=\"fa fa-solid fa-copy\"></i> Copy\n// </button>\n// </p>\n// \n\nfunction copyText(event) {\n event.preventDefault();\n var $btn = $(event.currentTarget);\n var textToCopyId = $btn.data('copy-target');\n var $textToCopyElement = $('#' + textToCopyId);\n var textToCopy = $textToCopyElement.attr('href') || $textToCopyElement.text() || $textToCopyElement.val();\n\n navigator.clipboard.writeText(textToCopy).then(function() {\n $btn.html('<i class=\"\"></i> Copied');\n $btn.removeClass('btn-primary').addClass('btn-success');\n $btn.css('cursor', 'not-allowed');\n\n setTimeout(function() {\n $btn.html('<i class=\"fa fa-solid fa-copy\"></i> Copy');\n $btn.removeClass('btn-success').addClass('btn-primary');\n $btn.css('cursor', 'pointer');\n $btn.prop('disabled', false);\n }, 1000);\n });\n}\n\n$(document).on('turbolinks:load', function() {\n $('.js-copy-text').on('click', copyText);\n});\n","$(document).on('turbolinks:load', function() {\n if ($(\".email-subscribe-form\").length) {\n const $input = $(\".email-subscribe-form input[type='email']\");\n const element = $input.get(0);\n\n $(\".email-subscribe-form form\").on(\"submit\", function(event) {\n const emailFormat = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,63}$/;\n\n if (!emailFormat.test($input.val())) {\n event.preventDefault();\n element.setCustomValidity(\"Please enter a valid email address in the format of user@example.com.\");\n element.reportValidity();\n } else {\n element.setCustomValidity(\"\");\n }\n });\n\n $input.on(\"input\", function() {\n element.setCustomValidity(\"\");\n element.reportValidity();\n });\n };\n});\n","$(document).on('turbolinks:load', function () {\n\n if ($('form.edit_user').length) {\n var $payoutMethodSelect = $('.js-payout-method-select');\n\n $payoutMethodSelect.on('change', function() {\n let $selected = $(this).val();\n let $paypalEmailInput = $('.js-paypal-email-input-wrapper');\n let $stripeConnect = $('.js-stripe-connect-wrapper');\n\n if ($selected === 'paypal') {\n $stripeConnect.removeClass('show');\n $paypalEmailInput.addClass('show');\n } else if ($selected === 'stripe') {\n $paypalEmailInput.removeClass('show');\n $stripeConnect.addClass('show');\n } else {\n $paypalEmailInput.removeClass('show');\n $stripeConnect.removeClass('show');\n };\n });\n };\n});","$(document).on('turbolinks:load',function(){\n\n var $couponForm = $('.js-coupon-form');\n if ($couponForm.length > 0){\n\n // COUPON FORM SETUP\n\n var val = $('#coupon_coupon_type').val();\n toggleCouponType(val);\n \t$('#coupon_coupon_type').on('change', function(){\n \t\ttoggleCouponType($(this).val());\n \t});\n\n function toggleCouponType(val){\n if ( val == 'flat' ) {\n $('.coupon_discount_flat').show();\n $('.coupon_discount_percent').hide();\n } else {\n $('.coupon_discount_flat').hide();\n $('.coupon_discount_percent').show();\n }\n }\n\n // PRODUCT VARIANT SELECT SETUP\n // TODO merge with components/input_select/input_product_select.js\n\n $couponForm.on('cocoon:after-insert', function(){\n var $productSelects = $('.js-product-select');\n $.each($productSelects, function(i, el){\n $(el).attr('data-number', i); // set indexes for updating variant selects\n });\n $('.js-select').select2({ width: '100%' }); // re-initialize select2\n });\n\n $(document).on('change', '.js-product-select', function(){\n var $this = $(this);\n var val = $this.find('option:selected').val();\n var inputNumber = $this.data('number');\n $.ajax({\n type:'GET',\n url: '/product_variants?product=' + val + '&input_number=' + inputNumber,\n dataType : 'script'\n });\n });\n\n // INCLUDE ALL PRODUCTS SETUP\n var $productsToggle = $('.js-coupon-productsToggle');\n var $productsTarget = $('.js-coupon-productsTarget');\n\n var updateProductsTarget = function(){\n if ($productsToggle.prop('checked')) {\n $productsTarget.hide();\n // remove any existing products\n $productsTarget.find('.remove_fields').click();\n } else {\n $productsTarget.show();\n }\n }\n\n $productsToggle.on('change', updateProductsTarget);\n updateProductsTarget();\n\n // AFFILIATE COUPON SETUP\n var $affiliateToogle = $('.js-coupon-affiliate-toogle');\n var $affiliateTarget = $('.js-coupon-affiliate-target');\n var $affiliateCardHeader = $affiliateTarget.prev('div.card-header');\n\n var updateAffiliateTarget = function(){\n if ($affiliateToogle.prop('checked')) {\n $affiliateTarget.show();\n $affiliateCardHeader.removeClass('border-bottom-0');\n\n // cocoon nested creator_affiliate_coupon field\n var $nestedAffiliateCoupon = $affiliateTarget.find('div.nested-fields');\n if (!$nestedAffiliateCoupon.length) {\n // no nested field exists, so we add one\n $('.js-coupon-add-nested-affiliate-field').trigger('click');\n } else {\n // there is an existing one\n // because this is a has_one association we can't send multiple to the controller\n // we just have to modify the values of the existing one that may have been marked _destroy: true\n $nestedAffiliateCoupon.show();\n var $destroyAffiliateCoupon = $nestedAffiliateCoupon.find('input[id*=\"_destroy\"]');\n\n if ($destroyAffiliateCoupon.val() === '1') {\n $destroyAffiliateCoupon.val('false');\n $nestedAffiliateCoupon.find('select.js-coupon-affiliate-select').val(null).trigger('change');\n }\n }\n\n } else {\n // remove cocoon nested creator_affiliate_coupon field\n if ($affiliateTarget.find('div.nested-fields').length) {\n $('.js-coupon-remove-nested-affiliate-field').trigger('click');\n }\n $affiliateTarget.hide();\n $affiliateCardHeader.addClass('border-bottom-0');\n }\n }\n\n $affiliateToogle.on('change', updateAffiliateTarget);\n updateAffiliateTarget();\n }\n\n});\n","$(document).on('turbolinks:load', function(){\n\n var $adminOrderForm = $('.js-admin-order-form');\n\n if ($adminOrderForm.length > 0) {\n\n var $orderSubTotal = $('.js-admin-order-sub-total');\n var $taxAmount = $('.js-admin-order-tax-amount');\n var $orderTotal = $('.js-admin-order-total-amount');\n var $orderItems = $('.js-admin-order-item');\n\n if ($orderItems.length) {\n $orderItems.each(function() {\n fieldsInit(this);\n });\n };\n\n $('.new_order, .edit_order').on('cocoon:after-insert', function(e, insertedItem) {\n fieldsInit(insertedItem);\n }).on('cocoon:before-remove', function(e, insertedItem) {\n var $itemPrice = $(insertedItem).find('.js-admin-order-item-price').val();\n if ($itemPrice) calcSubTotal($itemPrice);\n });\n\n $orderSubTotal.on('change input', function(){\n (!$(this).val() || $(this).val() <= 0) ? $taxAmount.val(0) : null;\n calcOrderTotal();\n });\n\n $taxAmount.on('input', function(){\n calcOrderTotal();\n });\n\n function calcSubTotal(subtract = 0) {\n if (subtract) {\n $orderSubTotal.val(parseInt($orderSubTotal.val()) - parseInt(subtract)).trigger('change');\n } else {\n \n let $nestedItems = $adminOrderForm.find('.nested-fields')\n let $totalPrice = $.map($nestedItems, function(el){\n var $price = $(el).find('.js-admin-order-item-price').val();\n return $price ? parseInt($price) : 0;\n }).reduce((sum, price) => sum + price);\n\n $orderSubTotal.val($totalPrice).trigger('change');\n }\n };\n\n function calcOrderTotal(){\n let subTotal = parseInt($orderSubTotal.val()) || 0;\n let taxAmount = parseInt($taxAmount.val()) || 0;\n $orderTotal.val(subTotal + taxAmount);\n }\n\n function fieldsInit(element) {\n let $productSelects = $('.js-product-select');\n let $variantSelect = $(element).find('.js-product-variant-select');\n let $itemPrice = $(element).find('.js-admin-order-item-price');\n let $itemName = $(element).find('.js-admin-order-item-name');\n let $itemVendorId = $(element).find('.js-admin-order-item-vendor-id');\n let $itemSaleId = $(element).find('.js-admin-order-item-sale-id');\n\n $.each($productSelects, function(i, el){\n $(el).attr('data-number', i); // set indexes for updating variant selects\n });\n\n $('.js-select').select2({ width: '100%' }); // re-initialize select2\n\n $productSelects.on('change', function(){\n let $this = $(this);\n let val = $this.find('option:selected').val();\n let inputNumber = $this.data('number');\n $itemPrice.prop('disabled', false);\n\n if (val !== ''){\n getProductVariants(val, inputNumber);\n getProductDetails(val, $itemName, $itemPrice, $itemVendorId, $itemSaleId);\n };\n });\n\n $variantSelect.on('change', function(){ \n let val = $(this).val();\n if (val) {\n getVariantPrice(val, $itemPrice);\n } \n });\n\n $itemPrice.on('change input', function(){\n calcSubTotal();\n });\n };\n\n function getProductDetails(id, $nameField, $priceField, $vendorIdField, $saleIdField) {\n $.ajax({\n type: 'GET',\n url: '/api/v1/products/' + id,\n dataType: 'json',\n success: function(response){\n updateItemDetails($nameField, $priceField, $vendorIdField, $saleIdField, response);\n }\n });\n };\n\n function getProductVariants(id, inputNumber) {\n $.ajax({\n type:'GET',\n url: '/product_variants?product=' + id + '&input_number=' + inputNumber,\n dataType: 'script'\n });\n };\n\n function getVariantPrice(id, $priceField) {\n $.ajax({\n type: 'GET',\n url: '/api/v1/product_variants/' + id,\n dataType: 'json',\n success: function(response) {\n $priceField.val(response['price']).trigger('change');\n }\n });\n };\n\n function updateItemDetails($nameField, $priceField, $vendorIdField, $saleIdField, productObj) {\n $priceField.val(productObj['price']).trigger('change');\n $nameField.val(productObj['title']);\n $vendorIdField.val(productObj['user_id']);\n $saleIdField.val(productObj['sale_campaign_id']);\n\n if (productObj['sale_campaign_id']) {\n $priceField.parent().next('.js-sale-label').text('Item on Sale!');\n } else {\n $priceField.parent().next('.js-sale-label').text('');\n }\n };\n };\n});","$(document).on('turbolinks:load', function(){\n var $payoutsForm = $('.js-payouts-form');\n\n if ($payoutsForm.length > 0) {\n\n var $payoutConfirm = $('.js-payouts-process_confirm');\n var $payoutBtn = $('.js-payouts-process_btn');\n\n $payoutConfirm.on('change', function() {\n if (this.checked) {\n $payoutBtn.prop('disabled', false);\n } else {\n $payoutBtn.prop('disabled', true);\n }\n });\n\n var $detailsToggle = $('.js-payouts-details_toggle');\n var $detailsForm = $('.js-payouts-details_form');\n var $detailsDisplay = $('.js-payouts-details_display');\n\n $detailsToggle.click(function(e){\n e.preventDefault();\n\n $('.chosen-container').each(function() {\n $(this).attr('style', 'width: 100%');\n });\n\n $detailsDisplay.hide();\n $detailsToggle.hide();\n $detailsForm.show();\n });\n\n\n var $markAsPaid = $('.js-payouts-markAsPaid');\n $markAsPaid.click(function(e){\n e.preventDefault();\n\n var $this = $(this);\n\n // hacky way to check if this button should hit the server backend - we still have backend checks\n // in case of weird behavior or if someone tries to circumvent this\n if ($this.text() == 'Mark as Paid') {\n if (confirm($this.data('js-confirm'))) {\n $this.addClass('disabled');\n $this.text('Marking ...');\n\n var postUrl = '/admin/user_payouts/' + $this.data('user-payout-id') + '/mark_as_paid';\n $.post({\n url: postUrl,\n dataType: 'json'\n }).then(function(response){\n if (response['success'] == true) {\n $this.text('Paid');\n $this.removeClass('btn-warning disabled').addClass('btn-success cursor-default');\n var $status = $this.closest('tr').find('.js-payout-userPayoutStatus');\n $status.empty();\n $status.html('<span class=\"badge bg-success\"><i class=\"fas fa-check\"></i></span> <strong>Paid</strong>');\n } else {\n $this.text('Error');\n $this.removeClass('btn-warning disabled').addClass('btn-danger cursor-default');\n }\n });\n }\n }\n\n });\n\n }\n});\n","$(document).on('turbolinks:load', function () {\n var $prodFiles = $('.js-productReview-files-flag');\n var $primaryInfo = $('.js-productReview-primary-info-flag');\n var $categoriesSoftwareLicense = $('.js-productReview-categories-software-licensing-flag');\n var $productPage = $('.js-productReview-product-page-flag');\n var $prodImages = $('.js-productReview-images-flag');\n var $prodVariations = $('.js-productReview-variations-flag');\n var $docsFaqs = $('.js-productReview-docs-faq-flag');\n var $prodReviewSubmitBtn = $('.js-submit-product-review')\n\n var $flagsAndSubmit = [$prodFiles, $primaryInfo, $categoriesSoftwareLicense, $productPage, $prodImages, $prodVariations, $docsFaqs, $prodReviewSubmitBtn]\n\n $flagsAndSubmit.map(function(e){\n e.on('click', function(e){\n var $flag = $(e.target)\n var $isFlagged = $flag.attr('data-isflagged')\n updateFlag($flag, $isFlagged);\n sendFlag($flag)\n })\n })\n})\n\nfunction updateFlag($flag, isFlagged){\n var $navFlag = findNavFlag($flag)\n\n if (isFlagged === 'false'){\n $flag.removeClass('far').addClass('fas flagged')\n $flag.attr('data-isflagged', true)\n $navFlag.removeClass('d-none')\n\n } else if(isFlagged === 'true') {\n $flag.removeClass('fas flagged').addClass('far')\n $flag.attr('data-isflagged', false)\n $navFlag.addClass('d-none')\n }\n}\n\nfunction sendFlag(flag) {\n var flagSelectorDataAttr = flag.attr('data-isflagged')\n var flagChecked = flagSelectorDataAttr === 'true'\n\n if (flag.hasClass('js-productReview-files-flag')) {\n $('#product_review_product_files').val(flagSelectorDataAttr)\n updateReviewMessage(\"Product Files\", flagChecked)\n }\n else if (flag.hasClass('js-productReview-primary-info-flag')) {\n $('#product_review_primary_info').val(flagSelectorDataAttr)\n updateReviewMessage(\"Primary Info\", flagChecked)\n } \n else if (flag.hasClass('js-productReview-categories-software-licensing-flag')) {\n $('#product_review_categories_software_and_licensing').val(flagSelectorDataAttr)\n updateReviewMessage(\"Categories, Software & Licensing\", flagChecked)\n }\n else if (flag.hasClass('js-productReview-product-page-flag')) {\n $('#product_review_product_page').val(flagSelectorDataAttr)\n updateReviewMessage(\"Product Page\", flagChecked)\n }\n else if (flag.hasClass('js-productReview-images-flag')) {\n $('#product_review_image_gallery').val(flagSelectorDataAttr)\n updateReviewMessage(\"Image Gallery\", flagChecked)\n }\n else if (flag.hasClass('js-productReview-variations-flag')) {\n $('#product_review_product_variations').val(flagSelectorDataAttr)\n updateReviewMessage(\"Product Variations\", flagChecked)\n }\n else if (flag.hasClass('js-productReview-docs-faq-flag')) {\n $('#product_review_docs_and_faq').val(flagSelectorDataAttr)\n updateReviewMessage(\"Documentation & FAQ\", flagChecked)\n }\n}\n\nfunction findNavFlag($flag){\n // this function splits up the list of class names on a flag, and then appends '-nav' to the found class name\n $flagClassAry = $flag.attr('class').split(\" \")\n var findFlag = $flagClassAry.find((className)=> className.startsWith('js-productReview'))\n var classNav = findFlag + \"-nav\"\n return $(\".\" + classNav)\n} \n\nfunction updateReviewMessage(header, flagChecked) {\n if (flagChecked) {\n addHeaderToReviewMessage(header)\n } else {\n removeHeaderFromReviewMessage(header)\n }\n}\n\nfunction addHeaderToReviewMessage(header){\n var $reviewMessage = $('.js-productReview-reviewMessage')\n var text = $reviewMessage.summernote('code')\n\n // Account for blank/empty form\n if (text == \"<p><br></p>\") {\n text = \"\"\n }\n\n // Add header if not present\n if (!text.includes(\"<p><strong>\" + header + \"</strong></p>\")) {\n text += \"<p><strong>\" + header + \"</strong></p>\"\n text += \"<p> </p>\"\n }\n\n $reviewMessage.summernote('code', text)\n}\n\nfunction removeHeaderFromReviewMessage(header){\n var $reviewMessage = $('.js-productReview-reviewMessage')\n var text = $reviewMessage.summernote('code')\n\n // Build regex based on provided header to remove it\n // <p><strong>HEADER</strong></p> followed by an optional <p> </p> with possible whitespace in between.\n const escapedHeader = header.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n const headerRegex = new RegExp(`<p><strong>${escapedHeader}</strong></p>(?:\\\\s*<p> </p>)?`, 'igm');\n\n var newText = text.replace(headerRegex, \"\")\n $reviewMessage.summernote('code', newText)\n}\n","$(document).on('turbolinks:load', function () {\n\n var $reviewEditProductForm = $('.js-productReview-productForm')\n var $reviewEditProductSubmit = $('.js-productReview-productForm-submit')\n\n $reviewEditProductSubmit.on('click', function(e){\n e.preventDefault()\n $reviewEditProductForm.trigger('submit')\n })\n\n $reviewEditProductForm.on('ajax:success', function(){\n swal({\n title: \"Product has been saved\",\n text: \"Click OK to continue reviewing the product.\",\n icon: \"success\",\n buttons: {\n cancel: {\n text: \"Cancel\",\n value: false,\n visible: false,\n className: \"\",\n closeModal: true,\n },\n confirm: {\n text: \"OK\",\n value: true,\n visible: true,\n className: \"\",\n closeModal: true\n }\n }\n })\n })\n\n $reviewEditProductForm.on('ajax:error', function (e, xhr) {\n var errors = JSON.parse(xhr.responseText).errors.join(', ')\n\n swal({\n title: \"Error\",\n text: `Product update failed: ${errors}`,\n icon: \"error\",\n buttons: {\n confirm: {\n text: \"OK\",\n value: true,\n visible: true,\n className: \"\",\n closeModal: true\n }\n }\n })\n })\n\n})\n","$(document).on('turbolinks:load', function () {\n\n var $refundForm = $('.js-adminRefund-form');\n\n if ($refundForm.length > 0) {\n\n var $checkboxes = $refundForm.find('.js-adminRefund-product');\n var $status = $refundForm.find('.js-adminRefund-status');\n\n $status.on('change', function(e){\n if ($(this).val() == 'refunded') {\n $checkboxes.prop('checked', 'true');\n }\n });\n\n }\n\n $refundForm.on('submit', function() {\n $('body').addClass('loading').prepend('<div class=\"loading-messages\">Processing Refund ...</div>');\n })\n\n});\n","$(document).on('turbolinks:load', function () {\n\n var $saleCampaignForm = $('.js-saleCampaign-form');\n\n if ($saleCampaignForm.length > 0) {\n var $heroTrigger = $('.js-saleCampaign-heroTrigger');\n var $heroFields = $('.js-saleCampaign-heroFields');\n\n var $popularTrigger = $('.js-saleCampaign-popularTrigger');\n var $popularFields = $('.js-saleCampaign-popularFields');\n\n $heroTrigger.on('change', function(){\n if (this.checked) {\n $heroFields.show();\n } else {\n $heroFields.hide();\n }\n });\n\n if (!$heroTrigger[0].checked) {\n $heroFields.hide();\n }\n\n $popularTrigger.on('change', function(){\n if (this.checked) {\n $popularFields.show();\n } else {\n $popularFields.hide();\n }\n });\n\n if (!$popularTrigger[0].checked) {\n $popularFields.hide();\n }\n }\n\n});\n","$(document).on('turbolinks:load', function(){\n var $form = $('.js-affiliate-form');\n if ($form.length > 0) {\n var $productsToggle = $('.js-affiliate-productsToggle');\n var $productsTarget = $('.js-affiliate-productsTarget');\n\n var updateProductsTarget = function(){\n if ($productsToggle.prop('checked')) {\n $productsTarget.hide();\n // remove any existing products\n $productsTarget.find('.remove_fields').click();\n } else {\n $productsTarget.show();\n }\n }\n\n $productsToggle.on('change', updateProductsTarget);\n updateProductsTarget();\n }\n});\n","$(document).on('turbolinks:load', function () {\n\n var $submit = $('.js-creator-emailSendSubmit');\n var $sendToAllCustomers = $('.js-send-to-all-customers-checkbox');\n var $hintText = $('.js-send-to-all-hint');\n var $productNestedFields = $('.js-email-product-nested-fields');\n var $productSelect = $('.js-email-product-select');\n var $variantSelect = $('.js-email-product-variant-select');\n\n if ($submit.length > 0) {\n var originalEmailSendText = $submit.text();\n var $sendInput = $('.js-creator-emailSendInput');\n $('.js-creator-emailSendSwitch').on('change', function(){\n \t\tif( $(this).is(':checked') ) {\n \t\t\t$submit.removeClass('btn-primary').addClass('btn-danger').text('Send Email to Customers');\n $sendInput.val('true');\n \t\t} else {\n \t\t\t$submit.removeClass('btn-danger').addClass('btn-primary').text(originalEmailSendText);\n $sendInput.val('false');\n \t\t}\n \t});\n }\n\n $sendToAllCustomers.is(':checked') ? hideEmailProductNestedFields() : showEmailProductNestedFields();\n\n $sendToAllCustomers.on('change', function(){\n let $this = $(this);\n $this.is(':checked') ? hideEmailProductNestedFields() : showEmailProductNestedFields();\n });\n\n $productSelect.on('change', function(){\n let $this = $(this);\n let val = $this.find('option:selected').val();\n\n if (val !== ''){\n getProductVariants(val);\n }\n });\n\n function getProductVariants(id) {\n $.ajax({\n type:'GET',\n url: '/api/v1/product_variants?product=' + id,\n dataType: 'json',\n success: function(response){\n setupVariantSelectDropdown(response)\n }\n });\n };\n\n function setupVariantSelectDropdown(variants) {\n if (variants.length) {\n // enable dropdown and preselect 'All Variants' (no variant value)\n $variantSelect.prop('disabled', false).empty().append(new Option('All Variants', '', true, true));\n\n variants.forEach(function(variant){\n $variantSelect.append(new Option(variant.title, variant.id, false, false));\n });\n } else {\n // remove existing variant options and display placeholder\n $variantSelect.empty().append(new Option('No variations available', '', true, true));\n }\n }\n\n function hideEmailProductNestedFields() {\n $productNestedFields.removeClass('show');\n $hintText.text('This email will be sent to your entire customer base.');\n resetProductSelect();\n }\n\n function showEmailProductNestedFields() {\n $productNestedFields.addClass('show');\n $hintText.text('Selecting this will send the email to your entire customer base.');\n }\n\n function resetProductSelect() {\n $productSelect.val('').trigger('change');\n setupVariantSelectDropdown([]);\n }\n});\n","$(document).on('turbolinks:load', function () {\n\n // Categories section\n if($('.js-category-list').length) {\n // allow selection of 1 main category and up to 3 subcategories\n // hide sub level categories and display when main/parent is clicked\n\n var $categories = $('.js-category-input');\n var mainCategoryCount = 0;\n var maxMainCategory = 1;\n\n $categories.each(function() {\n\n var $this = $(this);\n var $subcategories = $this.closest('li').find('.js-subcategory-input');\n var subcategoryCount = 0;\n var maxSubcategory = 3;\n\n if($this.is(':checked')) {\n $this.closest('li').find('ul').addClass('show');\n disableUnselectedCheckboxes($categories);\n mainCategoryCount += 1;\n }\n\n $this.on('change',function(){\n\n if($this.is(':checked')) {\n $this.closest('li').find('ul').addClass('show');\n disableUnselectedCheckboxes($categories);\n mainCategoryCount += 1;\n } else {\n $this.closest('li').find('ul').removeClass('show');\n mainCategoryCount -= 1;\n $subcategories.each(function(){ $(this).prop({ 'checked': false, 'disabled': false }) });\n subcategoryCount = 0;\n // some existing products may already have more than the max allowed main category\n if (mainCategoryCount < maxMainCategory) {\n enableCheckboxes($categories);\n } else {\n $this.prop('disabled', true);\n }\n }\n });\n\n // Subcategories\n $subcategories.each(function(){\n\n var $this = $(this);\n\n if($this.is(':checked')) {\n subcategoryCount += 1;\n if(subcategoryCount >= maxSubcategory) {\n disableUnselectedCheckboxes($subcategories);\n }\n }\n\n $this.on('change',function(){\n if($this.is(':checked') ) {\n subcategoryCount += 1;\n if(subcategoryCount >= maxSubcategory) {\n disableUnselectedCheckboxes($subcategories);\n }\n } else {\n // some existing products might already have more than the max allowed subcategories\n if(subcategoryCount === maxSubcategory) {\n enableCheckboxes($subcategories);\n } else if (subcategoryCount > maxSubcategory) {\n $this.prop('disabled', true);\n }\n subcategoryCount -= 1;\n }\n });\n });\n });\n }\n});\n\nfunction disableUnselectedCheckboxes(checkboxList) {\n $(checkboxList).each(function() {\n var $this = $(this);\n if(!$this.is(':checked')) {\n $this.prop('disabled', true);\n }\n });\n};\n\nfunction enableCheckboxes(checkboxList) {\n $(checkboxList).each(function() {\n var $this = $(this);\n if($this.prop('disabled')) {\n $this.prop('disabled', false);\n }\n });\n};\n","$(document).on('turbolinks:load', function () {\n\n var $form = $('.edit_product');\n if ($form.length > 0) {\n // Initialize commission rate variables\n var max_rate \t\t\t\t\t= $('#commission-rate').data('commission-rate')\n , \tdev_fund \t\t\t\t\t= $('#dev-fund-rate').data('dev-fund')\n , \tmax_rate_dollars \t= $('#commission-rate').data('commission-amount')\n , \tdev_fund_dollars \t= $('#dev-fund-rate').data('dev-fund-amount')\n , \trate \t\t\t\t\t\t\t= 0\n ,\t\ttotal_rate \t\t\t\t= max_rate - rate - dev_fund\n ,\t\ttotal_dollars \t\t= max_rate_dollars - dev_fund_dollars;\n\n // Check if the product has more than 100% being distributed to collaborators\n $('.js-collaborator-slider').each(function(){\n \trate += parseInt($(this).val());\n });\n if ( rate > max_rate ) {\n alert('Re-adjust your commission rates!')\n }\n\n // Update data box stuff\n $('#commission-left').text(total_rate);\n $('#total-per-product').text('$' + total_dollars);\n\n // calculate total of sub vendors commissions\n var commissionTotal = 0;\n $('.sub-vendor-commissions').each(function(){\n commission_value = Math.round($(this).find('#commission-value').data('commission-value'));\n commissionTotal += commission_value;\n var product_price = $('#product_price').attr('data-price') > 0 ? $('#product_price').attr('data-price') : 0\n ,\t\tsetPrice \t\t\t= ( ($('.data-box').attr('data-box-processing-fees') * commission_value) / 100).toFixed(2)\n , totalPrice = (setPrice / 100).toFixed(2)\n\n if (totalPrice) {\n $(this).find('.amount').text('$'+totalPrice);\n }\n });\n $('#total-vendor-commissions').text(commissionTotal);\n\n // in admin, remove duplicates from commission vendor dropdown filter\n $('select[data-type=\"vendor\"]').find('option').each(function(index, value){\n \t\tif ($('option[value=\"' + $(this).val() + '\"]').size() > 1) {\n \t$(this).remove();\n }\n });\n\n // Update collaborator amounts when slider is dragged\n $form.on('input', '.js-collaborator-slider', function(e){\n calculateCollaboratorAmounts(this);\n });\n\n // Ensure we display amounts correctly after adding a new collaborator\n $('.js-collaborators-wrap').on('cocoon:after-insert', function(e, insertedItem) {\n calculateCollaboratorAmounts($(insertedItem).find('.js-collaborator-slider'));\n });\n }\n\n});\n\nfunction calculateCollaboratorAmounts(el){\n var $el = $(el);\n var value = $el.val();\n\n var setPrice = $('.data-box').attr('data-box-processing-fees');\n var totalPrice = (setPrice / 100) * (value / 100);\n var totalPriceRounded = totalPrice.toFixed(2);\n\n var $wrap = $el.closest('.js-collaborator-wrap');\n $wrap.find('.js-collaborator-percentText').text(value);\n $wrap.find('.js-collaborator-amountText').text(\"$\" + totalPriceRounded);\n // TODO update data box line item for this collaborator\n}\n","$(document).on('turbolinks:load', function () {\n\n\tvar product_price = $('#product_price').attr('data-price') > 0 ? $('#product_price').attr('data-price') : 0\n\t,\t\tdev_fund \t\t\t= ( $('#product_info_attributes_dev_fund').val() / 100 ).toFixed(2)\n\t,\t\tsetPrice \t\t\t= ( ($('.data-box').attr('data-box-processing-fees') * dev_fund) / 100).toFixed(2)\n\n\t$('#dev_fund_total .amount').text(setPrice);\n\n var $devFundSlider = $('.js-devFund-slider');\n if ($devFundSlider.length > 0 ){\n var $percentText = $('.js-devFund-percentText');\n var $amountText = $('.js-devFund-amountText');\n var $dataBoxText = $('.js-dataBox-devFundText');\n\n $devFundSlider.on('input', function(e){\n var value = $(this).val();\n\n var setPrice = $('.data-box').attr('data-box-processing-fees');\n var totalPrice = (setPrice / 100) * (value / 100);\n var totalPriceRounded = totalPrice.toFixed(2);\n\n $percentText.text(value);\n $amountText.text(totalPriceRounded);\n $dataBoxText.text(\"$\" + totalPriceRounded);\n // TODO recalculate data box because we updated the dev fund slider\n });\n }\n\n});\n","import { text_to_slug } from '../../../util/methods';\n\n$(document).on('turbolinks:load', function () {\n\n // Download files destroy capability\n $(document).on('click', '.js-reset-download', function(){\n var $this = $(this)\n , $parent = $this.closest('.js-download-wrapper');\n $parent.hide();\n $parent.find('.js-download-destroy-target').val($parent.data('product-download'));\n });\n\n /* Datepicker */\n\t$('.js-product-published_at').flatpickr({\n\t\tenableTime: true,\n\t\tminuteIncrement: 30,\n\t\tonChange: function(selectedDates, dateStr, instance){\n\t\t\t$('#product_published_at').val($('#published_at').val())\n\t\t}\n })\n\n\t$('.flatpickr-minute').val('00')\n\t$('#product_published_at').val($('#published_at').val())\n})\n\nfunction toggle_conditional_field(type, action) {\n\n\tif ('hide' == action) {\n\t\t$('div[data-conditional-hide=\"'+type+'\"]').hide();\n\t} else {\n\t\t$('div[data-conditional-hide=\"'+type+'\"]').show();\n\t}\n}\n\nfunction loadingMessages() {\n\n\tvar type = $('body').attr('class')\n\n\tif ('layout-products-edit' == type) {\n\t\tvar text = 'Updating product'\n\t} else if ('layout-products-create' == type || 'layout-products-new' == type) {\n\t\tvar text = 'Creating product'\n\t} else if ('layout-vendor_emails-new' == type) {\n\t\tvar text = 'Creating email'\n\t} else if ('layout-vendor_emails-edit' == type) {\n\t\tvar text = 'Updating email'\n\t} else {\n\t\tvar text = 'Saving'\n\t}\n\n\t$('body').addClass('loading').prepend('<div class=\"loading-messages\">'+text+'...</div>');\n}\n\nfunction isNumberKey(evt){\n var charCode = (evt.which) ? evt.which : event.keyCode\n if (charCode > 31 && (charCode < 48 || (charCode > 57 && charCode != 190 && charCode != 110 ) ) && charCode != 46)\n return false;\n\n return true;\n}\n\n// sluggify product title\n$(document).on('keyup', '#product_title', function(){\n\n if(window.location.pathname === '/creator/products/new')\n\t $('#product_slug').val( text_to_slug($(this).val()) )\n\n}).on('keypress', '#product_slug, #user_info_attributes_shop_slug', function(e) {\n\n if (e.which==32 || (e.which < 48 && e.which !== 45 ) || (e.which > 57 && e.which < 65) || (e.which > 90 && e.which < 97) || e.which > 122 )\n return false;\n\n}).off('click', 'a[data-save-clone]').on('click', 'a[data-save-clone]', function(e){\n\te.preventDefault();\n\n\tvar action_id = $(this).closest('.js-form-wrap').find('.simple_form').attr('ID');\n\t$('#error_explanation').remove();\n\tloadingMessages();\n\tsetTimeout(function(){\n\t\t$('#'+action_id)[0].submit();\n\t},100);\n\n}).on('change', '#ready_for_review', function(){\n\n\tvar $box = $('.data-box, .sticky-box');\n\tvar trusted = $box.attr('data-box-trusted');\n\tvar submit = $('a[data-save-clone]');\n\tvar val = 'true' == trusted ? 'Schedule & Publish' : 'Submit for Review';\n\n\tif( $(this).is(':checked') ) {\n\t\tsubmit.removeClass('btn-primary').addClass('btn-danger').text(val);\n\t\t$('.simple_form').find('#submit_for_review').val('true');\n\t} else {\n\t\tsubmit.removeClass('btn-danger').addClass('btn-primary').text('Save Draft');\n\t\t$('.simple_form').find('#submit_for_review').val('');\n\t}\n\n}).on('change', '.product_category_models', function(){\n\n\tif( $(this).is(':checked') ) {\n\t\ttoggle_conditional_field('misc-data', 'show')\n\t} else {\n\t\ttoggle_conditional_field('misc-data', 'hide')\n\t}\n\n}).on('change','.product_category_surfacing', function(){\n\n\tif( $(this).is(':checked') ) {\n\t\ttoggle_conditional_field('render-engine', 'show')\n\t} else {\n\t\ttoggle_conditional_field('render-engine', 'hide')\n\t}\n\n}).on('change', '.product_category_render-setups', function(){\n\n\tif( $(this).is(':checked') ) {\n\t\t$('.radio_buttons.product_info_license').find('label').not('label[for=\"product_info_attributes_license_gpl\"]').hide()\n\t} else {\n\t\t$('.radio_buttons.product_info_license').find('label').not('label[for=\"product_info_attributes_license_gpl\"]').show()\n\t}\n\n}).on('change', '.price-in-dollars', function(){\n\n var val = $(this).val().replace(/\\,/g,\"\");\n var newVal = val * 100.00;\n\n $(this).closest('.price-form-group').find('.price-in-cents').val(newVal).attr('data-price', newVal);\n});\n","$(document).on('turbolinks:load', function () {\n\n var trusted = $('.data-box').attr('data-box-trusted');\n\n\t// ready for review\n\t$('.data-box #ready_for_review').on('change', function(){\n\t\tif( $(this).is(':checked') ) {\n\t\t\treview_modal();\n\t\t}\n\t});\n\n function review_modal() {\n swal({\n\t\t title: ('true' == trusted ? 'Product Publish' : 'Product Review Information'),\n text: review_text(),\n\t\t icon: \"info\",\n buttons: {\n cancel: {\n text: \"Continue Editing\",\n value: false,\n visible: true,\n className: \"\",\n closeModal: true,\n },\n confirm: {\n text: ('true' == trusted ? 'Schedule & Publish' : 'Submit for Review'),\n value: true,\n visible: true,\n className: \"\",\n closeModal: true\n }\n }\n })\n .then((isConfirm) => {\n if (isConfirm) {\n\t\t \t\t$('a[data-save-clone]').trigger('click');\n\t\t \t} else {\n\t\t \t\t$('#ready_for_review').trigger('click');\n\t\t \t}\n });\n }\n\n function review_text(){\n\n if ('true' == trusted) {\n return \"As a Trusted Creator your product does not need to be reviewed. Upon confirmation, your product will be scheduled and published.\"\n } else {\n return \"Product reviews typically take between 3-5 days, depending on the current queue. After submitting for review, you will no longer be able to edit your product until it's published or sent back for changes. Please take this time to ensure your product is ready for public display!\"\n }\n\n }\n\n});\n","import Sortable from 'sortablejs';\n\n$(document).on('turbolinks:load', function () {\n\n var $variantContainer = $('#js-sortable-variants');\n\n if ($variantContainer.length){\n var sortable = new Sortable($variantContainer[0], {\n draggable: '.js-variant-nested-field',\n handle: '.draggable-handle',\n onSort: function(e) {\n updatePositions($('.js-variant-nested-field'));\n }\n });\n\n $variantContainer.on('cocoon:after-insert', function(e, $insertedItem){\n if ($insertedItem.hasClass('js-variant-nested-field')) {\n setUpCollapsibleForm($insertedItem)\n updatePositions($('.js-variant-nested-field'));\n $('.price-in-dollars').maskMoney({ allowZero: true }); // MaskMoney initialization\n };\n }).on('cocoon:after-remove', function(e, $removedItem){\n if ($removedItem.hasClass('js-variant-nested-field')) {\n updatePositions($('.js-variant-nested-field'));\n };\n });\n };\n\n});\n\nfunction setUpCollapsibleForm($insertedItem) {\n var $collapsible = $insertedItem.find('.js-variant-collapse');\n var $collapseToggler = $insertedItem.find('.js-collapse-toggler');\n var $id = $insertedItem.find('input.js-productVariant-title').attr('id').replace('title', 'collapse');\n $collapsible.attr('id', $id).addClass('show');\n $collapseToggler.attr({ href: `#${$id}`, 'aria-expanded': true })\n};\n\nfunction updatePositions($object) {\n $object.each(function(index, el){\n var $el = $(el);\n var $positionInput = $el.find(\"input[name*='position']\");\n $positionInput.val(index + 1);\n });\n};\n","// This file is responsible for sorting files and folders in the Product Version form's Product Files modal\n// We are making folders sortable/draggable within the .js-download-folders-container div\n// We are also making downloads/files sortable inside the .js-download-items-container divs (with the ability to drag from one container to another)\n// Sorting functionality is disabled by default\n// Once sorting is enabled, we are making use of javascript's MutationObserver to detect and subscribe newly added folder and file nodes to sorting functionality\n\nimport Sortable from 'sortablejs';\nimport { displayFlashMessage, showLoadingMessage, hideLoadingMessage } from '../../../util/methods';\n\n$(document).on('turbolinks:load', function() {\n\n var $downloadsMainContainer = $('#js-downloads-container');\n\n if ($downloadsMainContainer.length) {\n var $sortFilesBtn = $('#js-sort-files-btn');\n var $saveSortedFilesBtn = $('#js-save-sorted-files');\n var observerConfig = { childList: true }; // for MutationObserver\n var sortableFolderClassName = '.js-sortable-folder';\n var sortableDownloadClassName = '.js-sortable-download-item';\n var sortableHandleClassName = '.sortable-handle';\n var sortingActive = false;\n var newFolderObserver;\n var newDownloadObserver;\n\n $sortFilesBtn.on('click', function(e) {\n e.preventDefault();\n enableSorting();\n sortingActive = true;\n });\n\n $saveSortedFilesBtn.on('click', function(e) {\n // save sort positions and disable sorting\n\n e.preventDefault();\n var $folders = $downloadsMainContainer.find(sortableFolderClassName);\n var $noFolderDownloads = $('#no-folder-downloads').find(sortableDownloadClassName);\n showLoadingMessage('Saving sorted files');\n\n // set data\n var data = {\n download_folders_attributes: [],\n downloads_attributes: []\n };\n\n $folders.each(function(index, el) {\n var $this = $(el);\n var $downloads = $this.find(sortableDownloadClassName);\n var folderAttributes = {\n id: $this.attr('data-folder-id'),\n position: index\n };\n data.download_folders_attributes.push(folderAttributes);\n\n $downloads.each(function(index, el) {\n var $this = $(el);\n var downloadAttributes = {\n id: $this.attr('data-download-id'),\n position: index,\n download_folder_id: $this.attr('data-folder-id')\n };\n data.downloads_attributes.push(downloadAttributes);\n });\n });\n\n $noFolderDownloads.each(function(index, el) {\n var $this = $(el);\n var downloadAttributes = {\n id: $this.attr('data-download-id'),\n position: index,\n download_folder_id: null\n };\n data.downloads_attributes.push(downloadAttributes);\n });\n\n $.ajax({\n url: $(e.target).attr('href'),\n method: 'post',\n dataType: 'json',\n data: {\n _method: 'patch',\n product: data\n },\n success: function(response) {\n hideLoadingMessage();\n if (response['success']) {\n disableSorting();\n displayFlashMessage('success', 'Successfully saved sorted files!');\n sortingActive = false;\n } else {\n displayFlashMessage('danger', 'Failed to save sorted files!');\n }\n }\n });\n });\n\n // this gets run when user navigates away from the form\n // we need to remove sorting-related javascript before caching\n $(document).one('turbolinks:before-cache', function() {\n if (sortingActive) {\n disableSorting();\n }\n })\n\n function enableSorting() {\n var $sortableFoldersContainer = $('.js-download-folders-container');\n var $sortableDownloadsContainers = $('.js-download-items-container');\n\n // make folders sortable\n var sortableFolders = createSortable($sortableFoldersContainer[0], sortableFolderClassName, sortableHandleClassName);\n\n // create an observer for newly appended folder, to subscribe them to sorting\n newFolderObserver = createAppendObserver(sortableFolders);\n newFolderObserver.observe($sortableFoldersContainer[0], observerConfig);\n\n // make downloads in and out of folders sortable\n $sortableDownloadsContainers.each(function() {\n var $this = $(this);\n if ($this.attr('id') === 'no-folder-downloads') {\n // add sortability to downloads that do not belong to a folder\n var noFolderSortableDownloads = createSortable($this[0], sortableDownloadClassName, sortableHandleClassName, 'download-items');\n\n // create an observer for newly appended download/file element to '#no-folder-downloads' container, to subscribe them to sorting\n newDownloadObserver = createAppendObserver(noFolderSortableDownloads);\n newDownloadObserver.observe($this[0], observerConfig);\n } else {\n // add sortability to downloads in folders\n createSortable($this[0], sortableDownloadClassName, sortableHandleClassName, 'download-items');\n }\n });\n\n // show draggable icons\n $(sortableHandleClassName).each(function() {\n $(this).show();\n });\n\n // disable delete buttons\n $('.js-delete-btn').each(function() {\n $(this).hide();\n });\n\n // toggle buttons\n $sortFilesBtn.hide();\n $saveSortedFilesBtn.show();\n }\n\n function disableSorting() {\n // disable sorting\n destroySortable($('.js-download-folders-container')[0]);\n $('.js-download-items-container').each(function() {\n destroySortable(this);\n });\n\n //disconnect observers\n newFolderObserver = newFolderObserver.disconnect(); // disconnect() returns undefined\n newDownloadObserver = newDownloadObserver.disconnect();\n\n $(sortableHandleClassName).each(function() {\n $(this).hide();\n });\n\n $('.js-delete-btn').each(function() {\n $(this).show();\n })\n\n $saveSortedFilesBtn.hide();\n $sortFilesBtn.show();\n }\n }\n});\n\nfunction createAppendObserver(sortable) {\n // creates an observer that will subscribe newly appended folder or file nodes to sorting functionality\n return new MutationObserver(function(mutationsList, observer) {\n for (const mutation of mutationsList) {\n if (mutation.type === 'childList') {\n var $addedElement = $(mutation.addedNodes);\n var $sortableHandle = $addedElement.find('.sortable-handle');\n var $deleteBtn = $addedElement.find('.js-delete-btn');\n $sortableHandle.show();\n $deleteBtn.hide();\n // if added node is a folder, initialize file container sortable\n if ($addedElement.hasClass('js-sortable-folder')) {\n var $sortableDownloadsContainer = $addedElement.find('.js-download-items-container');\n createSortable($sortableDownloadsContainer[0], '.js-sortable-download-item', '.sortable-handle', 'download-items');\n }\n sortable.option('refresh');\n }\n }\n });\n}\n\nfunction createSortable(sortableContainer, draggableElementClassName, sortableHandleClassName, groupName) {\n // enables sortability of specified elements within a given container node\n return Sortable.create(sortableContainer, {\n draggable: draggableElementClassName,\n handle: sortableHandleClassName,\n chosenClass: 'chosen-draggable',\n ghostClass: 'ghost-draggable',\n group: groupName,\n onEnd: function(evt) {\n var $draggedItem = $(evt.item); // dragged HTMLElement\n // if dragged from a different container (item is a download), update folder id\n if (evt.to !== evt.from) {\n var newFolderID = $(evt.to).parent().attr('data-folder-id') || '';\n $draggedItem.attr('data-folder-id', newFolderID);\n }\n }\n });\n}\n\nfunction destroySortable(sortableContainer) {\n var sortable = Sortable.get(sortableContainer);\n if (sortable) sortable.destroy();\n}\n","$(document).on('turbolinks:load', function () {\n \n var $checkBoxWrapper = $('.js-download-url-check-box');\n var $checkBox = $('#product_endpoint_responds_with_download_url');\n var $info = $('.js-download-url-info');\n\n $checkBoxWrapper.on('change', function () {\n if ($checkBox.is(':checked')) {\n $info.show();\n } else {\n $info.hide();\n };\n });\n\n});","$(document).on('turbolinks:load', function () {\n\n var $resend_form = $('.resend');\n \n if ($resend_form.length) {\n $resend_form.on('submit', function() {\n var text = 'Sending webhook';\n $('body').addClass('loading').prepend('<div class=\"loading-messages\">' + text + '...</div>');\n });\n };\n\n});","import { isTouchDevice } from '../../util/touchDevice';\n\n$(document).on('turbolinks:load', function () {\n var $mainMenuDropdownBtn = $('.js-header-main-menu-dropdown-btn');\n var $mainMenuToggle = $mainMenuDropdownBtn.find('.js-main-menu-toggle');\n var $offCanvasElement = $('.offcanvas');\n var hideDropdownTimeout;\n\n function setupMainMenuDropdownMouseEvents() {\n $mainMenuDropdownBtn.on('mouseover', function(){\n clearTimeout(hideDropdownTimeout);\n $mainMenuToggle.dropdown('show')\n });\n $mainMenuDropdownBtn.on('mouseleave', function(e){\n hideDropdownTimeout = setTimeout(function(){\n var relatedTarget = e.relatedTarget;\n\n if (!relatedTarget || (!$(relatedTarget).closest($mainMenuToggle).length)) {\n $mainMenuToggle.dropdown('hide');\n }\n }, 150);\n })\n }\n\n function removeMainMenuHoverEvents() {\n $mainMenuDropdownBtn.off('mouseover mouseleave');\n }\n \n function updatePageResponsiveness() {\n var smallPageWidth = 768;\n\n if ($(window).width() > smallPageWidth && !isTouchDevice()) {\n closeCollapsableDrawer();\n removeMainMenuHoverEvents(); \n setupMainMenuDropdownMouseEvents();\n } else {\n openCollapsableDrawer();\n removeMainMenuHoverEvents(); \n }\n }\n\n function getOffCanvasBackdrop() {\n var $offCanvasBackdrop = $('.offcanvas-backdrop');\n \n // If it doesn't exist, create it and return the newly created element\n if ($offCanvasElement.hasClass('show') && $offCanvasBackdrop.length === 0) {\n $('body').append('<div class=\"offcanvas-backdrop fade\"></div>');\n $offCanvasBackdrop = $('.offcanvas-backdrop');\n }\n return $offCanvasBackdrop;\n }\n \n function openCollapsableDrawer() {\n // Switch to offcanvas\n $('.js-dropdown-main-menu').removeClass('show')\n $offCanvasElement.show(); \n getOffCanvasBackdrop().addClass('show');\n $mainMenuToggle.attr('data-bs-toggle', 'offcanvas');\n $mainMenuToggle.attr('data-bs-target', '#explore-marketplace-offcanvas');\n }\n\n function closeCollapsableDrawer() {\n // Switch back to dropdown\n $offCanvasElement.hide();\n getOffCanvasBackdrop().removeClass(\"show\");\n $mainMenuToggle.attr('data-bs-toggle', 'dropdown');\n $mainMenuToggle.removeAttr('data-bs-target');\n }\n\n function checkCanvasElement() {\n if(!$offCanvasElement.hasClass('show')){\n $(\".offcanvas-backdrop\").remove();\n }\n }\n \n $(window).on('resize', function() {\n updatePageResponsiveness();\n checkCanvasElement();\n });\n\n updatePageResponsiveness();\n});\n","import { url_add_param, get_sale_campaign_params } from '../../util/methods';\n\n$(document).on('turbolinks:load', function () {\n\n // The following code will add existing sale and/or sale_campaign filters when sending a product search\n $('form.header-category-search-form').on('submit', function(e){\n var $this = $(this);\n var sale_campaign_params = get_sale_campaign_params();\n\n if (sale_campaign_params['on_sale'] === 'true') {\n e.preventDefault();\n\n // Get the current action URL of the form \n var actionURL = $this.attr('action');\n\n // Serialize the form data \n var formData = $this.serialize();\n\n // Combine the serialized form data with the action URL\n var fullURL = actionURL + '?' + formData; \n \n // Add sale-related params to URL\n for (const param in sale_campaign_params) {\n if (sale_campaign_params[param]) {\n var fullURL = url_add_param(fullURL, param, sale_campaign_params[param]);\n }\n }\n\n // Navigate to the full URL \n location.href = fullURL;\n }\n })\n \n});","import { isTouchDevice } from '../../util/touchDevice';\n\n$(document).on('turbolinks:load', function () {\n var $userDropdownToggle = $('.js-user-dropdown-toggle')\n var $userDropdownMenu = $('.user-dropdown-menu')\n var hideDropdownTimeout;\n\n function setupUserDropdownMouseEvents() {\n $userDropdownToggle.on('mouseover', function(){\n clearTimeout(hideDropdownTimeout);\n $userDropdownMenu.dropdown('show')\n });\n\n $userDropdownToggle.on('mouseleave', function(e){\n hideDropdownTimeout = setTimeout(function(){\n var relatedTarget = e.relatedTarget;\n \n if (!relatedTarget || (!$(relatedTarget).closest($userDropdownToggle).length)) {\n $userDropdownMenu.dropdown('hide');\n }\n }, 150);\n })\n }\n\n if (!isTouchDevice() && \n !window.location.pathname.includes('/admin') &&\n !window.location.pathname.includes('/creator')){\n setupUserDropdownMouseEvents();\n }\n\n $userDropdownMenu.on('click', function(){ \n $userDropdownMenu.dropdown('hide');\n })\n});\n","import { isTouchDevice } from '../../util/touchDevice';\n\n$(document).on('turbolinks:load', function () {\n var $creatorDropdownToggle= $('.js-creator-dropdown-toggle')\n var $creatorDropdownMenu = $('.creator-dropdown-menu')\n var hideDropdownTimeout;\n\n function setupCreatorDropdownMouseEvents() {\n $creatorDropdownToggle.on('mouseover', function(){\n clearTimeout(hideDropdownTimeout);\n $creatorDropdownMenu.dropdown('show')\n });\n\n $creatorDropdownToggle.on('mouseleave', function(e){\n hideDropdownTimeout = setTimeout(function(){\n var relatedTarget = e.relatedTarget;\n\n if (!relatedTarget || (!$(relatedTarget).closest($creatorDropdownToggle).length)) {\n $creatorDropdownMenu.dropdown('hide');\n }\n }, 150);\n })\n }\n \n if (!isTouchDevice() && \n !window.location.pathname.includes('/admin') &&\n !window.location.pathname.includes('/creator')){\n setupCreatorDropdownMouseEvents();\n }\n\n $creatorDropdownMenu.on('click', function(){ \n $creatorDropdownMenu.dropdown('hide');\n })\n});\n","$(document).on('turbolinks:load', function () {\n\n var $readAllSwitch = $('#js-read-all-switch'),\n sortAboutVal = $readAllSwitch.data('sort-about');\n\n $readAllSwitch.on('click', function(){\n var $this = $(this);\n if ($this.is(':checked')) {\n swal({\n title: `Are you sure you want to mark all ${sortAboutVal} messages as read?`,\n text: \"\",\n icon: \"warning\",\n buttons: {\n cancel: {\n text: \"Cancel\",\n value: false,\n visible: true,\n className: \"btn btn-dark\",\n closeModal: true,\n },\n confirm: {\n text: \"Yes. Mark all as read!\",\n value: true,\n visible: true,\n className: \"btn btn-primary\",\n closeModal: true\n }\n }\n })\n .then((value) => {\n if (value) {\n $('body').addClass('loading').prepend('<div class=\"loading-messages\">' + `Marking all ${sortAboutVal} messages as read...` + '</div>');\n location.href = '/inbox/read_all/?q=' + sortAboutVal;\n } else {\n $this.prop('checked', false);\n }\n });\n };\n });\n});\n\n","$(document).on('turbolinks:load', function () {\n var $loginForm = $('.js-login-form');\n if ($loginForm.length > 0) {\n\n $loginForm.on('submit', function(e){\n // validate the captcha is filled\n var googleResponse = $('#g-recaptcha-response').val();\n if (!googleResponse) {\n return false;\n }\n return true;\n });\n\n }\n});\n","import { displayFlashMessage, showLoadingMessage, hideLoadingMessage } from '../../util/methods';\n\n$(document).on('turbolinks:load', function () {\n\n var $versionSelects = $('.js-version-select');\n\n if ($versionSelects.length) {\n\n $versionSelects.each(function() {\n let $this = $(this);\n\n $this.select2({\n width: '100%',\n minimumResultsForSearch: Infinity, // this is to hide the search bar\n });\n \n $this.on('change', function(){\n let $this = $(this);\n let version_id = $this.val();\n let $downLoadsList = $this.closest('.order-pickup-files').find('.js-downloads-list');\n \n showLoadingMessage('Fetching version downloads');\n \n $.ajax({\n url: $this.data('url'),\n method: 'get',\n dataType: 'json',\n data: { version_id: version_id },\n success: function(data) {\n hideLoadingMessage();\n $downLoadsList.html(data['html']);\n },\n error: function(xhr, status, error) {\n hideLoadingMessage();\n displayFlashMessage('danger', 'Failed to fetch version downloads');\n $downLoadsList.html('<small class=\"text-danger d-block font-italic\">Failed to fetch version downloads</small>');\n console.log(\"Error: \", error);\n }\n });\n }); \n });\n\n $(document).one('turbolinks:before-cache', function() {\n // destroy select2 dropdowns to prevent duplication on reload\n $versionSelects.each(function() {\n let $this = $(this);\n $this.select2('destroy');\n });\n });\n }\n\n});\n","$(document).on('turbolinks:load',function(){\n\n // Checkbox Consents\n\t$('.js-consent-toggle').each(function(){\n\n\t\t$(this).on('change',function(e){\n\n\t\t\te.preventDefault();\n\n formData = JSON.stringify($(this).closest('.checkbox-item-wrap').html().trim())\n\n\t\t if( $(this).is(':checked') ){\n\n\t\t \t data = {consent: {policy_id: $(this).data('policy-id'), form: formData }}\n\n\t\t $.ajax({\n\t\t\t type:'POST',\n\t\t\t \turl: '/account/privacy-center/consents',\n\t\t\t \tdata: data,\n\t\t\t \tdataType : 'script'\n\t\t\t });\n\n\t\t } else {\n\n\t\t $.ajax({\n\t\t\t method:'PATCH',\n\t\t\t \turl: '/account/privacy-center/consents/'+$(this).attr('id'),\n data:{consent:{accepted:[false], form: formData }},\n\t\t\t \tdataType : 'script'\n\t\t\t });\n\n\t\t }\n\n\t\t});\n\n\t});\n\n // User Data Export\n $('#js-user-data-export').on('click', function(){\n $.ajax({\n method:'PATCH',\n url: '/account/privacy-center/data/'+$(this).data('export-id'),\n dataType : 'script'\n });\n });\n\n});\n","!function (t, e) {\n \"object\" == typeof exports && \"undefined\" != typeof module ? module.exports = e() : \"function\" == typeof define && define.amd ? define(e) : (t = t || self).Tagify = e();\n}(this, function () {\n \"use strict\";\n\n function t(e) {\n return (t = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (t) {\n return typeof t;\n } : function (t) {\n return t && \"function\" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? \"symbol\" : typeof t;\n })(e);\n }\n function e(t, e, i) {\n return e in t ? Object.defineProperty(t, e, {\n value: i,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : t[e] = i, t;\n }\n function i(t) {\n return function (t) {\n if (Array.isArray(t)) {\n for (var e = 0, i = new Array(t.length); e < t.length; e++) i[e] = t[e];\n return i;\n }\n }(t) || function (t) {\n if (Symbol.iterator in Object(t) || \"[object Arguments]\" === Object.prototype.toString.call(t)) return Array.from(t);\n }(t) || function () {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n }();\n }\n var s = function (t, e, i, s) {\n return t = \"\" + t, e = \"\" + e, s && (t = t.trim(), e = e.trim()), i ? t == e : t.toLowerCase() == e.toLowerCase();\n };\n function a(t) {\n var e = document.createElement(\"div\");\n return t.replace(/\\&#?[0-9a-z]+;/gi, function (t) {\n return e.innerHTML = t, e.innerText;\n });\n }\n function n(t, e) {\n for (e = e || \"previous\"; t = t[e + \"Sibling\"];) if (3 == t.nodeType) return t;\n }\n function o(t) {\n return t.replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\").replace(/\"/g, \""\").replace(/`|'/g, \"'\");\n }\n function r(t) {\n return t instanceof Array;\n }\n function l(t) {\n var e = Object.prototype.toString.call(t).split(\" \")[1].slice(0, -1);\n return t === Object(t) && \"Array\" != e && \"Function\" != e && \"RegExp\" != e && \"HTMLUnknownElement\" != e;\n }\n function d(t, e, i) {\n function s(t, e) {\n for (var i in e) if (e.hasOwnProperty(i)) {\n if (l(e[i])) {\n l(t[i]) ? s(t[i], e[i]) : t[i] = Object.assign({}, e[i]);\n continue;\n }\n if (r(e[i])) {\n t[i] = Object.assign([], e[i]);\n continue;\n }\n t[i] = e[i];\n }\n }\n return t instanceof Object || (t = {}), s(t, e), i && s(t, i), t;\n }\n function c(t) {\n return String.prototype.normalize ? \"string\" == typeof t ? t.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\") : void 0 : t;\n }\n var h = /(?=.*chrome)(?=.*android)/i.test(navigator.userAgent),\n g = {\n init: function () {\n this.DOM.dropdown = this.parseTemplate(\"dropdown\", [this.settings]), this.DOM.dropdown.content = this.DOM.dropdown.querySelector(\".\" + this.settings.classNames.dropdownWrapper);\n },\n show: function (t) {\n var e,\n i,\n a,\n n = this,\n o = this.settings,\n r = window.getSelection(),\n d = \"mix\" == o.mode && !o.enforceWhitelist,\n c = !o.whitelist || !o.whitelist.length,\n h = \"manual\" == o.dropdown.position;\n if (t = void 0 === t ? this.state.inputText : t, (!c || d || o.templates.dropdownItemNoMatch) && !1 !== o.dropdown.enable && !this.state.isLoading) {\n if (clearTimeout(this.dropdownHide__bindEventsTimeout), this.suggestedListItems = this.dropdown.filterListItems.call(this, t), t && !this.suggestedListItems.length && (this.trigger(\"dropdown:noMatch\", t), o.templates.dropdownItemNoMatch && (a = o.templates.dropdownItemNoMatch.call(this, {\n value: t\n }))), !a) {\n if (this.suggestedListItems.length) t && d && !this.state.editing.scope && !s(this.suggestedListItems[0].value, t) && this.suggestedListItems.unshift({\n value: t\n });else {\n if (!t || !d || this.state.editing.scope) return this.input.autocomplete.suggest.call(this), void this.dropdown.hide.call(this);\n this.suggestedListItems = [{\n value: t\n }];\n }\n i = \"\" + (l(e = this.suggestedListItems[0]) ? e.value : e), o.autoComplete && i && 0 == i.indexOf(t) && this.input.autocomplete.suggest.call(this, e);\n }\n this.dropdown.fill.call(this, a), o.dropdown.highlightFirst && this.dropdown.highlightOption.call(this, this.DOM.dropdown.content.children[0]), this.state.dropdown.visible || setTimeout(this.dropdown.events.binding.bind(this)), this.state.dropdown.visible = t || !0, this.state.dropdown.query = t, this.state.selection = {\n anchorOffset: r.anchorOffset,\n anchorNode: r.anchorNode\n }, h || setTimeout(function () {\n n.dropdown.position.call(n), n.dropdown.render.call(n);\n }), setTimeout(function () {\n n.trigger(\"dropdown:show\", n.DOM.dropdown);\n });\n }\n },\n hide: function (t) {\n var e = this,\n i = this.DOM,\n s = i.scope,\n a = i.dropdown,\n n = \"manual\" == this.settings.dropdown.position && !t;\n if (a && document.body.contains(a) && !n) return window.removeEventListener(\"resize\", this.dropdown.position), this.dropdown.events.binding.call(this, !1), s.setAttribute(\"aria-expanded\", !1), a.parentNode.removeChild(a), setTimeout(function () {\n e.state.dropdown.visible = !1;\n }, 100), this.state.dropdown.query = this.state.ddItemData = this.state.ddItemElm = this.state.selection = null, this.state.tag && this.state.tag.value.length && (this.state.flaggedTags[this.state.tag.baseOffset] = this.state.tag), this.trigger(\"dropdown:hide\", a), this;\n },\n render: function () {\n var t,\n e,\n i,\n s = this,\n a = (t = this.DOM.dropdown, (i = t.cloneNode(!0)).style.cssText = \"position:fixed; top:-9999px; opacity:0\", document.body.appendChild(i), e = i.clientHeight, i.parentNode.removeChild(i), e),\n n = this.settings;\n return this.DOM.scope.setAttribute(\"aria-expanded\", !0), document.body.contains(this.DOM.dropdown) || (this.DOM.dropdown.classList.add(n.classNames.dropdownInital), this.dropdown.position.call(this, a), n.dropdown.appendTarget.appendChild(this.DOM.dropdown), setTimeout(function () {\n return s.DOM.dropdown.classList.remove(n.classNames.dropdownInital);\n })), this;\n },\n fill: function (t) {\n var e;\n t = \"string\" == typeof t ? t : this.dropdown.createListHTML.call(this, t || this.suggestedListItems), this.DOM.dropdown.content.innerHTML = (e = t) ? e.replace(/\\>[\\r\\n ]+\\</g, \"><\").replace(/(<.*?>)|\\s+/g, function (t, e) {\n return e || \" \";\n }) : \"\";\n },\n refilter: function (t) {\n t = t || this.state.dropdown.query || \"\", this.suggestedListItems = this.dropdown.filterListItems.call(this, t), this.suggestedListItems.length ? this.dropdown.fill.call(this) : this.dropdown.hide.call(this), this.trigger(\"dropdown:updated\", this.DOM.dropdown);\n },\n position: function (t) {\n if (\"manual\" != this.settings.dropdown.position) {\n var e,\n i,\n s,\n a,\n n,\n o,\n r,\n l = this.DOM.dropdown,\n d = document.documentElement.clientHeight,\n c = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0) > 480 ? this.settings.dropdown.position : \"all\",\n h = this.DOM[\"input\" == c ? \"input\" : \"scope\"];\n t = t || l.clientHeight, this.state.dropdown.visible && (\"text\" == c ? (a = (i = this.getCaretGlobalPosition()).bottom, s = i.top, n = i.left, o = \"auto\") : (r = function (t) {\n for (var e = 0, i = 0; t;) e += t.offsetLeft || 0, i += t.offsetTop || 0, t = t.parentNode;\n return {\n left: e,\n top: i\n };\n }(this.settings.dropdown.appendTarget), s = (i = h.getBoundingClientRect()).top + 2 - r.top, a = i.bottom - 1 - r.top, n = i.left - r.left, o = i.width + \"px\"), s = Math.floor(s), a = Math.ceil(a), e = d - i.bottom < t, l.style.cssText = \"left:\" + (n + window.pageXOffset) + \"px; width:\" + o + \";\" + (e ? \"top: \" + (s + window.pageYOffset) + \"px\" : \"top: \" + (a + window.pageYOffset) + \"px\"), l.setAttribute(\"placement\", e ? \"top\" : \"bottom\"), l.setAttribute(\"position\", c));\n }\n },\n events: {\n binding: function () {\n var t = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0],\n e = this.dropdown.events.callbacks,\n i = this.listeners.dropdown = this.listeners.dropdown || {\n position: this.dropdown.position.bind(this),\n onKeyDown: e.onKeyDown.bind(this),\n onMouseOver: e.onMouseOver.bind(this),\n onMouseLeave: e.onMouseLeave.bind(this),\n onClick: e.onClick.bind(this),\n onScroll: e.onScroll.bind(this)\n },\n s = t ? \"addEventListener\" : \"removeEventListener\";\n \"manual\" != this.settings.dropdown.position && (window[s](\"resize\", i.position), window[s](\"keydown\", i.onKeyDown)), this.DOM.dropdown[s](\"mouseover\", i.onMouseOver), this.DOM.dropdown[s](\"mouseleave\", i.onMouseLeave), this.DOM.dropdown[s](\"mousedown\", i.onClick), this.DOM.dropdown.content[s](\"scroll\", i.onScroll);\n },\n callbacks: {\n onKeyDown: function (t) {\n var e = this.DOM.dropdown.querySelector(\".\" + this.settings.classNames.dropdownItemActive),\n i = e;\n switch (t.key) {\n case \"ArrowDown\":\n case \"ArrowUp\":\n case \"Down\":\n case \"Up\":\n var s;\n t.preventDefault(), i && (i = i[(\"ArrowUp\" == t.key || \"Up\" == t.key ? \"previous\" : \"next\") + \"ElementSibling\"]), i || (i = (s = this.DOM.dropdown.content.children)[\"ArrowUp\" == t.key || \"Up\" == t.key ? s.length - 1 : 0]), this.dropdown.highlightOption.call(this, i, !0);\n break;\n case \"Escape\":\n case \"Esc\":\n this.dropdown.hide.call(this);\n break;\n case \"ArrowRight\":\n if (this.state.actions.ArrowLeft) return;\n case \"Tab\":\n if (\"mix\" != this.settings.mode && i && !this.settings.autoComplete.rightKey && !this.state.editing) {\n t.preventDefault();\n var a = i.getAttribute(\"tagifySuggestionIdx\"),\n n = a ? this.suggestedListItems[+a] : \"\";\n return this.input.autocomplete.set.call(this, n.value || n), !1;\n }\n return !0;\n case \"Enter\":\n t.preventDefault(), this.dropdown.selectOption.call(this, e);\n break;\n case \"Backspace\":\n if (\"mix\" == this.settings.mode || this.state.editing.scope) return;\n var o = this.state.inputText.trim();\n \"\" != o && 8203 != o.charCodeAt(0) || (!0 === this.settings.backspace ? this.removeTags() : \"edit\" == this.settings.backspace && setTimeout(this.editTag.bind(this), 0));\n }\n },\n onMouseOver: function (t) {\n var e = t.target.closest(\".\" + this.settings.classNames.dropdownItem);\n e && this.dropdown.highlightOption.call(this, e);\n },\n onMouseLeave: function (t) {\n this.dropdown.highlightOption.call(this);\n },\n onClick: function (t) {\n var e = this;\n if (0 == t.button && t.target != this.DOM.dropdown) {\n var i = t.target.closest(\".\" + this.settings.classNames.dropdownItem);\n this.state.actions.selectOption = !0, setTimeout(function () {\n return e.state.actions.selectOption = !1;\n }, 50), this.settings.hooks.suggestionClick(t, {\n tagify: this,\n suggestionElm: i\n }).then(function () {\n i ? e.dropdown.selectOption.call(e, i) : e.dropdown.hide.call(e);\n }).catch(function (t) {\n return t;\n });\n }\n },\n onScroll: function (t) {\n var e = t.target,\n i = e.scrollTop / (e.scrollHeight - e.parentNode.clientHeight) * 100;\n this.trigger(\"dropdown:scroll\", {\n percentage: Math.round(i)\n });\n }\n }\n },\n highlightOption: function (t, e) {\n var i,\n s = this.settings.classNames.dropdownItemActive;\n if (this.state.ddItemElm && (this.state.ddItemElm.classList.remove(s), this.state.ddItemElm.removeAttribute(\"aria-selected\")), !t) return this.state.ddItemData = null, this.state.ddItemElm = null, void this.input.autocomplete.suggest.call(this);\n i = this.suggestedListItems[this.getNodeIndex(t)], this.state.ddItemData = i, this.state.ddItemElm = t, t.classList.add(s), t.setAttribute(\"aria-selected\", !0), e && (t.parentNode.scrollTop = t.clientHeight + t.offsetTop - t.parentNode.clientHeight), this.settings.autoComplete && (this.input.autocomplete.suggest.call(this, i), this.dropdown.position.call(this));\n },\n selectOption: function (t) {\n var e = this,\n i = this.settings.dropdown,\n s = i.clearOnSelect,\n a = i.closeOnSelect;\n if (!t) return this.addTags(this.state.inputText, !0), void (a && this.dropdown.hide.call(this));\n var n = t.getAttribute(\"tagifySuggestionIdx\"),\n o = this.suggestedListItems[+n];\n if (this.trigger(\"dropdown:select\", {\n data: o,\n elm: t\n }), n && o) {\n if (this.state.editing ? this.onEditTagDone(null, d({\n __isValid: !0\n }, o)) : this[\"mix\" == this.settings.mode ? \"addMixTags\" : \"addTags\"]([o], s), setTimeout(function () {\n e.DOM.input.focus(), e.toggleFocusClass(!0);\n }), a) return this.dropdown.hide.call(this);\n this.dropdown.refilter.call(this);\n } else this.dropdown.hide.call(this);\n },\n selectAll: function () {\n return this.suggestedListItems.length = 0, this.dropdown.hide.call(this), this.addTags(this.dropdown.filterListItems.call(this, \"\"), !0), this;\n },\n filterListItems: function (t, e) {\n var i,\n s,\n a,\n n,\n o,\n r = this,\n d = this.settings,\n h = d.dropdown,\n g = (e = e || {}, []),\n u = d.whitelist,\n p = h.maxItems || 1 / 0,\n f = h.searchKeys,\n m = 0;\n if (!t || !f.length) return (d.duplicates ? u : u.filter(function (t) {\n return !r.isTagDuplicate(l(t) ? t.value : t);\n })).slice(0, p);\n function v(t, e) {\n return e.toLowerCase().split(\" \").every(function (e) {\n return t.includes(e.toLowerCase());\n });\n }\n for (o = h.caseSensitive ? \"\" + t : (\"\" + t).toLowerCase(); m < u.length && (i = u[m] instanceof Object ? u[m] : {\n value: u[m]\n }, h.fuzzySearch && !e.exact ? (a = f.reduce(function (t, e) {\n return t + \" \" + (i[e] || \"\");\n }, \"\").toLowerCase(), h.accentedSearch && (a = c(a), o = c(o)), s = v(a, o)) : s = f.some(function (t) {\n var s = \"\" + (i[t] || \"\");\n return h.accentedSearch && (s = c(s), o = c(o)), h.caseSensitive || (s = s.toLowerCase()), e.exact ? s == o : 0 == s.indexOf(o);\n }), n = !d.duplicates && this.isTagDuplicate(l(i) ? i.value : i), s && !n && p-- && g.push(i), 0 != p); m++);\n return g;\n },\n createListHTML: function (t) {\n var e = this;\n return d([], t).map(function (t, i) {\n \"string\" != typeof t && \"number\" != typeof t || (t = {\n value: t\n });\n var s = e.settings.dropdown.mapValueTo,\n a = s ? \"function\" == typeof s ? s(t) : t[s] || t.value : t.value;\n t.value = a && \"string\" == typeof a ? o(a) : a;\n var n = e.settings.templates.dropdownItem.call(e, t);\n return n = n.replace(/\\s*tagifySuggestionIdx=([\"'])(.*?)\\1/gim, \"\").replace(\">\", ' tagifySuggestionIdx=\"'.concat(i, '\">'));\n }).join(\"\");\n }\n },\n u = {\n delimiters: \",\",\n pattern: null,\n tagTextProp: \"value\",\n maxTags: 1 / 0,\n callbacks: {},\n addTagOnBlur: !0,\n duplicates: !1,\n whitelist: [],\n blacklist: [],\n enforceWhitelist: !1,\n keepInvalidTags: !1,\n mixTagsAllowedAfter: /,|\\.|\\:|\\s/,\n mixTagsInterpolator: [\"[[\", \"]]\"],\n backspace: !0,\n skipInvalid: !1,\n editTags: {\n clicks: 2,\n keepInvalid: !0\n },\n transformTag: function () {},\n trim: !0,\n mixMode: {\n insertAfterTag: \" \"\n },\n autoComplete: {\n enabled: !0,\n rightKey: !1\n },\n classNames: {\n namespace: \"tagify\",\n mixMode: \"tagify--mix\",\n selectMode: \"tagify--select\",\n input: \"tagify__input\",\n focus: \"tagify--focus\",\n tag: \"tagify__tag\",\n tagNoAnimation: \"tagify--noAnim\",\n tagInvalid: \"tagify--invalid\",\n tagNotAllowed: \"tagify--notAllowed\",\n inputInvalid: \"tagify__input--invalid\",\n tagX: \"tagify__tag__removeBtn\",\n tagText: \"tagify__tag-text\",\n dropdown: \"tagify__dropdown\",\n dropdownWrapper: \"tagify__dropdown__wrapper\",\n dropdownItem: \"tagify__dropdown__item\",\n dropdownItemActive: \"tagify__dropdown__item--active\",\n dropdownInital: \"tagify__dropdown--initial\",\n scopeLoading: \"tagify--loading\",\n tagLoading: \"tagify__tag--loading\",\n tagEditing: \"tagify__tag--editable\",\n tagFlash: \"tagify__tag--flash\",\n tagHide: \"tagify__tag--hide\",\n hasMaxTags: \"tagify--hasMaxTags\",\n hasNoTags: \"tagify--noTags\",\n empty: \"tagify--empty\"\n },\n dropdown: {\n classname: \"\",\n enabled: 2,\n maxItems: 10,\n searchKeys: [\"value\", \"searchBy\"],\n fuzzySearch: !0,\n caseSensitive: !1,\n accentedSearch: !0,\n highlightFirst: !1,\n closeOnSelect: !0,\n clearOnSelect: !0,\n position: \"all\",\n appendTarget: null\n },\n hooks: {\n beforeRemoveTag: function () {\n return Promise.resolve();\n },\n suggestionClick: function () {\n return Promise.resolve();\n }\n }\n };\n var p = {\n customBinding: function () {\n var t = this;\n this.customEventsList.forEach(function (e) {\n t.on(e, t.settings.callbacks[e]);\n });\n },\n binding: function () {\n var t,\n e = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0],\n i = this.events.callbacks,\n s = e ? \"addEventListener\" : \"removeEventListener\";\n if (!this.state.mainEvents || !e) for (var a in this.state.mainEvents = e, e && !this.listeners.main && (this.DOM.input.addEventListener(this.isIE ? \"keydown\" : \"input\", i[this.isIE ? \"onInputIE\" : \"onInput\"].bind(this)), this.settings.isJQueryPlugin && jQuery(this.DOM.originalInput).on(\"tagify.removeAllTags\", this.removeAllTags.bind(this))), t = this.listeners.main = this.listeners.main || {\n focus: [\"input\", i.onFocusBlur.bind(this)],\n blur: [\"input\", i.onFocusBlur.bind(this)],\n keydown: [\"input\", i.onKeydown.bind(this)],\n click: [\"scope\", i.onClickScope.bind(this)],\n dblclick: [\"scope\", i.onDoubleClickScope.bind(this)],\n paste: [\"input\", i.onPaste.bind(this)]\n }) (\"blur\" != a || e) && this.DOM[t[a][0]][s](a, t[a][1]);\n },\n callbacks: {\n onFocusBlur: function (t) {\n var e = t.target ? this.trim(t.target.textContent) : \"\",\n i = this.settings,\n s = t.type,\n a = i.dropdown.enabled >= 0,\n n = {\n relatedTarget: t.relatedTarget\n },\n o = this.state.actions.selectOption && (a || !i.dropdown.closeOnSelect),\n r = this.state.actions.addNew && a;\n if (\"blur\" == s) {\n if (t.relatedTarget === this.DOM.scope) return this.dropdown.hide.call(this), void this.DOM.input.focus();\n this.postUpdate(), this.triggerChangeEvent();\n }\n if (!o && !r) if (this.state.hasFocus = \"focus\" == s && +new Date(), this.toggleFocusClass(this.state.hasFocus), \"mix\" != i.mode) {\n if (\"focus\" == s) return this.trigger(\"focus\", n), void (0 === i.dropdown.enabled && this.dropdown.show.call(this));\n \"blur\" == s && (this.trigger(\"blur\", n), this.loading(!1), (\"select\" == this.settings.mode ? !this.value.length || this.value[0].value != e : e && !this.state.actions.selectOption && i.addTagOnBlur) && this.addTags(e, !0)), this.DOM.input.removeAttribute(\"style\"), this.dropdown.hide.call(this);\n } else \"focus\" == s ? this.trigger(\"focus\", n) : \"blur\" == t.type && (this.trigger(\"blur\", n), this.loading(!1), this.dropdown.hide.call(this), this.state.dropdown.visible = void 0, this.setStateSelection());\n },\n onKeydown: function (t) {\n var e = this,\n i = this.trim(t.target.textContent);\n if (this.trigger(\"keydown\", {\n originalEvent: this.cloneEvent(t)\n }), \"mix\" == this.settings.mode) {\n switch (t.key) {\n case \"Left\":\n case \"ArrowLeft\":\n this.state.actions.ArrowLeft = !0;\n break;\n case \"Delete\":\n case \"Backspace\":\n if (this.state.editing) return;\n var s,\n o,\n r = document.getSelection(),\n l = \"Delete\" == t.key && r.anchorOffset == (r.anchorNode.length || 0),\n d = 1 == r.anchorNode.nodeType || !r.anchorOffset && r.anchorNode.previousElementSibling,\n c = a(this.DOM.input.innerHTML),\n g = this.getTagElms();\n if (h && d) return o = n(d), d.hasAttribute(\"readonly\") || d.remove(), this.DOM.input.focus(), void setTimeout(function () {\n e.placeCaretAfterNode(o), e.DOM.input.click();\n });\n if (\"BR\" == r.anchorNode.nodeName) return;\n if ((l || d) && 1 == r.anchorNode.nodeType ? s = 0 == r.anchorOffset ? l ? g[0] : null : g[r.anchorOffset - 1] : l ? s = r.anchorNode.nextElementSibling : d && (s = d), 3 == r.anchorNode.nodeType && !r.anchorNode.nodeValue && r.anchorNode.previousElementSibling && t.preventDefault(), (d || l) && !this.settings.backspace) return void t.preventDefault();\n if (\"Range\" != r.type && !r.anchorOffset && r.anchorNode == this.DOM.input && \"Delete\" != t.key) return void t.preventDefault();\n if (\"Range\" != r.type && s && s.hasAttribute(\"readonly\")) return void this.placeCaretAfterNode(n(s));\n this.isFirefox && 1 == r.anchorNode.nodeType && 0 != r.anchorOffset && (this.removeTags(), this.placeCaretAfterNode(this.setRangeAtStartEnd())), setTimeout(function () {\n var t = document.getSelection(),\n i = a(e.DOM.input.innerHTML),\n s = t.anchorNode.previousElementSibling;\n if (!h && i.length >= c.length && s && !s.hasAttribute(\"readonly\") && (e.removeTags(s), e.fixFirefoxLastTagNoCaret(), 2 == e.DOM.input.children.length && \"BR\" == e.DOM.input.children[1].tagName)) return e.DOM.input.innerHTML = \"\", e.value.length = 0, !0;\n e.value = [].map.call(g, function (t, i) {\n var s = e.tagData(t);\n if (t.parentNode || s.readonly) return s;\n e.trigger(\"remove\", {\n tag: t,\n index: i,\n data: s\n });\n }).filter(function (t) {\n return t;\n });\n }, 50);\n }\n return !0;\n }\n switch (t.key) {\n case \"Backspace\":\n this.state.dropdown.visible && \"manual\" != this.settings.dropdown.position || \"\" != i && 8203 != i.charCodeAt(0) || (!0 === this.settings.backspace ? this.removeTags() : \"edit\" == this.settings.backspace && setTimeout(this.editTag.bind(this), 0));\n break;\n case \"Esc\":\n case \"Escape\":\n if (this.state.dropdown.visible) return;\n t.target.blur();\n break;\n case \"Down\":\n case \"ArrowDown\":\n this.state.dropdown.visible || this.dropdown.show.call(this);\n break;\n case \"ArrowRight\":\n var u = this.state.inputSuggestion || this.state.ddItemData;\n if (u && this.settings.autoComplete.rightKey) return void this.addTags([u], !0);\n break;\n case \"Tab\":\n var p = \"select\" == this.settings.mode;\n if (!i || p) return !0;\n t.preventDefault();\n case \"Enter\":\n if (this.state.dropdown.visible || 229 == t.keyCode) return;\n t.preventDefault(), setTimeout(function () {\n e.state.actions.selectOption || e.addTags(i, !0);\n });\n }\n },\n onInput: function (t) {\n if (\"mix\" == this.settings.mode) return this.events.callbacks.onMixTagsInput.call(this, t);\n var e = this.input.normalize.call(this),\n i = e.length >= this.settings.dropdown.enabled,\n s = {\n value: e,\n inputElm: this.DOM.input\n };\n s.isValid = this.validateTag({\n value: e\n }), this.trigger(\"input\", s), this.state.inputText != e && (this.input.set.call(this, e, !1), -1 != e.search(this.settings.delimiters) ? this.addTags(e) && this.input.set.call(this) : this.settings.dropdown.enabled >= 0 && this.dropdown[i ? \"show\" : \"hide\"].call(this, e));\n },\n onMixTagsInput: function (t) {\n var e,\n i,\n s,\n a,\n n,\n o,\n r,\n l,\n c = this,\n g = this.settings,\n u = this.value.length,\n p = this.getTagElms(),\n f = document.createDocumentFragment(),\n m = window.getSelection().getRangeAt(0),\n v = [].map.call(p, function (t) {\n return c.tagData(t).value;\n });\n if (\"deleteContentBackward\" == t.inputType && h && this.events.callbacks.onKeydown.call(this, {\n target: t.target,\n key: \"Backspace\"\n }), this.value.slice().forEach(function (t) {\n t.readonly && !v.includes(t.value) && f.appendChild(c.createTagElem(t));\n }), f.childNodes.length && (m.insertNode(f), this.setRangeAtStartEnd(!1, f.lastChild)), p.length != u) return this.value = [].map.call(this.getTagElms(), function (t) {\n return c.tagData(t);\n }), void this.update({\n withoutChangeEvent: !0\n });\n if (this.hasMaxTags()) return !0;\n if (window.getSelection && (o = window.getSelection()).rangeCount > 0 && 3 == o.anchorNode.nodeType) {\n if ((m = o.getRangeAt(0).cloneRange()).collapse(!0), m.setStart(o.focusNode, 0), s = (e = m.toString().slice(0, m.endOffset)).split(g.pattern).length - 1, (i = e.match(g.pattern)) && (a = e.slice(e.lastIndexOf(i[i.length - 1]))), a) {\n if (this.state.actions.ArrowLeft = !1, this.state.tag = {\n prefix: a.match(g.pattern)[0],\n value: a.replace(g.pattern, \"\")\n }, this.state.tag.baseOffset = o.baseOffset - this.state.tag.value.length, l = this.state.tag.value.match(g.delimiters)) return this.state.tag.value = this.state.tag.value.replace(g.delimiters, \"\"), this.state.tag.delimiters = l[0], this.addTags(this.state.tag.value, g.dropdown.clearOnSelect), void this.dropdown.hide.call(this);\n n = this.state.tag.value.length >= g.dropdown.enabled;\n try {\n r = (r = this.state.flaggedTags[this.state.tag.baseOffset]).prefix == this.state.tag.prefix && r.value[0] == this.state.tag.value[0], this.state.flaggedTags[this.state.tag.baseOffset] && !this.state.tag.value && delete this.state.flaggedTags[this.state.tag.baseOffset];\n } catch (t) {}\n (r || s < this.state.mixMode.matchedPatternCount) && (n = !1);\n } else this.state.flaggedTags = {};\n this.state.mixMode.matchedPatternCount = s;\n }\n setTimeout(function () {\n c.update({\n withoutChangeEvent: !0\n }), c.trigger(\"input\", d({}, c.state.tag, {\n textContent: c.DOM.input.textContent\n })), c.state.tag && c.dropdown[n ? \"show\" : \"hide\"].call(c, c.state.tag.value);\n }, 10);\n },\n onInputIE: function (t) {\n var e = this;\n setTimeout(function () {\n e.events.callbacks.onInput.call(e, t);\n });\n },\n onClickScope: function (t) {\n var e = this.settings,\n i = t.target.closest(\".\" + e.classNames.tag),\n s = +new Date() - this.state.hasFocus;\n if (t.target != this.DOM.scope) {\n if (!t.target.classList.contains(e.classNames.tagX)) return i ? (this.trigger(\"click\", {\n tag: i,\n index: this.getNodeIndex(i),\n data: this.tagData(i),\n originalEvent: this.cloneEvent(t)\n }), void (1 !== e.editTags && 1 !== e.editTags.clicks || this.events.callbacks.onDoubleClickScope.call(this, t))) : void (t.target == this.DOM.input && (\"mix\" == e.mode && this.fixFirefoxLastTagNoCaret(), s > 500) ? this.state.dropdown.visible ? this.dropdown.hide.call(this) : 0 === e.dropdown.enabled && \"mix\" != e.mode && this.dropdown.show.call(this) : \"select\" == e.mode && !this.state.dropdown.visible && this.dropdown.show.call(this));\n this.removeTags(t.target.parentNode);\n } else this.state.hasFocus || this.DOM.input.focus();\n },\n onPaste: function (t) {\n var e;\n t.preventDefault(), this.settings.readonly || (e = (t.clipboardData || window.clipboardData).getData(\"Text\"), this.injectAtCaret(e, window.getSelection().getRangeAt(0)), \"mix\" != this.settings.mode && this.addTags(this.DOM.input.textContent, !0));\n },\n onEditTagInput: function (t, i) {\n var s = t.closest(\".\" + this.settings.classNames.tag),\n a = this.getNodeIndex(s),\n n = this.tagData(s),\n o = this.input.normalize.call(this, t),\n r = s.innerHTML != s.__tagifyTagData.__originalHTML,\n l = this.validateTag(e({}, this.settings.tagTextProp, o));\n r || !0 !== t.originalIsValid || (l = !0), s.classList.toggle(this.settings.classNames.tagInvalid, !0 !== l), n.__isValid = l, s.title = !0 === l ? n.title || n.value : l, o.length >= this.settings.dropdown.enabled && (this.state.editing && (this.state.editing.value = o), this.dropdown.show.call(this, o)), this.trigger(\"edit:input\", {\n tag: s,\n index: a,\n data: d({}, this.value[a], {\n newValue: o\n }),\n originalEvent: this.cloneEvent(i)\n });\n },\n onEditTagFocus: function (t) {\n this.state.editing = {\n scope: t,\n input: t.querySelector(\"[contenteditable]\")\n };\n },\n onEditTagBlur: function (t) {\n var i;\n if (this.state.hasFocus || this.toggleFocusClass(), this.DOM.scope.contains(t)) {\n var s,\n a = this.settings,\n n = t.closest(\".\" + a.classNames.tag),\n o = this.input.normalize.call(this, t),\n r = this.tagData(n).__originalData,\n l = n.innerHTML != n.__tagifyTagData.__originalHTML,\n d = this.validateTag(e({}, a.tagTextProp, o));\n if (o) {\n if (l) {\n if (s = this.getWhitelistItem(o) || (e(i = {}, a.tagTextProp, o), e(i, \"value\", o), i), a.transformTag.call(this, s, r), !0 !== (d = this.validateTag(e({}, a.tagTextProp, s[a.tagTextProp])))) {\n if (this.trigger(\"invalid\", {\n data: s,\n tag: n,\n message: d\n }), a.editTags.keepInvalid) return;\n a.keepInvalidTags ? s.__isValid = d : s = r;\n }\n this.onEditTagDone(n, s);\n } else this.onEditTagDone(n, r);\n } else this.onEditTagDone(n);\n }\n },\n onEditTagkeydown: function (t, e) {\n switch (this.trigger(\"edit:keydown\", {\n originalEvent: this.cloneEvent(t)\n }), t.key) {\n case \"Esc\":\n case \"Escape\":\n e.innerHTML = e.__tagifyTagData.__originalHTML;\n case \"Enter\":\n case \"Tab\":\n t.preventDefault(), t.target.blur();\n }\n },\n onDoubleClickScope: function (t) {\n var e,\n i,\n s = t.target.closest(\".\" + this.settings.classNames.tag),\n a = this.settings;\n s && (e = s.classList.contains(this.settings.classNames.tagEditing), i = s.hasAttribute(\"readonly\"), \"select\" == a.mode || a.readonly || e || i || !this.settings.editTags || this.editTag(s), this.toggleFocusClass(!0), this.trigger(\"dblclick\", {\n tag: s,\n index: this.getNodeIndex(s),\n data: this.tagData(s)\n }));\n }\n }\n };\n function f(e, i) {\n return e ? e.previousElementSibling && e.previousElementSibling.classList.contains(\"tagify\") ? (console.warn(\"Tagify: \", \"input element is already Tagified\", e), this) : (d(this, function (e) {\n var i = document.createTextNode(\"\");\n function s(t, e, s) {\n s && e.split(/\\s+/g).forEach(function (e) {\n return i[t + \"EventListener\"].call(i, e, s);\n });\n }\n return {\n off: function (t, e) {\n return s(\"remove\", t, e), this;\n },\n on: function (t, e) {\n return e && \"function\" == typeof e && s(\"add\", t, e), this;\n },\n trigger: function (s, a) {\n var n;\n if (s) if (e.settings.isJQueryPlugin) \"remove\" == s && (s = \"removeTag\"), jQuery(e.DOM.originalInput).triggerHandler(s, [a]);else {\n try {\n var o = d({}, \"object\" === t(a) ? a : {\n value: a\n });\n if (o.tagify = this, a instanceof Object) for (var r in a) a[r] instanceof HTMLElement && (o[r] = a[r]);\n n = new CustomEvent(s, {\n detail: o\n });\n } catch (t) {\n console.warn(t);\n }\n i.dispatchEvent(n);\n }\n }\n };\n }(this)), this.isFirefox = \"undefined\" != typeof InstallTrigger, this.isIE = window.document.documentMode, this.applySettings(e, i || {}), this.state = {\n inputText: \"\",\n editing: !1,\n actions: {},\n mixMode: {},\n dropdown: {},\n flaggedTags: {}\n }, this.value = [], this.listeners = {}, this.DOM = {}, this.build(e), this.getCSSVars(), this.loadOriginalValues(), this.events.customBinding.call(this), this.events.binding.call(this), void (e.autofocus && this.DOM.input.focus())) : (console.warn(\"Tagify: \", \"input element not found\", e), this);\n }\n return f.prototype = {\n dropdown: g,\n TEXTS: {\n empty: \"empty\",\n exceed: \"number of tags exceeded\",\n pattern: \"pattern mismatch\",\n duplicate: \"already exists\",\n notAllowed: \"not allowed\"\n },\n customEventsList: [\"change\", \"add\", \"remove\", \"invalid\", \"input\", \"click\", \"keydown\", \"focus\", \"blur\", \"edit:input\", \"edit:updated\", \"edit:start\", \"edit:keydown\", \"dropdown:show\", \"dropdown:hide\", \"dropdown:select\", \"dropdown:updated\", \"dropdown:noMatch\"],\n trim: function (t) {\n return this.settings.trim && t && \"string\" == typeof t ? t.trim() : t;\n },\n parseHTML: function (t) {\n return new DOMParser().parseFromString(t.trim(), \"text/html\").body.firstElementChild;\n },\n templates: {\n wrapper: function (t, e) {\n return '<tags class=\"'.concat(e.classNames.namespace, \" \").concat(e.mode ? \"\".concat(e.classNames[e.mode + \"Mode\"]) : \"\", \" \").concat(t.className, '\"\\n ').concat(e.readonly ? \"readonly\" : \"\", \"\\n \").concat(e.required ? \"required\" : \"\", '\\n tabIndex=\"-1\">\\n <span ').concat(e.readonly && \"mix\" == e.mode ? \"\" : \"contenteditable\", ' data-placeholder=\"').concat(e.placeholder || \"​\", '\" aria-placeholder=\"').concat(e.placeholder || \"\", '\"\\n class=\"').concat(e.classNames.input, '\"\\n role=\"textbox\"\\n aria-autocomplete=\"both\"\\n aria-multiline=\"').concat(\"mix\" == e.mode, '\"></span>\\n </tags>');\n },\n tag: function (t) {\n return '<tag title=\"'.concat(t.title || t.value, \"\\\"\\n contenteditable='false'\\n spellcheck='false'\\n tabIndex=\\\"-1\\\"\\n class=\\\"\").concat(this.settings.classNames.tag, \" \").concat(t.class ? t.class : \"\", '\"\\n ').concat(this.getAttributes(t), \">\\n <x title='' class=\\\"\").concat(this.settings.classNames.tagX, \"\\\" role='button' aria-label='remove tag'></x>\\n <div>\\n <span class=\\\"\").concat(this.settings.classNames.tagText, '\">').concat(t[this.settings.tagTextProp] || t.value, \"</span>\\n </div>\\n </tag>\");\n },\n dropdown: function (t) {\n var e = t.dropdown,\n i = \"manual\" == e.position,\n s = \"\".concat(t.classNames.dropdown);\n return '<div class=\"'.concat(i ? \"\" : s, \" \").concat(e.classname, '\" role=\"listbox\" aria-labelledby=\"dropdown\">\\n <div class=\"').concat(t.classNames.dropdownWrapper, '\"></div>\\n </div>');\n },\n dropdownItem: function (t) {\n return \"<div \".concat(this.getAttributes(t), \"\\n class='\").concat(this.settings.classNames.dropdownItem, \" \").concat(t.class ? t.class : \"\", '\\'\\n tabindex=\"0\"\\n role=\"option\">').concat(t.value, \"</div>\");\n },\n dropdownItemNoMatch: null\n },\n parseTemplate: function (t, e) {\n return t = this.settings.templates[t] || t, this.parseHTML(t.apply(this, e));\n },\n applySettings: function (t, e) {\n u.templates = this.templates;\n var i = this.settings = d({}, u, e);\n if (i.readonly = t.hasAttribute(\"readonly\"), i.placeholder = t.getAttribute(\"placeholder\") || i.placeholder || \"\", i.required = t.hasAttribute(\"required\"), this.isIE && (i.autoComplete = !1), [\"whitelist\", \"blacklist\"].forEach(function (e) {\n var s = t.getAttribute(\"data-\" + e);\n s && (s = s.split(i.delimiters)) instanceof Array && (i[e] = s);\n }), \"autoComplete\" in e && !l(e.autoComplete) && (i.autoComplete = u.autoComplete, i.autoComplete.enabled = e.autoComplete), \"mix\" == i.mode && (i.autoComplete.rightKey = !0, i.delimiters = e.delimiters || null, i.tagTextProp && !i.dropdown.searchKeys.includes(i.tagTextProp) && i.dropdown.searchKeys.push(i.tagTextProp)), t.pattern) try {\n i.pattern = new RegExp(t.pattern);\n } catch (t) {}\n if (this.settings.delimiters) try {\n i.delimiters = new RegExp(this.settings.delimiters, \"g\");\n } catch (t) {}\n \"select\" == i.mode && (i.dropdown.enabled = 0), i.dropdown.appendTarget = e.dropdown && e.dropdown.appendTarget ? e.dropdown.appendTarget : document.body;\n },\n getAttributes: function (t) {\n if (\"[object Object]\" != Object.prototype.toString.call(t)) return \"\";\n var e,\n i,\n s = Object.keys(t),\n a = \"\";\n for (i = s.length; i--;) \"class\" != (e = s[i]) && t.hasOwnProperty(e) && void 0 !== t[e] && (a += \" \" + e + (void 0 !== t[e] ? '=\"'.concat(t[e], '\"') : \"\"));\n return a;\n },\n setStateSelection: function () {\n var t = window.getSelection(),\n e = {\n anchorOffset: t.anchorOffset,\n anchorNode: t.anchorNode,\n range: t.getRangeAt && t.rangeCount && t.getRangeAt(0)\n };\n return this.state.selection = e, e;\n },\n getCaretGlobalPosition: function () {\n var t = document.getSelection();\n if (t.rangeCount) {\n var e,\n i,\n s = t.getRangeAt(0),\n a = s.startContainer,\n n = s.startOffset;\n if (n > 0) return (i = document.createRange()).setStart(a, n - 1), i.setEnd(a, n), {\n left: (e = i.getBoundingClientRect()).right,\n top: e.top,\n bottom: e.bottom\n };\n if (a.getBoundingClientRect) return a.getBoundingClientRect();\n }\n return {\n left: -9999,\n top: -9999\n };\n },\n getCSSVars: function () {\n var t,\n e = getComputedStyle(this.DOM.scope, null);\n this.CSSVars = {\n tagHideTransition: function (t) {\n var e = t.value;\n return \"s\" == t.unit ? 1e3 * e : e;\n }(function (t) {\n if (!t) return {};\n var e = (t = t.trim().split(\" \")[0]).split(/\\d+/g).filter(function (t) {\n return t;\n }).pop().trim();\n return {\n value: +t.split(e).filter(function (t) {\n return t;\n })[0].trim(),\n unit: e\n };\n }((t = \"tag-hide-transition\", e.getPropertyValue(\"--\" + t))))\n };\n },\n build: function (t) {\n var e = this.DOM;\n this.settings.mixMode.integrated ? (e.originalInput = null, e.scope = t, e.input = t) : (e.originalInput = t, e.scope = this.parseTemplate(\"wrapper\", [t, this.settings]), e.input = e.scope.querySelector(\".\" + this.settings.classNames.input), t.parentNode.insertBefore(e.scope, t)), this.settings.dropdown.enabled >= 0 && this.dropdown.init.call(this);\n },\n destroy: function () {\n this.DOM.scope.parentNode.removeChild(this.DOM.scope), this.dropdown.hide.call(this, !0), clearTimeout(this.dropdownHide__bindEventsTimeout);\n },\n loadOriginalValues: function (t) {\n var e,\n i = this.settings;\n if (t = t || (i.mixMode.integrated ? this.DOM.input.textContent : this.DOM.originalInput.value)) {\n if (this.removeAllTags(), \"mix\" == i.mode) this.parseMixTags(t.trim()), (e = this.DOM.input.lastChild) && \"BR\" == e.tagName || this.DOM.input.insertAdjacentHTML(\"beforeend\", \"<br>\");else {\n try {\n JSON.parse(t) instanceof Array && (t = JSON.parse(t));\n } catch (t) {}\n this.addTags(t).forEach(function (t) {\n return t && t.classList.add(i.classNames.tagNoAnimation);\n });\n }\n } else this.postUpdate();\n this.state.lastOriginalValueReported = i.mixMode.integrated ? \"\" : this.DOM.originalInput.value, this.state.loadedOriginalValues = !0;\n },\n cloneEvent: function (t) {\n var e = {};\n for (var i in t) e[i] = t[i];\n return e;\n },\n loading: function (t) {\n return this.state.isLoading = t, this.DOM.scope.classList[t ? \"add\" : \"remove\"](this.settings.classNames.scopeLoading), this;\n },\n tagLoading: function (t, e) {\n return t && t.classList[e ? \"add\" : \"remove\"](this.settings.classNames.tagLoading), this;\n },\n toggleClass: function (t, e) {\n \"string\" == typeof t && this.DOM.scope.classList.toggle(t, e);\n },\n toggleFocusClass: function (t) {\n this.toggleClass(this.settings.classNames.focus, !!t);\n },\n triggerChangeEvent: function () {\n if (!this.settings.mixMode.integrated) {\n var t = this.DOM.originalInput,\n e = this.state.lastOriginalValueReported !== t.value,\n i = new CustomEvent(\"change\", {\n bubbles: !0\n });\n e && (this.state.lastOriginalValueReported = t.value, i.simulated = !0, t._valueTracker && t._valueTracker.setValue(Math.random()), t.dispatchEvent(i), this.trigger(\"change\", this.state.lastOriginalValueReported), t.value = this.state.lastOriginalValueReported);\n }\n },\n events: p,\n fixFirefoxLastTagNoCaret: function () {},\n placeCaretAfterNode: function (t) {\n if (t && t.parentNode) {\n var e = t.nextSibling,\n i = window.getSelection(),\n s = i.getRangeAt(0);\n i.rangeCount && (s.setStartBefore(e || t), s.setEndBefore(e || t), i.removeAllRanges(), i.addRange(s));\n }\n },\n insertAfterTag: function (t, e) {\n if (e = e || this.settings.mixMode.insertAfterTag, t && t.parentNode && e) return e = \"string\" == typeof e ? document.createTextNode(e) : e, t.parentNode.insertBefore(e, t.nextSibling), e;\n },\n editTag: function (t, e) {\n var i = this;\n t = t || this.getLastTag(), e = e || {}, this.dropdown.hide.call(this);\n var s = this.settings;\n function a() {\n return t.querySelector(\".\" + s.classNames.tagText);\n }\n var n = a(),\n o = this.getNodeIndex(t),\n r = this.tagData(t),\n l = this.events.callbacks,\n c = this,\n h = !0;\n if (n) {\n if (!(r instanceof Object && \"editable\" in r) || r.editable) return n.setAttribute(\"contenteditable\", !0), t.classList.add(s.classNames.tagEditing), this.tagData(t, {\n __originalData: d({}, r),\n __originalHTML: t.innerHTML\n }), n.addEventListener(\"focus\", l.onEditTagFocus.bind(this, t)), n.addEventListener(\"blur\", function () {\n setTimeout(function () {\n return l.onEditTagBlur.call(c, a());\n });\n }), n.addEventListener(\"input\", l.onEditTagInput.bind(this, n)), n.addEventListener(\"keydown\", function (e) {\n return l.onEditTagkeydown.call(i, e, t);\n }), n.focus(), this.setRangeAtStartEnd(!1, n), e.skipValidation || (h = this.editTagToggleValidity(t, r.value)), n.originalIsValid = h, this.trigger(\"edit:start\", {\n tag: t,\n index: o,\n data: r,\n isValid: h\n }), this;\n } else console.warn(\"Cannot find element in Tag template: .\", s.classNames.tagText);\n },\n editTagToggleValidity: function (t, e) {\n var i,\n s = this.tagData(t);\n if (s) return i = !(!s.__isValid || 1 == s.__isValid), t.classList.toggle(this.settings.classNames.tagInvalid, i), s.__isValid;\n console.warn(\"tag has no data: \", t, s);\n },\n onEditTagDone: function (t, e) {\n e = e || {};\n var i = {\n tag: t = t || this.state.editing.scope,\n index: this.getNodeIndex(t),\n previousData: this.tagData(t),\n data: e\n };\n this.trigger(\"edit:beforeUpdate\", i), this.state.editing = !1, delete e.__originalData, delete e.__originalHTML, t && e[this.settings.tagTextProp] ? (this.editTagToggleValidity(t), this.replaceTag(t, e)) : t && this.removeTags(t), this.trigger(\"edit:updated\", i), this.dropdown.hide.call(this), this.settings.keepInvalidTags && this.reCheckInvalidTags();\n },\n replaceTag: function (t, e) {\n e && e.value || (e = t.__tagifyTagData), e.__isValid && 1 != e.__isValid && d(e, this.getInvalidTagAttrs(e, e.__isValid));\n var i = this.createTagElem(e);\n t.parentNode.replaceChild(i, t), this.updateValueByDOMTags();\n },\n updateValueByDOMTags: function () {\n var t = this;\n this.value.length = 0, [].forEach.call(this.getTagElms(), function (e) {\n e.classList.contains(t.settings.classNames.tagNotAllowed) || t.value.push(t.tagData(e));\n }), this.update();\n },\n setRangeAtStartEnd: function (t, e) {\n t = \"number\" == typeof t ? t : !!t, e = (e = e || this.DOM.input).lastChild || e;\n var i = document.getSelection();\n try {\n i.rangeCount >= 1 && [\"Start\", \"End\"].forEach(function (s) {\n return i.getRangeAt(0)[\"set\" + s](e, t || e.length);\n });\n } catch (t) {\n console.warn(\"Tagify: \", t);\n }\n },\n injectAtCaret: function (t, e) {\n if (e = e || this.state.selection.range) return \"string\" == typeof t && (t = document.createTextNode(t)), e.deleteContents(), e.insertNode(t), this.setRangeAtStartEnd(!1, t), this.updateValueByDOMTags(), this.update(), this;\n },\n input: {\n set: function () {\n var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : \"\",\n e = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1],\n i = this.settings.dropdown.closeOnSelect;\n this.state.inputText = t, e && (this.DOM.input.innerHTML = t), !t && i && this.dropdown.hide.bind(this), this.input.autocomplete.suggest.call(this), this.input.validate.call(this);\n },\n validate: function () {\n var t = !this.state.inputText || !0 === this.validateTag({\n value: this.state.inputText\n });\n return this.DOM.input.classList.toggle(this.settings.classNames.inputInvalid, !t), t;\n },\n normalize: function (t) {\n var e = t || this.DOM.input,\n i = [];\n e.childNodes.forEach(function (t) {\n return 3 == t.nodeType && i.push(t.nodeValue);\n }), i = i.join(\"\\n\");\n try {\n i = i.replace(/(?:\\r\\n|\\r|\\n)/g, this.settings.delimiters.source.charAt(0));\n } catch (t) {}\n return i = i.replace(/\\s/g, \" \"), this.settings.trim && (i = i.replace(/^\\s+/, \"\")), i;\n },\n autocomplete: {\n suggest: function (t) {\n if (this.settings.autoComplete.enabled) {\n \"string\" == typeof (t = t || {}) && (t = {\n value: t\n });\n var e = t.value ? \"\" + t.value : \"\",\n i = e.substr(0, this.state.inputText.length).toLowerCase(),\n s = e.substring(this.state.inputText.length);\n e && this.state.inputText && i == this.state.inputText.toLowerCase() ? (this.DOM.input.setAttribute(\"data-suggest\", s), this.state.inputSuggestion = t) : (this.DOM.input.removeAttribute(\"data-suggest\"), delete this.state.inputSuggestion);\n }\n },\n set: function (t) {\n var e = this.DOM.input.getAttribute(\"data-suggest\"),\n i = t || (e ? this.state.inputText + e : null);\n return !!i && (\"mix\" == this.settings.mode ? this.replaceTextWithNode(document.createTextNode(this.state.tag.prefix + i)) : (this.input.set.call(this, i), this.setRangeAtStartEnd()), this.input.autocomplete.suggest.call(this), this.dropdown.hide.call(this), !0);\n }\n }\n },\n getTagIdx: function (t) {\n return this.value.findIndex(function (e) {\n return e.value == t.value;\n });\n },\n getNodeIndex: function (t) {\n var e = 0;\n if (t) for (; t = t.previousElementSibling;) e++;\n return e;\n },\n getTagElms: function () {\n for (var t = arguments.length, e = new Array(t), i = 0; i < t; i++) e[i] = arguments[i];\n var s = [\".\" + this.settings.classNames.tag].concat(e).join(\".\");\n return [].slice.call(this.DOM.scope.querySelectorAll(s));\n },\n getLastTag: function () {\n var t = this.DOM.scope.querySelectorAll(\".\".concat(this.settings.classNames.tag, \":not(.\").concat(this.settings.classNames.tagHide, \"):not([readonly])\"));\n return t[t.length - 1];\n },\n tagData: function (t, e, i) {\n return t ? (e && (t.__tagifyTagData = i ? e : d({}, t.__tagifyTagData || {}, e)), t.__tagifyTagData) : (console.warn(\"tag elment doesn't exist\", t, e), e);\n },\n isTagDuplicate: function (t, e) {\n var i = this,\n a = this.settings;\n return \"select\" != a.mode && this.value.reduce(function (n, o) {\n return s(i.trim(\"\" + t), o.value, e || a.dropdown.caseSensitive) ? n + 1 : n;\n }, 0);\n },\n getTagIndexByValue: function (t) {\n var e = this,\n i = [];\n return this.getTagElms().forEach(function (a, n) {\n s(e.trim(a.textContent), t, e.settings.dropdown.caseSensitive) && i.push(n);\n }), i;\n },\n getTagElmByValue: function (t) {\n var e = this.getTagIndexByValue(t)[0];\n return this.getTagElms()[e];\n },\n flashTag: function (t) {\n var e = this;\n t && (t.classList.add(this.settings.classNames.tagFlash), setTimeout(function () {\n t.classList.remove(e.settings.classNames.tagFlash);\n }, 100));\n },\n isTagBlacklisted: function (t) {\n return t = this.trim(t.toLowerCase()), this.settings.blacklist.filter(function (e) {\n return (\"\" + e).toLowerCase() == t;\n }).length;\n },\n isTagWhitelisted: function (t) {\n return !!this.getWhitelistItem(t);\n },\n getWhitelistItem: function (t, e, i) {\n e = e || \"value\";\n var a,\n n = this.settings;\n return (i = i || n.whitelist).some(function (i) {\n var o = \"string\" == typeof i ? i : i[e] || i.value;\n if (s(o, t, n.dropdown.caseSensitive, n.trim)) return a = \"string\" == typeof i ? {\n value: i\n } : i, !0;\n }), a || \"value\" != e || \"value\" == n.tagTextProp || (a = this.getWhitelistItem(t, n.tagTextProp, i)), a;\n },\n validateTag: function (t) {\n var e = this.settings,\n i = \"value\" in t ? \"value\" : e.tagTextProp,\n s = this.trim(t[i] + \"\");\n return (t[i] + \"\").trim() ? e.pattern && e.pattern instanceof RegExp && !e.pattern.test(s) ? this.TEXTS.pattern : !e.duplicates && this.isTagDuplicate(s, this.state.editing) ? this.TEXTS.duplicate : this.isTagBlacklisted(s) || e.enforceWhitelist && !this.isTagWhitelisted(s) ? this.TEXTS.notAllowed : !e.validate || e.validate(t) : this.TEXTS.empty;\n },\n getInvalidTagAttrs: function (t, e) {\n return {\n \"aria-invalid\": !0,\n class: \"\".concat(t.class || \"\", \" \").concat(this.settings.classNames.tagNotAllowed).trim(),\n title: e\n };\n },\n hasMaxTags: function () {\n return this.value.length >= this.settings.maxTags && this.TEXTS.exceed;\n },\n setReadonly: function (t) {\n var e = this.settings;\n document.activeElement.blur(), e.readonly = t, this.DOM.scope[(t ? \"set\" : \"remove\") + \"Attribute\"](\"readonly\", !0), \"mix\" == e.mode && (this.DOM.input.contentEditable = !t);\n },\n normalizeTags: function (t) {\n var s = this,\n a = this.settings,\n n = a.whitelist,\n o = a.delimiters,\n r = a.mode,\n l = a.tagTextProp,\n d = a.enforceWhitelist,\n c = [],\n h = !!n && n[0] instanceof Object,\n g = t instanceof Array,\n u = function (t) {\n return (t + \"\").split(o).filter(function (t) {\n return t;\n }).map(function (t) {\n var i;\n return e(i = {}, l, s.trim(t)), e(i, \"value\", s.trim(t)), i;\n });\n };\n if (\"number\" == typeof t && (t = t.toString()), \"string\" == typeof t) {\n if (!t.trim()) return [];\n t = u(t);\n } else if (g) {\n var p;\n t = (p = []).concat.apply(p, i(t.map(function (t) {\n return t.value ? t : u(t);\n })));\n }\n return h && (t.forEach(function (t) {\n var e = c.map(function (t) {\n return t.value;\n }),\n i = s.dropdown.filterListItems.call(s, t[l], {\n exact: !0\n }).filter(function (t) {\n return !e.includes(t.value);\n }),\n a = i.length > 1 ? s.getWhitelistItem(t[l], l, i) : i[0];\n a && a instanceof Object ? c.push(a) : \"mix\" == r || d || (null == t.value && (t.value = t[l]), c.push(t));\n }), t = c), t;\n },\n parseMixTags: function (t) {\n var e = this,\n i = this.settings,\n s = i.mixTagsInterpolator,\n a = i.duplicates,\n n = i.transformTag,\n o = i.enforceWhitelist,\n r = i.maxTags,\n l = i.tagTextProp,\n d = [];\n return t = t.split(s[0]).map(function (t, i) {\n var c,\n h,\n g,\n u = t.split(s[1]),\n p = u[0],\n f = d.length == r;\n try {\n if (p == +p) throw Error;\n h = JSON.parse(p);\n } catch (t) {\n h = e.normalizeTags(p)[0] || {\n value: p\n };\n }\n if (f || !(u.length > 1) || o && !e.isTagWhitelisted(h.value) || !a && e.isTagDuplicate(h.value)) {\n if (t) return i ? s[0] + t : t;\n } else n.call(e, h), h[c = h[l] ? l : \"value\"] = e.trim(h[c]), g = e.createTagElem(h), d.push(h), g.classList.add(e.settings.classNames.tagNoAnimation), u[0] = g.outerHTML, e.value.push(h);\n return u.join(\"\");\n }).join(\"\"), this.DOM.input.innerHTML = t, this.DOM.input.appendChild(document.createTextNode(\"\")), this.DOM.input.normalize(), this.getTagElms().forEach(function (t, i) {\n return e.tagData(t, d[i]);\n }), this.update({\n withoutChangeEvent: !0\n }), t;\n },\n replaceTextWithNode: function (t, e) {\n if (this.state.tag || e) {\n e = e || this.state.tag.prefix + this.state.tag.value;\n var i,\n s,\n a = window.getSelection(),\n n = a.anchorNode,\n o = this.state.tag.delimiters ? this.state.tag.delimiters.length : 0;\n return n.splitText(a.anchorOffset - o), i = n.nodeValue.lastIndexOf(e), s = n.splitText(i), t && n.parentNode.replaceChild(t, s), !0;\n }\n },\n selectTag: function (t, e) {\n if (!this.settings.enforceWhitelist || this.isTagWhitelisted(e.value)) return this.input.set.call(this, e.value, !0), this.state.actions.selectOption && setTimeout(this.setRangeAtStartEnd.bind(this)), this.getLastTag() ? this.replaceTag(this.getLastTag(), e) : this.appendTag(t), this.value[0] = e, this.trigger(\"add\", {\n tag: t,\n data: e\n }), this.update(), [t];\n },\n addEmptyTag: function (t) {\n var e = d({\n value: \"\"\n }, t || {}),\n i = this.createTagElem(e);\n this.tagData(i, e), this.appendTag(i), this.editTag(i, {\n skipValidation: !0\n });\n },\n addTags: function (t, e) {\n var i = this,\n s = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : this.settings.skipInvalid,\n a = [],\n n = this.settings;\n return t && 0 != t.length ? (t = this.normalizeTags(t), \"mix\" == n.mode ? this.addMixTags(t) : (\"select\" == n.mode && (e = !1), this.DOM.input.removeAttribute(\"style\"), t.forEach(function (t) {\n var e,\n o = {},\n r = Object.assign({}, t, {\n value: t.value + \"\"\n });\n if ((t = Object.assign({}, r)).__isValid = i.hasMaxTags() || i.validateTag(t), n.transformTag.call(i, t), !0 !== t.__isValid) {\n if (s) return;\n d(o, i.getInvalidTagAttrs(t, t.__isValid), {\n __preInvalidData: r\n }), t.__isValid == i.TEXTS.duplicate && i.flashTag(i.getTagElmByValue(t.value));\n }\n if (t.readonly && (o[\"aria-readonly\"] = !0), e = i.createTagElem(d({}, t, o)), a.push(e), \"select\" == n.mode) return i.selectTag(e, t);\n i.appendTag(e), t.__isValid && !0 === t.__isValid ? (i.value.push(t), i.update(), i.trigger(\"add\", {\n tag: e,\n index: i.value.length - 1,\n data: t\n })) : (i.trigger(\"invalid\", {\n data: t,\n index: i.value.length,\n tag: e,\n message: t.__isValid\n }), n.keepInvalidTags || setTimeout(function () {\n return i.removeTags(e, !0);\n }, 1e3)), i.dropdown.position.call(i);\n }), t.length && e && this.input.set.call(this), this.dropdown.refilter.call(this), a)) : (\"select\" == n.mode && this.removeAllTags(), a);\n },\n addMixTags: function (t) {\n var e = this;\n if (t[0].prefix || this.state.tag) this.prefixedTextToTag(t[0]);else {\n \"string\" == typeof t && (t = [{\n value: t\n }]);\n var i = !!this.state.selection,\n s = document.createDocumentFragment();\n t.forEach(function (t) {\n var i = e.createTagElem(t);\n s.appendChild(i), e.insertAfterTag(i);\n }), i ? this.injectAtCaret(s) : (this.DOM.input.focus(), (i = this.setStateSelection()).range.setStart(this.DOM.input, i.range.endOffset), i.range.setEnd(this.DOM.input, i.range.endOffset), this.DOM.input.appendChild(s), this.updateValueByDOMTags(), this.update());\n }\n },\n prefixedTextToTag: function (t) {\n var e,\n i = this,\n s = this.settings,\n a = this.state.tag.delimiters;\n if (s.transformTag.call(this, t), t.prefix = t.prefix || this.state.tag ? this.state.tag.prefix : (s.pattern.source || s.pattern)[0], e = this.createTagElem(t), this.replaceTextWithNode(e) || this.DOM.input.appendChild(e), setTimeout(function () {\n return e.classList.add(i.settings.classNames.tagNoAnimation);\n }, 300), this.value.push(t), this.update(), !a) {\n var n = this.insertAfterTag(e) || e;\n this.placeCaretAfterNode(n);\n }\n return this.state.tag = null, this.trigger(\"add\", d({}, {\n tag: e\n }, {\n data: t\n })), e;\n },\n appendTag: function (t) {\n var e = this.DOM.scope.lastElementChild;\n e === this.DOM.input ? this.DOM.scope.insertBefore(t, e) : this.DOM.scope.appendChild(t);\n },\n createTagElem: function (t) {\n var e,\n i = d({}, t, {\n value: o(t.value + \"\")\n });\n return function (t) {\n for (var e, i = document.createNodeIterator(t, NodeFilter.SHOW_TEXT, null, !1); e = i.nextNode();) e.textContent.trim() || e.parentNode.removeChild(e);\n }(e = this.parseTemplate(\"tag\", [i])), this.tagData(e, t), e;\n },\n reCheckInvalidTags: function () {\n var t = this,\n e = this.settings,\n i = \".\".concat(e.classNames.tag, \".\").concat(e.classNames.tagNotAllowed),\n s = this.DOM.scope.querySelectorAll(i);\n [].forEach.call(s, function (e) {\n var i = t.tagData(e),\n s = e.getAttribute(\"title\") == t.TEXTS.duplicate,\n a = !0 === t.validateTag(i);\n s && a && (i = i.__preInvalidData ? i.__preInvalidData : {\n value: i.value\n }, t.replaceTag(e, i));\n });\n },\n removeTags: function (t, e, i) {\n var s,\n a = this;\n t = t && t instanceof HTMLElement ? [t] : t instanceof Array ? t : t ? [t] : [this.getLastTag()], s = t.reduce(function (t, e) {\n return e && \"string\" == typeof e && (e = a.getTagElmByValue(e)), e && t.push({\n node: e,\n idx: a.getTagIdx(a.tagData(e)),\n data: a.tagData(e, {\n __removed: !0\n })\n }), t;\n }, []), i = \"number\" == typeof i ? i : this.CSSVars.tagHideTransition, \"select\" == this.settings.mode && (i = 0, this.input.set.call(this)), 1 == s.length && s[0].node.classList.contains(this.settings.classNames.tagNotAllowed) && (e = !0), s.length && this.settings.hooks.beforeRemoveTag(s, {\n tagify: this\n }).then(function () {\n function t(t) {\n t.node.parentNode && (t.node.parentNode.removeChild(t.node), e ? this.settings.keepInvalidTags && this.trigger(\"remove\", {\n tag: t.node,\n index: t.idx\n }) : (this.trigger(\"remove\", {\n tag: t.node,\n index: t.idx,\n data: t.data\n }), this.dropdown.refilter.call(this), this.dropdown.position.call(this), this.DOM.input.normalize(), this.settings.keepInvalidTags && this.reCheckInvalidTags()));\n }\n i && i > 10 && 1 == s.length ? function (e) {\n e.node.style.width = parseFloat(window.getComputedStyle(e.node).width) + \"px\", document.body.clientTop, e.node.classList.add(this.settings.classNames.tagHide), setTimeout(t.bind(this), i, e);\n }.call(a, s[0]) : s.forEach(t.bind(a)), e || (s.forEach(function (t) {\n var e = Object.assign({}, t.data);\n delete e.__removed;\n var i = a.getTagIdx(e);\n i > -1 && a.value.splice(i, 1);\n }), a.update());\n }).catch(function (t) {});\n },\n removeAllTags: function () {\n this.value = [], \"mix\" == this.settings.mode ? this.DOM.input.innerHTML = \"\" : Array.prototype.slice.call(this.getTagElms()).forEach(function (t) {\n return t.parentNode.removeChild(t);\n }), this.dropdown.position.call(this), \"select\" == this.settings.mode && this.input.set.call(this), this.update();\n },\n postUpdate: function () {\n var t = this.settings.classNames,\n e = \"mix\" == this.settings.mode ? this.settings.mixMode.integrated ? this.DOM.input.textContent : this.DOM.originalInput.value : this.value.length;\n this.toggleClass(t.hasMaxTags, this.value.length >= this.settings.maxTags), this.toggleClass(t.hasNoTags, !this.value.length), this.toggleClass(t.empty, !e);\n },\n update: function (t) {\n var e,\n i,\n s = this.DOM.originalInput,\n a = (t || {}).withoutChangeEvent,\n n = (e = this.value, i = [\"__isValid\", \"__removed\"], e.map(function (t) {\n var e = {};\n for (var s in t) i.indexOf(s) < 0 && (e[s] = t[s]);\n return e;\n }));\n this.settings.mixMode.integrated || (s.value = \"mix\" == this.settings.mode ? this.getMixedTagsAsString(n) : n.length ? this.settings.originalInputValueFormat ? this.settings.originalInputValueFormat(n) : JSON.stringify(n) : \"\"), this.postUpdate(), !a && this.state.loadedOriginalValues && this.triggerChangeEvent();\n },\n getMixedTagsAsString: function () {\n var t = \"\",\n e = this,\n i = this.settings.mixTagsInterpolator;\n return function s(a) {\n a.childNodes.forEach(function (a) {\n if (1 == a.nodeType) {\n if (a.classList.contains(e.settings.classNames.tag) && e.tagData(a)) {\n if (e.tagData(a).__removed) return;\n return void (t += i[0] + JSON.stringify(a.__tagifyTagData) + i[1]);\n }\n \"BR\" != a.tagName || a.parentNode != e.DOM.input && 1 != a.parentNode.childNodes.length ? \"DIV\" != a.tagName && \"P\" != a.tagName || (t += \"\\r\\n\", s(a)) : t += \"\\r\\n\";\n } else t += a.textContent;\n });\n }(this.DOM.input), t;\n }\n }, f.prototype.removeTag = f.prototype.removeTags, f;\n});","var makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n return defineProperty.f(target, name, descriptor);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","var documentAll = typeof document == 'object' && document.all;\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nvar IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined;\n\nmodule.exports = {\n all: documentAll,\n IS_HTMLDDA: IS_HTMLDDA\n};\n","var isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","var NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\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 || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(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 DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\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 toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\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.29.1',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.29.1/LICENSE',\n source: 'https://github.com/zloirock/core-js'\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","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","module.exports = {};\n","var isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\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 defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\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.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\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] || defineGlobalProperty(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\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 defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","var global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar $location, defer, channel, port;\n\nfails(function () {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n $location = global.location;\n});\n\nvar run = function (id) {\n if (hasOwn(queue, id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar eventListener = function (event) {\n run(event.data);\n};\n\nvar globalPostMessageDefer = function (id) {\n // old engines have not location.origin\n global.postMessage(String(id), $location.protocol + '//' + $location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(handler) {\n validateArgumentsLength(arguments.length, 1);\n var fn = isCallable(handler) ? handler : Function(handler);\n var args = arraySlice(arguments, 1);\n queue[++counter] = function () {\n apply(fn, undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = eventListener;\n defer = bind(port.postMessage, port);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n isCallable(global.postMessage) &&\n !global.importScripts &&\n $location && $location.protocol !== 'file:' &&\n !fails(globalPostMessageDefer)\n ) {\n defer = globalPostMessageDefer;\n global.addEventListener('message', eventListener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","var $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n if (passed < required) throw $TypeError('Not enough arguments');\n return passed;\n};\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n})();\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n while (len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\nfunction noop() {}\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\nprocess.listeners = function (name) {\n return [];\n};\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\nprocess.cwd = function () {\n return '/';\n};\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function () {\n return 0;\n};","var scope = typeof global !== \"undefined\" && global || typeof self !== \"undefined\" && self || window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function () {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function () {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout = exports.clearInterval = function (timeout) {\n if (timeout) {\n timeout.close();\n }\n};\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function () {};\nTimeout.prototype.close = function () {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function (item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\nexports.unenroll = function (item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\nexports._unrefActive = exports.active = function (item) {\n clearTimeout(item._idleTimeoutId);\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout) item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = typeof self !== \"undefined\" && self.setImmediate || typeof global !== \"undefined\" && global.setImmediate || this && this.setImmediate;\nexports.clearImmediate = typeof self !== \"undefined\" && self.clearImmediate || typeof global !== \"undefined\" && global.clearImmediate || this && this.clearImmediate;","/* eslint no-console:0 */\n// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\n//\n// To reference this file, add <%= javascript_pack_tag 'application' %> to the appropriate\n// layout file, like app/views/layouts/application.html.erb\n\n\n// Uncomment to copy all static images under ../images to the output folder and reference\n// them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>)\n// or the `imagePath` JavaScript helper below.\n//\n// const images = require.context('../images', true)\n// const imagePath = (name) => images(name, true)\n\nimport 'core-js/stable';\nimport 'regenerator-runtime/runtime';\n\n// Turbolinks\nvar Turbolinks = require(\"turbolinks\");\nTurbolinks.start();\n\n// JS dependencies (npm/yarn)\nimport $ from 'jquery';\nimport \"./jquery\";\nimport 'jquery-ujs';\nimport 'popper.js';\nimport 'bootstrap/dist/js/bootstrap.bundle.min';\nimport 'bootstrap-switch-button';\nimport 'summernote/dist/summernote-lite.min.js';\nimport 'cocoon-js';\nimport 'flatpickr';\nimport 'select2';\nimport 'select2/dist/css/select2.css';\nimport Tagify from '@yaireo/tagify';\nimport 'sweetalert';\n\n// JS dependencies (other external)\n\nimport '../libraries/detect-swipe';\nimport '../libraries/featherlight';\nimport '../libraries/featherlight-gallery';\nimport '../libraries/jquery-bar-rating';\n\n// Load SCSS\nimport '../stylesheets/application';\n\n// Our Code\nimport './util/staging_placeholder';\n\nimport './components/backend_menu/backend_menu';\nimport './components/backend_search/backend_search';\nimport './components/chart/chartkick';\nimport './components/chart/highcharts';\nimport './components/checkout/checkout';\nimport './components/input_date/input_date';\nimport './components/input_file/input_file';\nimport './components/input_password/show_password';\nimport './components/input_select/input_select';\nimport './components/input_select/input_user_select';\nimport './components/input_select/input_variant_file_select';\nimport './components/input_slug/input_slug';\nimport './components/input_text/input_text';\nimport './components/input_text/counted';\nimport './components/modal/modal_cart_login';\nimport './components/modal/modal_support';\nimport './components/modal/modal_youtube';\nimport './components/product/bar_rating';\nimport './components/product/product_page';\nimport './components/product/product_rating_form';\nimport './components/product/product_ratings_pagination';\nimport './components/product/product_content';\nimport './components/product/product_sidebar';\nimport './components/product/variant_pricing';\nimport './components/sort/sort';\nimport './components/sort/product_grid';\nimport './components/swiper_init/swiper';\nimport './components/analytics/google_analytics';\nimport './components/copy/copy_text';\nimport './components/mailchimp/mailchimp_subscribe_form';\n\nimport './views/account/account';\nimport './views/admin/coupons/coupons';\nimport './views/admin/orders/orders';\nimport './views/admin/payouts/payouts';\nimport './views/admin/product_review/flags';\nimport './views/admin/product_review/product_edit';\nimport './views/admin/refunds/refunds';\nimport './views/admin/sale_campaigns/sale_campaigns';\n\nimport './views/creator/affiliates/creator_affiliates';\nimport './views/creator/emails/emails';\nimport './views/creator/products/categories';\nimport './views/creator/products/commission';\nimport './views/creator/products/dev_fund';\nimport './views/creator/products/edit_product';\nimport './views/creator/products/form_sections';\nimport './views/creator/products/submit_review';\nimport './views/creator/products/variants_sortable';\nimport './views/creator/products/version_downloads_sortable';\nimport './views/creator/products/version_form';\nimport './views/creator/products/webhook_form';\nimport './views/creator/products/webhook_resend_form';\n\nimport './views/header/main_menu';\nimport './views/header/search';\nimport './views/header/user_dropdown';\nimport './views/header/creator_dropdown';\nimport './views/inbox/read_all_switch';\nimport './views/login/login';\nimport './views/order/pickup';\nimport './views/privacy/privacy';\n\n$(document).on('turbolinks:load', function(){\n\n // Boootsrap initialization\n $('.alert').alert();\n $('[data-bs-toggle=\"tooltip\"]').tooltip();\n $('.toast').toast('show');\n\n // Tagify initialization\n var $tagInputs = $('.js-tags');\n if ($tagInputs.length > 0){\n $tagInputs.each(function(index, el){\n var $el = $(el);\n var taglist = $el.data('taglist') || [];\n\n var tagify = new Tagify(el, {\n placeholder: 'Tags ...',\n whitelist: taglist,\n delimiters: ','\n });\n });\n }\n\n // Tagify initialization for Webhook resend form\n var $orderItemIdInputs = $('.js-order-item-ids');\n if ($orderItemIdInputs.length > 0) {\n $orderItemIdInputs.each(function(index, el){\n new Tagify(el, {\n placeholder: 'Order item IDs ...',\n pattern: /^[0-9]*$/,\n delimiters: ','\n });\n });\n };\n\n // Featherlight initialization\n $('.js-product-gallery .swiper-slide a').featherlightGallery({\n\t\tpreviousIcon: '<',\n\t\tnextIcon: '>',\n\t\tgalleryFadeIn: 300,\n\t\topenSpeed: 300\n\t});\n\n // Bootstrap switch button initialization\n $('input[data-bs-toggle=\"switchbutton\"]').each(function(index, el){\n el.switchButton();\n });\n\n // currency input formatter\n $('.price-in-dollars').on('input', function() {\n let value = $(this).val();\n value = value.replace(/[^0-9.]/g, '');\n if (value.indexOf('.') !== -1) {\n value = value.split('.').slice(0, 2).join('.');\n value = value.replace(/(\\..*)\\./g, '$1');\n }\n $(this).val(value);\n });\n\n // disable turbolinks on anchor tags in the Cookiebot Dialog Box\n const observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(mutation) {\n mutation.addedNodes.forEach(function(node) {\n if ($(node).is('#CybotCookiebotDialog')) {\n $('#CybotCookiebotDialogDetailBodyContentCookieContainerTypes').attr('data-turbolinks', 'false');\n };\n });\n });\n });\n\n const targetNode = document.body;\n const config = { childList: true, subtree: true };\n\n observer.observe(targetNode, config);\n\n});\n","var global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar regExpFlags = require('../internals/regexp-flags');\nvar fails = require('../internals/fails');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> /./d and it causes SyntaxError\nvar RegExp = global.RegExp;\nvar RegExpPrototype = RegExp.prototype;\n\nvar FORCED = DESCRIPTORS && fails(function () {\n var INDICES_SUPPORT = true;\n try {\n RegExp('.', 'd');\n } catch (error) {\n INDICES_SUPPORT = false;\n }\n\n var O = {};\n // modern V8 bug\n var calls = '';\n var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';\n\n var addGetter = function (key, chr) {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(O, key, { get: function () {\n calls += chr;\n return true;\n } });\n };\n\n var pairs = {\n dotAll: 's',\n global: 'g',\n ignoreCase: 'i',\n multiline: 'm',\n sticky: 'y'\n };\n\n if (INDICES_SUPPORT) pairs.hasIndices = 'd';\n\n for (var key in pairs) addGetter(key, pairs[key]);\n\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n var result = Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call(O);\n\n return result !== expected || calls !== expected;\n});\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', {\n configurable: true,\n get: regExpFlags\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n","var call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","var aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","var call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw $TypeError(\"Can't convert object to primitive value\");\n};\n","module.exports = false;\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.hasIndices) result += 'd';\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.unicodeSets) result += 'v';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toOffset = require('../internals/to-offset');\nvar toIndexedObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar RangeError = global.RangeError;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar $set = Int8ArrayPrototype && Int8ArrayPrototype.set;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS = !fails(function () {\n // eslint-disable-next-line es/no-typed-arrays -- required for testing\n var array = new Uint8ClampedArray(2);\n call($set, array, { length: 1, 0: 3 }, 1);\n return array[1] !== 3;\n});\n\n// https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other\nvar TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS && fails(function () {\n var array = new Int8Array(2);\n array.set(1);\n array.set('2', 1);\n return array[0] !== 0 || array[1] !== 2;\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var src = toIndexedObject(arrayLike);\n if (WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS) return call($set, this, src, offset);\n var length = this.length;\n var len = lengthOfArrayLike(src);\n var index = 0;\n if (len + offset > length) throw RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, !WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG);\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar tryToString = require('../internals/try-to-string');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\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');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\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 TypeError = global.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor';\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_REQUIRED = false;\nvar NAME, Constructor, Prototype;\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 BigIntArrayConstructorsList = {\n BigInt64Array: 8,\n BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return klass === 'DataView'\n || hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar getTypedArrayConstructor = function (it) {\n var proto = getPrototypeOf(it);\n if (!isObject(proto)) return;\n var state = getInternalState(proto);\n return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto);\n};\n\nvar isTypedArray = function (it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\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 (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n throw TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n delete TypedArrayConstructor.prototype[KEY];\n } catch (error) {\n // old WebKit bug - some methods are non-configurable\n try {\n TypedArrayConstructor.prototype[KEY] = property;\n } catch (error2) { /* empty */ }\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n defineBuiltIn(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\n }\n};\n\nvar exportTypedArrayStaticMethod = 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 && hasOwn(TypedArrayConstructor, KEY)) try {\n delete TypedArrayConstructor[KEY];\n } catch (error) { /* empty */ }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[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 defineBuiltIn(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow -- safe\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 && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQUIRED = true;\n defineBuiltInAccessor(TypedArrayPrototype, TO_STRING_TAG, {\n configurable: true,\n get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n }\n });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n getTypedArrayConstructor: getTypedArrayConstructor,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\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 = TO_STRING_TAG_SUPPORT ? classofRaw : 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' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\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 $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n setter(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(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n } catch (error) { /* empty */ }\n};\n","var isCallable = require('../internals/is-callable');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument)) return argument;\n throw $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","var toPositiveInteger = require('../internals/to-positive-integer');\n\nvar $RangeError = RangeError;\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 toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it) {\n var result = toIntegerOrInfinity(it);\n if (result < 0) throw $RangeError(\"The argument can't be less than 0\");\n return result;\n};\n","// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/web.clear-immediate');\nrequire('../modules/web.set-immediate');\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar clearImmediate = require('../internals/task').clear;\n\n// `clearImmediate` method\n// http://w3c.github.io/setImmediate/#si-clearImmediate\n$({ global: true, bind: true, enumerable: true, forced: global.clearImmediate !== clearImmediate }, {\n clearImmediate: clearImmediate\n});\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.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 -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","var hasOwn = require('../internals/has-own-property');\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, exceptions) {\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 (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\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\nvar concat = uncurryThis([].concat);\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 ? concat(keys, getOwnPropertySymbols(it)) : keys;\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.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\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) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\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 = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\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.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\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(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\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","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\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 : isCallable(detection) ? 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","var uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n // Nashorn bug:\n // https://github.com/zloirock/core-js/issues/1128\n // https://github.com/zloirock/core-js/issues/1130\n if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var userAgent = require('../internals/engine-user-agent');\n\n// eslint-disable-next-line redos/no-vulnerable -- safe\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","var classof = require('../internals/classof-raw');\n\nmodule.exports = typeof process != 'undefined' && classof(process) == 'process';\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar setTask = require('../internals/task').set;\nvar schedulersFix = require('../internals/schedulers-fix');\n\n// https://github.com/oven-sh/bun/issues/1633\nvar setImmediate = global.setImmediate ? schedulersFix(setTask, false) : setTask;\n\n// `setImmediate` method\n// http://w3c.github.io/setImmediate/#si-setImmediate\n$({ global: true, bind: true, enumerable: true, forced: global.setImmediate !== setImmediate }, {\n setImmediate: setImmediate\n});\n","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar isCallable = require('../internals/is-callable');\nvar ENGINE_IS_BUN = require('../internals/engine-is-bun');\nvar USER_AGENT = require('../internals/engine-user-agent');\nvar arraySlice = require('../internals/array-slice');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar Function = global.Function;\n// dirty IE9- and Bun 0.3.0- checks\nvar WRAP = /MSIE .\\./.test(USER_AGENT) || ENGINE_IS_BUN && (function () {\n var version = global.Bun.version.split('.');\n return version.length < 3 || version[0] == 0 && (version[1] < 3 || version[1] == 3 && version[2] == 0);\n})();\n\n// IE9- / Bun 0.3.0- setTimeout / setInterval / setImmediate additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers\n// https://github.com/oven-sh/bun/issues/1633\nmodule.exports = function (scheduler, hasTimeArg) {\n var firstParamIndex = hasTimeArg ? 2 : 1;\n return WRAP ? function (handler, timeout /* , ...arguments */) {\n var boundArgs = validateArgumentsLength(arguments.length, 1) > firstParamIndex;\n var fn = isCallable(handler) ? handler : Function(handler);\n var params = boundArgs ? arraySlice(arguments, firstParamIndex) : [];\n var callback = boundArgs ? function () {\n apply(fn, this, params);\n } : fn;\n return hasTimeArg ? scheduler(callback, timeout) : scheduler(callback);\n } : scheduler;\n};\n","/* global Bun -- Deno case */\nmodule.exports = typeof Bun == 'function' && Bun && typeof Bun.version == 'string';\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; };\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) });\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: true });\n defineProperty(\n GeneratorFunctionPrototype,\n \"constructor\",\n { value: GeneratorFunction, configurable: true }\n );\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n defineProperty(this, \"_invoke\", { value: enqueue });\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method;\n var method = delegate.iterator[methodName];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method, or a missing .next mehtod, always terminate the\n // yield* loop.\n context.delegate = null;\n\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (methodName === \"throw\" && delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n if (methodName !== \"return\") {\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a '\" + methodName + \"' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(val) {\n var object = Object(val);\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","/*\nTurbolinks 5.2.0\nCopyright © 2018 Basecamp, LLC\n */\n(function () {\n var t = this;\n (function () {\n (function () {\n this.Turbolinks = {\n supported: function () {\n return null != window.history.pushState && null != window.requestAnimationFrame && null != window.addEventListener;\n }(),\n visit: function (t, r) {\n return e.controller.visit(t, r);\n },\n clearCache: function () {\n return e.controller.clearCache();\n },\n setProgressBarDelay: function (t) {\n return e.controller.setProgressBarDelay(t);\n }\n };\n }).call(this);\n }).call(t);\n var e = t.Turbolinks;\n (function () {\n (function () {\n var t,\n r,\n n,\n o = [].slice;\n e.copyObject = function (t) {\n var e, r, n;\n r = {};\n for (e in t) n = t[e], r[e] = n;\n return r;\n }, e.closest = function (e, r) {\n return t.call(e, r);\n }, t = function () {\n var t, e;\n return t = document.documentElement, null != (e = t.closest) ? e : function (t) {\n var e;\n for (e = this; e;) {\n if (e.nodeType === Node.ELEMENT_NODE && r.call(e, t)) return e;\n e = e.parentNode;\n }\n };\n }(), e.defer = function (t) {\n return setTimeout(t, 1);\n }, e.throttle = function (t) {\n var e;\n return e = null, function () {\n var r;\n return r = 1 <= arguments.length ? o.call(arguments, 0) : [], null != e ? e : e = requestAnimationFrame(function (n) {\n return function () {\n return e = null, t.apply(n, r);\n };\n }(this));\n };\n }, e.dispatch = function (t, e) {\n var r, o, i, s, a, u;\n return a = null != e ? e : {}, u = a.target, r = a.cancelable, o = a.data, i = document.createEvent(\"Events\"), i.initEvent(t, !0, r === !0), i.data = null != o ? o : {}, i.cancelable && !n && (s = i.preventDefault, i.preventDefault = function () {\n return this.defaultPrevented || Object.defineProperty(this, \"defaultPrevented\", {\n get: function () {\n return !0;\n }\n }), s.call(this);\n }), (null != u ? u : document).dispatchEvent(i), i;\n }, n = function () {\n var t;\n return t = document.createEvent(\"Events\"), t.initEvent(\"test\", !0, !0), t.preventDefault(), t.defaultPrevented;\n }(), e.match = function (t, e) {\n return r.call(t, e);\n }, r = function () {\n var t, e, r, n;\n return t = document.documentElement, null != (e = null != (r = null != (n = t.matchesSelector) ? n : t.webkitMatchesSelector) ? r : t.msMatchesSelector) ? e : t.mozMatchesSelector;\n }(), e.uuid = function () {\n var t, e, r;\n for (r = \"\", t = e = 1; 36 >= e; t = ++e) r += 9 === t || 14 === t || 19 === t || 24 === t ? \"-\" : 15 === t ? \"4\" : 20 === t ? (Math.floor(4 * Math.random()) + 8).toString(16) : Math.floor(15 * Math.random()).toString(16);\n return r;\n };\n }).call(this), function () {\n e.Location = function () {\n function t(t) {\n var e, r;\n null == t && (t = \"\"), r = document.createElement(\"a\"), r.href = t.toString(), this.absoluteURL = r.href, e = r.hash.length, 2 > e ? this.requestURL = this.absoluteURL : (this.requestURL = this.absoluteURL.slice(0, -e), this.anchor = r.hash.slice(1));\n }\n var e, r, n, o;\n return t.wrap = function (t) {\n return t instanceof this ? t : new this(t);\n }, t.prototype.getOrigin = function () {\n return this.absoluteURL.split(\"/\", 3).join(\"/\");\n }, t.prototype.getPath = function () {\n var t, e;\n return null != (t = null != (e = this.requestURL.match(/\\/\\/[^\\/]*(\\/[^?;]*)/)) ? e[1] : void 0) ? t : \"/\";\n }, t.prototype.getPathComponents = function () {\n return this.getPath().split(\"/\").slice(1);\n }, t.prototype.getLastPathComponent = function () {\n return this.getPathComponents().slice(-1)[0];\n }, t.prototype.getExtension = function () {\n var t, e;\n return null != (t = null != (e = this.getLastPathComponent().match(/\\.[^.]*$/)) ? e[0] : void 0) ? t : \"\";\n }, t.prototype.isHTML = function () {\n return this.getExtension().match(/^(?:|\\.(?:htm|html|xhtml))$/);\n }, t.prototype.isPrefixedBy = function (t) {\n var e;\n return e = r(t), this.isEqualTo(t) || o(this.absoluteURL, e);\n }, t.prototype.isEqualTo = function (t) {\n return this.absoluteURL === (null != t ? t.absoluteURL : void 0);\n }, t.prototype.toCacheKey = function () {\n return this.requestURL;\n }, t.prototype.toJSON = function () {\n return this.absoluteURL;\n }, t.prototype.toString = function () {\n return this.absoluteURL;\n }, t.prototype.valueOf = function () {\n return this.absoluteURL;\n }, r = function (t) {\n return e(t.getOrigin() + t.getPath());\n }, e = function (t) {\n return n(t, \"/\") ? t : t + \"/\";\n }, o = function (t, e) {\n return t.slice(0, e.length) === e;\n }, n = function (t, e) {\n return t.slice(-e.length) === e;\n }, t;\n }();\n }.call(this), function () {\n var t = function (t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n };\n e.HttpRequest = function () {\n function r(r, n, o) {\n this.delegate = r, this.requestCanceled = t(this.requestCanceled, this), this.requestTimedOut = t(this.requestTimedOut, this), this.requestFailed = t(this.requestFailed, this), this.requestLoaded = t(this.requestLoaded, this), this.requestProgressed = t(this.requestProgressed, this), this.url = e.Location.wrap(n).requestURL, this.referrer = e.Location.wrap(o).absoluteURL, this.createXHR();\n }\n return r.NETWORK_FAILURE = 0, r.TIMEOUT_FAILURE = -1, r.timeout = 60, r.prototype.send = function () {\n var t;\n return this.xhr && !this.sent ? (this.notifyApplicationBeforeRequestStart(), this.setProgress(0), this.xhr.send(), this.sent = !0, \"function\" == typeof (t = this.delegate).requestStarted ? t.requestStarted() : void 0) : void 0;\n }, r.prototype.cancel = function () {\n return this.xhr && this.sent ? this.xhr.abort() : void 0;\n }, r.prototype.requestProgressed = function (t) {\n return t.lengthComputable ? this.setProgress(t.loaded / t.total) : void 0;\n }, r.prototype.requestLoaded = function () {\n return this.endRequest(function (t) {\n return function () {\n var e;\n return 200 <= (e = t.xhr.status) && 300 > e ? t.delegate.requestCompletedWithResponse(t.xhr.responseText, t.xhr.getResponseHeader(\"Turbolinks-Location\")) : (t.failed = !0, t.delegate.requestFailedWithStatusCode(t.xhr.status, t.xhr.responseText));\n };\n }(this));\n }, r.prototype.requestFailed = function () {\n return this.endRequest(function (t) {\n return function () {\n return t.failed = !0, t.delegate.requestFailedWithStatusCode(t.constructor.NETWORK_FAILURE);\n };\n }(this));\n }, r.prototype.requestTimedOut = function () {\n return this.endRequest(function (t) {\n return function () {\n return t.failed = !0, t.delegate.requestFailedWithStatusCode(t.constructor.TIMEOUT_FAILURE);\n };\n }(this));\n }, r.prototype.requestCanceled = function () {\n return this.endRequest();\n }, r.prototype.notifyApplicationBeforeRequestStart = function () {\n return e.dispatch(\"turbolinks:request-start\", {\n data: {\n url: this.url,\n xhr: this.xhr\n }\n });\n }, r.prototype.notifyApplicationAfterRequestEnd = function () {\n return e.dispatch(\"turbolinks:request-end\", {\n data: {\n url: this.url,\n xhr: this.xhr\n }\n });\n }, r.prototype.createXHR = function () {\n return this.xhr = new XMLHttpRequest(), this.xhr.open(\"GET\", this.url, !0), this.xhr.timeout = 1e3 * this.constructor.timeout, this.xhr.setRequestHeader(\"Accept\", \"text/html, application/xhtml+xml\"), this.xhr.setRequestHeader(\"Turbolinks-Referrer\", this.referrer), this.xhr.onprogress = this.requestProgressed, this.xhr.onload = this.requestLoaded, this.xhr.onerror = this.requestFailed, this.xhr.ontimeout = this.requestTimedOut, this.xhr.onabort = this.requestCanceled;\n }, r.prototype.endRequest = function (t) {\n return this.xhr ? (this.notifyApplicationAfterRequestEnd(), null != t && t.call(this), this.destroy()) : void 0;\n }, r.prototype.setProgress = function (t) {\n var e;\n return this.progress = t, \"function\" == typeof (e = this.delegate).requestProgressed ? e.requestProgressed(this.progress) : void 0;\n }, r.prototype.destroy = function () {\n var t;\n return this.setProgress(1), \"function\" == typeof (t = this.delegate).requestFinished && t.requestFinished(), this.delegate = null, this.xhr = null;\n }, r;\n }();\n }.call(this), function () {\n var t = function (t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n };\n e.ProgressBar = function () {\n function e() {\n this.trickle = t(this.trickle, this), this.stylesheetElement = this.createStylesheetElement(), this.progressElement = this.createProgressElement();\n }\n var r;\n return r = 300, e.defaultCSS = \".turbolinks-progress-bar {\\n position: fixed;\\n display: block;\\n top: 0;\\n left: 0;\\n height: 3px;\\n background: #0076ff;\\n z-index: 9999;\\n transition: width \" + r + \"ms ease-out, opacity \" + r / 2 + \"ms \" + r / 2 + \"ms ease-in;\\n transform: translate3d(0, 0, 0);\\n}\", e.prototype.show = function () {\n return this.visible ? void 0 : (this.visible = !0, this.installStylesheetElement(), this.installProgressElement(), this.startTrickling());\n }, e.prototype.hide = function () {\n return this.visible && !this.hiding ? (this.hiding = !0, this.fadeProgressElement(function (t) {\n return function () {\n return t.uninstallProgressElement(), t.stopTrickling(), t.visible = !1, t.hiding = !1;\n };\n }(this))) : void 0;\n }, e.prototype.setValue = function (t) {\n return this.value = t, this.refresh();\n }, e.prototype.installStylesheetElement = function () {\n return document.head.insertBefore(this.stylesheetElement, document.head.firstChild);\n }, e.prototype.installProgressElement = function () {\n return this.progressElement.style.width = 0, this.progressElement.style.opacity = 1, document.documentElement.insertBefore(this.progressElement, document.body), this.refresh();\n }, e.prototype.fadeProgressElement = function (t) {\n return this.progressElement.style.opacity = 0, setTimeout(t, 1.5 * r);\n }, e.prototype.uninstallProgressElement = function () {\n return this.progressElement.parentNode ? document.documentElement.removeChild(this.progressElement) : void 0;\n }, e.prototype.startTrickling = function () {\n return null != this.trickleInterval ? this.trickleInterval : this.trickleInterval = setInterval(this.trickle, r);\n }, e.prototype.stopTrickling = function () {\n return clearInterval(this.trickleInterval), this.trickleInterval = null;\n }, e.prototype.trickle = function () {\n return this.setValue(this.value + Math.random() / 100);\n }, e.prototype.refresh = function () {\n return requestAnimationFrame(function (t) {\n return function () {\n return t.progressElement.style.width = 10 + 90 * t.value + \"%\";\n };\n }(this));\n }, e.prototype.createStylesheetElement = function () {\n var t;\n return t = document.createElement(\"style\"), t.type = \"text/css\", t.textContent = this.constructor.defaultCSS, t;\n }, e.prototype.createProgressElement = function () {\n var t;\n return t = document.createElement(\"div\"), t.className = \"turbolinks-progress-bar\", t;\n }, e;\n }();\n }.call(this), function () {\n var t = function (t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n };\n e.BrowserAdapter = function () {\n function r(r) {\n this.controller = r, this.showProgressBar = t(this.showProgressBar, this), this.progressBar = new e.ProgressBar();\n }\n var n, o, i;\n return i = e.HttpRequest, n = i.NETWORK_FAILURE, o = i.TIMEOUT_FAILURE, r.prototype.visitProposedToLocationWithAction = function (t, e) {\n return this.controller.startVisitToLocationWithAction(t, e);\n }, r.prototype.visitStarted = function (t) {\n return t.issueRequest(), t.changeHistory(), t.loadCachedSnapshot();\n }, r.prototype.visitRequestStarted = function (t) {\n return this.progressBar.setValue(0), t.hasCachedSnapshot() || \"restore\" !== t.action ? this.showProgressBarAfterDelay() : this.showProgressBar();\n }, r.prototype.visitRequestProgressed = function (t) {\n return this.progressBar.setValue(t.progress);\n }, r.prototype.visitRequestCompleted = function (t) {\n return t.loadResponse();\n }, r.prototype.visitRequestFailedWithStatusCode = function (t, e) {\n switch (e) {\n case n:\n case o:\n return this.reload();\n default:\n return t.loadResponse();\n }\n }, r.prototype.visitRequestFinished = function (t) {\n return this.hideProgressBar();\n }, r.prototype.visitCompleted = function (t) {\n return t.followRedirect();\n }, r.prototype.pageInvalidated = function () {\n return this.reload();\n }, r.prototype.showProgressBarAfterDelay = function () {\n return this.progressBarTimeout = setTimeout(this.showProgressBar, this.controller.progressBarDelay);\n }, r.prototype.showProgressBar = function () {\n return this.progressBar.show();\n }, r.prototype.hideProgressBar = function () {\n return this.progressBar.hide(), clearTimeout(this.progressBarTimeout);\n }, r.prototype.reload = function () {\n return window.location.reload();\n }, r;\n }();\n }.call(this), function () {\n var t = function (t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n };\n e.History = function () {\n function r(e) {\n this.delegate = e, this.onPageLoad = t(this.onPageLoad, this), this.onPopState = t(this.onPopState, this);\n }\n return r.prototype.start = function () {\n return this.started ? void 0 : (addEventListener(\"popstate\", this.onPopState, !1), addEventListener(\"load\", this.onPageLoad, !1), this.started = !0);\n }, r.prototype.stop = function () {\n return this.started ? (removeEventListener(\"popstate\", this.onPopState, !1), removeEventListener(\"load\", this.onPageLoad, !1), this.started = !1) : void 0;\n }, r.prototype.push = function (t, r) {\n return t = e.Location.wrap(t), this.update(\"push\", t, r);\n }, r.prototype.replace = function (t, r) {\n return t = e.Location.wrap(t), this.update(\"replace\", t, r);\n }, r.prototype.onPopState = function (t) {\n var r, n, o, i;\n return this.shouldHandlePopState() && (i = null != (n = t.state) ? n.turbolinks : void 0) ? (r = e.Location.wrap(window.location), o = i.restorationIdentifier, this.delegate.historyPoppedToLocationWithRestorationIdentifier(r, o)) : void 0;\n }, r.prototype.onPageLoad = function (t) {\n return e.defer(function (t) {\n return function () {\n return t.pageLoaded = !0;\n };\n }(this));\n }, r.prototype.shouldHandlePopState = function () {\n return this.pageIsLoaded();\n }, r.prototype.pageIsLoaded = function () {\n return this.pageLoaded || \"complete\" === document.readyState;\n }, r.prototype.update = function (t, e, r) {\n var n;\n return n = {\n turbolinks: {\n restorationIdentifier: r\n }\n }, history[t + \"State\"](n, null, e);\n }, r;\n }();\n }.call(this), function () {\n e.HeadDetails = function () {\n function t(t) {\n var e, r, n, s, a, u;\n for (this.elements = {}, n = 0, a = t.length; a > n; n++) u = t[n], u.nodeType === Node.ELEMENT_NODE && (s = u.outerHTML, r = null != (e = this.elements)[s] ? e[s] : e[s] = {\n type: i(u),\n tracked: o(u),\n elements: []\n }, r.elements.push(u));\n }\n var e, r, n, o, i;\n return t.fromHeadElement = function (t) {\n var e;\n return new this(null != (e = null != t ? t.childNodes : void 0) ? e : []);\n }, t.prototype.hasElementWithKey = function (t) {\n return t in this.elements;\n }, t.prototype.getTrackedElementSignature = function () {\n var t, e;\n return function () {\n var r, n;\n r = this.elements, n = [];\n for (t in r) e = r[t].tracked, e && n.push(t);\n return n;\n }.call(this).join(\"\");\n }, t.prototype.getScriptElementsNotInDetails = function (t) {\n return this.getElementsMatchingTypeNotInDetails(\"script\", t);\n }, t.prototype.getStylesheetElementsNotInDetails = function (t) {\n return this.getElementsMatchingTypeNotInDetails(\"stylesheet\", t);\n }, t.prototype.getElementsMatchingTypeNotInDetails = function (t, e) {\n var r, n, o, i, s, a;\n o = this.elements, s = [];\n for (n in o) i = o[n], a = i.type, r = i.elements, a !== t || e.hasElementWithKey(n) || s.push(r[0]);\n return s;\n }, t.prototype.getProvisionalElements = function () {\n var t, e, r, n, o, i, s;\n r = [], n = this.elements;\n for (e in n) o = n[e], s = o.type, i = o.tracked, t = o.elements, null != s || i ? t.length > 1 && r.push.apply(r, t.slice(1)) : r.push.apply(r, t);\n return r;\n }, t.prototype.getMetaValue = function (t) {\n var e;\n return null != (e = this.findMetaElementByName(t)) ? e.getAttribute(\"content\") : void 0;\n }, t.prototype.findMetaElementByName = function (t) {\n var r, n, o, i;\n r = void 0, i = this.elements;\n for (o in i) n = i[o].elements, e(n[0], t) && (r = n[0]);\n return r;\n }, i = function (t) {\n return r(t) ? \"script\" : n(t) ? \"stylesheet\" : void 0;\n }, o = function (t) {\n return \"reload\" === t.getAttribute(\"data-turbolinks-track\");\n }, r = function (t) {\n var e;\n return e = t.tagName.toLowerCase(), \"script\" === e;\n }, n = function (t) {\n var e;\n return e = t.tagName.toLowerCase(), \"style\" === e || \"link\" === e && \"stylesheet\" === t.getAttribute(\"rel\");\n }, e = function (t, e) {\n var r;\n return r = t.tagName.toLowerCase(), \"meta\" === r && t.getAttribute(\"name\") === e;\n }, t;\n }();\n }.call(this), function () {\n e.Snapshot = function () {\n function t(t, e) {\n this.headDetails = t, this.bodyElement = e;\n }\n return t.wrap = function (t) {\n return t instanceof this ? t : \"string\" == typeof t ? this.fromHTMLString(t) : this.fromHTMLElement(t);\n }, t.fromHTMLString = function (t) {\n var e;\n return e = document.createElement(\"html\"), e.innerHTML = t, this.fromHTMLElement(e);\n }, t.fromHTMLElement = function (t) {\n var r, n, o, i;\n return o = t.querySelector(\"head\"), r = null != (i = t.querySelector(\"body\")) ? i : document.createElement(\"body\"), n = e.HeadDetails.fromHeadElement(o), new this(n, r);\n }, t.prototype.clone = function () {\n return new this.constructor(this.headDetails, this.bodyElement.cloneNode(!0));\n }, t.prototype.getRootLocation = function () {\n var t, r;\n return r = null != (t = this.getSetting(\"root\")) ? t : \"/\", new e.Location(r);\n }, t.prototype.getCacheControlValue = function () {\n return this.getSetting(\"cache-control\");\n }, t.prototype.getElementForAnchor = function (t) {\n try {\n return this.bodyElement.querySelector(\"[id='\" + t + \"'], a[name='\" + t + \"']\");\n } catch (e) {}\n }, t.prototype.getPermanentElements = function () {\n return this.bodyElement.querySelectorAll(\"[id][data-turbolinks-permanent]\");\n }, t.prototype.getPermanentElementById = function (t) {\n return this.bodyElement.querySelector(\"#\" + t + \"[data-turbolinks-permanent]\");\n }, t.prototype.getPermanentElementsPresentInSnapshot = function (t) {\n var e, r, n, o, i;\n for (o = this.getPermanentElements(), i = [], r = 0, n = o.length; n > r; r++) e = o[r], t.getPermanentElementById(e.id) && i.push(e);\n return i;\n }, t.prototype.findFirstAutofocusableElement = function () {\n return this.bodyElement.querySelector(\"[autofocus]\");\n }, t.prototype.hasAnchor = function (t) {\n return null != this.getElementForAnchor(t);\n }, t.prototype.isPreviewable = function () {\n return \"no-preview\" !== this.getCacheControlValue();\n }, t.prototype.isCacheable = function () {\n return \"no-cache\" !== this.getCacheControlValue();\n }, t.prototype.isVisitable = function () {\n return \"reload\" !== this.getSetting(\"visit-control\");\n }, t.prototype.getSetting = function (t) {\n return this.headDetails.getMetaValue(\"turbolinks-\" + t);\n }, t;\n }();\n }.call(this), function () {\n var t = [].slice;\n e.Renderer = function () {\n function e() {}\n var r;\n return e.render = function () {\n var e, r, n, o;\n return n = arguments[0], r = arguments[1], e = 3 <= arguments.length ? t.call(arguments, 2) : [], o = function (t, e, r) {\n r.prototype = t.prototype;\n var n = new r(),\n o = t.apply(n, e);\n return Object(o) === o ? o : n;\n }(this, e, function () {}), o.delegate = n, o.render(r), o;\n }, e.prototype.renderView = function (t) {\n return this.delegate.viewWillRender(this.newBody), t(), this.delegate.viewRendered(this.newBody);\n }, e.prototype.invalidateView = function () {\n return this.delegate.viewInvalidated();\n }, e.prototype.createScriptElement = function (t) {\n var e;\n return \"false\" === t.getAttribute(\"data-turbolinks-eval\") ? t : (e = document.createElement(\"script\"), e.textContent = t.textContent, e.async = !1, r(e, t), e);\n }, r = function (t, e) {\n var r, n, o, i, s, a, u;\n for (i = e.attributes, a = [], r = 0, n = i.length; n > r; r++) s = i[r], o = s.name, u = s.value, a.push(t.setAttribute(o, u));\n return a;\n }, e;\n }();\n }.call(this), function () {\n var t,\n r,\n n = function (t, e) {\n function r() {\n this.constructor = t;\n }\n for (var n in e) o.call(e, n) && (t[n] = e[n]);\n return r.prototype = e.prototype, t.prototype = new r(), t.__super__ = e.prototype, t;\n },\n o = {}.hasOwnProperty;\n e.SnapshotRenderer = function (e) {\n function o(t, e, r) {\n this.currentSnapshot = t, this.newSnapshot = e, this.isPreview = r, this.currentHeadDetails = this.currentSnapshot.headDetails, this.newHeadDetails = this.newSnapshot.headDetails, this.currentBody = this.currentSnapshot.bodyElement, this.newBody = this.newSnapshot.bodyElement;\n }\n return n(o, e), o.prototype.render = function (t) {\n return this.shouldRender() ? (this.mergeHead(), this.renderView(function (e) {\n return function () {\n return e.replaceBody(), e.isPreview || e.focusFirstAutofocusableElement(), t();\n };\n }(this))) : this.invalidateView();\n }, o.prototype.mergeHead = function () {\n return this.copyNewHeadStylesheetElements(), this.copyNewHeadScriptElements(), this.removeCurrentHeadProvisionalElements(), this.copyNewHeadProvisionalElements();\n }, o.prototype.replaceBody = function () {\n var t;\n return t = this.relocateCurrentBodyPermanentElements(), this.activateNewBodyScriptElements(), this.assignNewBody(), this.replacePlaceholderElementsWithClonedPermanentElements(t);\n }, o.prototype.shouldRender = function () {\n return this.newSnapshot.isVisitable() && this.trackedElementsAreIdentical();\n }, o.prototype.trackedElementsAreIdentical = function () {\n return this.currentHeadDetails.getTrackedElementSignature() === this.newHeadDetails.getTrackedElementSignature();\n }, o.prototype.copyNewHeadStylesheetElements = function () {\n var t, e, r, n, o;\n for (n = this.getNewHeadStylesheetElements(), o = [], e = 0, r = n.length; r > e; e++) t = n[e], o.push(document.head.appendChild(t));\n return o;\n }, o.prototype.copyNewHeadScriptElements = function () {\n var t, e, r, n, o;\n for (n = this.getNewHeadScriptElements(), o = [], e = 0, r = n.length; r > e; e++) t = n[e], o.push(document.head.appendChild(this.createScriptElement(t)));\n return o;\n }, o.prototype.removeCurrentHeadProvisionalElements = function () {\n var t, e, r, n, o;\n for (n = this.getCurrentHeadProvisionalElements(), o = [], e = 0, r = n.length; r > e; e++) t = n[e], o.push(document.head.removeChild(t));\n return o;\n }, o.prototype.copyNewHeadProvisionalElements = function () {\n var t, e, r, n, o;\n for (n = this.getNewHeadProvisionalElements(), o = [], e = 0, r = n.length; r > e; e++) t = n[e], o.push(document.head.appendChild(t));\n return o;\n }, o.prototype.relocateCurrentBodyPermanentElements = function () {\n var e, n, o, i, s, a, u;\n for (a = this.getCurrentBodyPermanentElements(), u = [], e = 0, n = a.length; n > e; e++) i = a[e], s = t(i), o = this.newSnapshot.getPermanentElementById(i.id), r(i, s.element), r(o, i), u.push(s);\n return u;\n }, o.prototype.replacePlaceholderElementsWithClonedPermanentElements = function (t) {\n var e, n, o, i, s, a, u;\n for (u = [], o = 0, i = t.length; i > o; o++) a = t[o], n = a.element, s = a.permanentElement, e = s.cloneNode(!0), u.push(r(n, e));\n return u;\n }, o.prototype.activateNewBodyScriptElements = function () {\n var t, e, n, o, i, s;\n for (i = this.getNewBodyScriptElements(), s = [], e = 0, o = i.length; o > e; e++) n = i[e], t = this.createScriptElement(n), s.push(r(n, t));\n return s;\n }, o.prototype.assignNewBody = function () {\n return document.body = this.newBody;\n }, o.prototype.focusFirstAutofocusableElement = function () {\n var t;\n return null != (t = this.newSnapshot.findFirstAutofocusableElement()) ? t.focus() : void 0;\n }, o.prototype.getNewHeadStylesheetElements = function () {\n return this.newHeadDetails.getStylesheetElementsNotInDetails(this.currentHeadDetails);\n }, o.prototype.getNewHeadScriptElements = function () {\n return this.newHeadDetails.getScriptElementsNotInDetails(this.currentHeadDetails);\n }, o.prototype.getCurrentHeadProvisionalElements = function () {\n return this.currentHeadDetails.getProvisionalElements();\n }, o.prototype.getNewHeadProvisionalElements = function () {\n return this.newHeadDetails.getProvisionalElements();\n }, o.prototype.getCurrentBodyPermanentElements = function () {\n return this.currentSnapshot.getPermanentElementsPresentInSnapshot(this.newSnapshot);\n }, o.prototype.getNewBodyScriptElements = function () {\n return this.newBody.querySelectorAll(\"script\");\n }, o;\n }(e.Renderer), t = function (t) {\n var e;\n return e = document.createElement(\"meta\"), e.setAttribute(\"name\", \"turbolinks-permanent-placeholder\"), e.setAttribute(\"content\", t.id), {\n element: e,\n permanentElement: t\n };\n }, r = function (t, e) {\n var r;\n return (r = t.parentNode) ? r.replaceChild(e, t) : void 0;\n };\n }.call(this), function () {\n var t = function (t, e) {\n function n() {\n this.constructor = t;\n }\n for (var o in e) r.call(e, o) && (t[o] = e[o]);\n return n.prototype = e.prototype, t.prototype = new n(), t.__super__ = e.prototype, t;\n },\n r = {}.hasOwnProperty;\n e.ErrorRenderer = function (e) {\n function r(t) {\n var e;\n e = document.createElement(\"html\"), e.innerHTML = t, this.newHead = e.querySelector(\"head\"), this.newBody = e.querySelector(\"body\");\n }\n return t(r, e), r.prototype.render = function (t) {\n return this.renderView(function (e) {\n return function () {\n return e.replaceHeadAndBody(), e.activateBodyScriptElements(), t();\n };\n }(this));\n }, r.prototype.replaceHeadAndBody = function () {\n var t, e;\n return e = document.head, t = document.body, e.parentNode.replaceChild(this.newHead, e), t.parentNode.replaceChild(this.newBody, t);\n }, r.prototype.activateBodyScriptElements = function () {\n var t, e, r, n, o, i;\n for (n = this.getScriptElements(), i = [], e = 0, r = n.length; r > e; e++) o = n[e], t = this.createScriptElement(o), i.push(o.parentNode.replaceChild(t, o));\n return i;\n }, r.prototype.getScriptElements = function () {\n return document.documentElement.querySelectorAll(\"script\");\n }, r;\n }(e.Renderer);\n }.call(this), function () {\n e.View = function () {\n function t(t) {\n this.delegate = t, this.htmlElement = document.documentElement;\n }\n return t.prototype.getRootLocation = function () {\n return this.getSnapshot().getRootLocation();\n }, t.prototype.getElementForAnchor = function (t) {\n return this.getSnapshot().getElementForAnchor(t);\n }, t.prototype.getSnapshot = function () {\n return e.Snapshot.fromHTMLElement(this.htmlElement);\n }, t.prototype.render = function (t, e) {\n var r, n, o;\n return o = t.snapshot, r = t.error, n = t.isPreview, this.markAsPreview(n), null != o ? this.renderSnapshot(o, n, e) : this.renderError(r, e);\n }, t.prototype.markAsPreview = function (t) {\n return t ? this.htmlElement.setAttribute(\"data-turbolinks-preview\", \"\") : this.htmlElement.removeAttribute(\"data-turbolinks-preview\");\n }, t.prototype.renderSnapshot = function (t, r, n) {\n return e.SnapshotRenderer.render(this.delegate, n, this.getSnapshot(), e.Snapshot.wrap(t), r);\n }, t.prototype.renderError = function (t, r) {\n return e.ErrorRenderer.render(this.delegate, r, t);\n }, t;\n }();\n }.call(this), function () {\n var t = function (t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n };\n e.ScrollManager = function () {\n function r(r) {\n this.delegate = r, this.onScroll = t(this.onScroll, this), this.onScroll = e.throttle(this.onScroll);\n }\n return r.prototype.start = function () {\n return this.started ? void 0 : (addEventListener(\"scroll\", this.onScroll, !1), this.onScroll(), this.started = !0);\n }, r.prototype.stop = function () {\n return this.started ? (removeEventListener(\"scroll\", this.onScroll, !1), this.started = !1) : void 0;\n }, r.prototype.scrollToElement = function (t) {\n return t.scrollIntoView();\n }, r.prototype.scrollToPosition = function (t) {\n var e, r;\n return e = t.x, r = t.y, window.scrollTo(e, r);\n }, r.prototype.onScroll = function (t) {\n return this.updatePosition({\n x: window.pageXOffset,\n y: window.pageYOffset\n });\n }, r.prototype.updatePosition = function (t) {\n var e;\n return this.position = t, null != (e = this.delegate) ? e.scrollPositionChanged(this.position) : void 0;\n }, r;\n }();\n }.call(this), function () {\n e.SnapshotCache = function () {\n function t(t) {\n this.size = t, this.keys = [], this.snapshots = {};\n }\n var r;\n return t.prototype.has = function (t) {\n var e;\n return e = r(t), e in this.snapshots;\n }, t.prototype.get = function (t) {\n var e;\n if (this.has(t)) return e = this.read(t), this.touch(t), e;\n }, t.prototype.put = function (t, e) {\n return this.write(t, e), this.touch(t), e;\n }, t.prototype.read = function (t) {\n var e;\n return e = r(t), this.snapshots[e];\n }, t.prototype.write = function (t, e) {\n var n;\n return n = r(t), this.snapshots[n] = e;\n }, t.prototype.touch = function (t) {\n var e, n;\n return n = r(t), e = this.keys.indexOf(n), e > -1 && this.keys.splice(e, 1), this.keys.unshift(n), this.trim();\n }, t.prototype.trim = function () {\n var t, e, r, n, o;\n for (n = this.keys.splice(this.size), o = [], t = 0, r = n.length; r > t; t++) e = n[t], o.push(delete this.snapshots[e]);\n return o;\n }, r = function (t) {\n return e.Location.wrap(t).toCacheKey();\n }, t;\n }();\n }.call(this), function () {\n var t = function (t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n };\n e.Visit = function () {\n function r(r, n, o) {\n this.controller = r, this.action = o, this.performScroll = t(this.performScroll, this), this.identifier = e.uuid(), this.location = e.Location.wrap(n), this.adapter = this.controller.adapter, this.state = \"initialized\", this.timingMetrics = {};\n }\n var n;\n return r.prototype.start = function () {\n return \"initialized\" === this.state ? (this.recordTimingMetric(\"visitStart\"), this.state = \"started\", this.adapter.visitStarted(this)) : void 0;\n }, r.prototype.cancel = function () {\n var t;\n return \"started\" === this.state ? (null != (t = this.request) && t.cancel(), this.cancelRender(), this.state = \"canceled\") : void 0;\n }, r.prototype.complete = function () {\n var t;\n return \"started\" === this.state ? (this.recordTimingMetric(\"visitEnd\"), this.state = \"completed\", \"function\" == typeof (t = this.adapter).visitCompleted && t.visitCompleted(this), this.controller.visitCompleted(this)) : void 0;\n }, r.prototype.fail = function () {\n var t;\n return \"started\" === this.state ? (this.state = \"failed\", \"function\" == typeof (t = this.adapter).visitFailed ? t.visitFailed(this) : void 0) : void 0;\n }, r.prototype.changeHistory = function () {\n var t, e;\n return this.historyChanged ? void 0 : (t = this.location.isEqualTo(this.referrer) ? \"replace\" : this.action, e = n(t), this.controller[e](this.location, this.restorationIdentifier), this.historyChanged = !0);\n }, r.prototype.issueRequest = function () {\n return this.shouldIssueRequest() && null == this.request ? (this.progress = 0, this.request = new e.HttpRequest(this, this.location, this.referrer), this.request.send()) : void 0;\n }, r.prototype.getCachedSnapshot = function () {\n var t;\n return !(t = this.controller.getCachedSnapshotForLocation(this.location)) || null != this.location.anchor && !t.hasAnchor(this.location.anchor) || \"restore\" !== this.action && !t.isPreviewable() ? void 0 : t;\n }, r.prototype.hasCachedSnapshot = function () {\n return null != this.getCachedSnapshot();\n }, r.prototype.loadCachedSnapshot = function () {\n var t, e;\n return (e = this.getCachedSnapshot()) ? (t = this.shouldIssueRequest(), this.render(function () {\n var r;\n return this.cacheSnapshot(), this.controller.render({\n snapshot: e,\n isPreview: t\n }, this.performScroll), \"function\" == typeof (r = this.adapter).visitRendered && r.visitRendered(this), t ? void 0 : this.complete();\n })) : void 0;\n }, r.prototype.loadResponse = function () {\n return null != this.response ? this.render(function () {\n var t, e;\n return this.cacheSnapshot(), this.request.failed ? (this.controller.render({\n error: this.response\n }, this.performScroll), \"function\" == typeof (t = this.adapter).visitRendered && t.visitRendered(this), this.fail()) : (this.controller.render({\n snapshot: this.response\n }, this.performScroll), \"function\" == typeof (e = this.adapter).visitRendered && e.visitRendered(this), this.complete());\n }) : void 0;\n }, r.prototype.followRedirect = function () {\n return this.redirectedToLocation && !this.followedRedirect ? (this.location = this.redirectedToLocation, this.controller.replaceHistoryWithLocationAndRestorationIdentifier(this.redirectedToLocation, this.restorationIdentifier), this.followedRedirect = !0) : void 0;\n }, r.prototype.requestStarted = function () {\n var t;\n return this.recordTimingMetric(\"requestStart\"), \"function\" == typeof (t = this.adapter).visitRequestStarted ? t.visitRequestStarted(this) : void 0;\n }, r.prototype.requestProgressed = function (t) {\n var e;\n return this.progress = t, \"function\" == typeof (e = this.adapter).visitRequestProgressed ? e.visitRequestProgressed(this) : void 0;\n }, r.prototype.requestCompletedWithResponse = function (t, r) {\n return this.response = t, null != r && (this.redirectedToLocation = e.Location.wrap(r)), this.adapter.visitRequestCompleted(this);\n }, r.prototype.requestFailedWithStatusCode = function (t, e) {\n return this.response = e, this.adapter.visitRequestFailedWithStatusCode(this, t);\n }, r.prototype.requestFinished = function () {\n var t;\n return this.recordTimingMetric(\"requestEnd\"), \"function\" == typeof (t = this.adapter).visitRequestFinished ? t.visitRequestFinished(this) : void 0;\n }, r.prototype.performScroll = function () {\n return this.scrolled ? void 0 : (\"restore\" === this.action ? this.scrollToRestoredPosition() || this.scrollToTop() : this.scrollToAnchor() || this.scrollToTop(), this.scrolled = !0);\n }, r.prototype.scrollToRestoredPosition = function () {\n var t, e;\n return t = null != (e = this.restorationData) ? e.scrollPosition : void 0, null != t ? (this.controller.scrollToPosition(t), !0) : void 0;\n }, r.prototype.scrollToAnchor = function () {\n return null != this.location.anchor ? (this.controller.scrollToAnchor(this.location.anchor), !0) : void 0;\n }, r.prototype.scrollToTop = function () {\n return this.controller.scrollToPosition({\n x: 0,\n y: 0\n });\n }, r.prototype.recordTimingMetric = function (t) {\n var e;\n return null != (e = this.timingMetrics)[t] ? e[t] : e[t] = new Date().getTime();\n }, r.prototype.getTimingMetrics = function () {\n return e.copyObject(this.timingMetrics);\n }, n = function (t) {\n switch (t) {\n case \"replace\":\n return \"replaceHistoryWithLocationAndRestorationIdentifier\";\n case \"advance\":\n case \"restore\":\n return \"pushHistoryWithLocationAndRestorationIdentifier\";\n }\n }, r.prototype.shouldIssueRequest = function () {\n return \"restore\" === this.action ? !this.hasCachedSnapshot() : !0;\n }, r.prototype.cacheSnapshot = function () {\n return this.snapshotCached ? void 0 : (this.controller.cacheSnapshot(), this.snapshotCached = !0);\n }, r.prototype.render = function (t) {\n return this.cancelRender(), this.frame = requestAnimationFrame(function (e) {\n return function () {\n return e.frame = null, t.call(e);\n };\n }(this));\n }, r.prototype.cancelRender = function () {\n return this.frame ? cancelAnimationFrame(this.frame) : void 0;\n }, r;\n }();\n }.call(this), function () {\n var t = function (t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n };\n e.Controller = function () {\n function r() {\n this.clickBubbled = t(this.clickBubbled, this), this.clickCaptured = t(this.clickCaptured, this), this.pageLoaded = t(this.pageLoaded, this), this.history = new e.History(this), this.view = new e.View(this), this.scrollManager = new e.ScrollManager(this), this.restorationData = {}, this.clearCache(), this.setProgressBarDelay(500);\n }\n return r.prototype.start = function () {\n return e.supported && !this.started ? (addEventListener(\"click\", this.clickCaptured, !0), addEventListener(\"DOMContentLoaded\", this.pageLoaded, !1), this.scrollManager.start(), this.startHistory(), this.started = !0, this.enabled = !0) : void 0;\n }, r.prototype.disable = function () {\n return this.enabled = !1;\n }, r.prototype.stop = function () {\n return this.started ? (removeEventListener(\"click\", this.clickCaptured, !0), removeEventListener(\"DOMContentLoaded\", this.pageLoaded, !1), this.scrollManager.stop(), this.stopHistory(), this.started = !1) : void 0;\n }, r.prototype.clearCache = function () {\n return this.cache = new e.SnapshotCache(10);\n }, r.prototype.visit = function (t, r) {\n var n, o;\n return null == r && (r = {}), t = e.Location.wrap(t), this.applicationAllowsVisitingLocation(t) ? this.locationIsVisitable(t) ? (n = null != (o = r.action) ? o : \"advance\", this.adapter.visitProposedToLocationWithAction(t, n)) : window.location = t : void 0;\n }, r.prototype.startVisitToLocationWithAction = function (t, r, n) {\n var o;\n return e.supported ? (o = this.getRestorationDataForIdentifier(n), this.startVisit(t, r, {\n restorationData: o\n })) : window.location = t;\n }, r.prototype.setProgressBarDelay = function (t) {\n return this.progressBarDelay = t;\n }, r.prototype.startHistory = function () {\n return this.location = e.Location.wrap(window.location), this.restorationIdentifier = e.uuid(), this.history.start(), this.history.replace(this.location, this.restorationIdentifier);\n }, r.prototype.stopHistory = function () {\n return this.history.stop();\n }, r.prototype.pushHistoryWithLocationAndRestorationIdentifier = function (t, r) {\n return this.restorationIdentifier = r, this.location = e.Location.wrap(t), this.history.push(this.location, this.restorationIdentifier);\n }, r.prototype.replaceHistoryWithLocationAndRestorationIdentifier = function (t, r) {\n return this.restorationIdentifier = r, this.location = e.Location.wrap(t), this.history.replace(this.location, this.restorationIdentifier);\n }, r.prototype.historyPoppedToLocationWithRestorationIdentifier = function (t, r) {\n var n;\n return this.restorationIdentifier = r, this.enabled ? (n = this.getRestorationDataForIdentifier(this.restorationIdentifier), this.startVisit(t, \"restore\", {\n restorationIdentifier: this.restorationIdentifier,\n restorationData: n,\n historyChanged: !0\n }), this.location = e.Location.wrap(t)) : this.adapter.pageInvalidated();\n }, r.prototype.getCachedSnapshotForLocation = function (t) {\n var e;\n return null != (e = this.cache.get(t)) ? e.clone() : void 0;\n }, r.prototype.shouldCacheSnapshot = function () {\n return this.view.getSnapshot().isCacheable();\n }, r.prototype.cacheSnapshot = function () {\n var t, r;\n return this.shouldCacheSnapshot() ? (this.notifyApplicationBeforeCachingSnapshot(), r = this.view.getSnapshot(), t = this.lastRenderedLocation, e.defer(function (e) {\n return function () {\n return e.cache.put(t, r.clone());\n };\n }(this))) : void 0;\n }, r.prototype.scrollToAnchor = function (t) {\n var e;\n return (e = this.view.getElementForAnchor(t)) ? this.scrollToElement(e) : this.scrollToPosition({\n x: 0,\n y: 0\n });\n }, r.prototype.scrollToElement = function (t) {\n return this.scrollManager.scrollToElement(t);\n }, r.prototype.scrollToPosition = function (t) {\n return this.scrollManager.scrollToPosition(t);\n }, r.prototype.scrollPositionChanged = function (t) {\n var e;\n return e = this.getCurrentRestorationData(), e.scrollPosition = t;\n }, r.prototype.render = function (t, e) {\n return this.view.render(t, e);\n }, r.prototype.viewInvalidated = function () {\n return this.adapter.pageInvalidated();\n }, r.prototype.viewWillRender = function (t) {\n return this.notifyApplicationBeforeRender(t);\n }, r.prototype.viewRendered = function () {\n return this.lastRenderedLocation = this.currentVisit.location, this.notifyApplicationAfterRender();\n }, r.prototype.pageLoaded = function () {\n return this.lastRenderedLocation = this.location, this.notifyApplicationAfterPageLoad();\n }, r.prototype.clickCaptured = function () {\n return removeEventListener(\"click\", this.clickBubbled, !1), addEventListener(\"click\", this.clickBubbled, !1);\n }, r.prototype.clickBubbled = function (t) {\n var e, r, n;\n return this.enabled && this.clickEventIsSignificant(t) && (r = this.getVisitableLinkForNode(t.target)) && (n = this.getVisitableLocationForLink(r)) && this.applicationAllowsFollowingLinkToLocation(r, n) ? (t.preventDefault(), e = this.getActionForLink(r), this.visit(n, {\n action: e\n })) : void 0;\n }, r.prototype.applicationAllowsFollowingLinkToLocation = function (t, e) {\n var r;\n return r = this.notifyApplicationAfterClickingLinkToLocation(t, e), !r.defaultPrevented;\n }, r.prototype.applicationAllowsVisitingLocation = function (t) {\n var e;\n return e = this.notifyApplicationBeforeVisitingLocation(t), !e.defaultPrevented;\n }, r.prototype.notifyApplicationAfterClickingLinkToLocation = function (t, r) {\n return e.dispatch(\"turbolinks:click\", {\n target: t,\n data: {\n url: r.absoluteURL\n },\n cancelable: !0\n });\n }, r.prototype.notifyApplicationBeforeVisitingLocation = function (t) {\n return e.dispatch(\"turbolinks:before-visit\", {\n data: {\n url: t.absoluteURL\n },\n cancelable: !0\n });\n }, r.prototype.notifyApplicationAfterVisitingLocation = function (t) {\n return e.dispatch(\"turbolinks:visit\", {\n data: {\n url: t.absoluteURL\n }\n });\n }, r.prototype.notifyApplicationBeforeCachingSnapshot = function () {\n return e.dispatch(\"turbolinks:before-cache\");\n }, r.prototype.notifyApplicationBeforeRender = function (t) {\n return e.dispatch(\"turbolinks:before-render\", {\n data: {\n newBody: t\n }\n });\n }, r.prototype.notifyApplicationAfterRender = function () {\n return e.dispatch(\"turbolinks:render\");\n }, r.prototype.notifyApplicationAfterPageLoad = function (t) {\n return null == t && (t = {}), e.dispatch(\"turbolinks:load\", {\n data: {\n url: this.location.absoluteURL,\n timing: t\n }\n });\n }, r.prototype.startVisit = function (t, e, r) {\n var n;\n return null != (n = this.currentVisit) && n.cancel(), this.currentVisit = this.createVisit(t, e, r), this.currentVisit.start(), this.notifyApplicationAfterVisitingLocation(t);\n }, r.prototype.createVisit = function (t, r, n) {\n var o, i, s, a, u;\n return i = null != n ? n : {}, a = i.restorationIdentifier, s = i.restorationData, o = i.historyChanged, u = new e.Visit(this, t, r), u.restorationIdentifier = null != a ? a : e.uuid(), u.restorationData = e.copyObject(s), u.historyChanged = o, u.referrer = this.location, u;\n }, r.prototype.visitCompleted = function (t) {\n return this.notifyApplicationAfterPageLoad(t.getTimingMetrics());\n }, r.prototype.clickEventIsSignificant = function (t) {\n return !(t.defaultPrevented || t.target.isContentEditable || t.which > 1 || t.altKey || t.ctrlKey || t.metaKey || t.shiftKey);\n }, r.prototype.getVisitableLinkForNode = function (t) {\n return this.nodeIsVisitable(t) ? e.closest(t, \"a[href]:not([target]):not([download])\") : void 0;\n }, r.prototype.getVisitableLocationForLink = function (t) {\n var r;\n return r = new e.Location(t.getAttribute(\"href\")), this.locationIsVisitable(r) ? r : void 0;\n }, r.prototype.getActionForLink = function (t) {\n var e;\n return null != (e = t.getAttribute(\"data-turbolinks-action\")) ? e : \"advance\";\n }, r.prototype.nodeIsVisitable = function (t) {\n var r;\n return (r = e.closest(t, \"[data-turbolinks]\")) ? \"false\" !== r.getAttribute(\"data-turbolinks\") : !0;\n }, r.prototype.locationIsVisitable = function (t) {\n return t.isPrefixedBy(this.view.getRootLocation()) && t.isHTML();\n }, r.prototype.getCurrentRestorationData = function () {\n return this.getRestorationDataForIdentifier(this.restorationIdentifier);\n }, r.prototype.getRestorationDataForIdentifier = function (t) {\n var e;\n return null != (e = this.restorationData)[t] ? e[t] : e[t] = {};\n }, r;\n }();\n }.call(this), function () {\n !function () {\n var t, e;\n if ((t = e = document.currentScript) && !e.hasAttribute(\"data-turbolinks-suppress-warning\")) for (; t = t.parentNode;) if (t === document.body) return console.warn(\"You are loading Turbolinks from a <script> element inside the <body> element. This is probably not what you meant to do!\\n\\nLoad your application\\u2019s JavaScript bundle inside the <head> element instead. <script> elements in <body> are evaluated with each page change.\\n\\nFor more information, see: https://github.com/turbolinks/turbolinks#working-with-script-elements\\n\\n\\u2014\\u2014\\nSuppress this warning by adding a `data-turbolinks-suppress-warning` attribute to: %s\", e.outerHTML);\n }();\n }.call(this), function () {\n var t, r, n;\n e.start = function () {\n return r() ? (null == e.controller && (e.controller = t()), e.controller.start()) : void 0;\n }, r = function () {\n return null == window.Turbolinks && (window.Turbolinks = e), n();\n }, t = function () {\n var t;\n return t = new e.Controller(), t.adapter = new e.BrowserAdapter(t), t;\n }, n = function () {\n return window.Turbolinks === e;\n }, n() && e.start();\n }.call(this);\n }).call(this), \"object\" == typeof module && module.exports ? module.exports = e : \"function\" == typeof define && define.amd && define(e);\n}).call(this);","(function ($, undefined) {\n /**\n * Unobtrusive scripting adapter for jQuery\n * https://github.com/rails/jquery-ujs\n *\n * Requires jQuery 1.8.0 or later.\n *\n * Released under the MIT license\n *\n */\n\n // Cut down on the number of issues from people inadvertently including jquery_ujs twice\n // by detecting and raising an error when it happens.\n 'use strict';\n\n if ($.rails !== undefined) {\n $.error('jquery-ujs has already been loaded!');\n }\n\n // Shorthand to make it a little easier to call public rails functions from within rails.js\n var rails;\n var $document = $(document);\n $.rails = rails = {\n // Link elements bound by jquery-ujs\n linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n // Button elements bound by jquery-ujs\n buttonClickSelector: 'button[data-remote]:not([form]):not(form button), button[data-confirm]:not([form]):not(form button)',\n // Select elements bound by jquery-ujs\n inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n // Form elements bound by jquery-ujs\n formSubmitSelector: 'form',\n // Form input elements bound by jquery-ujs\n formInputClickSelector: 'form input[type=submit], form input[type=image], form button[type=submit], form button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n // Form input elements disabled during form submission\n disableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n // Form input elements re-enabled after form submission\n enableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n // Form required input elements\n requiredInputSelector: 'input[name][required]:not([disabled]), textarea[name][required]:not([disabled])',\n // Form file input elements\n fileInputSelector: 'input[name][type=file]:not([disabled])',\n // Link onClick disable selector with possible reenable after remote submission\n linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n // Button onClick disable selector with possible reenable after remote submission\n buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]',\n // Up-to-date Cross-Site Request Forgery token\n csrfToken: function () {\n return $('meta[name=csrf-token]').attr('content');\n },\n // URL param that must contain the CSRF token\n csrfParam: function () {\n return $('meta[name=csrf-param]').attr('content');\n },\n // Make sure that every Ajax request sends the CSRF token\n CSRFProtection: function (xhr) {\n var token = rails.csrfToken();\n if (token) xhr.setRequestHeader('X-CSRF-Token', token);\n },\n // Make sure that all forms have actual up-to-date tokens (cached forms contain old ones)\n refreshCSRFTokens: function () {\n $('form input[name=\"' + rails.csrfParam() + '\"]').val(rails.csrfToken());\n },\n // Triggers an event on an element and returns false if the event result is false\n fire: function (obj, name, data) {\n var event = $.Event(name);\n obj.trigger(event, data);\n return event.result !== false;\n },\n // Default confirm dialog, may be overridden with custom confirm dialog in $.rails.confirm\n confirm: function (message) {\n return confirm(message);\n },\n // Default ajax function, may be overridden with custom function in $.rails.ajax\n ajax: function (options) {\n return $.ajax(options);\n },\n // Default way to get an element's href. May be overridden at $.rails.href.\n href: function (element) {\n return element[0].href;\n },\n // Checks \"data-remote\" if true to handle the request through a XHR request.\n isRemote: function (element) {\n return element.data('remote') !== undefined && element.data('remote') !== false;\n },\n // Submits \"remote\" forms and links with ajax\n handleRemote: function (element) {\n var method, url, data, withCredentials, dataType, options;\n if (rails.fire(element, 'ajax:before')) {\n withCredentials = element.data('with-credentials') || null;\n dataType = element.data('type') || $.ajaxSettings && $.ajaxSettings.dataType;\n if (element.is('form')) {\n method = element.data('ujs:submit-button-formmethod') || element.attr('method');\n url = element.data('ujs:submit-button-formaction') || element.attr('action');\n data = $(element[0]).serializeArray();\n // memoized value from clicked submit button\n var button = element.data('ujs:submit-button');\n if (button) {\n data.push(button);\n element.data('ujs:submit-button', null);\n }\n element.data('ujs:submit-button-formmethod', null);\n element.data('ujs:submit-button-formaction', null);\n } else if (element.is(rails.inputChangeSelector)) {\n method = element.data('method');\n url = element.data('url');\n data = element.serialize();\n if (element.data('params')) data = data + '&' + element.data('params');\n } else if (element.is(rails.buttonClickSelector)) {\n method = element.data('method') || 'get';\n url = element.data('url');\n data = element.serialize();\n if (element.data('params')) data = data + '&' + element.data('params');\n } else {\n method = element.data('method');\n url = rails.href(element);\n data = element.data('params') || null;\n }\n options = {\n type: method || 'GET',\n data: data,\n dataType: dataType,\n // stopping the \"ajax:beforeSend\" event will cancel the ajax request\n beforeSend: function (xhr, settings) {\n if (settings.dataType === undefined) {\n xhr.setRequestHeader('accept', '*/*;q=0.5, ' + settings.accepts.script);\n }\n if (rails.fire(element, 'ajax:beforeSend', [xhr, settings])) {\n element.trigger('ajax:send', xhr);\n } else {\n return false;\n }\n },\n success: function (data, status, xhr) {\n element.trigger('ajax:success', [data, status, xhr]);\n },\n complete: function (xhr, status) {\n element.trigger('ajax:complete', [xhr, status]);\n },\n error: function (xhr, status, error) {\n element.trigger('ajax:error', [xhr, status, error]);\n },\n crossDomain: rails.isCrossDomain(url)\n };\n\n // There is no withCredentials for IE6-8 when\n // \"Enable native XMLHTTP support\" is disabled\n if (withCredentials) {\n options.xhrFields = {\n withCredentials: withCredentials\n };\n }\n\n // Only pass url to `ajax` options if not blank\n if (url) {\n options.url = url;\n }\n return rails.ajax(options);\n } else {\n return false;\n }\n },\n // Determines if the request is a cross domain request.\n isCrossDomain: function (url) {\n var originAnchor = document.createElement('a');\n originAnchor.href = location.href;\n var urlAnchor = document.createElement('a');\n try {\n urlAnchor.href = url;\n // This is a workaround to a IE bug.\n urlAnchor.href = urlAnchor.href;\n\n // If URL protocol is false or is a string containing a single colon\n // *and* host are false, assume it is not a cross-domain request\n // (should only be the case for IE7 and IE compatibility mode).\n // Otherwise, evaluate protocol and host of the URL against the origin\n // protocol and host.\n return !((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host || originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host);\n } catch (e) {\n // If there is an error parsing the URL, assume it is crossDomain.\n return true;\n }\n },\n // Handles \"data-method\" on links such as:\n // <a href=\"/users/5\" data-method=\"delete\" rel=\"nofollow\" data-confirm=\"Are you sure?\">Delete</a>\n handleMethod: function (link) {\n var href = rails.href(link),\n method = link.data('method'),\n target = link.attr('target'),\n csrfToken = rails.csrfToken(),\n csrfParam = rails.csrfParam(),\n form = $('<form method=\"post\" action=\"' + href + '\"></form>'),\n metadataInput = '<input name=\"_method\" value=\"' + method + '\" type=\"hidden\" />';\n if (csrfParam !== undefined && csrfToken !== undefined && !rails.isCrossDomain(href)) {\n metadataInput += '<input name=\"' + csrfParam + '\" value=\"' + csrfToken + '\" type=\"hidden\" />';\n }\n if (target) {\n form.attr('target', target);\n }\n form.hide().append(metadataInput).appendTo('body');\n form.submit();\n },\n // Helper function that returns form elements that match the specified CSS selector\n // If form is actually a \"form\" element this will return associated elements outside the from that have\n // the html form attribute set\n formElements: function (form, selector) {\n return form.is('form') ? $(form[0].elements).filter(selector) : form.find(selector);\n },\n /* Disables form elements:\n - Caches element value in 'ujs:enable-with' data store\n - Replaces element text with value of 'data-disable-with' attribute\n - Sets disabled property to true\n */\n disableFormElements: function (form) {\n rails.formElements(form, rails.disableSelector).each(function () {\n rails.disableFormElement($(this));\n });\n },\n disableFormElement: function (element) {\n var method, replacement;\n method = element.is('button') ? 'html' : 'val';\n replacement = element.data('disable-with');\n if (replacement !== undefined) {\n element.data('ujs:enable-with', element[method]());\n element[method](replacement);\n }\n element.prop('disabled', true);\n element.data('ujs:disabled', true);\n },\n /* Re-enables disabled form elements:\n - Replaces element text with cached value from 'ujs:enable-with' data store (created in `disableFormElements`)\n - Sets disabled property to false\n */\n enableFormElements: function (form) {\n rails.formElements(form, rails.enableSelector).each(function () {\n rails.enableFormElement($(this));\n });\n },\n enableFormElement: function (element) {\n var method = element.is('button') ? 'html' : 'val';\n if (element.data('ujs:enable-with') !== undefined) {\n element[method](element.data('ujs:enable-with'));\n element.removeData('ujs:enable-with'); // clean up cache\n }\n\n element.prop('disabled', false);\n element.removeData('ujs:disabled');\n },\n /* For 'data-confirm' attribute:\n - Fires `confirm` event\n - Shows the confirmation dialog\n - Fires the `confirm:complete` event\n Returns `true` if no function stops the chain and user chose yes; `false` otherwise.\n Attaching a handler to the element's `confirm` event that returns a `falsy` value cancels the confirmation dialog.\n Attaching a handler to the element's `confirm:complete` event that returns a `falsy` value makes this function\n return false. The `confirm:complete` event is fired whether or not the user answered true or false to the dialog.\n */\n allowAction: function (element) {\n var message = element.data('confirm'),\n answer = false,\n callback;\n if (!message) {\n return true;\n }\n if (rails.fire(element, 'confirm')) {\n try {\n answer = rails.confirm(message);\n } catch (e) {\n (console.error || console.log).call(console, e.stack || e);\n }\n callback = rails.fire(element, 'confirm:complete', [answer]);\n }\n return answer && callback;\n },\n // Helper function which checks for blank inputs in a form that match the specified CSS selector\n blankInputs: function (form, specifiedSelector, nonBlank) {\n var foundInputs = $(),\n input,\n valueToCheck,\n radiosForNameWithNoneSelected,\n radioName,\n selector = specifiedSelector || 'input,textarea',\n requiredInputs = form.find(selector),\n checkedRadioButtonNames = {};\n requiredInputs.each(function () {\n input = $(this);\n if (input.is('input[type=radio]')) {\n // Don't count unchecked required radio as blank if other radio with same name is checked,\n // regardless of whether same-name radio input has required attribute or not. The spec\n // states https://www.w3.org/TR/html5/forms.html#the-required-attribute\n radioName = input.attr('name');\n\n // Skip if we've already seen the radio with this name.\n if (!checkedRadioButtonNames[radioName]) {\n // If none checked\n if (form.find('input[type=radio]:checked[name=\"' + radioName + '\"]').length === 0) {\n radiosForNameWithNoneSelected = form.find('input[type=radio][name=\"' + radioName + '\"]');\n foundInputs = foundInputs.add(radiosForNameWithNoneSelected);\n }\n\n // We only need to check each name once.\n checkedRadioButtonNames[radioName] = radioName;\n }\n } else {\n valueToCheck = input.is('input[type=checkbox],input[type=radio]') ? input.is(':checked') : !!input.val();\n if (valueToCheck === nonBlank) {\n foundInputs = foundInputs.add(input);\n }\n }\n });\n return foundInputs.length ? foundInputs : false;\n },\n // Helper function which checks for non-blank inputs in a form that match the specified CSS selector\n nonBlankInputs: function (form, specifiedSelector) {\n return rails.blankInputs(form, specifiedSelector, true); // true specifies nonBlank\n },\n\n // Helper function, needed to provide consistent behavior in IE\n stopEverything: function (e) {\n $(e.target).trigger('ujs:everythingStopped');\n e.stopImmediatePropagation();\n return false;\n },\n // Replace element's html with the 'data-disable-with' after storing original html\n // and prevent clicking on it\n disableElement: function (element) {\n var replacement = element.data('disable-with');\n if (replacement !== undefined) {\n element.data('ujs:enable-with', element.html()); // store enabled state\n element.html(replacement);\n }\n element.bind('click.railsDisable', function (e) {\n // prevent further clicking\n return rails.stopEverything(e);\n });\n element.data('ujs:disabled', true);\n },\n // Restore element to its original state which was disabled by 'disableElement' above\n enableElement: function (element) {\n if (element.data('ujs:enable-with') !== undefined) {\n element.html(element.data('ujs:enable-with')); // set to old enabled state\n element.removeData('ujs:enable-with'); // clean up cache\n }\n\n element.unbind('click.railsDisable'); // enable element\n element.removeData('ujs:disabled');\n }\n };\n if (rails.fire($document, 'rails:attachBindings')) {\n $.ajaxPrefilter(function (options, originalOptions, xhr) {\n if (!options.crossDomain) {\n rails.CSRFProtection(xhr);\n }\n });\n\n // This event works the same as the load event, except that it fires every\n // time the page is loaded.\n //\n // See https://github.com/rails/jquery-ujs/issues/357\n // See https://developer.mozilla.org/en-US/docs/Using_Firefox_1.5_caching\n $(window).on('pageshow.rails', function () {\n $($.rails.enableSelector).each(function () {\n var element = $(this);\n if (element.data('ujs:disabled')) {\n $.rails.enableFormElement(element);\n }\n });\n $($.rails.linkDisableSelector).each(function () {\n var element = $(this);\n if (element.data('ujs:disabled')) {\n $.rails.enableElement(element);\n }\n });\n });\n $document.on('ajax:complete', rails.linkDisableSelector, function () {\n rails.enableElement($(this));\n });\n $document.on('ajax:complete', rails.buttonDisableSelector, function () {\n rails.enableFormElement($(this));\n });\n $document.on('click.rails', rails.linkClickSelector, function (e) {\n var link = $(this),\n method = link.data('method'),\n data = link.data('params'),\n metaClick = e.metaKey || e.ctrlKey;\n if (!rails.allowAction(link)) return rails.stopEverything(e);\n if (!metaClick && link.is(rails.linkDisableSelector)) rails.disableElement(link);\n if (rails.isRemote(link)) {\n if (metaClick && (!method || method === 'GET') && !data) {\n return true;\n }\n var handleRemote = rails.handleRemote(link);\n // Response from rails.handleRemote() will either be false or a deferred object promise.\n if (handleRemote === false) {\n rails.enableElement(link);\n } else {\n handleRemote.fail(function () {\n rails.enableElement(link);\n });\n }\n return false;\n } else if (method) {\n rails.handleMethod(link);\n return false;\n }\n });\n $document.on('click.rails', rails.buttonClickSelector, function (e) {\n var button = $(this);\n if (!rails.allowAction(button) || !rails.isRemote(button)) return rails.stopEverything(e);\n if (button.is(rails.buttonDisableSelector)) rails.disableFormElement(button);\n var handleRemote = rails.handleRemote(button);\n // Response from rails.handleRemote() will either be false or a deferred object promise.\n if (handleRemote === false) {\n rails.enableFormElement(button);\n } else {\n handleRemote.fail(function () {\n rails.enableFormElement(button);\n });\n }\n return false;\n });\n $document.on('change.rails', rails.inputChangeSelector, function (e) {\n var link = $(this);\n if (!rails.allowAction(link) || !rails.isRemote(link)) return rails.stopEverything(e);\n rails.handleRemote(link);\n return false;\n });\n $document.on('submit.rails', rails.formSubmitSelector, function (e) {\n var form = $(this),\n remote = rails.isRemote(form),\n blankRequiredInputs,\n nonBlankFileInputs;\n if (!rails.allowAction(form)) return rails.stopEverything(e);\n\n // Skip other logic when required values are missing or file upload is present\n if (form.attr('novalidate') === undefined) {\n if (form.data('ujs:formnovalidate-button') === undefined) {\n blankRequiredInputs = rails.blankInputs(form, rails.requiredInputSelector, false);\n if (blankRequiredInputs && rails.fire(form, 'ajax:aborted:required', [blankRequiredInputs])) {\n return rails.stopEverything(e);\n }\n } else {\n // Clear the formnovalidate in case the next button click is not on a formnovalidate button\n // Not strictly necessary to do here, since it is also reset on each button click, but just to be certain\n form.data('ujs:formnovalidate-button', undefined);\n }\n }\n if (remote) {\n nonBlankFileInputs = rails.nonBlankInputs(form, rails.fileInputSelector);\n if (nonBlankFileInputs) {\n // Slight timeout so that the submit button gets properly serialized\n // (make it easy for event handler to serialize form without disabled values)\n setTimeout(function () {\n rails.disableFormElements(form);\n }, 13);\n var aborted = rails.fire(form, 'ajax:aborted:file', [nonBlankFileInputs]);\n\n // Re-enable form elements if event bindings return false (canceling normal form submission)\n if (!aborted) {\n setTimeout(function () {\n rails.enableFormElements(form);\n }, 13);\n }\n return aborted;\n }\n rails.handleRemote(form);\n return false;\n } else {\n // Slight timeout so that the submit button gets properly serialized\n setTimeout(function () {\n rails.disableFormElements(form);\n }, 13);\n }\n });\n $document.on('click.rails', rails.formInputClickSelector, function (event) {\n var button = $(this);\n if (!rails.allowAction(button)) return rails.stopEverything(event);\n\n // Register the pressed submit button\n var name = button.attr('name'),\n data = name ? {\n name: name,\n value: button.val()\n } : null;\n var form = button.closest('form');\n if (form.length === 0) {\n form = $('#' + button.attr('form'));\n }\n form.data('ujs:submit-button', data);\n\n // Save attributes from button\n form.data('ujs:formnovalidate-button', button.attr('formnovalidate'));\n form.data('ujs:submit-button-formaction', button.attr('formaction'));\n form.data('ujs:submit-button-formmethod', button.attr('formmethod'));\n });\n $document.on('ajax:send.rails', rails.formSubmitSelector, function (event) {\n if (this === event.target) rails.disableFormElements($(this));\n });\n $document.on('ajax:complete.rails', rails.formSubmitSelector, function (event) {\n if (this === event.target) rails.enableFormElements($(this));\n });\n $(function () {\n rails.refreshCSRFTokens();\n });\n }\n})(jQuery);","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n/*!\n * Bootstrap v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n!function (t, e) {\n \"object\" == typeof exports && \"undefined\" != typeof module ? module.exports = e() : \"function\" == typeof define && define.amd ? define(e) : (t = \"undefined\" != typeof globalThis ? globalThis : t || self).bootstrap = e();\n}(this, function () {\n \"use strict\";\n\n const t = new Map(),\n e = {\n set(e, i, n) {\n t.has(e) || t.set(e, new Map());\n const s = t.get(e);\n s.has(i) || 0 === s.size ? s.set(i, n) : console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(s.keys())[0]}.`);\n },\n get: (e, i) => t.has(e) && t.get(e).get(i) || null,\n remove(e, i) {\n if (!t.has(e)) return;\n const n = t.get(e);\n n.delete(i), 0 === n.size && t.delete(e);\n }\n },\n i = \"transitionend\",\n n = t => (t && window.CSS && window.CSS.escape && (t = t.replace(/#([^\\s\"#']+)/g, (t, e) => `#${CSS.escape(e)}`)), t),\n s = t => {\n t.dispatchEvent(new Event(i));\n },\n o = t => !(!t || \"object\" != typeof t) && (void 0 !== t.jquery && (t = t[0]), void 0 !== t.nodeType),\n r = t => o(t) ? t.jquery ? t[0] : t : \"string\" == typeof t && t.length > 0 ? document.querySelector(n(t)) : null,\n a = t => {\n if (!o(t) || 0 === t.getClientRects().length) return !1;\n const e = \"visible\" === getComputedStyle(t).getPropertyValue(\"visibility\"),\n i = t.closest(\"details:not([open])\");\n if (!i) return e;\n if (i !== t) {\n const e = t.closest(\"summary\");\n if (e && e.parentNode !== i) return !1;\n if (null === e) return !1;\n }\n return e;\n },\n l = t => !t || t.nodeType !== Node.ELEMENT_NODE || !!t.classList.contains(\"disabled\") || (void 0 !== t.disabled ? t.disabled : t.hasAttribute(\"disabled\") && \"false\" !== t.getAttribute(\"disabled\")),\n c = t => {\n if (!document.documentElement.attachShadow) return null;\n if (\"function\" == typeof t.getRootNode) {\n const e = t.getRootNode();\n return e instanceof ShadowRoot ? e : null;\n }\n return t instanceof ShadowRoot ? t : t.parentNode ? c(t.parentNode) : null;\n },\n h = () => {},\n d = t => {\n t.offsetHeight;\n },\n u = () => window.jQuery && !document.body.hasAttribute(\"data-bs-no-jquery\") ? window.jQuery : null,\n f = [],\n p = () => \"rtl\" === document.documentElement.dir,\n m = t => {\n var e;\n e = () => {\n const e = u();\n if (e) {\n const i = t.NAME,\n n = e.fn[i];\n e.fn[i] = t.jQueryInterface, e.fn[i].Constructor = t, e.fn[i].noConflict = () => (e.fn[i] = n, t.jQueryInterface);\n }\n }, \"loading\" === document.readyState ? (f.length || document.addEventListener(\"DOMContentLoaded\", () => {\n for (const t of f) t();\n }), f.push(e)) : e();\n },\n g = function (t) {\n let e = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n let i = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : t;\n return \"function\" == typeof t ? t(...e) : i;\n },\n _ = function (t, e) {\n let n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : !0;\n if (!n) return void g(t);\n const o = (t => {\n if (!t) return 0;\n let _window$getComputedSt = window.getComputedStyle(t),\n e = _window$getComputedSt.transitionDuration,\n i = _window$getComputedSt.transitionDelay;\n const n = Number.parseFloat(e),\n s = Number.parseFloat(i);\n return n || s ? (e = e.split(\",\")[0], i = i.split(\",\")[0], 1e3 * (Number.parseFloat(e) + Number.parseFloat(i))) : 0;\n })(e) + 5;\n let r = !1;\n const a = _ref => {\n let n = _ref.target;\n n === e && (r = !0, e.removeEventListener(i, a), g(t));\n };\n e.addEventListener(i, a), setTimeout(() => {\n r || s(e);\n }, o);\n },\n b = (t, e, i, n) => {\n const s = t.length;\n let o = t.indexOf(e);\n return -1 === o ? !i && n ? t[s - 1] : t[0] : (o += i ? 1 : -1, n && (o = (o + s) % s), t[Math.max(0, Math.min(o, s - 1))]);\n },\n v = /[^.]*(?=\\..*)\\.|.*/,\n y = /\\..*/,\n w = /::\\d+$/,\n A = {};\n let E = 1;\n const T = {\n mouseenter: \"mouseover\",\n mouseleave: \"mouseout\"\n },\n C = new Set([\"click\", \"dblclick\", \"mouseup\", \"mousedown\", \"contextmenu\", \"mousewheel\", \"DOMMouseScroll\", \"mouseover\", \"mouseout\", \"mousemove\", \"selectstart\", \"selectend\", \"keydown\", \"keypress\", \"keyup\", \"orientationchange\", \"touchstart\", \"touchmove\", \"touchend\", \"touchcancel\", \"pointerdown\", \"pointermove\", \"pointerup\", \"pointerleave\", \"pointercancel\", \"gesturestart\", \"gesturechange\", \"gestureend\", \"focus\", \"blur\", \"change\", \"reset\", \"select\", \"submit\", \"focusin\", \"focusout\", \"load\", \"unload\", \"beforeunload\", \"resize\", \"move\", \"DOMContentLoaded\", \"readystatechange\", \"error\", \"abort\", \"scroll\"]);\n function O(t, e) {\n return e && `${e}::${E++}` || t.uidEvent || E++;\n }\n function x(t) {\n const e = O(t);\n return t.uidEvent = e, A[e] = A[e] || {}, A[e];\n }\n function k(t, e) {\n let i = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n return Object.values(t).find(t => t.callable === e && t.delegationSelector === i);\n }\n function L(t, e, i) {\n const n = \"string\" == typeof e,\n s = n ? i : e || i;\n let o = I(t);\n return C.has(o) || (o = t), [n, s, o];\n }\n function S(t, e, i, n, s) {\n if (\"string\" != typeof e || !t) return;\n let _L = L(e, i, n),\n _L2 = _slicedToArray(_L, 3),\n o = _L2[0],\n r = _L2[1],\n a = _L2[2];\n if (e in T) {\n const t = t => function (e) {\n if (!e.relatedTarget || e.relatedTarget !== e.delegateTarget && !e.delegateTarget.contains(e.relatedTarget)) return t.call(this, e);\n };\n r = t(r);\n }\n const l = x(t),\n c = l[a] || (l[a] = {}),\n h = k(c, r, o ? i : null);\n if (h) return void (h.oneOff = h.oneOff && s);\n const d = O(r, e.replace(v, \"\")),\n u = o ? function (t, e, i) {\n return function n(s) {\n const o = t.querySelectorAll(e);\n for (let r = s.target; r && r !== this; r = r.parentNode) for (const a of o) if (a === r) return P(s, {\n delegateTarget: r\n }), n.oneOff && N.off(t, s.type, e, i), i.apply(r, [s]);\n };\n }(t, i, r) : function (t, e) {\n return function i(n) {\n return P(n, {\n delegateTarget: t\n }), i.oneOff && N.off(t, n.type, e), e.apply(t, [n]);\n };\n }(t, r);\n u.delegationSelector = o ? i : null, u.callable = r, u.oneOff = s, u.uidEvent = d, c[d] = u, t.addEventListener(a, u, o);\n }\n function D(t, e, i, n, s) {\n const o = k(e[i], n, s);\n o && (t.removeEventListener(i, o, Boolean(s)), delete e[i][o.uidEvent]);\n }\n function $(t, e, i, n) {\n const s = e[i] || {};\n for (const _ref2 of Object.entries(s)) {\n var _ref3 = _slicedToArray(_ref2, 2);\n const o = _ref3[0];\n const r = _ref3[1];\n o.includes(n) && D(t, e, i, r.callable, r.delegationSelector);\n }\n }\n function I(t) {\n return t = t.replace(y, \"\"), T[t] || t;\n }\n const N = {\n on(t, e, i, n) {\n S(t, e, i, n, !1);\n },\n one(t, e, i, n) {\n S(t, e, i, n, !0);\n },\n off(t, e, i, n) {\n if (\"string\" != typeof e || !t) return;\n const _L3 = L(e, i, n),\n _L4 = _slicedToArray(_L3, 3),\n s = _L4[0],\n o = _L4[1],\n r = _L4[2],\n a = r !== e,\n l = x(t),\n c = l[r] || {},\n h = e.startsWith(\".\");\n if (void 0 === o) {\n if (h) for (const i of Object.keys(l)) $(t, l, i, e.slice(1));\n for (const _ref4 of Object.entries(c)) {\n var _ref5 = _slicedToArray(_ref4, 2);\n const i = _ref5[0];\n const n = _ref5[1];\n {\n const s = i.replace(w, \"\");\n a && !e.includes(s) || D(t, l, r, n.callable, n.delegationSelector);\n }\n }\n } else {\n if (!Object.keys(c).length) return;\n D(t, l, r, o, s ? i : null);\n }\n },\n trigger(t, e, i) {\n if (\"string\" != typeof e || !t) return null;\n const n = u();\n let s = null,\n o = !0,\n r = !0,\n a = !1;\n e !== I(e) && n && (s = n.Event(e, i), n(t).trigger(s), o = !s.isPropagationStopped(), r = !s.isImmediatePropagationStopped(), a = s.isDefaultPrevented());\n const l = P(new Event(e, {\n bubbles: o,\n cancelable: !0\n }), i);\n return a && l.preventDefault(), r && t.dispatchEvent(l), l.defaultPrevented && s && s.preventDefault(), l;\n }\n };\n function P(t) {\n let e = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n for (const _ref6 of Object.entries(e)) {\n var _ref7 = _slicedToArray(_ref6, 2);\n const i = _ref7[0];\n const n = _ref7[1];\n try {\n t[i] = n;\n } catch (e) {\n Object.defineProperty(t, i, {\n configurable: !0,\n get: () => n\n });\n }\n }\n return t;\n }\n function j(t) {\n if (\"true\" === t) return !0;\n if (\"false\" === t) return !1;\n if (t === Number(t).toString()) return Number(t);\n if (\"\" === t || \"null\" === t) return null;\n if (\"string\" != typeof t) return t;\n try {\n return JSON.parse(decodeURIComponent(t));\n } catch (e) {\n return t;\n }\n }\n function M(t) {\n return t.replace(/[A-Z]/g, t => `-${t.toLowerCase()}`);\n }\n const F = {\n setDataAttribute(t, e, i) {\n t.setAttribute(`data-bs-${M(e)}`, i);\n },\n removeDataAttribute(t, e) {\n t.removeAttribute(`data-bs-${M(e)}`);\n },\n getDataAttributes(t) {\n if (!t) return {};\n const e = {},\n i = Object.keys(t.dataset).filter(t => t.startsWith(\"bs\") && !t.startsWith(\"bsConfig\"));\n for (const n of i) {\n let i = n.replace(/^bs/, \"\");\n i = i.charAt(0).toLowerCase() + i.slice(1, i.length), e[i] = j(t.dataset[n]);\n }\n return e;\n },\n getDataAttribute: (t, e) => j(t.getAttribute(`data-bs-${M(e)}`))\n };\n class H {\n static get Default() {\n return {};\n }\n static get DefaultType() {\n return {};\n }\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!');\n }\n _getConfig(t) {\n return t = this._mergeConfigObj(t), t = this._configAfterMerge(t), this._typeCheckConfig(t), t;\n }\n _configAfterMerge(t) {\n return t;\n }\n _mergeConfigObj(t, e) {\n const i = o(e) ? F.getDataAttribute(e, \"config\") : {};\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, this.constructor.Default), \"object\" == typeof i ? i : {}), o(e) ? F.getDataAttributes(e) : {}), \"object\" == typeof t ? t : {});\n }\n _typeCheckConfig(t) {\n let e = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.constructor.DefaultType;\n for (const _ref8 of Object.entries(e)) {\n var _ref9 = _slicedToArray(_ref8, 2);\n const n = _ref9[0];\n const s = _ref9[1];\n {\n const e = t[n],\n r = o(e) ? \"element\" : null == (i = e) ? `${i}` : Object.prototype.toString.call(i).match(/\\s([a-z]+)/i)[1].toLowerCase();\n if (!new RegExp(s).test(r)) throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option \"${n}\" provided type \"${r}\" but expected type \"${s}\".`);\n }\n }\n var i;\n }\n }\n class W extends H {\n constructor(t, i) {\n super(), (t = r(t)) && (this._element = t, this._config = this._getConfig(i), e.set(this._element, this.constructor.DATA_KEY, this));\n }\n dispose() {\n e.remove(this._element, this.constructor.DATA_KEY), N.off(this._element, this.constructor.EVENT_KEY);\n for (const t of Object.getOwnPropertyNames(this)) this[t] = null;\n }\n _queueCallback(t, e) {\n let i = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : !0;\n _(t, e, i);\n }\n _getConfig(t) {\n return t = this._mergeConfigObj(t, this._element), t = this._configAfterMerge(t), this._typeCheckConfig(t), t;\n }\n static getInstance(t) {\n return e.get(r(t), this.DATA_KEY);\n }\n static getOrCreateInstance(t) {\n let e = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.getInstance(t) || new this(t, \"object\" == typeof e ? e : null);\n }\n static get VERSION() {\n return \"5.3.3\";\n }\n static get DATA_KEY() {\n return `bs.${this.NAME}`;\n }\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`;\n }\n static eventName(t) {\n return `${t}${this.EVENT_KEY}`;\n }\n }\n const B = t => {\n let e = t.getAttribute(\"data-bs-target\");\n if (!e || \"#\" === e) {\n let i = t.getAttribute(\"href\");\n if (!i || !i.includes(\"#\") && !i.startsWith(\".\")) return null;\n i.includes(\"#\") && !i.startsWith(\"#\") && (i = `#${i.split(\"#\")[1]}`), e = i && \"#\" !== i ? i.trim() : null;\n }\n return e ? e.split(\",\").map(t => n(t)).join(\",\") : null;\n },\n z = {\n find: function (t) {\n let e = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document.documentElement;\n return [].concat(...Element.prototype.querySelectorAll.call(e, t));\n },\n findOne: function (t) {\n let e = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document.documentElement;\n return Element.prototype.querySelector.call(e, t);\n },\n children: (t, e) => [].concat(...t.children).filter(t => t.matches(e)),\n parents(t, e) {\n const i = [];\n let n = t.parentNode.closest(e);\n for (; n;) i.push(n), n = n.parentNode.closest(e);\n return i;\n },\n prev(t, e) {\n let i = t.previousElementSibling;\n for (; i;) {\n if (i.matches(e)) return [i];\n i = i.previousElementSibling;\n }\n return [];\n },\n next(t, e) {\n let i = t.nextElementSibling;\n for (; i;) {\n if (i.matches(e)) return [i];\n i = i.nextElementSibling;\n }\n return [];\n },\n focusableChildren(t) {\n const e = [\"a\", \"button\", \"input\", \"textarea\", \"select\", \"details\", \"[tabindex]\", '[contenteditable=\"true\"]'].map(t => `${t}:not([tabindex^=\"-\"])`).join(\",\");\n return this.find(e, t).filter(t => !l(t) && a(t));\n },\n getSelectorFromElement(t) {\n const e = B(t);\n return e && z.findOne(e) ? e : null;\n },\n getElementFromSelector(t) {\n const e = B(t);\n return e ? z.findOne(e) : null;\n },\n getMultipleElementsFromSelector(t) {\n const e = B(t);\n return e ? z.find(e) : [];\n }\n },\n R = function (t) {\n let e = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"hide\";\n const i = `click.dismiss${t.EVENT_KEY}`,\n n = t.NAME;\n N.on(document, i, `[data-bs-dismiss=\"${n}\"]`, function (i) {\n if ([\"A\", \"AREA\"].includes(this.tagName) && i.preventDefault(), l(this)) return;\n const s = z.getElementFromSelector(this) || this.closest(`.${n}`);\n t.getOrCreateInstance(s)[e]();\n });\n },\n q = \".bs.alert\",\n V = `close${q}`,\n K = `closed${q}`;\n class Q extends W {\n static get NAME() {\n return \"alert\";\n }\n close() {\n if (N.trigger(this._element, V).defaultPrevented) return;\n this._element.classList.remove(\"show\");\n const t = this._element.classList.contains(\"fade\");\n this._queueCallback(() => this._destroyElement(), this._element, t);\n }\n _destroyElement() {\n this._element.remove(), N.trigger(this._element, K), this.dispose();\n }\n static jQueryInterface(t) {\n return this.each(function () {\n const e = Q.getOrCreateInstance(this);\n if (\"string\" == typeof t) {\n if (void 0 === e[t] || t.startsWith(\"_\") || \"constructor\" === t) throw new TypeError(`No method named \"${t}\"`);\n e[t](this);\n }\n });\n }\n }\n R(Q, \"close\"), m(Q);\n const X = '[data-bs-toggle=\"button\"]';\n class Y extends W {\n static get NAME() {\n return \"button\";\n }\n toggle() {\n this._element.setAttribute(\"aria-pressed\", this._element.classList.toggle(\"active\"));\n }\n static jQueryInterface(t) {\n return this.each(function () {\n const e = Y.getOrCreateInstance(this);\n \"toggle\" === t && e[t]();\n });\n }\n }\n N.on(document, \"click.bs.button.data-api\", X, t => {\n t.preventDefault();\n const e = t.target.closest(X);\n Y.getOrCreateInstance(e).toggle();\n }), m(Y);\n const U = \".bs.swipe\",\n G = `touchstart${U}`,\n J = `touchmove${U}`,\n Z = `touchend${U}`,\n tt = `pointerdown${U}`,\n et = `pointerup${U}`,\n it = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null\n },\n nt = {\n endCallback: \"(function|null)\",\n leftCallback: \"(function|null)\",\n rightCallback: \"(function|null)\"\n };\n class st extends H {\n constructor(t, e) {\n super(), this._element = t, t && st.isSupported() && (this._config = this._getConfig(e), this._deltaX = 0, this._supportPointerEvents = Boolean(window.PointerEvent), this._initEvents());\n }\n static get Default() {\n return it;\n }\n static get DefaultType() {\n return nt;\n }\n static get NAME() {\n return \"swipe\";\n }\n dispose() {\n N.off(this._element, U);\n }\n _start(t) {\n this._supportPointerEvents ? this._eventIsPointerPenTouch(t) && (this._deltaX = t.clientX) : this._deltaX = t.touches[0].clientX;\n }\n _end(t) {\n this._eventIsPointerPenTouch(t) && (this._deltaX = t.clientX - this._deltaX), this._handleSwipe(), g(this._config.endCallback);\n }\n _move(t) {\n this._deltaX = t.touches && t.touches.length > 1 ? 0 : t.touches[0].clientX - this._deltaX;\n }\n _handleSwipe() {\n const t = Math.abs(this._deltaX);\n if (t <= 40) return;\n const e = t / this._deltaX;\n this._deltaX = 0, e && g(e > 0 ? this._config.rightCallback : this._config.leftCallback);\n }\n _initEvents() {\n this._supportPointerEvents ? (N.on(this._element, tt, t => this._start(t)), N.on(this._element, et, t => this._end(t)), this._element.classList.add(\"pointer-event\")) : (N.on(this._element, G, t => this._start(t)), N.on(this._element, J, t => this._move(t)), N.on(this._element, Z, t => this._end(t)));\n }\n _eventIsPointerPenTouch(t) {\n return this._supportPointerEvents && (\"pen\" === t.pointerType || \"touch\" === t.pointerType);\n }\n static isSupported() {\n return \"ontouchstart\" in document.documentElement || navigator.maxTouchPoints > 0;\n }\n }\n const ot = \".bs.carousel\",\n rt = \".data-api\",\n at = \"next\",\n lt = \"prev\",\n ct = \"left\",\n ht = \"right\",\n dt = `slide${ot}`,\n ut = `slid${ot}`,\n ft = `keydown${ot}`,\n pt = `mouseenter${ot}`,\n mt = `mouseleave${ot}`,\n gt = `dragstart${ot}`,\n _t = `load${ot}${rt}`,\n bt = `click${ot}${rt}`,\n vt = \"carousel\",\n yt = \"active\",\n wt = \".active\",\n At = \".carousel-item\",\n Et = wt + At,\n Tt = {\n ArrowLeft: ht,\n ArrowRight: ct\n },\n Ct = {\n interval: 5e3,\n keyboard: !0,\n pause: \"hover\",\n ride: !1,\n touch: !0,\n wrap: !0\n },\n Ot = {\n interval: \"(number|boolean)\",\n keyboard: \"boolean\",\n pause: \"(string|boolean)\",\n ride: \"(boolean|string)\",\n touch: \"boolean\",\n wrap: \"boolean\"\n };\n class xt extends W {\n constructor(t, e) {\n super(t, e), this._interval = null, this._activeElement = null, this._isSliding = !1, this.touchTimeout = null, this._swipeHelper = null, this._indicatorsElement = z.findOne(\".carousel-indicators\", this._element), this._addEventListeners(), this._config.ride === vt && this.cycle();\n }\n static get Default() {\n return Ct;\n }\n static get DefaultType() {\n return Ot;\n }\n static get NAME() {\n return \"carousel\";\n }\n next() {\n this._slide(at);\n }\n nextWhenVisible() {\n !document.hidden && a(this._element) && this.next();\n }\n prev() {\n this._slide(lt);\n }\n pause() {\n this._isSliding && s(this._element), this._clearInterval();\n }\n cycle() {\n this._clearInterval(), this._updateInterval(), this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);\n }\n _maybeEnableCycle() {\n this._config.ride && (this._isSliding ? N.one(this._element, ut, () => this.cycle()) : this.cycle());\n }\n to(t) {\n const e = this._getItems();\n if (t > e.length - 1 || t < 0) return;\n if (this._isSliding) return void N.one(this._element, ut, () => this.to(t));\n const i = this._getItemIndex(this._getActive());\n if (i === t) return;\n const n = t > i ? at : lt;\n this._slide(n, e[t]);\n }\n dispose() {\n this._swipeHelper && this._swipeHelper.dispose(), super.dispose();\n }\n _configAfterMerge(t) {\n return t.defaultInterval = t.interval, t;\n }\n _addEventListeners() {\n this._config.keyboard && N.on(this._element, ft, t => this._keydown(t)), \"hover\" === this._config.pause && (N.on(this._element, pt, () => this.pause()), N.on(this._element, mt, () => this._maybeEnableCycle())), this._config.touch && st.isSupported() && this._addTouchEventListeners();\n }\n _addTouchEventListeners() {\n for (const t of z.find(\".carousel-item img\", this._element)) N.on(t, gt, t => t.preventDefault());\n const t = {\n leftCallback: () => this._slide(this._directionToOrder(ct)),\n rightCallback: () => this._slide(this._directionToOrder(ht)),\n endCallback: () => {\n \"hover\" === this._config.pause && (this.pause(), this.touchTimeout && clearTimeout(this.touchTimeout), this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), 500 + this._config.interval));\n }\n };\n this._swipeHelper = new st(this._element, t);\n }\n _keydown(t) {\n if (/input|textarea/i.test(t.target.tagName)) return;\n const e = Tt[t.key];\n e && (t.preventDefault(), this._slide(this._directionToOrder(e)));\n }\n _getItemIndex(t) {\n return this._getItems().indexOf(t);\n }\n _setActiveIndicatorElement(t) {\n if (!this._indicatorsElement) return;\n const e = z.findOne(wt, this._indicatorsElement);\n e.classList.remove(yt), e.removeAttribute(\"aria-current\");\n const i = z.findOne(`[data-bs-slide-to=\"${t}\"]`, this._indicatorsElement);\n i && (i.classList.add(yt), i.setAttribute(\"aria-current\", \"true\"));\n }\n _updateInterval() {\n const t = this._activeElement || this._getActive();\n if (!t) return;\n const e = Number.parseInt(t.getAttribute(\"data-bs-interval\"), 10);\n this._config.interval = e || this._config.defaultInterval;\n }\n _slide(t) {\n let e = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (this._isSliding) return;\n const i = this._getActive(),\n n = t === at,\n s = e || b(this._getItems(), i, n, this._config.wrap);\n if (s === i) return;\n const o = this._getItemIndex(s),\n r = e => N.trigger(this._element, e, {\n relatedTarget: s,\n direction: this._orderToDirection(t),\n from: this._getItemIndex(i),\n to: o\n });\n if (r(dt).defaultPrevented) return;\n if (!i || !s) return;\n const a = Boolean(this._interval);\n this.pause(), this._isSliding = !0, this._setActiveIndicatorElement(o), this._activeElement = s;\n const l = n ? \"carousel-item-start\" : \"carousel-item-end\",\n c = n ? \"carousel-item-next\" : \"carousel-item-prev\";\n s.classList.add(c), d(s), i.classList.add(l), s.classList.add(l), this._queueCallback(() => {\n s.classList.remove(l, c), s.classList.add(yt), i.classList.remove(yt, c, l), this._isSliding = !1, r(ut);\n }, i, this._isAnimated()), a && this.cycle();\n }\n _isAnimated() {\n return this._element.classList.contains(\"slide\");\n }\n _getActive() {\n return z.findOne(Et, this._element);\n }\n _getItems() {\n return z.find(At, this._element);\n }\n _clearInterval() {\n this._interval && (clearInterval(this._interval), this._interval = null);\n }\n _directionToOrder(t) {\n return p() ? t === ct ? lt : at : t === ct ? at : lt;\n }\n _orderToDirection(t) {\n return p() ? t === lt ? ct : ht : t === lt ? ht : ct;\n }\n static jQueryInterface(t) {\n return this.each(function () {\n const e = xt.getOrCreateInstance(this, t);\n if (\"number\" != typeof t) {\n if (\"string\" == typeof t) {\n if (void 0 === e[t] || t.startsWith(\"_\") || \"constructor\" === t) throw new TypeError(`No method named \"${t}\"`);\n e[t]();\n }\n } else e.to(t);\n });\n }\n }\n N.on(document, bt, \"[data-bs-slide], [data-bs-slide-to]\", function (t) {\n const e = z.getElementFromSelector(this);\n if (!e || !e.classList.contains(vt)) return;\n t.preventDefault();\n const i = xt.getOrCreateInstance(e),\n n = this.getAttribute(\"data-bs-slide-to\");\n return n ? (i.to(n), void i._maybeEnableCycle()) : \"next\" === F.getDataAttribute(this, \"slide\") ? (i.next(), void i._maybeEnableCycle()) : (i.prev(), void i._maybeEnableCycle());\n }), N.on(window, _t, () => {\n const t = z.find('[data-bs-ride=\"carousel\"]');\n for (const e of t) xt.getOrCreateInstance(e);\n }), m(xt);\n const kt = \".bs.collapse\",\n Lt = `show${kt}`,\n St = `shown${kt}`,\n Dt = `hide${kt}`,\n $t = `hidden${kt}`,\n It = `click${kt}.data-api`,\n Nt = \"show\",\n Pt = \"collapse\",\n jt = \"collapsing\",\n Mt = `:scope .${Pt} .${Pt}`,\n Ft = '[data-bs-toggle=\"collapse\"]',\n Ht = {\n parent: null,\n toggle: !0\n },\n Wt = {\n parent: \"(null|element)\",\n toggle: \"boolean\"\n };\n class Bt extends W {\n constructor(t, e) {\n super(t, e), this._isTransitioning = !1, this._triggerArray = [];\n const i = z.find(Ft);\n for (const t of i) {\n const e = z.getSelectorFromElement(t),\n i = z.find(e).filter(t => t === this._element);\n null !== e && i.length && this._triggerArray.push(t);\n }\n this._initializeChildren(), this._config.parent || this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()), this._config.toggle && this.toggle();\n }\n static get Default() {\n return Ht;\n }\n static get DefaultType() {\n return Wt;\n }\n static get NAME() {\n return \"collapse\";\n }\n toggle() {\n this._isShown() ? this.hide() : this.show();\n }\n show() {\n if (this._isTransitioning || this._isShown()) return;\n let t = [];\n if (this._config.parent && (t = this._getFirstLevelChildren(\".collapse.show, .collapse.collapsing\").filter(t => t !== this._element).map(t => Bt.getOrCreateInstance(t, {\n toggle: !1\n }))), t.length && t[0]._isTransitioning) return;\n if (N.trigger(this._element, Lt).defaultPrevented) return;\n for (const e of t) e.hide();\n const e = this._getDimension();\n this._element.classList.remove(Pt), this._element.classList.add(jt), this._element.style[e] = 0, this._addAriaAndCollapsedClass(this._triggerArray, !0), this._isTransitioning = !0;\n const i = `scroll${e[0].toUpperCase() + e.slice(1)}`;\n this._queueCallback(() => {\n this._isTransitioning = !1, this._element.classList.remove(jt), this._element.classList.add(Pt, Nt), this._element.style[e] = \"\", N.trigger(this._element, St);\n }, this._element, !0), this._element.style[e] = `${this._element[i]}px`;\n }\n hide() {\n if (this._isTransitioning || !this._isShown()) return;\n if (N.trigger(this._element, Dt).defaultPrevented) return;\n const t = this._getDimension();\n this._element.style[t] = `${this._element.getBoundingClientRect()[t]}px`, d(this._element), this._element.classList.add(jt), this._element.classList.remove(Pt, Nt);\n for (const t of this._triggerArray) {\n const e = z.getElementFromSelector(t);\n e && !this._isShown(e) && this._addAriaAndCollapsedClass([t], !1);\n }\n this._isTransitioning = !0, this._element.style[t] = \"\", this._queueCallback(() => {\n this._isTransitioning = !1, this._element.classList.remove(jt), this._element.classList.add(Pt), N.trigger(this._element, $t);\n }, this._element, !0);\n }\n _isShown() {\n let t = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this._element;\n return t.classList.contains(Nt);\n }\n _configAfterMerge(t) {\n return t.toggle = Boolean(t.toggle), t.parent = r(t.parent), t;\n }\n _getDimension() {\n return this._element.classList.contains(\"collapse-horizontal\") ? \"width\" : \"height\";\n }\n _initializeChildren() {\n if (!this._config.parent) return;\n const t = this._getFirstLevelChildren(Ft);\n for (const e of t) {\n const t = z.getElementFromSelector(e);\n t && this._addAriaAndCollapsedClass([e], this._isShown(t));\n }\n }\n _getFirstLevelChildren(t) {\n const e = z.find(Mt, this._config.parent);\n return z.find(t, this._config.parent).filter(t => !e.includes(t));\n }\n _addAriaAndCollapsedClass(t, e) {\n if (t.length) for (const i of t) i.classList.toggle(\"collapsed\", !e), i.setAttribute(\"aria-expanded\", e);\n }\n static jQueryInterface(t) {\n const e = {};\n return \"string\" == typeof t && /show|hide/.test(t) && (e.toggle = !1), this.each(function () {\n const i = Bt.getOrCreateInstance(this, e);\n if (\"string\" == typeof t) {\n if (void 0 === i[t]) throw new TypeError(`No method named \"${t}\"`);\n i[t]();\n }\n });\n }\n }\n N.on(document, It, Ft, function (t) {\n (\"A\" === t.target.tagName || t.delegateTarget && \"A\" === t.delegateTarget.tagName) && t.preventDefault();\n for (const t of z.getMultipleElementsFromSelector(this)) Bt.getOrCreateInstance(t, {\n toggle: !1\n }).toggle();\n }), m(Bt);\n var zt = \"top\",\n Rt = \"bottom\",\n qt = \"right\",\n Vt = \"left\",\n Kt = \"auto\",\n Qt = [zt, Rt, qt, Vt],\n Xt = \"start\",\n Yt = \"end\",\n Ut = \"clippingParents\",\n Gt = \"viewport\",\n Jt = \"popper\",\n Zt = \"reference\",\n te = Qt.reduce(function (t, e) {\n return t.concat([e + \"-\" + Xt, e + \"-\" + Yt]);\n }, []),\n ee = [].concat(Qt, [Kt]).reduce(function (t, e) {\n return t.concat([e, e + \"-\" + Xt, e + \"-\" + Yt]);\n }, []),\n ie = \"beforeRead\",\n ne = \"read\",\n se = \"afterRead\",\n oe = \"beforeMain\",\n re = \"main\",\n ae = \"afterMain\",\n le = \"beforeWrite\",\n ce = \"write\",\n he = \"afterWrite\",\n de = [ie, ne, se, oe, re, ae, le, ce, he];\n function ue(t) {\n return t ? (t.nodeName || \"\").toLowerCase() : null;\n }\n function fe(t) {\n if (null == t) return window;\n if (\"[object Window]\" !== t.toString()) {\n var e = t.ownerDocument;\n return e && e.defaultView || window;\n }\n return t;\n }\n function pe(t) {\n return t instanceof fe(t).Element || t instanceof Element;\n }\n function me(t) {\n return t instanceof fe(t).HTMLElement || t instanceof HTMLElement;\n }\n function ge(t) {\n return \"undefined\" != typeof ShadowRoot && (t instanceof fe(t).ShadowRoot || t instanceof ShadowRoot);\n }\n const _e = {\n name: \"applyStyles\",\n enabled: !0,\n phase: \"write\",\n fn: function (t) {\n var e = t.state;\n Object.keys(e.elements).forEach(function (t) {\n var i = e.styles[t] || {},\n n = e.attributes[t] || {},\n s = e.elements[t];\n me(s) && ue(s) && (Object.assign(s.style, i), Object.keys(n).forEach(function (t) {\n var e = n[t];\n !1 === e ? s.removeAttribute(t) : s.setAttribute(t, !0 === e ? \"\" : e);\n }));\n });\n },\n effect: function (t) {\n var e = t.state,\n i = {\n popper: {\n position: e.options.strategy,\n left: \"0\",\n top: \"0\",\n margin: \"0\"\n },\n arrow: {\n position: \"absolute\"\n },\n reference: {}\n };\n return Object.assign(e.elements.popper.style, i.popper), e.styles = i, e.elements.arrow && Object.assign(e.elements.arrow.style, i.arrow), function () {\n Object.keys(e.elements).forEach(function (t) {\n var n = e.elements[t],\n s = e.attributes[t] || {},\n o = Object.keys(e.styles.hasOwnProperty(t) ? e.styles[t] : i[t]).reduce(function (t, e) {\n return t[e] = \"\", t;\n }, {});\n me(n) && ue(n) && (Object.assign(n.style, o), Object.keys(s).forEach(function (t) {\n n.removeAttribute(t);\n }));\n });\n };\n },\n requires: [\"computeStyles\"]\n };\n function be(t) {\n return t.split(\"-\")[0];\n }\n var ve = Math.max,\n ye = Math.min,\n we = Math.round;\n function Ae() {\n var t = navigator.userAgentData;\n return null != t && t.brands && Array.isArray(t.brands) ? t.brands.map(function (t) {\n return t.brand + \"/\" + t.version;\n }).join(\" \") : navigator.userAgent;\n }\n function Ee() {\n return !/^((?!chrome|android).)*safari/i.test(Ae());\n }\n function Te(t, e, i) {\n void 0 === e && (e = !1), void 0 === i && (i = !1);\n var n = t.getBoundingClientRect(),\n s = 1,\n o = 1;\n e && me(t) && (s = t.offsetWidth > 0 && we(n.width) / t.offsetWidth || 1, o = t.offsetHeight > 0 && we(n.height) / t.offsetHeight || 1);\n var r = (pe(t) ? fe(t) : window).visualViewport,\n a = !Ee() && i,\n l = (n.left + (a && r ? r.offsetLeft : 0)) / s,\n c = (n.top + (a && r ? r.offsetTop : 0)) / o,\n h = n.width / s,\n d = n.height / o;\n return {\n width: h,\n height: d,\n top: c,\n right: l + h,\n bottom: c + d,\n left: l,\n x: l,\n y: c\n };\n }\n function Ce(t) {\n var e = Te(t),\n i = t.offsetWidth,\n n = t.offsetHeight;\n return Math.abs(e.width - i) <= 1 && (i = e.width), Math.abs(e.height - n) <= 1 && (n = e.height), {\n x: t.offsetLeft,\n y: t.offsetTop,\n width: i,\n height: n\n };\n }\n function Oe(t, e) {\n var i = e.getRootNode && e.getRootNode();\n if (t.contains(e)) return !0;\n if (i && ge(i)) {\n var n = e;\n do {\n if (n && t.isSameNode(n)) return !0;\n n = n.parentNode || n.host;\n } while (n);\n }\n return !1;\n }\n function xe(t) {\n return fe(t).getComputedStyle(t);\n }\n function ke(t) {\n return [\"table\", \"td\", \"th\"].indexOf(ue(t)) >= 0;\n }\n function Le(t) {\n return ((pe(t) ? t.ownerDocument : t.document) || window.document).documentElement;\n }\n function Se(t) {\n return \"html\" === ue(t) ? t : t.assignedSlot || t.parentNode || (ge(t) ? t.host : null) || Le(t);\n }\n function De(t) {\n return me(t) && \"fixed\" !== xe(t).position ? t.offsetParent : null;\n }\n function $e(t) {\n for (var e = fe(t), i = De(t); i && ke(i) && \"static\" === xe(i).position;) i = De(i);\n return i && (\"html\" === ue(i) || \"body\" === ue(i) && \"static\" === xe(i).position) ? e : i || function (t) {\n var e = /firefox/i.test(Ae());\n if (/Trident/i.test(Ae()) && me(t) && \"fixed\" === xe(t).position) return null;\n var i = Se(t);\n for (ge(i) && (i = i.host); me(i) && [\"html\", \"body\"].indexOf(ue(i)) < 0;) {\n var n = xe(i);\n if (\"none\" !== n.transform || \"none\" !== n.perspective || \"paint\" === n.contain || -1 !== [\"transform\", \"perspective\"].indexOf(n.willChange) || e && \"filter\" === n.willChange || e && n.filter && \"none\" !== n.filter) return i;\n i = i.parentNode;\n }\n return null;\n }(t) || e;\n }\n function Ie(t) {\n return [\"top\", \"bottom\"].indexOf(t) >= 0 ? \"x\" : \"y\";\n }\n function Ne(t, e, i) {\n return ve(t, ye(e, i));\n }\n function Pe(t) {\n return Object.assign({}, {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }, t);\n }\n function je(t, e) {\n return e.reduce(function (e, i) {\n return e[i] = t, e;\n }, {});\n }\n const Me = {\n name: \"arrow\",\n enabled: !0,\n phase: \"main\",\n fn: function (t) {\n var e,\n i = t.state,\n n = t.name,\n s = t.options,\n o = i.elements.arrow,\n r = i.modifiersData.popperOffsets,\n a = be(i.placement),\n l = Ie(a),\n c = [Vt, qt].indexOf(a) >= 0 ? \"height\" : \"width\";\n if (o && r) {\n var h = function (t, e) {\n return Pe(\"number\" != typeof (t = \"function\" == typeof t ? t(Object.assign({}, e.rects, {\n placement: e.placement\n })) : t) ? t : je(t, Qt));\n }(s.padding, i),\n d = Ce(o),\n u = \"y\" === l ? zt : Vt,\n f = \"y\" === l ? Rt : qt,\n p = i.rects.reference[c] + i.rects.reference[l] - r[l] - i.rects.popper[c],\n m = r[l] - i.rects.reference[l],\n g = $e(o),\n _ = g ? \"y\" === l ? g.clientHeight || 0 : g.clientWidth || 0 : 0,\n b = p / 2 - m / 2,\n v = h[u],\n y = _ - d[c] - h[f],\n w = _ / 2 - d[c] / 2 + b,\n A = Ne(v, w, y),\n E = l;\n i.modifiersData[n] = ((e = {})[E] = A, e.centerOffset = A - w, e);\n }\n },\n effect: function (t) {\n var e = t.state,\n i = t.options.element,\n n = void 0 === i ? \"[data-popper-arrow]\" : i;\n null != n && (\"string\" != typeof n || (n = e.elements.popper.querySelector(n))) && Oe(e.elements.popper, n) && (e.elements.arrow = n);\n },\n requires: [\"popperOffsets\"],\n requiresIfExists: [\"preventOverflow\"]\n };\n function Fe(t) {\n return t.split(\"-\")[1];\n }\n var He = {\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n left: \"auto\"\n };\n function We(t) {\n var e,\n i = t.popper,\n n = t.popperRect,\n s = t.placement,\n o = t.variation,\n r = t.offsets,\n a = t.position,\n l = t.gpuAcceleration,\n c = t.adaptive,\n h = t.roundOffsets,\n d = t.isFixed,\n u = r.x,\n f = void 0 === u ? 0 : u,\n p = r.y,\n m = void 0 === p ? 0 : p,\n g = \"function\" == typeof h ? h({\n x: f,\n y: m\n }) : {\n x: f,\n y: m\n };\n f = g.x, m = g.y;\n var _ = r.hasOwnProperty(\"x\"),\n b = r.hasOwnProperty(\"y\"),\n v = Vt,\n y = zt,\n w = window;\n if (c) {\n var A = $e(i),\n E = \"clientHeight\",\n T = \"clientWidth\";\n A === fe(i) && \"static\" !== xe(A = Le(i)).position && \"absolute\" === a && (E = \"scrollHeight\", T = \"scrollWidth\"), (s === zt || (s === Vt || s === qt) && o === Yt) && (y = Rt, m -= (d && A === w && w.visualViewport ? w.visualViewport.height : A[E]) - n.height, m *= l ? 1 : -1), s !== Vt && (s !== zt && s !== Rt || o !== Yt) || (v = qt, f -= (d && A === w && w.visualViewport ? w.visualViewport.width : A[T]) - n.width, f *= l ? 1 : -1);\n }\n var C,\n O = Object.assign({\n position: a\n }, c && He),\n x = !0 === h ? function (t, e) {\n var i = t.x,\n n = t.y,\n s = e.devicePixelRatio || 1;\n return {\n x: we(i * s) / s || 0,\n y: we(n * s) / s || 0\n };\n }({\n x: f,\n y: m\n }, fe(i)) : {\n x: f,\n y: m\n };\n return f = x.x, m = x.y, l ? Object.assign({}, O, ((C = {})[y] = b ? \"0\" : \"\", C[v] = _ ? \"0\" : \"\", C.transform = (w.devicePixelRatio || 1) <= 1 ? \"translate(\" + f + \"px, \" + m + \"px)\" : \"translate3d(\" + f + \"px, \" + m + \"px, 0)\", C)) : Object.assign({}, O, ((e = {})[y] = b ? m + \"px\" : \"\", e[v] = _ ? f + \"px\" : \"\", e.transform = \"\", e));\n }\n const Be = {\n name: \"computeStyles\",\n enabled: !0,\n phase: \"beforeWrite\",\n fn: function (t) {\n var e = t.state,\n i = t.options,\n n = i.gpuAcceleration,\n s = void 0 === n || n,\n o = i.adaptive,\n r = void 0 === o || o,\n a = i.roundOffsets,\n l = void 0 === a || a,\n c = {\n placement: be(e.placement),\n variation: Fe(e.placement),\n popper: e.elements.popper,\n popperRect: e.rects.popper,\n gpuAcceleration: s,\n isFixed: \"fixed\" === e.options.strategy\n };\n null != e.modifiersData.popperOffsets && (e.styles.popper = Object.assign({}, e.styles.popper, We(Object.assign({}, c, {\n offsets: e.modifiersData.popperOffsets,\n position: e.options.strategy,\n adaptive: r,\n roundOffsets: l\n })))), null != e.modifiersData.arrow && (e.styles.arrow = Object.assign({}, e.styles.arrow, We(Object.assign({}, c, {\n offsets: e.modifiersData.arrow,\n position: \"absolute\",\n adaptive: !1,\n roundOffsets: l\n })))), e.attributes.popper = Object.assign({}, e.attributes.popper, {\n \"data-popper-placement\": e.placement\n });\n },\n data: {}\n };\n var ze = {\n passive: !0\n };\n const Re = {\n name: \"eventListeners\",\n enabled: !0,\n phase: \"write\",\n fn: function () {},\n effect: function (t) {\n var e = t.state,\n i = t.instance,\n n = t.options,\n s = n.scroll,\n o = void 0 === s || s,\n r = n.resize,\n a = void 0 === r || r,\n l = fe(e.elements.popper),\n c = [].concat(e.scrollParents.reference, e.scrollParents.popper);\n return o && c.forEach(function (t) {\n t.addEventListener(\"scroll\", i.update, ze);\n }), a && l.addEventListener(\"resize\", i.update, ze), function () {\n o && c.forEach(function (t) {\n t.removeEventListener(\"scroll\", i.update, ze);\n }), a && l.removeEventListener(\"resize\", i.update, ze);\n };\n },\n data: {}\n };\n var qe = {\n left: \"right\",\n right: \"left\",\n bottom: \"top\",\n top: \"bottom\"\n };\n function Ve(t) {\n return t.replace(/left|right|bottom|top/g, function (t) {\n return qe[t];\n });\n }\n var Ke = {\n start: \"end\",\n end: \"start\"\n };\n function Qe(t) {\n return t.replace(/start|end/g, function (t) {\n return Ke[t];\n });\n }\n function Xe(t) {\n var e = fe(t);\n return {\n scrollLeft: e.pageXOffset,\n scrollTop: e.pageYOffset\n };\n }\n function Ye(t) {\n return Te(Le(t)).left + Xe(t).scrollLeft;\n }\n function Ue(t) {\n var e = xe(t),\n i = e.overflow,\n n = e.overflowX,\n s = e.overflowY;\n return /auto|scroll|overlay|hidden/.test(i + s + n);\n }\n function Ge(t) {\n return [\"html\", \"body\", \"#document\"].indexOf(ue(t)) >= 0 ? t.ownerDocument.body : me(t) && Ue(t) ? t : Ge(Se(t));\n }\n function Je(t, e) {\n var i;\n void 0 === e && (e = []);\n var n = Ge(t),\n s = n === (null == (i = t.ownerDocument) ? void 0 : i.body),\n o = fe(n),\n r = s ? [o].concat(o.visualViewport || [], Ue(n) ? n : []) : n,\n a = e.concat(r);\n return s ? a : a.concat(Je(Se(r)));\n }\n function Ze(t) {\n return Object.assign({}, t, {\n left: t.x,\n top: t.y,\n right: t.x + t.width,\n bottom: t.y + t.height\n });\n }\n function ti(t, e, i) {\n return e === Gt ? Ze(function (t, e) {\n var i = fe(t),\n n = Le(t),\n s = i.visualViewport,\n o = n.clientWidth,\n r = n.clientHeight,\n a = 0,\n l = 0;\n if (s) {\n o = s.width, r = s.height;\n var c = Ee();\n (c || !c && \"fixed\" === e) && (a = s.offsetLeft, l = s.offsetTop);\n }\n return {\n width: o,\n height: r,\n x: a + Ye(t),\n y: l\n };\n }(t, i)) : pe(e) ? function (t, e) {\n var i = Te(t, !1, \"fixed\" === e);\n return i.top = i.top + t.clientTop, i.left = i.left + t.clientLeft, i.bottom = i.top + t.clientHeight, i.right = i.left + t.clientWidth, i.width = t.clientWidth, i.height = t.clientHeight, i.x = i.left, i.y = i.top, i;\n }(e, i) : Ze(function (t) {\n var e,\n i = Le(t),\n n = Xe(t),\n s = null == (e = t.ownerDocument) ? void 0 : e.body,\n o = ve(i.scrollWidth, i.clientWidth, s ? s.scrollWidth : 0, s ? s.clientWidth : 0),\n r = ve(i.scrollHeight, i.clientHeight, s ? s.scrollHeight : 0, s ? s.clientHeight : 0),\n a = -n.scrollLeft + Ye(t),\n l = -n.scrollTop;\n return \"rtl\" === xe(s || i).direction && (a += ve(i.clientWidth, s ? s.clientWidth : 0) - o), {\n width: o,\n height: r,\n x: a,\n y: l\n };\n }(Le(t)));\n }\n function ei(t) {\n var e,\n i = t.reference,\n n = t.element,\n s = t.placement,\n o = s ? be(s) : null,\n r = s ? Fe(s) : null,\n a = i.x + i.width / 2 - n.width / 2,\n l = i.y + i.height / 2 - n.height / 2;\n switch (o) {\n case zt:\n e = {\n x: a,\n y: i.y - n.height\n };\n break;\n case Rt:\n e = {\n x: a,\n y: i.y + i.height\n };\n break;\n case qt:\n e = {\n x: i.x + i.width,\n y: l\n };\n break;\n case Vt:\n e = {\n x: i.x - n.width,\n y: l\n };\n break;\n default:\n e = {\n x: i.x,\n y: i.y\n };\n }\n var c = o ? Ie(o) : null;\n if (null != c) {\n var h = \"y\" === c ? \"height\" : \"width\";\n switch (r) {\n case Xt:\n e[c] = e[c] - (i[h] / 2 - n[h] / 2);\n break;\n case Yt:\n e[c] = e[c] + (i[h] / 2 - n[h] / 2);\n }\n }\n return e;\n }\n function ii(t, e) {\n void 0 === e && (e = {});\n var i = e,\n n = i.placement,\n s = void 0 === n ? t.placement : n,\n o = i.strategy,\n r = void 0 === o ? t.strategy : o,\n a = i.boundary,\n l = void 0 === a ? Ut : a,\n c = i.rootBoundary,\n h = void 0 === c ? Gt : c,\n d = i.elementContext,\n u = void 0 === d ? Jt : d,\n f = i.altBoundary,\n p = void 0 !== f && f,\n m = i.padding,\n g = void 0 === m ? 0 : m,\n _ = Pe(\"number\" != typeof g ? g : je(g, Qt)),\n b = u === Jt ? Zt : Jt,\n v = t.rects.popper,\n y = t.elements[p ? b : u],\n w = function (t, e, i, n) {\n var s = \"clippingParents\" === e ? function (t) {\n var e = Je(Se(t)),\n i = [\"absolute\", \"fixed\"].indexOf(xe(t).position) >= 0 && me(t) ? $e(t) : t;\n return pe(i) ? e.filter(function (t) {\n return pe(t) && Oe(t, i) && \"body\" !== ue(t);\n }) : [];\n }(t) : [].concat(e),\n o = [].concat(s, [i]),\n r = o[0],\n a = o.reduce(function (e, i) {\n var s = ti(t, i, n);\n return e.top = ve(s.top, e.top), e.right = ye(s.right, e.right), e.bottom = ye(s.bottom, e.bottom), e.left = ve(s.left, e.left), e;\n }, ti(t, r, n));\n return a.width = a.right - a.left, a.height = a.bottom - a.top, a.x = a.left, a.y = a.top, a;\n }(pe(y) ? y : y.contextElement || Le(t.elements.popper), l, h, r),\n A = Te(t.elements.reference),\n E = ei({\n reference: A,\n element: v,\n strategy: \"absolute\",\n placement: s\n }),\n T = Ze(Object.assign({}, v, E)),\n C = u === Jt ? T : A,\n O = {\n top: w.top - C.top + _.top,\n bottom: C.bottom - w.bottom + _.bottom,\n left: w.left - C.left + _.left,\n right: C.right - w.right + _.right\n },\n x = t.modifiersData.offset;\n if (u === Jt && x) {\n var k = x[s];\n Object.keys(O).forEach(function (t) {\n var e = [qt, Rt].indexOf(t) >= 0 ? 1 : -1,\n i = [zt, Rt].indexOf(t) >= 0 ? \"y\" : \"x\";\n O[t] += k[i] * e;\n });\n }\n return O;\n }\n function ni(t, e) {\n void 0 === e && (e = {});\n var i = e,\n n = i.placement,\n s = i.boundary,\n o = i.rootBoundary,\n r = i.padding,\n a = i.flipVariations,\n l = i.allowedAutoPlacements,\n c = void 0 === l ? ee : l,\n h = Fe(n),\n d = h ? a ? te : te.filter(function (t) {\n return Fe(t) === h;\n }) : Qt,\n u = d.filter(function (t) {\n return c.indexOf(t) >= 0;\n });\n 0 === u.length && (u = d);\n var f = u.reduce(function (e, i) {\n return e[i] = ii(t, {\n placement: i,\n boundary: s,\n rootBoundary: o,\n padding: r\n })[be(i)], e;\n }, {});\n return Object.keys(f).sort(function (t, e) {\n return f[t] - f[e];\n });\n }\n const si = {\n name: \"flip\",\n enabled: !0,\n phase: \"main\",\n fn: function (t) {\n var e = t.state,\n i = t.options,\n n = t.name;\n if (!e.modifiersData[n]._skip) {\n for (var s = i.mainAxis, o = void 0 === s || s, r = i.altAxis, a = void 0 === r || r, l = i.fallbackPlacements, c = i.padding, h = i.boundary, d = i.rootBoundary, u = i.altBoundary, f = i.flipVariations, p = void 0 === f || f, m = i.allowedAutoPlacements, g = e.options.placement, _ = be(g), b = l || (_ !== g && p ? function (t) {\n if (be(t) === Kt) return [];\n var e = Ve(t);\n return [Qe(t), e, Qe(e)];\n }(g) : [Ve(g)]), v = [g].concat(b).reduce(function (t, i) {\n return t.concat(be(i) === Kt ? ni(e, {\n placement: i,\n boundary: h,\n rootBoundary: d,\n padding: c,\n flipVariations: p,\n allowedAutoPlacements: m\n }) : i);\n }, []), y = e.rects.reference, w = e.rects.popper, A = new Map(), E = !0, T = v[0], C = 0; C < v.length; C++) {\n var O = v[C],\n x = be(O),\n k = Fe(O) === Xt,\n L = [zt, Rt].indexOf(x) >= 0,\n S = L ? \"width\" : \"height\",\n D = ii(e, {\n placement: O,\n boundary: h,\n rootBoundary: d,\n altBoundary: u,\n padding: c\n }),\n $ = L ? k ? qt : Vt : k ? Rt : zt;\n y[S] > w[S] && ($ = Ve($));\n var I = Ve($),\n N = [];\n if (o && N.push(D[x] <= 0), a && N.push(D[$] <= 0, D[I] <= 0), N.every(function (t) {\n return t;\n })) {\n T = O, E = !1;\n break;\n }\n A.set(O, N);\n }\n if (E) for (var P = function (t) {\n var e = v.find(function (e) {\n var i = A.get(e);\n if (i) return i.slice(0, t).every(function (t) {\n return t;\n });\n });\n if (e) return T = e, \"break\";\n }, j = p ? 3 : 1; j > 0 && \"break\" !== P(j); j--);\n e.placement !== T && (e.modifiersData[n]._skip = !0, e.placement = T, e.reset = !0);\n }\n },\n requiresIfExists: [\"offset\"],\n data: {\n _skip: !1\n }\n };\n function oi(t, e, i) {\n return void 0 === i && (i = {\n x: 0,\n y: 0\n }), {\n top: t.top - e.height - i.y,\n right: t.right - e.width + i.x,\n bottom: t.bottom - e.height + i.y,\n left: t.left - e.width - i.x\n };\n }\n function ri(t) {\n return [zt, qt, Rt, Vt].some(function (e) {\n return t[e] >= 0;\n });\n }\n const ai = {\n name: \"hide\",\n enabled: !0,\n phase: \"main\",\n requiresIfExists: [\"preventOverflow\"],\n fn: function (t) {\n var e = t.state,\n i = t.name,\n n = e.rects.reference,\n s = e.rects.popper,\n o = e.modifiersData.preventOverflow,\n r = ii(e, {\n elementContext: \"reference\"\n }),\n a = ii(e, {\n altBoundary: !0\n }),\n l = oi(r, n),\n c = oi(a, s, o),\n h = ri(l),\n d = ri(c);\n e.modifiersData[i] = {\n referenceClippingOffsets: l,\n popperEscapeOffsets: c,\n isReferenceHidden: h,\n hasPopperEscaped: d\n }, e.attributes.popper = Object.assign({}, e.attributes.popper, {\n \"data-popper-reference-hidden\": h,\n \"data-popper-escaped\": d\n });\n }\n },\n li = {\n name: \"offset\",\n enabled: !0,\n phase: \"main\",\n requires: [\"popperOffsets\"],\n fn: function (t) {\n var e = t.state,\n i = t.options,\n n = t.name,\n s = i.offset,\n o = void 0 === s ? [0, 0] : s,\n r = ee.reduce(function (t, i) {\n return t[i] = function (t, e, i) {\n var n = be(t),\n s = [Vt, zt].indexOf(n) >= 0 ? -1 : 1,\n o = \"function\" == typeof i ? i(Object.assign({}, e, {\n placement: t\n })) : i,\n r = o[0],\n a = o[1];\n return r = r || 0, a = (a || 0) * s, [Vt, qt].indexOf(n) >= 0 ? {\n x: a,\n y: r\n } : {\n x: r,\n y: a\n };\n }(i, e.rects, o), t;\n }, {}),\n a = r[e.placement],\n l = a.x,\n c = a.y;\n null != e.modifiersData.popperOffsets && (e.modifiersData.popperOffsets.x += l, e.modifiersData.popperOffsets.y += c), e.modifiersData[n] = r;\n }\n },\n ci = {\n name: \"popperOffsets\",\n enabled: !0,\n phase: \"read\",\n fn: function (t) {\n var e = t.state,\n i = t.name;\n e.modifiersData[i] = ei({\n reference: e.rects.reference,\n element: e.rects.popper,\n strategy: \"absolute\",\n placement: e.placement\n });\n },\n data: {}\n },\n hi = {\n name: \"preventOverflow\",\n enabled: !0,\n phase: \"main\",\n fn: function (t) {\n var e = t.state,\n i = t.options,\n n = t.name,\n s = i.mainAxis,\n o = void 0 === s || s,\n r = i.altAxis,\n a = void 0 !== r && r,\n l = i.boundary,\n c = i.rootBoundary,\n h = i.altBoundary,\n d = i.padding,\n u = i.tether,\n f = void 0 === u || u,\n p = i.tetherOffset,\n m = void 0 === p ? 0 : p,\n g = ii(e, {\n boundary: l,\n rootBoundary: c,\n padding: d,\n altBoundary: h\n }),\n _ = be(e.placement),\n b = Fe(e.placement),\n v = !b,\n y = Ie(_),\n w = \"x\" === y ? \"y\" : \"x\",\n A = e.modifiersData.popperOffsets,\n E = e.rects.reference,\n T = e.rects.popper,\n C = \"function\" == typeof m ? m(Object.assign({}, e.rects, {\n placement: e.placement\n })) : m,\n O = \"number\" == typeof C ? {\n mainAxis: C,\n altAxis: C\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, C),\n x = e.modifiersData.offset ? e.modifiersData.offset[e.placement] : null,\n k = {\n x: 0,\n y: 0\n };\n if (A) {\n if (o) {\n var L,\n S = \"y\" === y ? zt : Vt,\n D = \"y\" === y ? Rt : qt,\n $ = \"y\" === y ? \"height\" : \"width\",\n I = A[y],\n N = I + g[S],\n P = I - g[D],\n j = f ? -T[$] / 2 : 0,\n M = b === Xt ? E[$] : T[$],\n F = b === Xt ? -T[$] : -E[$],\n H = e.elements.arrow,\n W = f && H ? Ce(H) : {\n width: 0,\n height: 0\n },\n B = e.modifiersData[\"arrow#persistent\"] ? e.modifiersData[\"arrow#persistent\"].padding : {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n },\n z = B[S],\n R = B[D],\n q = Ne(0, E[$], W[$]),\n V = v ? E[$] / 2 - j - q - z - O.mainAxis : M - q - z - O.mainAxis,\n K = v ? -E[$] / 2 + j + q + R + O.mainAxis : F + q + R + O.mainAxis,\n Q = e.elements.arrow && $e(e.elements.arrow),\n X = Q ? \"y\" === y ? Q.clientTop || 0 : Q.clientLeft || 0 : 0,\n Y = null != (L = null == x ? void 0 : x[y]) ? L : 0,\n U = I + K - Y,\n G = Ne(f ? ye(N, I + V - Y - X) : N, I, f ? ve(P, U) : P);\n A[y] = G, k[y] = G - I;\n }\n if (a) {\n var J,\n Z = \"x\" === y ? zt : Vt,\n tt = \"x\" === y ? Rt : qt,\n et = A[w],\n it = \"y\" === w ? \"height\" : \"width\",\n nt = et + g[Z],\n st = et - g[tt],\n ot = -1 !== [zt, Vt].indexOf(_),\n rt = null != (J = null == x ? void 0 : x[w]) ? J : 0,\n at = ot ? nt : et - E[it] - T[it] - rt + O.altAxis,\n lt = ot ? et + E[it] + T[it] - rt - O.altAxis : st,\n ct = f && ot ? function (t, e, i) {\n var n = Ne(t, e, i);\n return n > i ? i : n;\n }(at, et, lt) : Ne(f ? at : nt, et, f ? lt : st);\n A[w] = ct, k[w] = ct - et;\n }\n e.modifiersData[n] = k;\n }\n },\n requiresIfExists: [\"offset\"]\n };\n function di(t, e, i) {\n void 0 === i && (i = !1);\n var n,\n s,\n o = me(e),\n r = me(e) && function (t) {\n var e = t.getBoundingClientRect(),\n i = we(e.width) / t.offsetWidth || 1,\n n = we(e.height) / t.offsetHeight || 1;\n return 1 !== i || 1 !== n;\n }(e),\n a = Le(e),\n l = Te(t, r, i),\n c = {\n scrollLeft: 0,\n scrollTop: 0\n },\n h = {\n x: 0,\n y: 0\n };\n return (o || !o && !i) && ((\"body\" !== ue(e) || Ue(a)) && (c = (n = e) !== fe(n) && me(n) ? {\n scrollLeft: (s = n).scrollLeft,\n scrollTop: s.scrollTop\n } : Xe(n)), me(e) ? ((h = Te(e, !0)).x += e.clientLeft, h.y += e.clientTop) : a && (h.x = Ye(a))), {\n x: l.left + c.scrollLeft - h.x,\n y: l.top + c.scrollTop - h.y,\n width: l.width,\n height: l.height\n };\n }\n function ui(t) {\n var e = new Map(),\n i = new Set(),\n n = [];\n function s(t) {\n i.add(t.name), [].concat(t.requires || [], t.requiresIfExists || []).forEach(function (t) {\n if (!i.has(t)) {\n var n = e.get(t);\n n && s(n);\n }\n }), n.push(t);\n }\n return t.forEach(function (t) {\n e.set(t.name, t);\n }), t.forEach(function (t) {\n i.has(t.name) || s(t);\n }), n;\n }\n var fi = {\n placement: \"bottom\",\n modifiers: [],\n strategy: \"absolute\"\n };\n function pi() {\n for (var t = arguments.length, e = new Array(t), i = 0; i < t; i++) e[i] = arguments[i];\n return !e.some(function (t) {\n return !(t && \"function\" == typeof t.getBoundingClientRect);\n });\n }\n function mi(t) {\n void 0 === t && (t = {});\n var e = t,\n i = e.defaultModifiers,\n n = void 0 === i ? [] : i,\n s = e.defaultOptions,\n o = void 0 === s ? fi : s;\n return function (t, e, i) {\n void 0 === i && (i = o);\n var s,\n r,\n a = {\n placement: \"bottom\",\n orderedModifiers: [],\n options: Object.assign({}, fi, o),\n modifiersData: {},\n elements: {\n reference: t,\n popper: e\n },\n attributes: {},\n styles: {}\n },\n l = [],\n c = !1,\n h = {\n state: a,\n setOptions: function (i) {\n var s = \"function\" == typeof i ? i(a.options) : i;\n d(), a.options = Object.assign({}, o, a.options, s), a.scrollParents = {\n reference: pe(t) ? Je(t) : t.contextElement ? Je(t.contextElement) : [],\n popper: Je(e)\n };\n var r,\n c,\n u = function (t) {\n var e = ui(t);\n return de.reduce(function (t, i) {\n return t.concat(e.filter(function (t) {\n return t.phase === i;\n }));\n }, []);\n }((r = [].concat(n, a.options.modifiers), c = r.reduce(function (t, e) {\n var i = t[e.name];\n return t[e.name] = i ? Object.assign({}, i, e, {\n options: Object.assign({}, i.options, e.options),\n data: Object.assign({}, i.data, e.data)\n }) : e, t;\n }, {}), Object.keys(c).map(function (t) {\n return c[t];\n })));\n return a.orderedModifiers = u.filter(function (t) {\n return t.enabled;\n }), a.orderedModifiers.forEach(function (t) {\n var e = t.name,\n i = t.options,\n n = void 0 === i ? {} : i,\n s = t.effect;\n if (\"function\" == typeof s) {\n var o = s({\n state: a,\n name: e,\n instance: h,\n options: n\n });\n l.push(o || function () {});\n }\n }), h.update();\n },\n forceUpdate: function () {\n if (!c) {\n var t = a.elements,\n e = t.reference,\n i = t.popper;\n if (pi(e, i)) {\n a.rects = {\n reference: di(e, $e(i), \"fixed\" === a.options.strategy),\n popper: Ce(i)\n }, a.reset = !1, a.placement = a.options.placement, a.orderedModifiers.forEach(function (t) {\n return a.modifiersData[t.name] = Object.assign({}, t.data);\n });\n for (var n = 0; n < a.orderedModifiers.length; n++) if (!0 !== a.reset) {\n var s = a.orderedModifiers[n],\n o = s.fn,\n r = s.options,\n l = void 0 === r ? {} : r,\n d = s.name;\n \"function\" == typeof o && (a = o({\n state: a,\n options: l,\n name: d,\n instance: h\n }) || a);\n } else a.reset = !1, n = -1;\n }\n }\n },\n update: (s = function () {\n return new Promise(function (t) {\n h.forceUpdate(), t(a);\n });\n }, function () {\n return r || (r = new Promise(function (t) {\n Promise.resolve().then(function () {\n r = void 0, t(s());\n });\n })), r;\n }),\n destroy: function () {\n d(), c = !0;\n }\n };\n if (!pi(t, e)) return h;\n function d() {\n l.forEach(function (t) {\n return t();\n }), l = [];\n }\n return h.setOptions(i).then(function (t) {\n !c && i.onFirstUpdate && i.onFirstUpdate(t);\n }), h;\n };\n }\n var gi = mi(),\n _i = mi({\n defaultModifiers: [Re, ci, Be, _e]\n }),\n bi = mi({\n defaultModifiers: [Re, ci, Be, _e, li, si, hi, Me, ai]\n });\n const vi = Object.freeze(Object.defineProperty({\n __proto__: null,\n afterMain: ae,\n afterRead: se,\n afterWrite: he,\n applyStyles: _e,\n arrow: Me,\n auto: Kt,\n basePlacements: Qt,\n beforeMain: oe,\n beforeRead: ie,\n beforeWrite: le,\n bottom: Rt,\n clippingParents: Ut,\n computeStyles: Be,\n createPopper: bi,\n createPopperBase: gi,\n createPopperLite: _i,\n detectOverflow: ii,\n end: Yt,\n eventListeners: Re,\n flip: si,\n hide: ai,\n left: Vt,\n main: re,\n modifierPhases: de,\n offset: li,\n placements: ee,\n popper: Jt,\n popperGenerator: mi,\n popperOffsets: ci,\n preventOverflow: hi,\n read: ne,\n reference: Zt,\n right: qt,\n start: Xt,\n top: zt,\n variationPlacements: te,\n viewport: Gt,\n write: ce\n }, Symbol.toStringTag, {\n value: \"Module\"\n })),\n yi = \"dropdown\",\n wi = \".bs.dropdown\",\n Ai = \".data-api\",\n Ei = \"ArrowUp\",\n Ti = \"ArrowDown\",\n Ci = `hide${wi}`,\n Oi = `hidden${wi}`,\n xi = `show${wi}`,\n ki = `shown${wi}`,\n Li = `click${wi}${Ai}`,\n Si = `keydown${wi}${Ai}`,\n Di = `keyup${wi}${Ai}`,\n $i = \"show\",\n Ii = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)',\n Ni = `${Ii}.${$i}`,\n Pi = \".dropdown-menu\",\n ji = p() ? \"top-end\" : \"top-start\",\n Mi = p() ? \"top-start\" : \"top-end\",\n Fi = p() ? \"bottom-end\" : \"bottom-start\",\n Hi = p() ? \"bottom-start\" : \"bottom-end\",\n Wi = p() ? \"left-start\" : \"right-start\",\n Bi = p() ? \"right-start\" : \"left-start\",\n zi = {\n autoClose: !0,\n boundary: \"clippingParents\",\n display: \"dynamic\",\n offset: [0, 2],\n popperConfig: null,\n reference: \"toggle\"\n },\n Ri = {\n autoClose: \"(boolean|string)\",\n boundary: \"(string|element)\",\n display: \"string\",\n offset: \"(array|string|function)\",\n popperConfig: \"(null|object|function)\",\n reference: \"(string|element|object)\"\n };\n class qi extends W {\n constructor(t, e) {\n super(t, e), this._popper = null, this._parent = this._element.parentNode, this._menu = z.next(this._element, Pi)[0] || z.prev(this._element, Pi)[0] || z.findOne(Pi, this._parent), this._inNavbar = this._detectNavbar();\n }\n static get Default() {\n return zi;\n }\n static get DefaultType() {\n return Ri;\n }\n static get NAME() {\n return yi;\n }\n toggle() {\n return this._isShown() ? this.hide() : this.show();\n }\n show() {\n if (l(this._element) || this._isShown()) return;\n const t = {\n relatedTarget: this._element\n };\n if (!N.trigger(this._element, xi, t).defaultPrevented) {\n if (this._createPopper(), \"ontouchstart\" in document.documentElement && !this._parent.closest(\".navbar-nav\")) for (const t of [].concat(...document.body.children)) N.on(t, \"mouseover\", h);\n this._element.focus(), this._element.setAttribute(\"aria-expanded\", !0), this._menu.classList.add($i), this._element.classList.add($i), N.trigger(this._element, ki, t);\n }\n }\n hide() {\n if (l(this._element) || !this._isShown()) return;\n const t = {\n relatedTarget: this._element\n };\n this._completeHide(t);\n }\n dispose() {\n this._popper && this._popper.destroy(), super.dispose();\n }\n update() {\n this._inNavbar = this._detectNavbar(), this._popper && this._popper.update();\n }\n _completeHide(t) {\n if (!N.trigger(this._element, Ci, t).defaultPrevented) {\n if (\"ontouchstart\" in document.documentElement) for (const t of [].concat(...document.body.children)) N.off(t, \"mouseover\", h);\n this._popper && this._popper.destroy(), this._menu.classList.remove($i), this._element.classList.remove($i), this._element.setAttribute(\"aria-expanded\", \"false\"), F.removeDataAttribute(this._menu, \"popper\"), N.trigger(this._element, Oi, t);\n }\n }\n _getConfig(t) {\n if (\"object\" == typeof (t = super._getConfig(t)).reference && !o(t.reference) && \"function\" != typeof t.reference.getBoundingClientRect) throw new TypeError(`${yi.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`);\n return t;\n }\n _createPopper() {\n if (void 0 === vi) throw new TypeError(\"Bootstrap's dropdowns require Popper (https://popper.js.org)\");\n let t = this._element;\n \"parent\" === this._config.reference ? t = this._parent : o(this._config.reference) ? t = r(this._config.reference) : \"object\" == typeof this._config.reference && (t = this._config.reference);\n const e = this._getPopperConfig();\n this._popper = bi(t, this._menu, e);\n }\n _isShown() {\n return this._menu.classList.contains($i);\n }\n _getPlacement() {\n const t = this._parent;\n if (t.classList.contains(\"dropend\")) return Wi;\n if (t.classList.contains(\"dropstart\")) return Bi;\n if (t.classList.contains(\"dropup-center\")) return \"top\";\n if (t.classList.contains(\"dropdown-center\")) return \"bottom\";\n const e = \"end\" === getComputedStyle(this._menu).getPropertyValue(\"--bs-position\").trim();\n return t.classList.contains(\"dropup\") ? e ? Mi : ji : e ? Hi : Fi;\n }\n _detectNavbar() {\n return null !== this._element.closest(\".navbar\");\n }\n _getOffset() {\n const t = this._config.offset;\n return \"string\" == typeof t ? t.split(\",\").map(t => Number.parseInt(t, 10)) : \"function\" == typeof t ? e => t(e, this._element) : t;\n }\n _getPopperConfig() {\n const t = {\n placement: this._getPlacement(),\n modifiers: [{\n name: \"preventOverflow\",\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: \"offset\",\n options: {\n offset: this._getOffset()\n }\n }]\n };\n return (this._inNavbar || \"static\" === this._config.display) && (F.setDataAttribute(this._menu, \"popper\", \"static\"), t.modifiers = [{\n name: \"applyStyles\",\n enabled: !1\n }]), _objectSpread(_objectSpread({}, t), g(this._config.popperConfig, [t]));\n }\n _selectMenuItem(_ref10) {\n let t = _ref10.key,\n e = _ref10.target;\n const i = z.find(\".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)\", this._menu).filter(t => a(t));\n i.length && b(i, e, t === Ti, !i.includes(e)).focus();\n }\n static jQueryInterface(t) {\n return this.each(function () {\n const e = qi.getOrCreateInstance(this, t);\n if (\"string\" == typeof t) {\n if (void 0 === e[t]) throw new TypeError(`No method named \"${t}\"`);\n e[t]();\n }\n });\n }\n static clearMenus(t) {\n if (2 === t.button || \"keyup\" === t.type && \"Tab\" !== t.key) return;\n const e = z.find(Ni);\n for (const i of e) {\n const e = qi.getInstance(i);\n if (!e || !1 === e._config.autoClose) continue;\n const n = t.composedPath(),\n s = n.includes(e._menu);\n if (n.includes(e._element) || \"inside\" === e._config.autoClose && !s || \"outside\" === e._config.autoClose && s) continue;\n if (e._menu.contains(t.target) && (\"keyup\" === t.type && \"Tab\" === t.key || /input|select|option|textarea|form/i.test(t.target.tagName))) continue;\n const o = {\n relatedTarget: e._element\n };\n \"click\" === t.type && (o.clickEvent = t), e._completeHide(o);\n }\n }\n static dataApiKeydownHandler(t) {\n const e = /input|textarea/i.test(t.target.tagName),\n i = \"Escape\" === t.key,\n n = [Ei, Ti].includes(t.key);\n if (!n && !i) return;\n if (e && !i) return;\n t.preventDefault();\n const s = this.matches(Ii) ? this : z.prev(this, Ii)[0] || z.next(this, Ii)[0] || z.findOne(Ii, t.delegateTarget.parentNode),\n o = qi.getOrCreateInstance(s);\n if (n) return t.stopPropagation(), o.show(), void o._selectMenuItem(t);\n o._isShown() && (t.stopPropagation(), o.hide(), s.focus());\n }\n }\n N.on(document, Si, Ii, qi.dataApiKeydownHandler), N.on(document, Si, Pi, qi.dataApiKeydownHandler), N.on(document, Li, qi.clearMenus), N.on(document, Di, qi.clearMenus), N.on(document, Li, Ii, function (t) {\n t.preventDefault(), qi.getOrCreateInstance(this).toggle();\n }), m(qi);\n const Vi = \"backdrop\",\n Ki = \"show\",\n Qi = `mousedown.bs.${Vi}`,\n Xi = {\n className: \"modal-backdrop\",\n clickCallback: null,\n isAnimated: !1,\n isVisible: !0,\n rootElement: \"body\"\n },\n Yi = {\n className: \"string\",\n clickCallback: \"(function|null)\",\n isAnimated: \"boolean\",\n isVisible: \"boolean\",\n rootElement: \"(element|string)\"\n };\n class Ui extends H {\n constructor(t) {\n super(), this._config = this._getConfig(t), this._isAppended = !1, this._element = null;\n }\n static get Default() {\n return Xi;\n }\n static get DefaultType() {\n return Yi;\n }\n static get NAME() {\n return Vi;\n }\n show(t) {\n if (!this._config.isVisible) return void g(t);\n this._append();\n const e = this._getElement();\n this._config.isAnimated && d(e), e.classList.add(Ki), this._emulateAnimation(() => {\n g(t);\n });\n }\n hide(t) {\n this._config.isVisible ? (this._getElement().classList.remove(Ki), this._emulateAnimation(() => {\n this.dispose(), g(t);\n })) : g(t);\n }\n dispose() {\n this._isAppended && (N.off(this._element, Qi), this._element.remove(), this._isAppended = !1);\n }\n _getElement() {\n if (!this._element) {\n const t = document.createElement(\"div\");\n t.className = this._config.className, this._config.isAnimated && t.classList.add(\"fade\"), this._element = t;\n }\n return this._element;\n }\n _configAfterMerge(t) {\n return t.rootElement = r(t.rootElement), t;\n }\n _append() {\n if (this._isAppended) return;\n const t = this._getElement();\n this._config.rootElement.append(t), N.on(t, Qi, () => {\n g(this._config.clickCallback);\n }), this._isAppended = !0;\n }\n _emulateAnimation(t) {\n _(t, this._getElement(), this._config.isAnimated);\n }\n }\n const Gi = \".bs.focustrap\",\n Ji = `focusin${Gi}`,\n Zi = `keydown.tab${Gi}`,\n tn = \"backward\",\n en = {\n autofocus: !0,\n trapElement: null\n },\n nn = {\n autofocus: \"boolean\",\n trapElement: \"element\"\n };\n class sn extends H {\n constructor(t) {\n super(), this._config = this._getConfig(t), this._isActive = !1, this._lastTabNavDirection = null;\n }\n static get Default() {\n return en;\n }\n static get DefaultType() {\n return nn;\n }\n static get NAME() {\n return \"focustrap\";\n }\n activate() {\n this._isActive || (this._config.autofocus && this._config.trapElement.focus(), N.off(document, Gi), N.on(document, Ji, t => this._handleFocusin(t)), N.on(document, Zi, t => this._handleKeydown(t)), this._isActive = !0);\n }\n deactivate() {\n this._isActive && (this._isActive = !1, N.off(document, Gi));\n }\n _handleFocusin(t) {\n const e = this._config.trapElement;\n if (t.target === document || t.target === e || e.contains(t.target)) return;\n const i = z.focusableChildren(e);\n 0 === i.length ? e.focus() : this._lastTabNavDirection === tn ? i[i.length - 1].focus() : i[0].focus();\n }\n _handleKeydown(t) {\n \"Tab\" === t.key && (this._lastTabNavDirection = t.shiftKey ? tn : \"forward\");\n }\n }\n const on = \".fixed-top, .fixed-bottom, .is-fixed, .sticky-top\",\n rn = \".sticky-top\",\n an = \"padding-right\",\n ln = \"margin-right\";\n class cn {\n constructor() {\n this._element = document.body;\n }\n getWidth() {\n const t = document.documentElement.clientWidth;\n return Math.abs(window.innerWidth - t);\n }\n hide() {\n const t = this.getWidth();\n this._disableOverFlow(), this._setElementAttributes(this._element, an, e => e + t), this._setElementAttributes(on, an, e => e + t), this._setElementAttributes(rn, ln, e => e - t);\n }\n reset() {\n this._resetElementAttributes(this._element, \"overflow\"), this._resetElementAttributes(this._element, an), this._resetElementAttributes(on, an), this._resetElementAttributes(rn, ln);\n }\n isOverflowing() {\n return this.getWidth() > 0;\n }\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, \"overflow\"), this._element.style.overflow = \"hidden\";\n }\n _setElementAttributes(t, e, i) {\n const n = this.getWidth();\n this._applyManipulationCallback(t, t => {\n if (t !== this._element && window.innerWidth > t.clientWidth + n) return;\n this._saveInitialAttribute(t, e);\n const s = window.getComputedStyle(t).getPropertyValue(e);\n t.style.setProperty(e, `${i(Number.parseFloat(s))}px`);\n });\n }\n _saveInitialAttribute(t, e) {\n const i = t.style.getPropertyValue(e);\n i && F.setDataAttribute(t, e, i);\n }\n _resetElementAttributes(t, e) {\n this._applyManipulationCallback(t, t => {\n const i = F.getDataAttribute(t, e);\n null !== i ? (F.removeDataAttribute(t, e), t.style.setProperty(e, i)) : t.style.removeProperty(e);\n });\n }\n _applyManipulationCallback(t, e) {\n if (o(t)) e(t);else for (const i of z.find(t, this._element)) e(i);\n }\n }\n const hn = \".bs.modal\",\n dn = `hide${hn}`,\n un = `hidePrevented${hn}`,\n fn = `hidden${hn}`,\n pn = `show${hn}`,\n mn = `shown${hn}`,\n gn = `resize${hn}`,\n _n = `click.dismiss${hn}`,\n bn = `mousedown.dismiss${hn}`,\n vn = `keydown.dismiss${hn}`,\n yn = `click${hn}.data-api`,\n wn = \"modal-open\",\n An = \"show\",\n En = \"modal-static\",\n Tn = {\n backdrop: !0,\n focus: !0,\n keyboard: !0\n },\n Cn = {\n backdrop: \"(boolean|string)\",\n focus: \"boolean\",\n keyboard: \"boolean\"\n };\n class On extends W {\n constructor(t, e) {\n super(t, e), this._dialog = z.findOne(\".modal-dialog\", this._element), this._backdrop = this._initializeBackDrop(), this._focustrap = this._initializeFocusTrap(), this._isShown = !1, this._isTransitioning = !1, this._scrollBar = new cn(), this._addEventListeners();\n }\n static get Default() {\n return Tn;\n }\n static get DefaultType() {\n return Cn;\n }\n static get NAME() {\n return \"modal\";\n }\n toggle(t) {\n return this._isShown ? this.hide() : this.show(t);\n }\n show(t) {\n this._isShown || this._isTransitioning || N.trigger(this._element, pn, {\n relatedTarget: t\n }).defaultPrevented || (this._isShown = !0, this._isTransitioning = !0, this._scrollBar.hide(), document.body.classList.add(wn), this._adjustDialog(), this._backdrop.show(() => this._showElement(t)));\n }\n hide() {\n this._isShown && !this._isTransitioning && (N.trigger(this._element, dn).defaultPrevented || (this._isShown = !1, this._isTransitioning = !0, this._focustrap.deactivate(), this._element.classList.remove(An), this._queueCallback(() => this._hideModal(), this._element, this._isAnimated())));\n }\n dispose() {\n N.off(window, hn), N.off(this._dialog, hn), this._backdrop.dispose(), this._focustrap.deactivate(), super.dispose();\n }\n handleUpdate() {\n this._adjustDialog();\n }\n _initializeBackDrop() {\n return new Ui({\n isVisible: Boolean(this._config.backdrop),\n isAnimated: this._isAnimated()\n });\n }\n _initializeFocusTrap() {\n return new sn({\n trapElement: this._element\n });\n }\n _showElement(t) {\n document.body.contains(this._element) || document.body.append(this._element), this._element.style.display = \"block\", this._element.removeAttribute(\"aria-hidden\"), this._element.setAttribute(\"aria-modal\", !0), this._element.setAttribute(\"role\", \"dialog\"), this._element.scrollTop = 0;\n const e = z.findOne(\".modal-body\", this._dialog);\n e && (e.scrollTop = 0), d(this._element), this._element.classList.add(An), this._queueCallback(() => {\n this._config.focus && this._focustrap.activate(), this._isTransitioning = !1, N.trigger(this._element, mn, {\n relatedTarget: t\n });\n }, this._dialog, this._isAnimated());\n }\n _addEventListeners() {\n N.on(this._element, vn, t => {\n \"Escape\" === t.key && (this._config.keyboard ? this.hide() : this._triggerBackdropTransition());\n }), N.on(window, gn, () => {\n this._isShown && !this._isTransitioning && this._adjustDialog();\n }), N.on(this._element, bn, t => {\n N.one(this._element, _n, e => {\n this._element === t.target && this._element === e.target && (\"static\" !== this._config.backdrop ? this._config.backdrop && this.hide() : this._triggerBackdropTransition());\n });\n });\n }\n _hideModal() {\n this._element.style.display = \"none\", this._element.setAttribute(\"aria-hidden\", !0), this._element.removeAttribute(\"aria-modal\"), this._element.removeAttribute(\"role\"), this._isTransitioning = !1, this._backdrop.hide(() => {\n document.body.classList.remove(wn), this._resetAdjustments(), this._scrollBar.reset(), N.trigger(this._element, fn);\n });\n }\n _isAnimated() {\n return this._element.classList.contains(\"fade\");\n }\n _triggerBackdropTransition() {\n if (N.trigger(this._element, un).defaultPrevented) return;\n const t = this._element.scrollHeight > document.documentElement.clientHeight,\n e = this._element.style.overflowY;\n \"hidden\" === e || this._element.classList.contains(En) || (t || (this._element.style.overflowY = \"hidden\"), this._element.classList.add(En), this._queueCallback(() => {\n this._element.classList.remove(En), this._queueCallback(() => {\n this._element.style.overflowY = e;\n }, this._dialog);\n }, this._dialog), this._element.focus());\n }\n _adjustDialog() {\n const t = this._element.scrollHeight > document.documentElement.clientHeight,\n e = this._scrollBar.getWidth(),\n i = e > 0;\n if (i && !t) {\n const t = p() ? \"paddingLeft\" : \"paddingRight\";\n this._element.style[t] = `${e}px`;\n }\n if (!i && t) {\n const t = p() ? \"paddingRight\" : \"paddingLeft\";\n this._element.style[t] = `${e}px`;\n }\n }\n _resetAdjustments() {\n this._element.style.paddingLeft = \"\", this._element.style.paddingRight = \"\";\n }\n static jQueryInterface(t, e) {\n return this.each(function () {\n const i = On.getOrCreateInstance(this, t);\n if (\"string\" == typeof t) {\n if (void 0 === i[t]) throw new TypeError(`No method named \"${t}\"`);\n i[t](e);\n }\n });\n }\n }\n N.on(document, yn, '[data-bs-toggle=\"modal\"]', function (t) {\n const e = z.getElementFromSelector(this);\n [\"A\", \"AREA\"].includes(this.tagName) && t.preventDefault(), N.one(e, pn, t => {\n t.defaultPrevented || N.one(e, fn, () => {\n a(this) && this.focus();\n });\n });\n const i = z.findOne(\".modal.show\");\n i && On.getInstance(i).hide(), On.getOrCreateInstance(e).toggle(this);\n }), R(On), m(On);\n const xn = \".bs.offcanvas\",\n kn = \".data-api\",\n Ln = `load${xn}${kn}`,\n Sn = \"show\",\n Dn = \"showing\",\n $n = \"hiding\",\n In = \".offcanvas.show\",\n Nn = `show${xn}`,\n Pn = `shown${xn}`,\n jn = `hide${xn}`,\n Mn = `hidePrevented${xn}`,\n Fn = `hidden${xn}`,\n Hn = `resize${xn}`,\n Wn = `click${xn}${kn}`,\n Bn = `keydown.dismiss${xn}`,\n zn = {\n backdrop: !0,\n keyboard: !0,\n scroll: !1\n },\n Rn = {\n backdrop: \"(boolean|string)\",\n keyboard: \"boolean\",\n scroll: \"boolean\"\n };\n class qn extends W {\n constructor(t, e) {\n super(t, e), this._isShown = !1, this._backdrop = this._initializeBackDrop(), this._focustrap = this._initializeFocusTrap(), this._addEventListeners();\n }\n static get Default() {\n return zn;\n }\n static get DefaultType() {\n return Rn;\n }\n static get NAME() {\n return \"offcanvas\";\n }\n toggle(t) {\n return this._isShown ? this.hide() : this.show(t);\n }\n show(t) {\n this._isShown || N.trigger(this._element, Nn, {\n relatedTarget: t\n }).defaultPrevented || (this._isShown = !0, this._backdrop.show(), this._config.scroll || new cn().hide(), this._element.setAttribute(\"aria-modal\", !0), this._element.setAttribute(\"role\", \"dialog\"), this._element.classList.add(Dn), this._queueCallback(() => {\n this._config.scroll && !this._config.backdrop || this._focustrap.activate(), this._element.classList.add(Sn), this._element.classList.remove(Dn), N.trigger(this._element, Pn, {\n relatedTarget: t\n });\n }, this._element, !0));\n }\n hide() {\n this._isShown && (N.trigger(this._element, jn).defaultPrevented || (this._focustrap.deactivate(), this._element.blur(), this._isShown = !1, this._element.classList.add($n), this._backdrop.hide(), this._queueCallback(() => {\n this._element.classList.remove(Sn, $n), this._element.removeAttribute(\"aria-modal\"), this._element.removeAttribute(\"role\"), this._config.scroll || new cn().reset(), N.trigger(this._element, Fn);\n }, this._element, !0)));\n }\n dispose() {\n this._backdrop.dispose(), this._focustrap.deactivate(), super.dispose();\n }\n _initializeBackDrop() {\n const t = Boolean(this._config.backdrop);\n return new Ui({\n className: \"offcanvas-backdrop\",\n isVisible: t,\n isAnimated: !0,\n rootElement: this._element.parentNode,\n clickCallback: t ? () => {\n \"static\" !== this._config.backdrop ? this.hide() : N.trigger(this._element, Mn);\n } : null\n });\n }\n _initializeFocusTrap() {\n return new sn({\n trapElement: this._element\n });\n }\n _addEventListeners() {\n N.on(this._element, Bn, t => {\n \"Escape\" === t.key && (this._config.keyboard ? this.hide() : N.trigger(this._element, Mn));\n });\n }\n static jQueryInterface(t) {\n return this.each(function () {\n const e = qn.getOrCreateInstance(this, t);\n if (\"string\" == typeof t) {\n if (void 0 === e[t] || t.startsWith(\"_\") || \"constructor\" === t) throw new TypeError(`No method named \"${t}\"`);\n e[t](this);\n }\n });\n }\n }\n N.on(document, Wn, '[data-bs-toggle=\"offcanvas\"]', function (t) {\n const e = z.getElementFromSelector(this);\n if ([\"A\", \"AREA\"].includes(this.tagName) && t.preventDefault(), l(this)) return;\n N.one(e, Fn, () => {\n a(this) && this.focus();\n });\n const i = z.findOne(In);\n i && i !== e && qn.getInstance(i).hide(), qn.getOrCreateInstance(e).toggle(this);\n }), N.on(window, Ln, () => {\n for (const t of z.find(In)) qn.getOrCreateInstance(t).show();\n }), N.on(window, Hn, () => {\n for (const t of z.find(\"[aria-modal][class*=show][class*=offcanvas-]\")) \"fixed\" !== getComputedStyle(t).position && qn.getOrCreateInstance(t).hide();\n }), R(qn), m(qn);\n const Vn = {\n \"*\": [\"class\", \"dir\", \"id\", \"lang\", \"role\", /^aria-[\\w-]*$/i],\n a: [\"target\", \"href\", \"title\", \"rel\"],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n dd: [],\n div: [],\n dl: [],\n dt: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: [\"src\", \"srcset\", \"alt\", \"title\", \"width\", \"height\"],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n },\n Kn = new Set([\"background\", \"cite\", \"href\", \"itemtype\", \"longdesc\", \"poster\", \"src\", \"xlink:href\"]),\n Qn = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,\n Xn = (t, e) => {\n const i = t.nodeName.toLowerCase();\n return e.includes(i) ? !Kn.has(i) || Boolean(Qn.test(t.nodeValue)) : e.filter(t => t instanceof RegExp).some(t => t.test(i));\n },\n Yn = {\n allowList: Vn,\n content: {},\n extraClass: \"\",\n html: !1,\n sanitize: !0,\n sanitizeFn: null,\n template: \"<div></div>\"\n },\n Un = {\n allowList: \"object\",\n content: \"object\",\n extraClass: \"(string|function)\",\n html: \"boolean\",\n sanitize: \"boolean\",\n sanitizeFn: \"(null|function)\",\n template: \"string\"\n },\n Gn = {\n entry: \"(string|element|function|null)\",\n selector: \"(string|element)\"\n };\n class Jn extends H {\n constructor(t) {\n super(), this._config = this._getConfig(t);\n }\n static get Default() {\n return Yn;\n }\n static get DefaultType() {\n return Un;\n }\n static get NAME() {\n return \"TemplateFactory\";\n }\n getContent() {\n return Object.values(this._config.content).map(t => this._resolvePossibleFunction(t)).filter(Boolean);\n }\n hasContent() {\n return this.getContent().length > 0;\n }\n changeContent(t) {\n return this._checkContent(t), this._config.content = _objectSpread(_objectSpread({}, this._config.content), t), this;\n }\n toHtml() {\n const t = document.createElement(\"div\");\n t.innerHTML = this._maybeSanitize(this._config.template);\n for (const _ref11 of Object.entries(this._config.content)) {\n var _ref12 = _slicedToArray(_ref11, 2);\n const e = _ref12[0];\n const i = _ref12[1];\n this._setContent(t, i, e);\n }\n const e = t.children[0],\n i = this._resolvePossibleFunction(this._config.extraClass);\n return i && e.classList.add(...i.split(\" \")), e;\n }\n _typeCheckConfig(t) {\n super._typeCheckConfig(t), this._checkContent(t.content);\n }\n _checkContent(t) {\n for (const _ref13 of Object.entries(t)) {\n var _ref14 = _slicedToArray(_ref13, 2);\n const e = _ref14[0];\n const i = _ref14[1];\n super._typeCheckConfig({\n selector: e,\n entry: i\n }, Gn);\n }\n }\n _setContent(t, e, i) {\n const n = z.findOne(i, t);\n n && ((e = this._resolvePossibleFunction(e)) ? o(e) ? this._putElementInTemplate(r(e), n) : this._config.html ? n.innerHTML = this._maybeSanitize(e) : n.textContent = e : n.remove());\n }\n _maybeSanitize(t) {\n return this._config.sanitize ? function (t, e, i) {\n if (!t.length) return t;\n if (i && \"function\" == typeof i) return i(t);\n const n = new window.DOMParser().parseFromString(t, \"text/html\"),\n s = [].concat(...n.body.querySelectorAll(\"*\"));\n for (const t of s) {\n const i = t.nodeName.toLowerCase();\n if (!Object.keys(e).includes(i)) {\n t.remove();\n continue;\n }\n const n = [].concat(...t.attributes),\n s = [].concat(e[\"*\"] || [], e[i] || []);\n for (const e of n) Xn(e, s) || t.removeAttribute(e.nodeName);\n }\n return n.body.innerHTML;\n }(t, this._config.allowList, this._config.sanitizeFn) : t;\n }\n _resolvePossibleFunction(t) {\n return g(t, [this]);\n }\n _putElementInTemplate(t, e) {\n if (this._config.html) return e.innerHTML = \"\", void e.append(t);\n e.textContent = t.textContent;\n }\n }\n const Zn = new Set([\"sanitize\", \"allowList\", \"sanitizeFn\"]),\n ts = \"fade\",\n es = \"show\",\n is = \".modal\",\n ns = \"hide.bs.modal\",\n ss = \"hover\",\n os = \"focus\",\n rs = {\n AUTO: \"auto\",\n TOP: \"top\",\n RIGHT: p() ? \"left\" : \"right\",\n BOTTOM: \"bottom\",\n LEFT: p() ? \"right\" : \"left\"\n },\n as = {\n allowList: Vn,\n animation: !0,\n boundary: \"clippingParents\",\n container: !1,\n customClass: \"\",\n delay: 0,\n fallbackPlacements: [\"top\", \"right\", \"bottom\", \"left\"],\n html: !1,\n offset: [0, 6],\n placement: \"top\",\n popperConfig: null,\n sanitize: !0,\n sanitizeFn: null,\n selector: !1,\n template: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n title: \"\",\n trigger: \"hover focus\"\n },\n ls = {\n allowList: \"object\",\n animation: \"boolean\",\n boundary: \"(string|element)\",\n container: \"(string|element|boolean)\",\n customClass: \"(string|function)\",\n delay: \"(number|object)\",\n fallbackPlacements: \"array\",\n html: \"boolean\",\n offset: \"(array|string|function)\",\n placement: \"(string|function)\",\n popperConfig: \"(null|object|function)\",\n sanitize: \"boolean\",\n sanitizeFn: \"(null|function)\",\n selector: \"(string|boolean)\",\n template: \"string\",\n title: \"(string|element|function)\",\n trigger: \"string\"\n };\n class cs extends W {\n constructor(t, e) {\n if (void 0 === vi) throw new TypeError(\"Bootstrap's tooltips require Popper (https://popper.js.org)\");\n super(t, e), this._isEnabled = !0, this._timeout = 0, this._isHovered = null, this._activeTrigger = {}, this._popper = null, this._templateFactory = null, this._newContent = null, this.tip = null, this._setListeners(), this._config.selector || this._fixTitle();\n }\n static get Default() {\n return as;\n }\n static get DefaultType() {\n return ls;\n }\n static get NAME() {\n return \"tooltip\";\n }\n enable() {\n this._isEnabled = !0;\n }\n disable() {\n this._isEnabled = !1;\n }\n toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n }\n toggle() {\n this._isEnabled && (this._activeTrigger.click = !this._activeTrigger.click, this._isShown() ? this._leave() : this._enter());\n }\n dispose() {\n clearTimeout(this._timeout), N.off(this._element.closest(is), ns, this._hideModalHandler), this._element.getAttribute(\"data-bs-original-title\") && this._element.setAttribute(\"title\", this._element.getAttribute(\"data-bs-original-title\")), this._disposePopper(), super.dispose();\n }\n show() {\n if (\"none\" === this._element.style.display) throw new Error(\"Please use show on visible elements\");\n if (!this._isWithContent() || !this._isEnabled) return;\n const t = N.trigger(this._element, this.constructor.eventName(\"show\")),\n e = (c(this._element) || this._element.ownerDocument.documentElement).contains(this._element);\n if (t.defaultPrevented || !e) return;\n this._disposePopper();\n const i = this._getTipElement();\n this._element.setAttribute(\"aria-describedby\", i.getAttribute(\"id\"));\n const n = this._config.container;\n if (this._element.ownerDocument.documentElement.contains(this.tip) || (n.append(i), N.trigger(this._element, this.constructor.eventName(\"inserted\"))), this._popper = this._createPopper(i), i.classList.add(es), \"ontouchstart\" in document.documentElement) for (const t of [].concat(...document.body.children)) N.on(t, \"mouseover\", h);\n this._queueCallback(() => {\n N.trigger(this._element, this.constructor.eventName(\"shown\")), !1 === this._isHovered && this._leave(), this._isHovered = !1;\n }, this.tip, this._isAnimated());\n }\n hide() {\n if (this._isShown() && !N.trigger(this._element, this.constructor.eventName(\"hide\")).defaultPrevented) {\n if (this._getTipElement().classList.remove(es), \"ontouchstart\" in document.documentElement) for (const t of [].concat(...document.body.children)) N.off(t, \"mouseover\", h);\n this._activeTrigger.click = !1, this._activeTrigger[os] = !1, this._activeTrigger[ss] = !1, this._isHovered = null, this._queueCallback(() => {\n this._isWithActiveTrigger() || (this._isHovered || this._disposePopper(), this._element.removeAttribute(\"aria-describedby\"), N.trigger(this._element, this.constructor.eventName(\"hidden\")));\n }, this.tip, this._isAnimated());\n }\n }\n update() {\n this._popper && this._popper.update();\n }\n _isWithContent() {\n return Boolean(this._getTitle());\n }\n _getTipElement() {\n return this.tip || (this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())), this.tip;\n }\n _createTipElement(t) {\n const e = this._getTemplateFactory(t).toHtml();\n if (!e) return null;\n e.classList.remove(ts, es), e.classList.add(`bs-${this.constructor.NAME}-auto`);\n const i = (t => {\n do {\n t += Math.floor(1e6 * Math.random());\n } while (document.getElementById(t));\n return t;\n })(this.constructor.NAME).toString();\n return e.setAttribute(\"id\", i), this._isAnimated() && e.classList.add(ts), e;\n }\n setContent(t) {\n this._newContent = t, this._isShown() && (this._disposePopper(), this.show());\n }\n _getTemplateFactory(t) {\n return this._templateFactory ? this._templateFactory.changeContent(t) : this._templateFactory = new Jn(_objectSpread(_objectSpread({}, this._config), {}, {\n content: t,\n extraClass: this._resolvePossibleFunction(this._config.customClass)\n })), this._templateFactory;\n }\n _getContentForTemplate() {\n return {\n \".tooltip-inner\": this._getTitle()\n };\n }\n _getTitle() {\n return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute(\"data-bs-original-title\");\n }\n _initializeOnDelegatedTarget(t) {\n return this.constructor.getOrCreateInstance(t.delegateTarget, this._getDelegateConfig());\n }\n _isAnimated() {\n return this._config.animation || this.tip && this.tip.classList.contains(ts);\n }\n _isShown() {\n return this.tip && this.tip.classList.contains(es);\n }\n _createPopper(t) {\n const e = g(this._config.placement, [this, t, this._element]),\n i = rs[e.toUpperCase()];\n return bi(this._element, t, this._getPopperConfig(i));\n }\n _getOffset() {\n const t = this._config.offset;\n return \"string\" == typeof t ? t.split(\",\").map(t => Number.parseInt(t, 10)) : \"function\" == typeof t ? e => t(e, this._element) : t;\n }\n _resolvePossibleFunction(t) {\n return g(t, [this._element]);\n }\n _getPopperConfig(t) {\n const e = {\n placement: t,\n modifiers: [{\n name: \"flip\",\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n }, {\n name: \"offset\",\n options: {\n offset: this._getOffset()\n }\n }, {\n name: \"preventOverflow\",\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: \"arrow\",\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n }, {\n name: \"preSetPlacement\",\n enabled: !0,\n phase: \"beforeMain\",\n fn: t => {\n this._getTipElement().setAttribute(\"data-popper-placement\", t.state.placement);\n }\n }]\n };\n return _objectSpread(_objectSpread({}, e), g(this._config.popperConfig, [e]));\n }\n _setListeners() {\n const t = this._config.trigger.split(\" \");\n for (const e of t) if (\"click\" === e) N.on(this._element, this.constructor.eventName(\"click\"), this._config.selector, t => {\n this._initializeOnDelegatedTarget(t).toggle();\n });else if (\"manual\" !== e) {\n const t = e === ss ? this.constructor.eventName(\"mouseenter\") : this.constructor.eventName(\"focusin\"),\n i = e === ss ? this.constructor.eventName(\"mouseleave\") : this.constructor.eventName(\"focusout\");\n N.on(this._element, t, this._config.selector, t => {\n const e = this._initializeOnDelegatedTarget(t);\n e._activeTrigger[\"focusin\" === t.type ? os : ss] = !0, e._enter();\n }), N.on(this._element, i, this._config.selector, t => {\n const e = this._initializeOnDelegatedTarget(t);\n e._activeTrigger[\"focusout\" === t.type ? os : ss] = e._element.contains(t.relatedTarget), e._leave();\n });\n }\n this._hideModalHandler = () => {\n this._element && this.hide();\n }, N.on(this._element.closest(is), ns, this._hideModalHandler);\n }\n _fixTitle() {\n const t = this._element.getAttribute(\"title\");\n t && (this._element.getAttribute(\"aria-label\") || this._element.textContent.trim() || this._element.setAttribute(\"aria-label\", t), this._element.setAttribute(\"data-bs-original-title\", t), this._element.removeAttribute(\"title\"));\n }\n _enter() {\n this._isShown() || this._isHovered ? this._isHovered = !0 : (this._isHovered = !0, this._setTimeout(() => {\n this._isHovered && this.show();\n }, this._config.delay.show));\n }\n _leave() {\n this._isWithActiveTrigger() || (this._isHovered = !1, this._setTimeout(() => {\n this._isHovered || this.hide();\n }, this._config.delay.hide));\n }\n _setTimeout(t, e) {\n clearTimeout(this._timeout), this._timeout = setTimeout(t, e);\n }\n _isWithActiveTrigger() {\n return Object.values(this._activeTrigger).includes(!0);\n }\n _getConfig(t) {\n const e = F.getDataAttributes(this._element);\n for (const t of Object.keys(e)) Zn.has(t) && delete e[t];\n return t = _objectSpread(_objectSpread({}, e), \"object\" == typeof t && t ? t : {}), t = this._mergeConfigObj(t), t = this._configAfterMerge(t), this._typeCheckConfig(t), t;\n }\n _configAfterMerge(t) {\n return t.container = !1 === t.container ? document.body : r(t.container), \"number\" == typeof t.delay && (t.delay = {\n show: t.delay,\n hide: t.delay\n }), \"number\" == typeof t.title && (t.title = t.title.toString()), \"number\" == typeof t.content && (t.content = t.content.toString()), t;\n }\n _getDelegateConfig() {\n const t = {};\n for (const _ref15 of Object.entries(this._config)) {\n var _ref16 = _slicedToArray(_ref15, 2);\n const e = _ref16[0];\n const i = _ref16[1];\n this.constructor.Default[e] !== i && (t[e] = i);\n }\n return t.selector = !1, t.trigger = \"manual\", t;\n }\n _disposePopper() {\n this._popper && (this._popper.destroy(), this._popper = null), this.tip && (this.tip.remove(), this.tip = null);\n }\n static jQueryInterface(t) {\n return this.each(function () {\n const e = cs.getOrCreateInstance(this, t);\n if (\"string\" == typeof t) {\n if (void 0 === e[t]) throw new TypeError(`No method named \"${t}\"`);\n e[t]();\n }\n });\n }\n }\n m(cs);\n const hs = _objectSpread(_objectSpread({}, cs.Default), {}, {\n content: \"\",\n offset: [0, 8],\n placement: \"right\",\n template: '<div class=\"popover\" role=\"tooltip\"><div class=\"popover-arrow\"></div><h3 class=\"popover-header\"></h3><div class=\"popover-body\"></div></div>',\n trigger: \"click\"\n }),\n ds = _objectSpread(_objectSpread({}, cs.DefaultType), {}, {\n content: \"(null|string|element|function)\"\n });\n class us extends cs {\n static get Default() {\n return hs;\n }\n static get DefaultType() {\n return ds;\n }\n static get NAME() {\n return \"popover\";\n }\n _isWithContent() {\n return this._getTitle() || this._getContent();\n }\n _getContentForTemplate() {\n return {\n \".popover-header\": this._getTitle(),\n \".popover-body\": this._getContent()\n };\n }\n _getContent() {\n return this._resolvePossibleFunction(this._config.content);\n }\n static jQueryInterface(t) {\n return this.each(function () {\n const e = us.getOrCreateInstance(this, t);\n if (\"string\" == typeof t) {\n if (void 0 === e[t]) throw new TypeError(`No method named \"${t}\"`);\n e[t]();\n }\n });\n }\n }\n m(us);\n const fs = \".bs.scrollspy\",\n ps = `activate${fs}`,\n ms = `click${fs}`,\n gs = `load${fs}.data-api`,\n _s = \"active\",\n bs = \"[href]\",\n vs = \".nav-link\",\n ys = `${vs}, .nav-item > ${vs}, .list-group-item`,\n ws = {\n offset: null,\n rootMargin: \"0px 0px -25%\",\n smoothScroll: !1,\n target: null,\n threshold: [.1, .5, 1]\n },\n As = {\n offset: \"(number|null)\",\n rootMargin: \"string\",\n smoothScroll: \"boolean\",\n target: \"element\",\n threshold: \"array\"\n };\n class Es extends W {\n constructor(t, e) {\n super(t, e), this._targetLinks = new Map(), this._observableSections = new Map(), this._rootElement = \"visible\" === getComputedStyle(this._element).overflowY ? null : this._element, this._activeTarget = null, this._observer = null, this._previousScrollData = {\n visibleEntryTop: 0,\n parentScrollTop: 0\n }, this.refresh();\n }\n static get Default() {\n return ws;\n }\n static get DefaultType() {\n return As;\n }\n static get NAME() {\n return \"scrollspy\";\n }\n refresh() {\n this._initializeTargetsAndObservables(), this._maybeEnableSmoothScroll(), this._observer ? this._observer.disconnect() : this._observer = this._getNewObserver();\n for (const t of this._observableSections.values()) this._observer.observe(t);\n }\n dispose() {\n this._observer.disconnect(), super.dispose();\n }\n _configAfterMerge(t) {\n return t.target = r(t.target) || document.body, t.rootMargin = t.offset ? `${t.offset}px 0px -30%` : t.rootMargin, \"string\" == typeof t.threshold && (t.threshold = t.threshold.split(\",\").map(t => Number.parseFloat(t))), t;\n }\n _maybeEnableSmoothScroll() {\n this._config.smoothScroll && (N.off(this._config.target, ms), N.on(this._config.target, ms, bs, t => {\n const e = this._observableSections.get(t.target.hash);\n if (e) {\n t.preventDefault();\n const i = this._rootElement || window,\n n = e.offsetTop - this._element.offsetTop;\n if (i.scrollTo) return void i.scrollTo({\n top: n,\n behavior: \"smooth\"\n });\n i.scrollTop = n;\n }\n }));\n }\n _getNewObserver() {\n const t = {\n root: this._rootElement,\n threshold: this._config.threshold,\n rootMargin: this._config.rootMargin\n };\n return new IntersectionObserver(t => this._observerCallback(t), t);\n }\n _observerCallback(t) {\n const e = t => this._targetLinks.get(`#${t.target.id}`),\n i = t => {\n this._previousScrollData.visibleEntryTop = t.target.offsetTop, this._process(e(t));\n },\n n = (this._rootElement || document.documentElement).scrollTop,\n s = n >= this._previousScrollData.parentScrollTop;\n this._previousScrollData.parentScrollTop = n;\n for (const o of t) {\n if (!o.isIntersecting) {\n this._activeTarget = null, this._clearActiveClass(e(o));\n continue;\n }\n const t = o.target.offsetTop >= this._previousScrollData.visibleEntryTop;\n if (s && t) {\n if (i(o), !n) return;\n } else s || t || i(o);\n }\n }\n _initializeTargetsAndObservables() {\n this._targetLinks = new Map(), this._observableSections = new Map();\n const t = z.find(bs, this._config.target);\n for (const e of t) {\n if (!e.hash || l(e)) continue;\n const t = z.findOne(decodeURI(e.hash), this._element);\n a(t) && (this._targetLinks.set(decodeURI(e.hash), e), this._observableSections.set(e.hash, t));\n }\n }\n _process(t) {\n this._activeTarget !== t && (this._clearActiveClass(this._config.target), this._activeTarget = t, t.classList.add(_s), this._activateParents(t), N.trigger(this._element, ps, {\n relatedTarget: t\n }));\n }\n _activateParents(t) {\n if (t.classList.contains(\"dropdown-item\")) z.findOne(\".dropdown-toggle\", t.closest(\".dropdown\")).classList.add(_s);else for (const e of z.parents(t, \".nav, .list-group\")) for (const t of z.prev(e, ys)) t.classList.add(_s);\n }\n _clearActiveClass(t) {\n t.classList.remove(_s);\n const e = z.find(`${bs}.${_s}`, t);\n for (const t of e) t.classList.remove(_s);\n }\n static jQueryInterface(t) {\n return this.each(function () {\n const e = Es.getOrCreateInstance(this, t);\n if (\"string\" == typeof t) {\n if (void 0 === e[t] || t.startsWith(\"_\") || \"constructor\" === t) throw new TypeError(`No method named \"${t}\"`);\n e[t]();\n }\n });\n }\n }\n N.on(window, gs, () => {\n for (const t of z.find('[data-bs-spy=\"scroll\"]')) Es.getOrCreateInstance(t);\n }), m(Es);\n const Ts = \".bs.tab\",\n Cs = `hide${Ts}`,\n Os = `hidden${Ts}`,\n xs = `show${Ts}`,\n ks = `shown${Ts}`,\n Ls = `click${Ts}`,\n Ss = `keydown${Ts}`,\n Ds = `load${Ts}`,\n $s = \"ArrowLeft\",\n Is = \"ArrowRight\",\n Ns = \"ArrowUp\",\n Ps = \"ArrowDown\",\n js = \"Home\",\n Ms = \"End\",\n Fs = \"active\",\n Hs = \"fade\",\n Ws = \"show\",\n Bs = \".dropdown-toggle\",\n zs = `:not(${Bs})`,\n Rs = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]',\n qs = `.nav-link${zs}, .list-group-item${zs}, [role=\"tab\"]${zs}, ${Rs}`,\n Vs = `.${Fs}[data-bs-toggle=\"tab\"], .${Fs}[data-bs-toggle=\"pill\"], .${Fs}[data-bs-toggle=\"list\"]`;\n class Ks extends W {\n constructor(t) {\n super(t), this._parent = this._element.closest('.list-group, .nav, [role=\"tablist\"]'), this._parent && (this._setInitialAttributes(this._parent, this._getChildren()), N.on(this._element, Ss, t => this._keydown(t)));\n }\n static get NAME() {\n return \"tab\";\n }\n show() {\n const t = this._element;\n if (this._elemIsActive(t)) return;\n const e = this._getActiveElem(),\n i = e ? N.trigger(e, Cs, {\n relatedTarget: t\n }) : null;\n N.trigger(t, xs, {\n relatedTarget: e\n }).defaultPrevented || i && i.defaultPrevented || (this._deactivate(e, t), this._activate(t, e));\n }\n _activate(t, e) {\n t && (t.classList.add(Fs), this._activate(z.getElementFromSelector(t)), this._queueCallback(() => {\n \"tab\" === t.getAttribute(\"role\") ? (t.removeAttribute(\"tabindex\"), t.setAttribute(\"aria-selected\", !0), this._toggleDropDown(t, !0), N.trigger(t, ks, {\n relatedTarget: e\n })) : t.classList.add(Ws);\n }, t, t.classList.contains(Hs)));\n }\n _deactivate(t, e) {\n t && (t.classList.remove(Fs), t.blur(), this._deactivate(z.getElementFromSelector(t)), this._queueCallback(() => {\n \"tab\" === t.getAttribute(\"role\") ? (t.setAttribute(\"aria-selected\", !1), t.setAttribute(\"tabindex\", \"-1\"), this._toggleDropDown(t, !1), N.trigger(t, Os, {\n relatedTarget: e\n })) : t.classList.remove(Ws);\n }, t, t.classList.contains(Hs)));\n }\n _keydown(t) {\n if (![$s, Is, Ns, Ps, js, Ms].includes(t.key)) return;\n t.stopPropagation(), t.preventDefault();\n const e = this._getChildren().filter(t => !l(t));\n let i;\n if ([js, Ms].includes(t.key)) i = e[t.key === js ? 0 : e.length - 1];else {\n const n = [Is, Ps].includes(t.key);\n i = b(e, t.target, n, !0);\n }\n i && (i.focus({\n preventScroll: !0\n }), Ks.getOrCreateInstance(i).show());\n }\n _getChildren() {\n return z.find(qs, this._parent);\n }\n _getActiveElem() {\n return this._getChildren().find(t => this._elemIsActive(t)) || null;\n }\n _setInitialAttributes(t, e) {\n this._setAttributeIfNotExists(t, \"role\", \"tablist\");\n for (const t of e) this._setInitialAttributesOnChild(t);\n }\n _setInitialAttributesOnChild(t) {\n t = this._getInnerElement(t);\n const e = this._elemIsActive(t),\n i = this._getOuterElement(t);\n t.setAttribute(\"aria-selected\", e), i !== t && this._setAttributeIfNotExists(i, \"role\", \"presentation\"), e || t.setAttribute(\"tabindex\", \"-1\"), this._setAttributeIfNotExists(t, \"role\", \"tab\"), this._setInitialAttributesOnTargetPanel(t);\n }\n _setInitialAttributesOnTargetPanel(t) {\n const e = z.getElementFromSelector(t);\n e && (this._setAttributeIfNotExists(e, \"role\", \"tabpanel\"), t.id && this._setAttributeIfNotExists(e, \"aria-labelledby\", `${t.id}`));\n }\n _toggleDropDown(t, e) {\n const i = this._getOuterElement(t);\n if (!i.classList.contains(\"dropdown\")) return;\n const n = (t, n) => {\n const s = z.findOne(t, i);\n s && s.classList.toggle(n, e);\n };\n n(Bs, Fs), n(\".dropdown-menu\", Ws), i.setAttribute(\"aria-expanded\", e);\n }\n _setAttributeIfNotExists(t, e, i) {\n t.hasAttribute(e) || t.setAttribute(e, i);\n }\n _elemIsActive(t) {\n return t.classList.contains(Fs);\n }\n _getInnerElement(t) {\n return t.matches(qs) ? t : z.findOne(qs, t);\n }\n _getOuterElement(t) {\n return t.closest(\".nav-item, .list-group-item\") || t;\n }\n static jQueryInterface(t) {\n return this.each(function () {\n const e = Ks.getOrCreateInstance(this);\n if (\"string\" == typeof t) {\n if (void 0 === e[t] || t.startsWith(\"_\") || \"constructor\" === t) throw new TypeError(`No method named \"${t}\"`);\n e[t]();\n }\n });\n }\n }\n N.on(document, Ls, Rs, function (t) {\n [\"A\", \"AREA\"].includes(this.tagName) && t.preventDefault(), l(this) || Ks.getOrCreateInstance(this).show();\n }), N.on(window, Ds, () => {\n for (const t of z.find(Vs)) Ks.getOrCreateInstance(t);\n }), m(Ks);\n const Qs = \".bs.toast\",\n Xs = `mouseover${Qs}`,\n Ys = `mouseout${Qs}`,\n Us = `focusin${Qs}`,\n Gs = `focusout${Qs}`,\n Js = `hide${Qs}`,\n Zs = `hidden${Qs}`,\n to = `show${Qs}`,\n eo = `shown${Qs}`,\n io = \"hide\",\n no = \"show\",\n so = \"showing\",\n oo = {\n animation: \"boolean\",\n autohide: \"boolean\",\n delay: \"number\"\n },\n ro = {\n animation: !0,\n autohide: !0,\n delay: 5e3\n };\n class ao extends W {\n constructor(t, e) {\n super(t, e), this._timeout = null, this._hasMouseInteraction = !1, this._hasKeyboardInteraction = !1, this._setListeners();\n }\n static get Default() {\n return ro;\n }\n static get DefaultType() {\n return oo;\n }\n static get NAME() {\n return \"toast\";\n }\n show() {\n N.trigger(this._element, to).defaultPrevented || (this._clearTimeout(), this._config.animation && this._element.classList.add(\"fade\"), this._element.classList.remove(io), d(this._element), this._element.classList.add(no, so), this._queueCallback(() => {\n this._element.classList.remove(so), N.trigger(this._element, eo), this._maybeScheduleHide();\n }, this._element, this._config.animation));\n }\n hide() {\n this.isShown() && (N.trigger(this._element, Js).defaultPrevented || (this._element.classList.add(so), this._queueCallback(() => {\n this._element.classList.add(io), this._element.classList.remove(so, no), N.trigger(this._element, Zs);\n }, this._element, this._config.animation)));\n }\n dispose() {\n this._clearTimeout(), this.isShown() && this._element.classList.remove(no), super.dispose();\n }\n isShown() {\n return this._element.classList.contains(no);\n }\n _maybeScheduleHide() {\n this._config.autohide && (this._hasMouseInteraction || this._hasKeyboardInteraction || (this._timeout = setTimeout(() => {\n this.hide();\n }, this._config.delay)));\n }\n _onInteraction(t, e) {\n switch (t.type) {\n case \"mouseover\":\n case \"mouseout\":\n this._hasMouseInteraction = e;\n break;\n case \"focusin\":\n case \"focusout\":\n this._hasKeyboardInteraction = e;\n }\n if (e) return void this._clearTimeout();\n const i = t.relatedTarget;\n this._element === i || this._element.contains(i) || this._maybeScheduleHide();\n }\n _setListeners() {\n N.on(this._element, Xs, t => this._onInteraction(t, !0)), N.on(this._element, Ys, t => this._onInteraction(t, !1)), N.on(this._element, Us, t => this._onInteraction(t, !0)), N.on(this._element, Gs, t => this._onInteraction(t, !1));\n }\n _clearTimeout() {\n clearTimeout(this._timeout), this._timeout = null;\n }\n static jQueryInterface(t) {\n return this.each(function () {\n const e = ao.getOrCreateInstance(this, t);\n if (\"string\" == typeof t) {\n if (void 0 === e[t]) throw new TypeError(`No method named \"${t}\"`);\n e[t](this);\n }\n });\n }\n }\n return R(ao), m(ao), {\n Alert: Q,\n Button: Y,\n Carousel: xt,\n Collapse: Bt,\n Dropdown: qi,\n Modal: On,\n Offcanvas: qn,\n Popover: us,\n ScrollSpy: Es,\n Tab: Ks,\n Toast: ao,\n Tooltip: cs\n };\n});","/*! bootstrap-switch-button 2020-02-16 */\n\"use strict\";\n\n!function () {\n class t {\n constructor(t, e) {\n const s = \"On\",\n i = \"primary\",\n n = \"Off\",\n o = \"light\",\n h = \"\",\n l = \"\",\n d = null,\n a = null;\n e = e || {}, this.element = t, this.options = {\n onlabel: t.getAttribute(\"data-onlabel\") || e.onlabel || s,\n onstyle: t.getAttribute(\"data-onstyle\") || e.onstyle || i,\n offlabel: t.getAttribute(\"data-offlabel\") || e.offlabel || n,\n offstyle: t.getAttribute(\"data-offstyle\") || e.offstyle || o,\n size: t.getAttribute(\"data-size\") || e.size || h,\n style: t.getAttribute(\"data-style\") || e.style || l,\n width: t.getAttribute(\"data-width\") || e.width || d,\n height: t.getAttribute(\"data-height\") || e.height || a\n }, this.render();\n }\n render() {\n function t(t) {\n const e = window.getComputedStyle(t),\n s = t.offsetHeight,\n i = parseFloat(e.borderTopWidth);\n return s - parseFloat(e.borderBottomWidth) - i - parseFloat(e.paddingTop) - parseFloat(e.paddingBottom);\n }\n var e = document.createElement(\"label\");\n e.setAttribute(\"class\", \"btn btn-\" + this.options.onstyle + \" btn-\" + this.options.size), e.setAttribute(\"for\", this.element.id), e.innerHTML = this.options.onlabel;\n var s = document.createElement(\"label\");\n s.setAttribute(\"class\", \"btn btn-\" + this.options.offstyle + \" btn-\" + this.options.size), e.setAttribute(\"for\", this.element.id), s.innerHTML = this.options.offlabel;\n var i = document.createElement(\"span\");\n i.setAttribute(\"class\", \"switch-handle btn btn-light btn-\" + this.options.size);\n var n = document.createElement(\"div\");\n n.setAttribute(\"class\", \"switch-group\"), n.appendChild(e), n.appendChild(s), n.appendChild(i);\n var o = document.createElement(\"div\");\n o.setAttribute(\"class\", \"switch btn\"), o.classList.add(this.element.checked ? \"btn-\" + this.options.onstyle : \"btn-\" + this.options.offstyle), this.options.size && o.classList.add(\"btn-\" + this.options.size), this.options.style && o.classList.add(this.options.style), this.element.parentElement.insertBefore(o, this.element), o.appendChild(this.element), o.appendChild(n), o.style.width = (this.options.width || Math.max(e.getBoundingClientRect().width, s.getBoundingClientRect().width + i.getBoundingClientRect().width / 2)) + \"px\", o.style.height = (this.options.height || Math.max(e.getBoundingClientRect().height, s.getBoundingClientRect().height)) + \"px\", e.classList.add(\"switch-on\"), s.classList.add(\"switch-off\"), this.options.height && (e.style.lineHeight = t(e) + \"px\", s.style.lineHeight = t(s) + \"px\"), o.addEventListener(\"touchstart\", this.toggle.bind(this)), o.addEventListener(\"click\", this.toggle.bind(this)), this.switch = o, this.element.switchBtn = this, this.update(!0);\n }\n toggle(t) {\n this.element.checked ? this.off() : this.on(), void 0 !== t && t && t.preventDefault();\n }\n on(t) {\n if (this.element.disabled) return !1;\n this.switch.classList.remove(\"btn-\" + this.options.offstyle), this.switch.classList.add(\"btn-\" + this.options.onstyle), this.switch.classList.remove(\"off\"), this.element.checked = !0, t || this.trigger();\n }\n off(t) {\n if (this.element.disabled) return !1;\n this.switch.classList.remove(\"btn-\" + this.options.onstyle), this.switch.classList.add(\"btn-\" + this.options.offstyle), this.switch.classList.add(\"off\"), this.element.checked = !1, t || this.trigger();\n }\n enable() {\n this.switch.classList.remove(\"disabled\"), this.switch.removeAttribute(\"disabled\"), this.element.removeAttribute(\"disabled\");\n }\n disable() {\n this.switch.classList.add(\"disabled\"), this.switch.setAttribute(\"disabled\", \"disabled\"), this.element.setAttribute(\"disabled\", \"disabled\");\n }\n update(t) {\n this.element.disabled ? this.disable() : this.enable(), this.element.checked ? this.on(t) : this.off(t);\n }\n trigger(t) {\n t || this.element.dispatchEvent(new Event(\"change\", {\n bubbles: !0\n }));\n }\n destroy() {\n this.switch.parentNode.insertBefore(this.element, this.switch), this.switch.parentNode.removeChild(this.switch), delete this.element.switchBtn, delete this.switch;\n }\n }\n Element.prototype.switchButton = function (e, s) {\n var i = this.switchBtn || new t(this, e);\n e && \"string\" == typeof e && (\"toggle\" == e.toLowerCase() ? i.toggle() : \"on\" == e.toLowerCase() ? i.on(s) : \"off\" == e.toLowerCase() ? i.off(s) : \"enable\" == e.toLowerCase() ? i.enable() : \"disable\" == e.toLowerCase() ? i.disable() : \"destroy\" == e.toLowerCase() && i.destroy());\n }, \"undefined\" != typeof window && (window.onload = function () {\n document.querySelectorAll('input[type=checkbox][data-toggle=\"switchbutton\"]').forEach(function (t) {\n t.switchButton();\n });\n }), \"undefined\" != typeof module && module.exports && (module.exports = t);\n}();","/*! Summernote v0.8.20 | (c) 2013- Alan Hong and contributors | MIT license */\n!function (t, e) {\n if (\"object\" == typeof exports && \"object\" == typeof module) module.exports = e(require(\"jQuery\"));else if (\"function\" == typeof define && define.amd) define([\"jQuery\"], e);else {\n var o = \"object\" == typeof exports ? e(require(\"jQuery\")) : e(t.jQuery);\n for (var n in o) (\"object\" == typeof exports ? exports : t)[n] = o[n];\n }\n}(self, function (t) {\n return (() => {\n \"use strict\";\n\n var e = {\n 9770: (t, e, o) => {\n var n = o(1145),\n i = o.n(n);\n i().summernote = i().summernote || {\n lang: {}\n }, i().extend(i().summernote.lang, {\n \"en-US\": {\n font: {\n bold: \"Bold\",\n italic: \"Italic\",\n underline: \"Underline\",\n clear: \"Remove Font Style\",\n height: \"Line Height\",\n name: \"Font Family\",\n strikethrough: \"Strikethrough\",\n subscript: \"Subscript\",\n superscript: \"Superscript\",\n size: \"Font Size\",\n sizeunit: \"Font Size Unit\"\n },\n image: {\n image: \"Picture\",\n insert: \"Insert Image\",\n resizeFull: \"Resize full\",\n resizeHalf: \"Resize half\",\n resizeQuarter: \"Resize quarter\",\n resizeNone: \"Original size\",\n floatLeft: \"Float Left\",\n floatRight: \"Float Right\",\n floatNone: \"Remove float\",\n shapeRounded: \"Shape: Rounded\",\n shapeCircle: \"Shape: Circle\",\n shapeThumbnail: \"Shape: Thumbnail\",\n shapeNone: \"Shape: None\",\n dragImageHere: \"Drag image or text here\",\n dropImage: \"Drop image or Text\",\n selectFromFiles: \"Select from files\",\n maximumFileSize: \"Maximum file size\",\n maximumFileSizeError: \"Maximum file size exceeded.\",\n url: \"Image URL\",\n remove: \"Remove Image\",\n original: \"Original\"\n },\n video: {\n video: \"Video\",\n videoLink: \"Video Link\",\n insert: \"Insert Video\",\n url: \"Video URL\",\n providers: \"(YouTube, Google Drive, Vimeo, Vine, Instagram, DailyMotion, Youku, Peertube)\"\n },\n link: {\n link: \"Link\",\n insert: \"Insert Link\",\n unlink: \"Unlink\",\n edit: \"Edit\",\n textToDisplay: \"Text to display\",\n url: \"To what URL should this link go?\",\n openInNewWindow: \"Open in new window\",\n useProtocol: \"Use default protocol\"\n },\n table: {\n table: \"Table\",\n addRowAbove: \"Add row above\",\n addRowBelow: \"Add row below\",\n addColLeft: \"Add column left\",\n addColRight: \"Add column right\",\n delRow: \"Delete row\",\n delCol: \"Delete column\",\n delTable: \"Delete table\"\n },\n hr: {\n insert: \"Insert Horizontal Rule\"\n },\n style: {\n style: \"Style\",\n p: \"Normal\",\n blockquote: \"Quote\",\n pre: \"Code\",\n h1: \"Header 1\",\n h2: \"Header 2\",\n h3: \"Header 3\",\n h4: \"Header 4\",\n h5: \"Header 5\",\n h6: \"Header 6\"\n },\n lists: {\n unordered: \"Unordered list\",\n ordered: \"Ordered list\"\n },\n options: {\n help: \"Help\",\n fullscreen: \"Full Screen\",\n codeview: \"Code View\"\n },\n paragraph: {\n paragraph: \"Paragraph\",\n outdent: \"Outdent\",\n indent: \"Indent\",\n left: \"Align left\",\n center: \"Align center\",\n right: \"Align right\",\n justify: \"Justify full\"\n },\n color: {\n recent: \"Recent Color\",\n more: \"More Color\",\n background: \"Background Color\",\n foreground: \"Text Color\",\n transparent: \"Transparent\",\n setTransparent: \"Set transparent\",\n reset: \"Reset\",\n resetToDefault: \"Reset to default\",\n cpSelect: \"Select\"\n },\n shortcut: {\n shortcuts: \"Keyboard shortcuts\",\n close: \"Close\",\n textFormatting: \"Text formatting\",\n action: \"Action\",\n paragraphFormatting: \"Paragraph formatting\",\n documentStyle: \"Document Style\",\n extraKeys: \"Extra keys\"\n },\n help: {\n escape: \"Escape\",\n insertParagraph: \"Insert Paragraph\",\n undo: \"Undo the last command\",\n redo: \"Redo the last command\",\n tab: \"Tab\",\n untab: \"Untab\",\n bold: \"Set a bold style\",\n italic: \"Set a italic style\",\n underline: \"Set a underline style\",\n strikethrough: \"Set a strikethrough style\",\n removeFormat: \"Clean a style\",\n justifyLeft: \"Set left align\",\n justifyCenter: \"Set center align\",\n justifyRight: \"Set right align\",\n justifyFull: \"Set full align\",\n insertUnorderedList: \"Toggle unordered list\",\n insertOrderedList: \"Toggle ordered list\",\n outdent: \"Outdent on current paragraph\",\n indent: \"Indent on current paragraph\",\n formatPara: \"Change current block's format as a paragraph(P tag)\",\n formatH1: \"Change current block's format as H1\",\n formatH2: \"Change current block's format as H2\",\n formatH3: \"Change current block's format as H3\",\n formatH4: \"Change current block's format as H4\",\n formatH5: \"Change current block's format as H5\",\n formatH6: \"Change current block's format as H6\",\n insertHorizontalRule: \"Insert horizontal rule\",\n \"linkDialog.show\": \"Show Link Dialog\"\n },\n history: {\n undo: \"Undo\",\n redo: \"Redo\"\n },\n specialChar: {\n specialChar: \"SPECIAL CHARACTERS\",\n select: \"Select Special characters\"\n },\n output: {\n noSelection: \"No Selection Made!\"\n }\n }\n });\n },\n 1145: e => {\n e.exports = t;\n }\n },\n o = {};\n function n(t) {\n var i = o[t];\n if (void 0 !== i) return i.exports;\n var r = o[t] = {\n exports: {}\n };\n return e[t](r, r.exports, n), r.exports;\n }\n n.n = t => {\n var e = t && t.__esModule ? () => t.default : () => t;\n return n.d(e, {\n a: e\n }), e;\n }, n.d = (t, e) => {\n for (var o in e) n.o(e, o) && !n.o(t, o) && Object.defineProperty(t, o, {\n enumerable: !0,\n get: e[o]\n });\n }, n.o = (t, e) => Object.prototype.hasOwnProperty.call(t, e), n.r = t => {\n \"undefined\" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, {\n value: \"Module\"\n }), Object.defineProperty(t, \"__esModule\", {\n value: !0\n });\n };\n var i = {};\n return (() => {\n n.r(i);\n var t = n(1145),\n e = n.n(t),\n o = (n(9770), [\"sans-serif\", \"serif\", \"monospace\", \"cursive\", \"fantasy\"]);\n function r(t) {\n return -1 === e().inArray(t.toLowerCase(), o) ? \"'\".concat(t, \"'\") : t;\n }\n var a,\n s = navigator.userAgent,\n l = /MSIE|Trident/i.test(s);\n if (l) {\n var c = /MSIE (\\d+[.]\\d+)/.exec(s);\n c && (a = parseFloat(c[1])), (c = /Trident\\/.*rv:([0-9]{1,}[.0-9]{0,})/.exec(s)) && (a = parseFloat(c[1]));\n }\n var u = /Edge\\/\\d+/.test(s),\n d = \"ontouchstart\" in window || navigator.MaxTouchPoints > 0 || navigator.msMaxTouchPoints > 0,\n h = l ? \"DOMCharacterDataModified DOMSubtreeModified DOMNodeInserted\" : \"input\";\n const f = {\n isMac: navigator.appVersion.indexOf(\"Mac\") > -1,\n isMSIE: l,\n isEdge: u,\n isFF: !u && /firefox/i.test(s),\n isPhantom: /PhantomJS/i.test(s),\n isWebkit: !u && /webkit/i.test(s),\n isChrome: !u && /chrome/i.test(s),\n isSafari: !u && /safari/i.test(s) && !/chrome/i.test(s),\n browserVersion: a,\n isSupportTouch: d,\n isFontInstalled: function (t) {\n var e = \"Comic Sans MS\" === t ? \"Courier New\" : \"Comic Sans MS\",\n o = \"mmmmmmmmmmwwwww\",\n n = document.createElement(\"canvas\").getContext(\"2d\");\n n.font = \"200px '\" + e + \"'\";\n var i = n.measureText(o).width;\n return n.font = \"200px \" + r(t) + ', \"' + e + '\"', i !== n.measureText(o).width;\n },\n isW3CRangeSupport: !!document.createRange,\n inputEventName: h,\n genericFontFamilies: o,\n validFontName: r\n };\n var p = 0;\n const v = {\n eq: function (t) {\n return function (e) {\n return t === e;\n };\n },\n eq2: function (t, e) {\n return t === e;\n },\n peq2: function (t) {\n return function (e, o) {\n return e[t] === o[t];\n };\n },\n ok: function () {\n return !0;\n },\n fail: function () {\n return !1;\n },\n self: function (t) {\n return t;\n },\n not: function (t) {\n return function () {\n return !t.apply(t, arguments);\n };\n },\n and: function (t, e) {\n return function (o) {\n return t(o) && e(o);\n };\n },\n invoke: function (t, e) {\n return function () {\n return t[e].apply(t, arguments);\n };\n },\n resetUniqueId: function () {\n p = 0;\n },\n uniqueId: function (t) {\n var e = ++p + \"\";\n return t ? t + e : e;\n },\n rect2bnd: function (t) {\n var o = e()(document);\n return {\n top: t.top + o.scrollTop(),\n left: t.left + o.scrollLeft(),\n width: t.right - t.left,\n height: t.bottom - t.top\n };\n },\n invertObject: function (t) {\n var e = {};\n for (var o in t) Object.prototype.hasOwnProperty.call(t, o) && (e[t[o]] = o);\n return e;\n },\n namespaceToCamel: function (t, e) {\n return (e = e || \"\") + t.split(\".\").map(function (t) {\n return t.substring(0, 1).toUpperCase() + t.substring(1);\n }).join(\"\");\n },\n debounce: function (t, e, o) {\n var n;\n return function () {\n var i = this,\n r = arguments,\n a = function () {\n n = null, o || t.apply(i, r);\n },\n s = o && !n;\n clearTimeout(n), n = setTimeout(a, e), s && t.apply(i, r);\n };\n },\n isValidUrl: function (t) {\n return /[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)/gi.test(t);\n }\n };\n function m(t) {\n return t[0];\n }\n function g(t) {\n return t[t.length - 1];\n }\n function b(t) {\n return t.slice(1);\n }\n function k(t, e) {\n if (t && t.length && e) {\n if (t.indexOf) return -1 !== t.indexOf(e);\n if (t.contains) return t.contains(e);\n }\n return !1;\n }\n const y = {\n head: m,\n last: g,\n initial: function (t) {\n return t.slice(0, t.length - 1);\n },\n tail: b,\n prev: function (t, e) {\n if (t && t.length && e) {\n var o = t.indexOf(e);\n return -1 === o ? null : t[o - 1];\n }\n return null;\n },\n next: function (t, e) {\n if (t && t.length && e) {\n var o = t.indexOf(e);\n return -1 === o ? null : t[o + 1];\n }\n return null;\n },\n find: function (t, e) {\n for (var o = 0, n = t.length; o < n; o++) {\n var i = t[o];\n if (e(i)) return i;\n }\n },\n contains: k,\n all: function (t, e) {\n for (var o = 0, n = t.length; o < n; o++) if (!e(t[o])) return !1;\n return !0;\n },\n sum: function (t, e) {\n return e = e || v.self, t.reduce(function (t, o) {\n return t + e(o);\n }, 0);\n },\n from: function (t) {\n for (var e = [], o = t.length, n = -1; ++n < o;) e[n] = t[n];\n return e;\n },\n isEmpty: function (t) {\n return !t || !t.length;\n },\n clusterBy: function (t, e) {\n return t.length ? b(t).reduce(function (t, o) {\n var n = g(t);\n return e(g(n), o) ? n[n.length] = o : t[t.length] = [o], t;\n }, [[m(t)]]) : [];\n },\n compact: function (t) {\n for (var e = [], o = 0, n = t.length; o < n; o++) t[o] && e.push(t[o]);\n return e;\n },\n unique: function (t) {\n for (var e = [], o = 0, n = t.length; o < n; o++) k(e, t[o]) || e.push(t[o]);\n return e;\n }\n };\n var w = String.fromCharCode(160);\n function C(t) {\n return t && e()(t).hasClass(\"note-editable\");\n }\n function x(t) {\n return t = t.toUpperCase(), function (e) {\n return e && e.nodeName.toUpperCase() === t;\n };\n }\n function S(t) {\n return t && 3 === t.nodeType;\n }\n function T(t) {\n return t && /^BR|^IMG|^HR|^IFRAME|^BUTTON|^INPUT|^AUDIO|^VIDEO|^EMBED/.test(t.nodeName.toUpperCase());\n }\n function E(t) {\n return !C(t) && t && /^DIV|^P|^LI|^H[1-7]/.test(t.nodeName.toUpperCase());\n }\n var $ = x(\"PRE\"),\n N = x(\"LI\");\n var I = x(\"TABLE\"),\n P = x(\"DATA\");\n function R(t) {\n return !(H(t) || L(t) || A(t) || E(t) || I(t) || D(t) || P(t));\n }\n function L(t) {\n return t && /^UL|^OL/.test(t.nodeName.toUpperCase());\n }\n var A = x(\"HR\");\n function F(t) {\n return t && /^TD|^TH/.test(t.nodeName.toUpperCase());\n }\n var D = x(\"BLOCKQUOTE\");\n function H(t) {\n return F(t) || D(t) || C(t);\n }\n var B = x(\"A\");\n var z = x(\"BODY\");\n var M = f.isMSIE && f.browserVersion < 11 ? \" \" : \"<br>\";\n function O(t) {\n return S(t) ? t.nodeValue.length : t ? t.childNodes.length : 0;\n }\n function j(t) {\n var e = O(t);\n return 0 === e || !S(t) && 1 === e && t.innerHTML === M || !(!y.all(t.childNodes, S) || \"\" !== t.innerHTML);\n }\n function U(t) {\n T(t) || O(t) || (t.innerHTML = M);\n }\n function W(t, e) {\n for (; t;) {\n if (e(t)) return t;\n if (C(t)) break;\n t = t.parentNode;\n }\n return null;\n }\n function K(t, e) {\n e = e || v.fail;\n var o = [];\n return W(t, function (t) {\n return C(t) || o.push(t), e(t);\n }), o;\n }\n function V(t, e) {\n e = e || v.fail;\n for (var o = []; t && !e(t);) o.push(t), t = t.nextSibling;\n return o;\n }\n function q(t, e) {\n var o = e.nextSibling,\n n = e.parentNode;\n return o ? n.insertBefore(t, o) : n.appendChild(t), t;\n }\n function _(t, o) {\n return e().each(o, function (e, o) {\n t.appendChild(o);\n }), t;\n }\n function G(t) {\n return 0 === t.offset;\n }\n function Y(t) {\n return t.offset === O(t.node);\n }\n function Z(t) {\n return G(t) || Y(t);\n }\n function X(t, e) {\n for (; t && t !== e;) {\n if (0 !== J(t)) return !1;\n t = t.parentNode;\n }\n return !0;\n }\n function Q(t, e) {\n if (!e) return !1;\n for (; t && t !== e;) {\n if (J(t) !== O(t.parentNode) - 1) return !1;\n t = t.parentNode;\n }\n return !0;\n }\n function J(t) {\n for (var e = 0; t = t.previousSibling;) e += 1;\n return e;\n }\n function tt(t) {\n return !!(t && t.childNodes && t.childNodes.length);\n }\n function et(t, e) {\n var o, n;\n if (0 === t.offset) {\n if (C(t.node)) return null;\n o = t.node.parentNode, n = J(t.node);\n } else tt(t.node) ? n = O(o = t.node.childNodes[t.offset - 1]) : (o = t.node, n = e ? 0 : t.offset - 1);\n return {\n node: o,\n offset: n\n };\n }\n function ot(t, e) {\n var o, n;\n if (O(t.node) === t.offset) {\n if (C(t.node)) return null;\n var i = it(t.node);\n i ? (o = i, n = 0) : (o = t.node.parentNode, n = J(t.node) + 1);\n } else tt(t.node) ? (o = t.node.childNodes[t.offset], n = 0) : (o = t.node, n = e ? O(t.node) : t.offset + 1);\n return {\n node: o,\n offset: n\n };\n }\n function nt(t, e) {\n var o,\n n = 0;\n if (j(t.node)) return null === t.node ? null : {\n node: o = t.node.nextSibling,\n offset: n = 0\n };\n if (O(t.node) === t.offset) {\n if (C(t.node)) return null;\n o = t.node.parentNode, n = J(t.node) + 1, C(o) && (o = t.node.nextSibling, n = 0);\n } else if (tt(t.node)) {\n if (n = 0, j(o = t.node.childNodes[t.offset])) return j(t.node.nextSibling) ? null : {\n node: t.node.nextSibling,\n offset: n\n };\n } else if (o = t.node, n = e ? O(t.node) : t.offset + 1, j(o)) return null;\n return {\n node: o,\n offset: n\n };\n }\n function it(t) {\n if (t.nextSibling && t.parent === t.nextSibling.parent) return S(t.nextSibling) ? t.nextSibling : it(t.nextSibling);\n }\n function rt(t, e) {\n return t.node === e.node && t.offset === e.offset;\n }\n function at(t, e) {\n var o = e && e.isSkipPaddingBlankHTML,\n n = e && e.isNotSplitEdgePoint,\n i = e && e.isDiscardEmptySplits;\n if (i && (o = !0), Z(t) && (S(t.node) || n)) {\n if (G(t)) return t.node;\n if (Y(t)) return t.node.nextSibling;\n }\n if (S(t.node)) return t.node.splitText(t.offset);\n var r = t.node.childNodes[t.offset],\n a = q(t.node.cloneNode(!1), t.node);\n return _(a, V(r)), o || (U(t.node), U(a)), i && (j(t.node) && ct(t.node), j(a)) ? (ct(a), t.node.nextSibling) : a;\n }\n function st(t, e, o) {\n var n = K(e.node, v.eq(t));\n return n.length ? 1 === n.length ? at(e, o) : n.reduce(function (t, n) {\n return t === e.node && (t = at(e, o)), at({\n node: n,\n offset: t ? J(t) : O(n)\n }, o);\n }) : null;\n }\n function lt(t) {\n return document.createElement(t);\n }\n function ct(t, e) {\n if (t && t.parentNode) {\n if (t.removeNode) return t.removeNode(e);\n var o = t.parentNode;\n if (!e) {\n for (var n = [], i = 0, r = t.childNodes.length; i < r; i++) n.push(t.childNodes[i]);\n for (var a = 0, s = n.length; a < s; a++) o.insertBefore(n[a], t);\n }\n o.removeChild(t);\n }\n }\n var ut = x(\"TEXTAREA\");\n function dt(t, e) {\n var o = ut(t[0]) ? t.val() : t.html();\n return e ? o.replace(/[\\n\\r]/g, \"\") : o;\n }\n const ht = {\n NBSP_CHAR: w,\n ZERO_WIDTH_NBSP_CHAR: \"\\ufeff\",\n blank: M,\n emptyPara: \"<p>\".concat(M, \"</p>\"),\n makePredByNodeName: x,\n isEditable: C,\n isControlSizing: function (t) {\n return t && e()(t).hasClass(\"note-control-sizing\");\n },\n isText: S,\n isElement: function (t) {\n return t && 1 === t.nodeType;\n },\n isVoid: T,\n isPara: E,\n isPurePara: function (t) {\n return E(t) && !N(t);\n },\n isHeading: function (t) {\n return t && /^H[1-7]/.test(t.nodeName.toUpperCase());\n },\n isInline: R,\n isBlock: v.not(R),\n isBodyInline: function (t) {\n return R(t) && !W(t, E);\n },\n isBody: z,\n isParaInline: function (t) {\n return R(t) && !!W(t, E);\n },\n isPre: $,\n isList: L,\n isTable: I,\n isData: P,\n isCell: F,\n isBlockquote: D,\n isBodyContainer: H,\n isAnchor: B,\n isDiv: x(\"DIV\"),\n isLi: N,\n isBR: x(\"BR\"),\n isSpan: x(\"SPAN\"),\n isB: x(\"B\"),\n isU: x(\"U\"),\n isS: x(\"S\"),\n isI: x(\"I\"),\n isImg: x(\"IMG\"),\n isTextarea: ut,\n deepestChildIsEmpty: function (t) {\n do {\n if (null === t.firstElementChild || \"\" === t.firstElementChild.innerHTML) break;\n } while (t = t.firstElementChild);\n return j(t);\n },\n isEmpty: j,\n isEmptyAnchor: v.and(B, j),\n isClosestSibling: function (t, e) {\n return t.nextSibling === e || t.previousSibling === e;\n },\n withClosestSiblings: function (t, e) {\n e = e || v.ok;\n var o = [];\n return t.previousSibling && e(t.previousSibling) && o.push(t.previousSibling), o.push(t), t.nextSibling && e(t.nextSibling) && o.push(t.nextSibling), o;\n },\n nodeLength: O,\n isLeftEdgePoint: G,\n isRightEdgePoint: Y,\n isEdgePoint: Z,\n isLeftEdgeOf: X,\n isRightEdgeOf: Q,\n isLeftEdgePointOf: function (t, e) {\n return G(t) && X(t.node, e);\n },\n isRightEdgePointOf: function (t, e) {\n return Y(t) && Q(t.node, e);\n },\n prevPoint: et,\n nextPoint: ot,\n nextPointWithEmptyNode: nt,\n isSamePoint: rt,\n isVisiblePoint: function (t) {\n if (S(t.node) || !tt(t.node) || j(t.node)) return !0;\n var e = t.node.childNodes[t.offset - 1],\n o = t.node.childNodes[t.offset];\n return !((e && !T(e) || o && !T(o)) && !I(o));\n },\n prevPointUntil: function (t, e) {\n for (; t;) {\n if (e(t)) return t;\n t = et(t);\n }\n return null;\n },\n nextPointUntil: function (t, e) {\n for (; t;) {\n if (e(t)) return t;\n t = ot(t);\n }\n return null;\n },\n isCharPoint: function (t) {\n if (!S(t.node)) return !1;\n var e = t.node.nodeValue.charAt(t.offset - 1);\n return e && \" \" !== e && e !== w;\n },\n isSpacePoint: function (t) {\n if (!S(t.node)) return !1;\n var e = t.node.nodeValue.charAt(t.offset - 1);\n return \" \" === e || e === w;\n },\n walkPoint: function (t, e, o, n) {\n for (var i = t; i && (o(i), !rt(i, e));) {\n i = nt(i, n && t.node !== i.node && e.node !== i.node);\n }\n },\n ancestor: W,\n singleChildAncestor: function (t, e) {\n for (t = t.parentNode; t && 1 === O(t);) {\n if (e(t)) return t;\n if (C(t)) break;\n t = t.parentNode;\n }\n return null;\n },\n listAncestor: K,\n lastAncestor: function (t, e) {\n var o = K(t);\n return y.last(o.filter(e));\n },\n listNext: V,\n listPrev: function (t, e) {\n e = e || v.fail;\n for (var o = []; t && !e(t);) o.push(t), t = t.previousSibling;\n return o;\n },\n listDescendant: function (t, e) {\n var o = [];\n return e = e || v.ok, function n(i) {\n t !== i && e(i) && o.push(i);\n for (var r = 0, a = i.childNodes.length; r < a; r++) n(i.childNodes[r]);\n }(t), o;\n },\n commonAncestor: function (t, e) {\n for (var o = K(t), n = e; n; n = n.parentNode) if (o.indexOf(n) > -1) return n;\n return null;\n },\n wrap: function (t, o) {\n var n = t.parentNode,\n i = e()(\"<\" + o + \">\")[0];\n return n.insertBefore(i, t), i.appendChild(t), i;\n },\n insertAfter: q,\n appendChildNodes: _,\n position: J,\n hasChildren: tt,\n makeOffsetPath: function (t, e) {\n return K(e, v.eq(t)).map(J).reverse();\n },\n fromOffsetPath: function (t, e) {\n for (var o = t, n = 0, i = e.length; n < i; n++) o = o.childNodes.length <= e[n] ? o.childNodes[o.childNodes.length - 1] : o.childNodes[e[n]];\n return o;\n },\n splitTree: st,\n splitPoint: function (t, e) {\n var o,\n n,\n i = e ? E : H,\n r = K(t.node, i),\n a = y.last(r) || t.node;\n i(a) ? (o = r[r.length - 2], n = a) : n = (o = a).parentNode;\n var s = o && st(o, t, {\n isSkipPaddingBlankHTML: e,\n isNotSplitEdgePoint: e\n });\n return s || n !== t.node || (s = t.node.childNodes[t.offset]), {\n rightNode: s,\n container: n\n };\n },\n create: lt,\n createText: function (t) {\n return document.createTextNode(t);\n },\n remove: ct,\n removeWhile: function (t, e) {\n for (; t && !C(t) && e(t);) {\n var o = t.parentNode;\n ct(t), t = o;\n }\n },\n replace: function (t, e) {\n if (t.nodeName.toUpperCase() === e.toUpperCase()) return t;\n var o = lt(e);\n return t.style.cssText && (o.style.cssText = t.style.cssText), _(o, y.from(t.childNodes)), q(o, t), ct(t), o;\n },\n html: function (t, e) {\n var o = dt(t);\n if (e) {\n o = (o = o.replace(/<(\\/?)(\\b(?!!)[^>\\s]*)(.*?)(\\s*\\/?>)/g, function (t, e, o) {\n o = o.toUpperCase();\n var n = /^DIV|^TD|^TH|^P|^LI|^H[1-7]/.test(o) && !!e,\n i = /^BLOCKQUOTE|^TABLE|^TBODY|^TR|^HR|^UL|^OL/.test(o);\n return t + (n || i ? \"\\n\" : \"\");\n })).trim();\n }\n return o;\n },\n value: dt,\n posFromPlaceholder: function (t) {\n var o = e()(t),\n n = o.offset(),\n i = o.outerHeight(!0);\n return {\n left: n.left,\n top: n.top + i\n };\n },\n attachEvents: function (t, e) {\n Object.keys(e).forEach(function (o) {\n t.on(o, e[o]);\n });\n },\n detachEvents: function (t, e) {\n Object.keys(e).forEach(function (o) {\n t.off(o, e[o]);\n });\n },\n isCustomStyleTag: function (t) {\n return t && !S(t) && y.contains(t.classList, \"note-styletag\");\n }\n };\n function ft(t, e) {\n for (var o = 0; o < e.length; o++) {\n var n = e[o];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n var pt = function () {\n function t(o, n) {\n !function (t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, t), this.$note = o, this.memos = {}, this.modules = {}, this.layoutInfo = {}, this.options = e().extend(!0, {}, n), e().summernote.ui = e().summernote.ui_template(this.options), this.ui = e().summernote.ui, this.initialize();\n }\n var o, n, i;\n return o = t, n = [{\n key: \"initialize\",\n value: function () {\n return this.layoutInfo = this.ui.createLayout(this.$note), this._initialize(), this.$note.hide(), this;\n }\n }, {\n key: \"destroy\",\n value: function () {\n this._destroy(), this.$note.removeData(\"summernote\"), this.ui.removeLayout(this.$note, this.layoutInfo);\n }\n }, {\n key: \"reset\",\n value: function () {\n var t = this.isDisabled();\n this.code(ht.emptyPara), this._destroy(), this._initialize(), t && this.disable();\n }\n }, {\n key: \"_initialize\",\n value: function () {\n var t = this;\n this.options.id = v.uniqueId(e().now()), this.options.container = this.options.container || this.layoutInfo.editor;\n var o = e().extend({}, this.options.buttons);\n Object.keys(o).forEach(function (e) {\n t.memo(\"button.\" + e, o[e]);\n });\n var n = e().extend({}, this.options.modules, e().summernote.plugins || {});\n Object.keys(n).forEach(function (e) {\n t.module(e, n[e], !0);\n }), Object.keys(this.modules).forEach(function (e) {\n t.initializeModule(e);\n });\n }\n }, {\n key: \"_destroy\",\n value: function () {\n var t = this;\n Object.keys(this.modules).reverse().forEach(function (e) {\n t.removeModule(e);\n }), Object.keys(this.memos).forEach(function (e) {\n t.removeMemo(e);\n }), this.triggerEvent(\"destroy\", this);\n }\n }, {\n key: \"code\",\n value: function (t) {\n var e = this.invoke(\"codeview.isActivated\");\n if (void 0 === t) return this.invoke(\"codeview.sync\"), e ? this.layoutInfo.codable.val() : this.layoutInfo.editable.html();\n e ? this.invoke(\"codeview.sync\", t) : this.layoutInfo.editable.html(t), this.$note.val(t), this.triggerEvent(\"change\", t, this.layoutInfo.editable);\n }\n }, {\n key: \"isDisabled\",\n value: function () {\n return \"false\" === this.layoutInfo.editable.attr(\"contenteditable\");\n }\n }, {\n key: \"enable\",\n value: function () {\n this.layoutInfo.editable.attr(\"contenteditable\", !0), this.invoke(\"toolbar.activate\", !0), this.triggerEvent(\"disable\", !1), this.options.editing = !0;\n }\n }, {\n key: \"disable\",\n value: function () {\n this.invoke(\"codeview.isActivated\") && this.invoke(\"codeview.deactivate\"), this.layoutInfo.editable.attr(\"contenteditable\", !1), this.options.editing = !1, this.invoke(\"toolbar.deactivate\", !0), this.triggerEvent(\"disable\", !0);\n }\n }, {\n key: \"triggerEvent\",\n value: function () {\n var t = y.head(arguments),\n e = y.tail(y.from(arguments)),\n o = this.options.callbacks[v.namespaceToCamel(t, \"on\")];\n o && o.apply(this.$note[0], e), this.$note.trigger(\"summernote.\" + t, e);\n }\n }, {\n key: \"initializeModule\",\n value: function (t) {\n var e = this.modules[t];\n e.shouldInitialize = e.shouldInitialize || v.ok, e.shouldInitialize() && (e.initialize && e.initialize(), e.events && ht.attachEvents(this.$note, e.events));\n }\n }, {\n key: \"module\",\n value: function (t, e, o) {\n if (1 === arguments.length) return this.modules[t];\n this.modules[t] = new e(this), o || this.initializeModule(t);\n }\n }, {\n key: \"removeModule\",\n value: function (t) {\n var e = this.modules[t];\n e.shouldInitialize() && (e.events && ht.detachEvents(this.$note, e.events), e.destroy && e.destroy()), delete this.modules[t];\n }\n }, {\n key: \"memo\",\n value: function (t, e) {\n if (1 === arguments.length) return this.memos[t];\n this.memos[t] = e;\n }\n }, {\n key: \"removeMemo\",\n value: function (t) {\n this.memos[t] && this.memos[t].destroy && this.memos[t].destroy(), delete this.memos[t];\n }\n }, {\n key: \"createInvokeHandlerAndUpdateState\",\n value: function (t, e) {\n var o = this;\n return function (n) {\n o.createInvokeHandler(t, e)(n), o.invoke(\"buttons.updateCurrentStyle\");\n };\n }\n }, {\n key: \"createInvokeHandler\",\n value: function (t, o) {\n var n = this;\n return function (i) {\n i.preventDefault();\n var r = e()(i.target);\n n.invoke(t, o || r.closest(\"[data-value]\").data(\"value\"), r);\n };\n }\n }, {\n key: \"invoke\",\n value: function () {\n var t = y.head(arguments),\n e = y.tail(y.from(arguments)),\n o = t.split(\".\"),\n n = o.length > 1,\n i = n && y.head(o),\n r = n ? y.last(o) : y.head(o),\n a = this.modules[i || \"editor\"];\n return !i && this[r] ? this[r].apply(this, e) : a && a[r] && a.shouldInitialize() ? a[r].apply(a, e) : void 0;\n }\n }], n && ft(o.prototype, n), i && ft(o, i), t;\n }();\n function vt(t, e) {\n for (var o = 0; o < e.length; o++) {\n var n = e[o];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n function mt(t, e) {\n var o,\n n,\n i = t.parentElement(),\n r = document.body.createTextRange(),\n a = y.from(i.childNodes);\n for (o = 0; o < a.length; o++) if (!ht.isText(a[o])) {\n if (r.moveToElementText(a[o]), r.compareEndPoints(\"StartToStart\", t) >= 0) break;\n n = a[o];\n }\n if (0 !== o && ht.isText(a[o - 1])) {\n var s = document.body.createTextRange(),\n l = null;\n s.moveToElementText(n || i), s.collapse(!n), l = n ? n.nextSibling : i.firstChild;\n var c = t.duplicate();\n c.setEndPoint(\"StartToStart\", s);\n for (var u = c.text.replace(/[\\r\\n]/g, \"\").length; u > l.nodeValue.length && l.nextSibling;) u -= l.nodeValue.length, l = l.nextSibling;\n l.nodeValue;\n e && l.nextSibling && ht.isText(l.nextSibling) && u === l.nodeValue.length && (u -= l.nodeValue.length, l = l.nextSibling), i = l, o = u;\n }\n return {\n cont: i,\n offset: o\n };\n }\n function gt(t) {\n var e = document.body.createTextRange(),\n o = function t(e, o) {\n var n, i;\n if (ht.isText(e)) {\n var r = ht.listPrev(e, v.not(ht.isText)),\n a = y.last(r).previousSibling;\n n = a || e.parentNode, o += y.sum(y.tail(r), ht.nodeLength), i = !a;\n } else {\n if (n = e.childNodes[o] || e, ht.isText(n)) return t(n, 0);\n o = 0, i = !1;\n }\n return {\n node: n,\n collapseToStart: i,\n offset: o\n };\n }(t.node, t.offset);\n return e.moveToElementText(o.node), e.collapse(o.collapseToStart), e.moveStart(\"character\", o.offset), e;\n }\n e().fn.extend({\n summernote: function () {\n var t = e().type(y.head(arguments)),\n o = \"string\" === t,\n n = \"object\" === t,\n i = e().extend({}, e().summernote.options, n ? y.head(arguments) : {});\n i.langInfo = e().extend(!0, {}, e().summernote.lang[\"en-US\"], e().summernote.lang[i.lang]), i.icons = e().extend(!0, {}, e().summernote.options.icons, i.icons), i.tooltip = \"auto\" === i.tooltip ? !f.isSupportTouch : i.tooltip, this.each(function (t, o) {\n var n = e()(o);\n if (!n.data(\"summernote\")) {\n var r = new pt(n, i);\n n.data(\"summernote\", r), n.data(\"summernote\").triggerEvent(\"init\", r.layoutInfo);\n }\n });\n var r = this.first();\n if (r.length) {\n var a = r.data(\"summernote\");\n if (o) return a.invoke.apply(a, y.from(arguments));\n i.focus && a.invoke(\"editor.focus\");\n }\n return this;\n }\n });\n var bt = function () {\n function t(e, o, n, i) {\n !function (t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, t), this.sc = e, this.so = o, this.ec = n, this.eo = i, this.isOnEditable = this.makeIsOn(ht.isEditable), this.isOnList = this.makeIsOn(ht.isList), this.isOnAnchor = this.makeIsOn(ht.isAnchor), this.isOnCell = this.makeIsOn(ht.isCell), this.isOnData = this.makeIsOn(ht.isData);\n }\n var o, n, i;\n return o = t, n = [{\n key: \"nativeRange\",\n value: function () {\n if (f.isW3CRangeSupport) {\n var t = document.createRange();\n return t.setStart(this.sc, this.so), t.setEnd(this.ec, this.eo), t;\n }\n var e = gt({\n node: this.sc,\n offset: this.so\n });\n return e.setEndPoint(\"EndToEnd\", gt({\n node: this.ec,\n offset: this.eo\n })), e;\n }\n }, {\n key: \"getPoints\",\n value: function () {\n return {\n sc: this.sc,\n so: this.so,\n ec: this.ec,\n eo: this.eo\n };\n }\n }, {\n key: \"getStartPoint\",\n value: function () {\n return {\n node: this.sc,\n offset: this.so\n };\n }\n }, {\n key: \"getEndPoint\",\n value: function () {\n return {\n node: this.ec,\n offset: this.eo\n };\n }\n }, {\n key: \"select\",\n value: function () {\n var t = this.nativeRange();\n if (f.isW3CRangeSupport) {\n var e = document.getSelection();\n e.rangeCount > 0 && e.removeAllRanges(), e.addRange(t);\n } else t.select();\n return this;\n }\n }, {\n key: \"scrollIntoView\",\n value: function (t) {\n var o = e()(t).height();\n return t.scrollTop + o < this.sc.offsetTop && (t.scrollTop += Math.abs(t.scrollTop + o - this.sc.offsetTop)), this;\n }\n }, {\n key: \"normalize\",\n value: function () {\n var e = function (t, e) {\n if (!t) return t;\n if (ht.isVisiblePoint(t) && (!ht.isEdgePoint(t) || ht.isRightEdgePoint(t) && !e || ht.isLeftEdgePoint(t) && e || ht.isRightEdgePoint(t) && e && ht.isVoid(t.node.nextSibling) || ht.isLeftEdgePoint(t) && !e && ht.isVoid(t.node.previousSibling) || ht.isBlock(t.node) && ht.isEmpty(t.node))) return t;\n var o = ht.ancestor(t.node, ht.isBlock),\n n = !1;\n if (!n) {\n var i = ht.prevPoint(t) || {\n node: null\n };\n n = (ht.isLeftEdgePointOf(t, o) || ht.isVoid(i.node)) && !e;\n }\n var r = !1;\n if (!r) {\n var a = ht.nextPoint(t) || {\n node: null\n };\n r = (ht.isRightEdgePointOf(t, o) || ht.isVoid(a.node)) && e;\n }\n if (n || r) {\n if (ht.isVisiblePoint(t)) return t;\n e = !e;\n }\n return (e ? ht.nextPointUntil(ht.nextPoint(t), ht.isVisiblePoint) : ht.prevPointUntil(ht.prevPoint(t), ht.isVisiblePoint)) || t;\n },\n o = e(this.getEndPoint(), !1),\n n = this.isCollapsed() ? o : e(this.getStartPoint(), !0);\n return new t(n.node, n.offset, o.node, o.offset);\n }\n }, {\n key: \"nodes\",\n value: function (t, e) {\n t = t || v.ok;\n var o = e && e.includeAncestor,\n n = e && e.fullyContains,\n i = this.getStartPoint(),\n r = this.getEndPoint(),\n a = [],\n s = [];\n return ht.walkPoint(i, r, function (e) {\n var i;\n ht.isEditable(e.node) || (n ? (ht.isLeftEdgePoint(e) && s.push(e.node), ht.isRightEdgePoint(e) && y.contains(s, e.node) && (i = e.node)) : i = o ? ht.ancestor(e.node, t) : e.node, i && t(i) && a.push(i));\n }, !0), y.unique(a);\n }\n }, {\n key: \"commonAncestor\",\n value: function () {\n return ht.commonAncestor(this.sc, this.ec);\n }\n }, {\n key: \"expand\",\n value: function (e) {\n var o = ht.ancestor(this.sc, e),\n n = ht.ancestor(this.ec, e);\n if (!o && !n) return new t(this.sc, this.so, this.ec, this.eo);\n var i = this.getPoints();\n return o && (i.sc = o, i.so = 0), n && (i.ec = n, i.eo = ht.nodeLength(n)), new t(i.sc, i.so, i.ec, i.eo);\n }\n }, {\n key: \"collapse\",\n value: function (e) {\n return e ? new t(this.sc, this.so, this.sc, this.so) : new t(this.ec, this.eo, this.ec, this.eo);\n }\n }, {\n key: \"splitText\",\n value: function () {\n var e = this.sc === this.ec,\n o = this.getPoints();\n return ht.isText(this.ec) && !ht.isEdgePoint(this.getEndPoint()) && this.ec.splitText(this.eo), ht.isText(this.sc) && !ht.isEdgePoint(this.getStartPoint()) && (o.sc = this.sc.splitText(this.so), o.so = 0, e && (o.ec = o.sc, o.eo = this.eo - this.so)), new t(o.sc, o.so, o.ec, o.eo);\n }\n }, {\n key: \"deleteContents\",\n value: function () {\n if (this.isCollapsed()) return this;\n var o = this.splitText(),\n n = o.nodes(null, {\n fullyContains: !0\n }),\n i = ht.prevPointUntil(o.getStartPoint(), function (t) {\n return !y.contains(n, t.node);\n }),\n r = [];\n return e().each(n, function (t, e) {\n var o = e.parentNode;\n i.node !== o && 1 === ht.nodeLength(o) && r.push(o), ht.remove(e, !1);\n }), e().each(r, function (t, e) {\n ht.remove(e, !1);\n }), new t(i.node, i.offset, i.node, i.offset).normalize();\n }\n }, {\n key: \"makeIsOn\",\n value: function (t) {\n return function () {\n var e = ht.ancestor(this.sc, t);\n return !!e && e === ht.ancestor(this.ec, t);\n };\n }\n }, {\n key: \"isLeftEdgeOf\",\n value: function (t) {\n if (!ht.isLeftEdgePoint(this.getStartPoint())) return !1;\n var e = ht.ancestor(this.sc, t);\n return e && ht.isLeftEdgeOf(this.sc, e);\n }\n }, {\n key: \"isCollapsed\",\n value: function () {\n return this.sc === this.ec && this.so === this.eo;\n }\n }, {\n key: \"wrapBodyInlineWithPara\",\n value: function () {\n if (ht.isBodyContainer(this.sc) && ht.isEmpty(this.sc)) return this.sc.innerHTML = ht.emptyPara, new t(this.sc.firstChild, 0, this.sc.firstChild, 0);\n var e,\n o = this.normalize();\n if (ht.isParaInline(this.sc) || ht.isPara(this.sc)) return o;\n if (ht.isInline(o.sc)) {\n var n = ht.listAncestor(o.sc, v.not(ht.isInline));\n e = y.last(n), ht.isInline(e) || (e = n[n.length - 2] || o.sc.childNodes[o.so]);\n } else e = o.sc.childNodes[o.so > 0 ? o.so - 1 : 0];\n if (e) {\n var i = ht.listPrev(e, ht.isParaInline).reverse();\n if ((i = i.concat(ht.listNext(e.nextSibling, ht.isParaInline))).length) {\n var r = ht.wrap(y.head(i), \"p\");\n ht.appendChildNodes(r, y.tail(i));\n }\n }\n return this.normalize();\n }\n }, {\n key: \"insertNode\",\n value: function (t) {\n var e = this;\n (ht.isText(t) || ht.isInline(t)) && (e = this.wrapBodyInlineWithPara().deleteContents());\n var o = ht.splitPoint(e.getStartPoint(), ht.isInline(t));\n return o.rightNode ? (o.rightNode.parentNode.insertBefore(t, o.rightNode), ht.isEmpty(o.rightNode) && ht.isPara(t) && o.rightNode.parentNode.removeChild(o.rightNode)) : o.container.appendChild(t), t;\n }\n }, {\n key: \"pasteHTML\",\n value: function (t) {\n t = e().trim(t);\n var o = e()(\"<div></div>\").html(t)[0],\n n = y.from(o.childNodes),\n i = this,\n r = !1;\n return i.so >= 0 && (n = n.reverse(), r = !0), n = n.map(function (t) {\n return i.insertNode(t);\n }), r && (n = n.reverse()), n;\n }\n }, {\n key: \"toString\",\n value: function () {\n var t = this.nativeRange();\n return f.isW3CRangeSupport ? t.toString() : t.text;\n }\n }, {\n key: \"getWordRange\",\n value: function (e) {\n var o = this.getEndPoint();\n if (!ht.isCharPoint(o)) return this;\n var n = ht.prevPointUntil(o, function (t) {\n return !ht.isCharPoint(t);\n });\n return e && (o = ht.nextPointUntil(o, function (t) {\n return !ht.isCharPoint(t);\n })), new t(n.node, n.offset, o.node, o.offset);\n }\n }, {\n key: \"getWordsRange\",\n value: function (e) {\n var o = this.getEndPoint(),\n n = function (t) {\n return !ht.isCharPoint(t) && !ht.isSpacePoint(t);\n };\n if (n(o)) return this;\n var i = ht.prevPointUntil(o, n);\n return e && (o = ht.nextPointUntil(o, n)), new t(i.node, i.offset, o.node, o.offset);\n }\n }, {\n key: \"getWordsMatchRange\",\n value: function (e) {\n var o = this.getEndPoint(),\n n = ht.prevPointUntil(o, function (n) {\n if (!ht.isCharPoint(n) && !ht.isSpacePoint(n)) return !0;\n var i = new t(n.node, n.offset, o.node, o.offset),\n r = e.exec(i.toString());\n return r && 0 === r.index;\n }),\n i = new t(n.node, n.offset, o.node, o.offset),\n r = i.toString(),\n a = e.exec(r);\n return a && a[0].length === r.length ? i : null;\n }\n }, {\n key: \"bookmark\",\n value: function (t) {\n return {\n s: {\n path: ht.makeOffsetPath(t, this.sc),\n offset: this.so\n },\n e: {\n path: ht.makeOffsetPath(t, this.ec),\n offset: this.eo\n }\n };\n }\n }, {\n key: \"paraBookmark\",\n value: function (t) {\n return {\n s: {\n path: y.tail(ht.makeOffsetPath(y.head(t), this.sc)),\n offset: this.so\n },\n e: {\n path: y.tail(ht.makeOffsetPath(y.last(t), this.ec)),\n offset: this.eo\n }\n };\n }\n }, {\n key: \"getClientRects\",\n value: function () {\n return this.nativeRange().getClientRects();\n }\n }], n && vt(o.prototype, n), i && vt(o, i), t;\n }();\n const kt = {\n create: function (t, e, o, n) {\n if (4 === arguments.length) return new bt(t, e, o, n);\n if (2 === arguments.length) return new bt(t, e, o = t, n = e);\n var i = this.createFromSelection();\n if (!i && 1 === arguments.length) {\n var r = arguments[0];\n return ht.isEditable(r) && (r = r.lastChild), this.createFromBodyElement(r, ht.emptyPara === arguments[0].innerHTML);\n }\n return i;\n },\n createFromBodyElement: function (t) {\n var e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1],\n o = this.createFromNode(t);\n return o.collapse(e);\n },\n createFromSelection: function () {\n var t, e, o, n;\n if (f.isW3CRangeSupport) {\n var i = document.getSelection();\n if (!i || 0 === i.rangeCount) return null;\n if (ht.isBody(i.anchorNode)) return null;\n var r = i.getRangeAt(0);\n t = r.startContainer, e = r.startOffset, o = r.endContainer, n = r.endOffset;\n } else {\n var a = document.selection.createRange(),\n s = a.duplicate();\n s.collapse(!1);\n var l = a;\n l.collapse(!0);\n var c = mt(l, !0),\n u = mt(s, !1);\n ht.isText(c.node) && ht.isLeftEdgePoint(c) && ht.isTextNode(u.node) && ht.isRightEdgePoint(u) && u.node.nextSibling === c.node && (c = u), t = c.cont, e = c.offset, o = u.cont, n = u.offset;\n }\n return new bt(t, e, o, n);\n },\n createFromNode: function (t) {\n var e = t,\n o = 0,\n n = t,\n i = ht.nodeLength(n);\n return ht.isVoid(e) && (o = ht.listPrev(e).length - 1, e = e.parentNode), ht.isBR(n) ? (i = ht.listPrev(n).length - 1, n = n.parentNode) : ht.isVoid(n) && (i = ht.listPrev(n).length, n = n.parentNode), this.create(e, o, n, i);\n },\n createFromNodeBefore: function (t) {\n return this.createFromNode(t).collapse(!0);\n },\n createFromNodeAfter: function (t) {\n return this.createFromNode(t).collapse();\n },\n createFromBookmark: function (t, e) {\n var o = ht.fromOffsetPath(t, e.s.path),\n n = e.s.offset,\n i = ht.fromOffsetPath(t, e.e.path),\n r = e.e.offset;\n return new bt(o, n, i, r);\n },\n createFromParaBookmark: function (t, e) {\n var o = t.s.offset,\n n = t.e.offset,\n i = ht.fromOffsetPath(y.head(e), t.s.path),\n r = ht.fromOffsetPath(y.last(e), t.e.path);\n return new bt(i, o, r, n);\n }\n };\n var yt = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n ESCAPE: 27,\n SPACE: 32,\n DELETE: 46,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n NUM0: 48,\n NUM1: 49,\n NUM2: 50,\n NUM3: 51,\n NUM4: 52,\n NUM5: 53,\n NUM6: 54,\n NUM7: 55,\n NUM8: 56,\n B: 66,\n E: 69,\n I: 73,\n J: 74,\n K: 75,\n L: 76,\n R: 82,\n S: 83,\n U: 85,\n V: 86,\n Y: 89,\n Z: 90,\n SLASH: 191,\n LEFTBRACKET: 219,\n BACKSLASH: 220,\n RIGHTBRACKET: 221,\n HOME: 36,\n END: 35,\n PAGEUP: 33,\n PAGEDOWN: 34\n };\n const wt = {\n isEdit: function (t) {\n return y.contains([yt.BACKSPACE, yt.TAB, yt.ENTER, yt.SPACE, yt.DELETE], t);\n },\n isMove: function (t) {\n return y.contains([yt.LEFT, yt.UP, yt.RIGHT, yt.DOWN], t);\n },\n isNavigation: function (t) {\n return y.contains([yt.HOME, yt.END, yt.PAGEUP, yt.PAGEDOWN], t);\n },\n nameFromCode: v.invertObject(yt),\n code: yt\n };\n function Ct(t, e) {\n for (var o = 0; o < e.length; o++) {\n var n = e[o];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n var xt = function () {\n function t(e) {\n !function (t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, t), this.stack = [], this.stackOffset = -1, this.context = e, this.$editable = e.layoutInfo.editable, this.editable = this.$editable[0];\n }\n var e, o, n;\n return e = t, (o = [{\n key: \"makeSnapshot\",\n value: function () {\n var t = kt.create(this.editable);\n return {\n contents: this.$editable.html(),\n bookmark: t && t.isOnEditable() ? t.bookmark(this.editable) : {\n s: {\n path: [],\n offset: 0\n },\n e: {\n path: [],\n offset: 0\n }\n }\n };\n }\n }, {\n key: \"applySnapshot\",\n value: function (t) {\n null !== t.contents && this.$editable.html(t.contents), null !== t.bookmark && kt.createFromBookmark(this.editable, t.bookmark).select();\n }\n }, {\n key: \"rewind\",\n value: function () {\n this.$editable.html() !== this.stack[this.stackOffset].contents && this.recordUndo(), this.stackOffset = 0, this.applySnapshot(this.stack[this.stackOffset]);\n }\n }, {\n key: \"commit\",\n value: function () {\n this.stack = [], this.stackOffset = -1, this.recordUndo();\n }\n }, {\n key: \"reset\",\n value: function () {\n this.stack = [], this.stackOffset = -1, this.$editable.html(\"\"), this.recordUndo();\n }\n }, {\n key: \"undo\",\n value: function () {\n this.$editable.html() !== this.stack[this.stackOffset].contents && this.recordUndo(), this.stackOffset > 0 && (this.stackOffset--, this.applySnapshot(this.stack[this.stackOffset]));\n }\n }, {\n key: \"redo\",\n value: function () {\n this.stack.length - 1 > this.stackOffset && (this.stackOffset++, this.applySnapshot(this.stack[this.stackOffset]));\n }\n }, {\n key: \"recordUndo\",\n value: function () {\n this.stackOffset++, this.stack.length > this.stackOffset && (this.stack = this.stack.slice(0, this.stackOffset)), this.stack.push(this.makeSnapshot()), this.stack.length > this.context.options.historyLimit && (this.stack.shift(), this.stackOffset -= 1);\n }\n }]) && Ct(e.prototype, o), n && Ct(e, n), t;\n }();\n function St(t, e) {\n for (var o = 0; o < e.length; o++) {\n var n = e[o];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n var Tt = function () {\n function t() {\n !function (t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, t);\n }\n var o, n, i;\n return o = t, n = [{\n key: \"jQueryCSS\",\n value: function (t, o) {\n var n = {};\n return e().each(o, function (e, o) {\n n[o] = t.css(o);\n }), n;\n }\n }, {\n key: \"fromNode\",\n value: function (t) {\n var e = this.jQueryCSS(t, [\"font-family\", \"font-size\", \"text-align\", \"list-style-type\", \"line-height\"]) || {},\n o = t[0].style.fontSize || e[\"font-size\"];\n return e[\"font-size\"] = parseInt(o, 10), e[\"font-size-unit\"] = o.match(/[a-z%]+$/), e;\n }\n }, {\n key: \"stylePara\",\n value: function (t, o) {\n e().each(t.nodes(ht.isPara, {\n includeAncestor: !0\n }), function (t, n) {\n e()(n).css(o);\n });\n }\n }, {\n key: \"styleNodes\",\n value: function (t, o) {\n t = t.splitText();\n var n = o && o.nodeName || \"SPAN\",\n i = !(!o || !o.expandClosestSibling),\n r = !(!o || !o.onlyPartialContains);\n if (t.isCollapsed()) return [t.insertNode(ht.create(n))];\n var a = ht.makePredByNodeName(n),\n s = t.nodes(ht.isText, {\n fullyContains: !0\n }).map(function (t) {\n return ht.singleChildAncestor(t, a) || ht.wrap(t, n);\n });\n if (i) {\n if (r) {\n var l = t.nodes();\n a = v.and(a, function (t) {\n return y.contains(l, t);\n });\n }\n return s.map(function (t) {\n var o = ht.withClosestSiblings(t, a),\n n = y.head(o),\n i = y.tail(o);\n return e().each(i, function (t, e) {\n ht.appendChildNodes(n, e.childNodes), ht.remove(e);\n }), y.head(o);\n });\n }\n return s;\n }\n }, {\n key: \"current\",\n value: function (t) {\n var o = e()(ht.isElement(t.sc) ? t.sc : t.sc.parentNode),\n n = this.fromNode(o);\n try {\n n = e().extend(n, {\n \"font-bold\": document.queryCommandState(\"bold\") ? \"bold\" : \"normal\",\n \"font-italic\": document.queryCommandState(\"italic\") ? \"italic\" : \"normal\",\n \"font-underline\": document.queryCommandState(\"underline\") ? \"underline\" : \"normal\",\n \"font-subscript\": document.queryCommandState(\"subscript\") ? \"subscript\" : \"normal\",\n \"font-superscript\": document.queryCommandState(\"superscript\") ? \"superscript\" : \"normal\",\n \"font-strikethrough\": document.queryCommandState(\"strikethrough\") ? \"strikethrough\" : \"normal\",\n \"font-family\": document.queryCommandValue(\"fontname\") || n[\"font-family\"]\n });\n } catch (t) {}\n if (t.isOnList()) {\n var i = [\"circle\", \"disc\", \"disc-leading-zero\", \"square\"].indexOf(n[\"list-style-type\"]) > -1;\n n[\"list-style\"] = i ? \"unordered\" : \"ordered\";\n } else n[\"list-style\"] = \"none\";\n var r = ht.ancestor(t.sc, ht.isPara);\n if (r && r.style[\"line-height\"]) n[\"line-height\"] = r.style.lineHeight;else {\n var a = parseInt(n[\"line-height\"], 10) / parseInt(n[\"font-size\"], 10);\n n[\"line-height\"] = a.toFixed(1);\n }\n return n.anchor = t.isOnAnchor() && ht.ancestor(t.sc, ht.isAnchor), n.ancestors = ht.listAncestor(t.sc, ht.isEditable), n.range = t, n;\n }\n }], n && St(o.prototype, n), i && St(o, i), t;\n }();\n function Et(t, e) {\n for (var o = 0; o < e.length; o++) {\n var n = e[o];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n var $t = function () {\n function t() {\n !function (t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, t);\n }\n var o, n, i;\n return o = t, n = [{\n key: \"insertOrderedList\",\n value: function (t) {\n this.toggleList(\"OL\", t);\n }\n }, {\n key: \"insertUnorderedList\",\n value: function (t) {\n this.toggleList(\"UL\", t);\n }\n }, {\n key: \"indent\",\n value: function (t) {\n var o = this,\n n = kt.create(t).wrapBodyInlineWithPara(),\n i = n.nodes(ht.isPara, {\n includeAncestor: !0\n }),\n r = y.clusterBy(i, v.peq2(\"parentNode\"));\n e().each(r, function (t, n) {\n var i = y.head(n);\n if (ht.isLi(i)) {\n var r = o.findList(i.previousSibling);\n r ? n.map(function (t) {\n return r.appendChild(t);\n }) : (o.wrapList(n, i.parentNode.nodeName), n.map(function (t) {\n return t.parentNode;\n }).map(function (t) {\n return o.appendToPrevious(t);\n }));\n } else e().each(n, function (t, o) {\n e()(o).css(\"marginLeft\", function (t, e) {\n return (parseInt(e, 10) || 0) + 25;\n });\n });\n }), n.select();\n }\n }, {\n key: \"outdent\",\n value: function (t) {\n var o = this,\n n = kt.create(t).wrapBodyInlineWithPara(),\n i = n.nodes(ht.isPara, {\n includeAncestor: !0\n }),\n r = y.clusterBy(i, v.peq2(\"parentNode\"));\n e().each(r, function (t, n) {\n var i = y.head(n);\n ht.isLi(i) ? o.releaseList([n]) : e().each(n, function (t, o) {\n e()(o).css(\"marginLeft\", function (t, e) {\n return (e = parseInt(e, 10) || 0) > 25 ? e - 25 : \"\";\n });\n });\n }), n.select();\n }\n }, {\n key: \"toggleList\",\n value: function (t, o) {\n var n = this,\n i = kt.create(o).wrapBodyInlineWithPara(),\n r = i.nodes(ht.isPara, {\n includeAncestor: !0\n }),\n a = i.paraBookmark(r),\n s = y.clusterBy(r, v.peq2(\"parentNode\"));\n if (y.find(r, ht.isPurePara)) {\n var l = [];\n e().each(s, function (e, o) {\n l = l.concat(n.wrapList(o, t));\n }), r = l;\n } else {\n var c = i.nodes(ht.isList, {\n includeAncestor: !0\n }).filter(function (o) {\n return !e().nodeName(o, t);\n });\n c.length ? e().each(c, function (e, o) {\n ht.replace(o, t);\n }) : r = this.releaseList(s, !0);\n }\n kt.createFromParaBookmark(a, r).select();\n }\n }, {\n key: \"wrapList\",\n value: function (t, e) {\n var o = y.head(t),\n n = y.last(t),\n i = ht.isList(o.previousSibling) && o.previousSibling,\n r = ht.isList(n.nextSibling) && n.nextSibling,\n a = i || ht.insertAfter(ht.create(e || \"UL\"), n);\n return t = t.map(function (t) {\n return ht.isPurePara(t) ? ht.replace(t, \"LI\") : t;\n }), ht.appendChildNodes(a, t), r && (ht.appendChildNodes(a, y.from(r.childNodes)), ht.remove(r)), t;\n }\n }, {\n key: \"releaseList\",\n value: function (t, o) {\n var n = this,\n i = [];\n return e().each(t, function (t, r) {\n var a = y.head(r),\n s = y.last(r),\n l = o ? ht.lastAncestor(a, ht.isList) : a.parentNode,\n c = l.parentNode;\n if (\"LI\" === l.parentNode.nodeName) r.map(function (t) {\n var e = n.findNextSiblings(t);\n c.nextSibling ? c.parentNode.insertBefore(t, c.nextSibling) : c.parentNode.appendChild(t), e.length && (n.wrapList(e, l.nodeName), t.appendChild(e[0].parentNode));\n }), 0 === l.children.length && c.removeChild(l), 0 === c.childNodes.length && c.parentNode.removeChild(c);else {\n var u = l.childNodes.length > 1 ? ht.splitTree(l, {\n node: s.parentNode,\n offset: ht.position(s) + 1\n }, {\n isSkipPaddingBlankHTML: !0\n }) : null,\n d = ht.splitTree(l, {\n node: a.parentNode,\n offset: ht.position(a)\n }, {\n isSkipPaddingBlankHTML: !0\n });\n r = o ? ht.listDescendant(d, ht.isLi) : y.from(d.childNodes).filter(ht.isLi), !o && ht.isList(l.parentNode) || (r = r.map(function (t) {\n return ht.replace(t, \"P\");\n })), e().each(y.from(r).reverse(), function (t, e) {\n ht.insertAfter(e, l);\n });\n var h = y.compact([l, d, u]);\n e().each(h, function (t, o) {\n var n = [o].concat(ht.listDescendant(o, ht.isList));\n e().each(n.reverse(), function (t, e) {\n ht.nodeLength(e) || ht.remove(e, !0);\n });\n });\n }\n i = i.concat(r);\n }), i;\n }\n }, {\n key: \"appendToPrevious\",\n value: function (t) {\n return t.previousSibling ? ht.appendChildNodes(t.previousSibling, [t]) : this.wrapList([t], \"LI\");\n }\n }, {\n key: \"findList\",\n value: function (t) {\n return t ? y.find(t.children, function (t) {\n return [\"OL\", \"UL\"].indexOf(t.nodeName) > -1;\n }) : null;\n }\n }, {\n key: \"findNextSiblings\",\n value: function (t) {\n for (var e = []; t.nextSibling;) e.push(t.nextSibling), t = t.nextSibling;\n return e;\n }\n }], n && Et(o.prototype, n), i && Et(o, i), t;\n }();\n function Nt(t, e) {\n for (var o = 0; o < e.length; o++) {\n var n = e[o];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n var It = function () {\n function t(e) {\n !function (t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, t), this.bullet = new $t(), this.options = e.options;\n }\n var o, n, i;\n return o = t, n = [{\n key: \"insertTab\",\n value: function (t, e) {\n var o = ht.createText(new Array(e + 1).join(ht.NBSP_CHAR));\n (t = t.deleteContents()).insertNode(o, !0), (t = kt.create(o, e)).select();\n }\n }, {\n key: \"insertParagraph\",\n value: function (t, o) {\n o = (o = (o = o || kt.create(t)).deleteContents()).wrapBodyInlineWithPara();\n var n,\n i = ht.ancestor(o.sc, ht.isPara);\n if (i) {\n if (ht.isLi(i) && (ht.isEmpty(i) || ht.deepestChildIsEmpty(i))) return void this.bullet.toggleList(i.parentNode.nodeName);\n var r = null;\n if (1 === this.options.blockquoteBreakingLevel ? r = ht.ancestor(i, ht.isBlockquote) : 2 === this.options.blockquoteBreakingLevel && (r = ht.lastAncestor(i, ht.isBlockquote)), r) {\n n = e()(ht.emptyPara)[0], ht.isRightEdgePoint(o.getStartPoint()) && ht.isBR(o.sc.nextSibling) && e()(o.sc.nextSibling).remove();\n var a = ht.splitTree(r, o.getStartPoint(), {\n isDiscardEmptySplits: !0\n });\n a ? a.parentNode.insertBefore(n, a) : ht.insertAfter(n, r);\n } else {\n n = ht.splitTree(i, o.getStartPoint());\n var s = ht.listDescendant(i, ht.isEmptyAnchor);\n s = s.concat(ht.listDescendant(n, ht.isEmptyAnchor)), e().each(s, function (t, e) {\n ht.remove(e);\n }), (ht.isHeading(n) || ht.isPre(n) || ht.isCustomStyleTag(n)) && ht.isEmpty(n) && (n = ht.replace(n, \"p\"));\n }\n } else {\n var l = o.sc.childNodes[o.so];\n n = e()(ht.emptyPara)[0], l ? o.sc.insertBefore(n, l) : o.sc.appendChild(n);\n }\n kt.create(n, 0).normalize().select().scrollIntoView(t);\n }\n }], n && Nt(o.prototype, n), i && Nt(o, i), t;\n }();\n function Pt(t, e) {\n for (var o = 0; o < e.length; o++) {\n var n = e[o];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n var Rt = function t(e, o, n, i) {\n var r = {\n colPos: 0,\n rowPos: 0\n },\n a = [],\n s = [];\n function l(t, e, o, n, i, r, s) {\n var l = {\n baseRow: o,\n baseCell: n,\n isRowSpan: i,\n isColSpan: r,\n isVirtual: s\n };\n a[t] || (a[t] = []), a[t][e] = l;\n }\n function c(t, e, o, n) {\n return {\n baseCell: t.baseCell,\n action: e,\n virtualTable: {\n rowIndex: o,\n cellIndex: n\n }\n };\n }\n function u(t, e) {\n if (!a[t]) return e;\n if (!a[t][e]) return e;\n for (var o = e; a[t][o];) if (o++, !a[t][o]) return o;\n }\n function d(t, e) {\n var o = u(t.rowIndex, e.cellIndex),\n n = e.colSpan > 1,\n i = e.rowSpan > 1,\n a = t.rowIndex === r.rowPos && e.cellIndex === r.colPos;\n l(t.rowIndex, o, t, e, i, n, !1);\n var s = e.attributes.rowSpan ? parseInt(e.attributes.rowSpan.value, 10) : 0;\n if (s > 1) for (var c = 1; c < s; c++) {\n var d = t.rowIndex + c;\n h(d, o, e, a), l(d, o, t, e, !0, n, !0);\n }\n var f = e.attributes.colSpan ? parseInt(e.attributes.colSpan.value, 10) : 0;\n if (f > 1) for (var p = 1; p < f; p++) {\n var v = u(t.rowIndex, o + p);\n h(t.rowIndex, v, e, a), l(t.rowIndex, v, t, e, i, !0, !0);\n }\n }\n function h(t, e, o, n) {\n t === r.rowPos && r.colPos >= o.cellIndex && o.cellIndex <= e && !n && r.colPos++;\n }\n function f(e) {\n switch (o) {\n case t.where.Column:\n if (e.isColSpan) return t.resultAction.SubtractSpanCount;\n break;\n case t.where.Row:\n if (!e.isVirtual && e.isRowSpan) return t.resultAction.AddCell;\n if (e.isRowSpan) return t.resultAction.SubtractSpanCount;\n }\n return t.resultAction.RemoveCell;\n }\n function p(e) {\n switch (o) {\n case t.where.Column:\n if (e.isColSpan) return t.resultAction.SumSpanCount;\n if (e.isRowSpan && e.isVirtual) return t.resultAction.Ignore;\n break;\n case t.where.Row:\n if (e.isRowSpan) return t.resultAction.SumSpanCount;\n if (e.isColSpan && e.isVirtual) return t.resultAction.Ignore;\n }\n return t.resultAction.AddCell;\n }\n this.getActionList = function () {\n for (var e = o === t.where.Row ? r.rowPos : -1, i = o === t.where.Column ? r.colPos : -1, l = 0, u = !0; u;) {\n var d = e >= 0 ? e : l,\n h = i >= 0 ? i : l,\n v = a[d];\n if (!v) return u = !1, s;\n var m = v[h];\n if (!m) return u = !1, s;\n var g = t.resultAction.Ignore;\n switch (n) {\n case t.requestAction.Add:\n g = p(m);\n break;\n case t.requestAction.Delete:\n g = f(m);\n }\n s.push(c(m, g, d, h)), l++;\n }\n return s;\n }, e && e.tagName && (\"td\" === e.tagName.toLowerCase() || \"th\" === e.tagName.toLowerCase()) && (r.colPos = e.cellIndex, e.parentElement && e.parentElement.tagName && \"tr\" === e.parentElement.tagName.toLowerCase() && (r.rowPos = e.parentElement.rowIndex)), function () {\n for (var t = i.rows, e = 0; e < t.length; e++) for (var o = t[e].cells, n = 0; n < o.length; n++) d(t[e], o[n]);\n }();\n };\n Rt.where = {\n Row: 0,\n Column: 1\n }, Rt.requestAction = {\n Add: 0,\n Delete: 1\n }, Rt.resultAction = {\n Ignore: 0,\n SubtractSpanCount: 1,\n RemoveCell: 2,\n AddCell: 3,\n SumSpanCount: 4\n };\n var Lt = function () {\n function t() {\n !function (t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, t);\n }\n var o, n, i;\n return o = t, n = [{\n key: \"tab\",\n value: function (t, e) {\n var o = ht.ancestor(t.commonAncestor(), ht.isCell),\n n = ht.ancestor(o, ht.isTable),\n i = ht.listDescendant(n, ht.isCell),\n r = y[e ? \"prev\" : \"next\"](i, o);\n r && kt.create(r, 0).select();\n }\n }, {\n key: \"addRow\",\n value: function (t, o) {\n for (var n = ht.ancestor(t.commonAncestor(), ht.isCell), i = e()(n).closest(\"tr\"), r = this.recoverAttributes(i), a = e()(\"<tr\" + r + \"></tr>\"), s = new Rt(n, Rt.where.Row, Rt.requestAction.Add, e()(i).closest(\"table\")[0]).getActionList(), l = 0; l < s.length; l++) {\n var c = s[l],\n u = this.recoverAttributes(c.baseCell);\n switch (c.action) {\n case Rt.resultAction.AddCell:\n a.append(\"<td\" + u + \">\" + ht.blank + \"</td>\");\n break;\n case Rt.resultAction.SumSpanCount:\n if (\"top\" === o && (c.baseCell.parent ? c.baseCell.closest(\"tr\").rowIndex : 0) <= i[0].rowIndex) {\n var d = e()(\"<div></div>\").append(e()(\"<td\" + u + \">\" + ht.blank + \"</td>\").removeAttr(\"rowspan\")).html();\n a.append(d);\n break;\n }\n var h = parseInt(c.baseCell.rowSpan, 10);\n h++, c.baseCell.setAttribute(\"rowSpan\", h);\n }\n }\n if (\"top\" === o) i.before(a);else {\n if (n.rowSpan > 1) {\n var f = i[0].rowIndex + (n.rowSpan - 2);\n return void e()(e()(i).parent().find(\"tr\")[f]).after(e()(a));\n }\n i.after(a);\n }\n }\n }, {\n key: \"addCol\",\n value: function (t, o) {\n var n = ht.ancestor(t.commonAncestor(), ht.isCell),\n i = e()(n).closest(\"tr\");\n e()(i).siblings().push(i);\n for (var r = new Rt(n, Rt.where.Column, Rt.requestAction.Add, e()(i).closest(\"table\")[0]).getActionList(), a = 0; a < r.length; a++) {\n var s = r[a],\n l = this.recoverAttributes(s.baseCell);\n switch (s.action) {\n case Rt.resultAction.AddCell:\n \"right\" === o ? e()(s.baseCell).after(\"<td\" + l + \">\" + ht.blank + \"</td>\") : e()(s.baseCell).before(\"<td\" + l + \">\" + ht.blank + \"</td>\");\n break;\n case Rt.resultAction.SumSpanCount:\n if (\"right\" === o) {\n var c = parseInt(s.baseCell.colSpan, 10);\n c++, s.baseCell.setAttribute(\"colSpan\", c);\n } else e()(s.baseCell).before(\"<td\" + l + \">\" + ht.blank + \"</td>\");\n }\n }\n }\n }, {\n key: \"recoverAttributes\",\n value: function (t) {\n var e = \"\";\n if (!t) return e;\n for (var o = t.attributes || [], n = 0; n < o.length; n++) \"id\" !== o[n].name.toLowerCase() && o[n].specified && (e += \" \" + o[n].name + \"='\" + o[n].value + \"'\");\n return e;\n }\n }, {\n key: \"deleteRow\",\n value: function (t) {\n for (var o = ht.ancestor(t.commonAncestor(), ht.isCell), n = e()(o).closest(\"tr\"), i = n.children(\"td, th\").index(e()(o)), r = n[0].rowIndex, a = new Rt(o, Rt.where.Row, Rt.requestAction.Delete, e()(n).closest(\"table\")[0]).getActionList(), s = 0; s < a.length; s++) if (a[s]) {\n var l = a[s].baseCell,\n c = a[s].virtualTable,\n u = l.rowSpan && l.rowSpan > 1,\n d = u ? parseInt(l.rowSpan, 10) : 0;\n switch (a[s].action) {\n case Rt.resultAction.Ignore:\n continue;\n case Rt.resultAction.AddCell:\n var h = n.next(\"tr\")[0];\n if (!h) continue;\n var f = n[0].cells[i];\n u && (d > 2 ? (d--, h.insertBefore(f, h.cells[i]), h.cells[i].setAttribute(\"rowSpan\", d), h.cells[i].innerHTML = \"\") : 2 === d && (h.insertBefore(f, h.cells[i]), h.cells[i].removeAttribute(\"rowSpan\"), h.cells[i].innerHTML = \"\"));\n continue;\n case Rt.resultAction.SubtractSpanCount:\n u && (d > 2 ? (d--, l.setAttribute(\"rowSpan\", d), c.rowIndex !== r && l.cellIndex === i && (l.innerHTML = \"\")) : 2 === d && (l.removeAttribute(\"rowSpan\"), c.rowIndex !== r && l.cellIndex === i && (l.innerHTML = \"\")));\n continue;\n case Rt.resultAction.RemoveCell:\n continue;\n }\n }\n n.remove();\n }\n }, {\n key: \"deleteCol\",\n value: function (t) {\n for (var o = ht.ancestor(t.commonAncestor(), ht.isCell), n = e()(o).closest(\"tr\"), i = n.children(\"td, th\").index(e()(o)), r = new Rt(o, Rt.where.Column, Rt.requestAction.Delete, e()(n).closest(\"table\")[0]).getActionList(), a = 0; a < r.length; a++) if (r[a]) switch (r[a].action) {\n case Rt.resultAction.Ignore:\n continue;\n case Rt.resultAction.SubtractSpanCount:\n var s = r[a].baseCell;\n if (s.colSpan && s.colSpan > 1) {\n var l = s.colSpan ? parseInt(s.colSpan, 10) : 0;\n l > 2 ? (l--, s.setAttribute(\"colSpan\", l), s.cellIndex === i && (s.innerHTML = \"\")) : 2 === l && (s.removeAttribute(\"colSpan\"), s.cellIndex === i && (s.innerHTML = \"\"));\n }\n continue;\n case Rt.resultAction.RemoveCell:\n ht.remove(r[a].baseCell, !0);\n continue;\n }\n }\n }, {\n key: \"createTable\",\n value: function (t, o, n) {\n for (var i, r = [], a = 0; a < t; a++) r.push(\"<td>\" + ht.blank + \"</td>\");\n i = r.join(\"\");\n for (var s, l = [], c = 0; c < o; c++) l.push(\"<tr>\" + i + \"</tr>\");\n s = l.join(\"\");\n var u = e()(\"<table>\" + s + \"</table>\");\n return n && n.tableClassName && u.addClass(n.tableClassName), u[0];\n }\n }, {\n key: \"deleteTable\",\n value: function (t) {\n var o = ht.ancestor(t.commonAncestor(), ht.isCell);\n e()(o).closest(\"table\").remove();\n }\n }], n && Pt(o.prototype, n), i && Pt(o, i), t;\n }();\n function At(t, e) {\n for (var o = 0; o < e.length; o++) {\n var n = e[o];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n var Ft = function () {\n function t(o) {\n var n = this;\n !function (t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, t), this.context = o, this.$note = o.layoutInfo.note, this.$editor = o.layoutInfo.editor, this.$editable = o.layoutInfo.editable, this.options = o.options, this.lang = this.options.langInfo, this.editable = this.$editable[0], this.lastRange = null, this.snapshot = null, this.style = new Tt(), this.table = new Lt(), this.typing = new It(o), this.bullet = new $t(), this.history = new xt(o), this.context.memo(\"help.escape\", this.lang.help.escape), this.context.memo(\"help.undo\", this.lang.help.undo), this.context.memo(\"help.redo\", this.lang.help.redo), this.context.memo(\"help.tab\", this.lang.help.tab), this.context.memo(\"help.untab\", this.lang.help.untab), this.context.memo(\"help.insertParagraph\", this.lang.help.insertParagraph), this.context.memo(\"help.insertOrderedList\", this.lang.help.insertOrderedList), this.context.memo(\"help.insertUnorderedList\", this.lang.help.insertUnorderedList), this.context.memo(\"help.indent\", this.lang.help.indent), this.context.memo(\"help.outdent\", this.lang.help.outdent), this.context.memo(\"help.formatPara\", this.lang.help.formatPara), this.context.memo(\"help.insertHorizontalRule\", this.lang.help.insertHorizontalRule), this.context.memo(\"help.fontName\", this.lang.help.fontName);\n for (var i = [\"bold\", \"italic\", \"underline\", \"strikethrough\", \"superscript\", \"subscript\", \"justifyLeft\", \"justifyCenter\", \"justifyRight\", \"justifyFull\", \"formatBlock\", \"removeFormat\", \"backColor\"], r = 0, a = i.length; r < a; r++) this[i[r]] = function (t) {\n return function (e) {\n n.beforeCommand(), document.execCommand(t, !1, e), n.afterCommand(!0);\n };\n }(i[r]), this.context.memo(\"help.\" + i[r], this.lang.help[i[r]]);\n this.fontName = this.wrapCommand(function (t) {\n return n.fontStyling(\"font-family\", f.validFontName(t));\n }), this.fontSize = this.wrapCommand(function (t) {\n var e = n.currentStyle()[\"font-size-unit\"];\n return n.fontStyling(\"font-size\", t + e);\n }), this.fontSizeUnit = this.wrapCommand(function (t) {\n var e = n.currentStyle()[\"font-size\"];\n return n.fontStyling(\"font-size\", e + t);\n });\n for (var s = 1; s <= 6; s++) this[\"formatH\" + s] = function (t) {\n return function () {\n n.formatBlock(\"H\" + t);\n };\n }(s), this.context.memo(\"help.formatH\" + s, this.lang.help[\"formatH\" + s]);\n this.insertParagraph = this.wrapCommand(function () {\n n.typing.insertParagraph(n.editable);\n }), this.insertOrderedList = this.wrapCommand(function () {\n n.bullet.insertOrderedList(n.editable);\n }), this.insertUnorderedList = this.wrapCommand(function () {\n n.bullet.insertUnorderedList(n.editable);\n }), this.indent = this.wrapCommand(function () {\n n.bullet.indent(n.editable);\n }), this.outdent = this.wrapCommand(function () {\n n.bullet.outdent(n.editable);\n }), this.insertNode = this.wrapCommand(function (t) {\n n.isLimited(e()(t).text().length) || (n.getLastRange().insertNode(t), n.setLastRange(kt.createFromNodeAfter(t).select()));\n }), this.insertText = this.wrapCommand(function (t) {\n if (!n.isLimited(t.length)) {\n var e = n.getLastRange().insertNode(ht.createText(t));\n n.setLastRange(kt.create(e, ht.nodeLength(e)).select());\n }\n }), this.pasteHTML = this.wrapCommand(function (t) {\n if (!n.isLimited(t.length)) {\n t = n.context.invoke(\"codeview.purify\", t);\n var e = n.getLastRange().pasteHTML(t);\n n.setLastRange(kt.createFromNodeAfter(y.last(e)).select());\n }\n }), this.formatBlock = this.wrapCommand(function (t, e) {\n var o = n.options.callbacks.onApplyCustomStyle;\n o ? o.call(n, e, n.context, n.onFormatBlock) : n.onFormatBlock(t, e);\n }), this.insertHorizontalRule = this.wrapCommand(function () {\n var t = n.getLastRange().insertNode(ht.create(\"HR\"));\n t.nextSibling && n.setLastRange(kt.create(t.nextSibling, 0).normalize().select());\n }), this.lineHeight = this.wrapCommand(function (t) {\n n.style.stylePara(n.getLastRange(), {\n lineHeight: t\n });\n }), this.createLink = this.wrapCommand(function (t) {\n var o = t.url,\n i = t.text,\n r = t.isNewWindow,\n a = t.checkProtocol,\n s = t.range || n.getLastRange(),\n l = i.length - s.toString().length;\n if (!(l > 0 && n.isLimited(l))) {\n var c = s.toString() !== i;\n \"string\" == typeof o && (o = o.trim()), n.options.onCreateLink ? o = n.options.onCreateLink(o) : a && (o = /^([A-Za-z][A-Za-z0-9+-.]*\\:|#|\\/)/.test(o) ? o : n.options.defaultProtocol + o);\n var u = [];\n if (c) {\n var d = (s = s.deleteContents()).insertNode(e()(\"<A>\" + i + \"</A>\")[0]);\n u.push(d);\n } else u = n.style.styleNodes(s, {\n nodeName: \"A\",\n expandClosestSibling: !0,\n onlyPartialContains: !0\n });\n e().each(u, function (t, n) {\n e()(n).attr(\"href\", o), r ? e()(n).attr(\"target\", \"_blank\") : e()(n).removeAttr(\"target\");\n }), n.setLastRange(n.createRangeFromList(u).select());\n }\n }), this.color = this.wrapCommand(function (t) {\n var e = t.foreColor,\n o = t.backColor;\n e && document.execCommand(\"foreColor\", !1, e), o && document.execCommand(\"backColor\", !1, o);\n }), this.foreColor = this.wrapCommand(function (t) {\n document.execCommand(\"foreColor\", !1, t);\n }), this.insertTable = this.wrapCommand(function (t) {\n var e = t.split(\"x\");\n n.getLastRange().deleteContents().insertNode(n.table.createTable(e[0], e[1], n.options));\n }), this.removeMedia = this.wrapCommand(function () {\n var t = e()(n.restoreTarget()).parent();\n t.closest(\"figure\").length ? t.closest(\"figure\").remove() : t = e()(n.restoreTarget()).detach(), n.context.triggerEvent(\"media.delete\", t, n.$editable);\n }), this.floatMe = this.wrapCommand(function (t) {\n var o = e()(n.restoreTarget());\n o.toggleClass(\"note-float-left\", \"left\" === t), o.toggleClass(\"note-float-right\", \"right\" === t), o.css(\"float\", \"none\" === t ? \"\" : t);\n }), this.resize = this.wrapCommand(function (t) {\n var o = e()(n.restoreTarget());\n 0 === (t = parseFloat(t)) ? o.css(\"width\", \"\") : o.css({\n width: 100 * t + \"%\",\n height: \"\"\n });\n });\n }\n var o, n, i;\n return o = t, n = [{\n key: \"initialize\",\n value: function () {\n var t = this;\n this.$editable.on(\"keydown\", function (e) {\n if (e.keyCode === wt.code.ENTER && t.context.triggerEvent(\"enter\", e), t.context.triggerEvent(\"keydown\", e), t.snapshot = t.history.makeSnapshot(), t.hasKeyShortCut = !1, e.isDefaultPrevented() || (t.options.shortcuts ? t.hasKeyShortCut = t.handleKeyMap(e) : t.preventDefaultEditableShortCuts(e)), t.isLimited(1, e)) {\n var o = t.getLastRange();\n if (o.eo - o.so == 0) return !1;\n }\n t.setLastRange(), t.options.recordEveryKeystroke && !1 === t.hasKeyShortCut && t.history.recordUndo();\n }).on(\"keyup\", function (e) {\n t.setLastRange(), t.context.triggerEvent(\"keyup\", e);\n }).on(\"focus\", function (e) {\n t.setLastRange(), t.context.triggerEvent(\"focus\", e);\n }).on(\"blur\", function (e) {\n t.context.triggerEvent(\"blur\", e);\n }).on(\"mousedown\", function (e) {\n t.context.triggerEvent(\"mousedown\", e);\n }).on(\"mouseup\", function (e) {\n t.setLastRange(), t.history.recordUndo(), t.context.triggerEvent(\"mouseup\", e);\n }).on(\"scroll\", function (e) {\n t.context.triggerEvent(\"scroll\", e);\n }).on(\"paste\", function (e) {\n t.setLastRange(), t.context.triggerEvent(\"paste\", e);\n }).on(\"input\", function () {\n t.isLimited(0) && t.snapshot && t.history.applySnapshot(t.snapshot);\n }), this.$editable.attr(\"spellcheck\", this.options.spellCheck), this.$editable.attr(\"autocorrect\", this.options.spellCheck), this.options.disableGrammar && this.$editable.attr(\"data-gramm\", !1), this.$editable.html(ht.html(this.$note) || ht.emptyPara), this.$editable.on(f.inputEventName, v.debounce(function () {\n t.context.triggerEvent(\"change\", t.$editable.html(), t.$editable);\n }, 10)), this.$editable.on(\"focusin\", function (e) {\n t.context.triggerEvent(\"focusin\", e);\n }).on(\"focusout\", function (e) {\n t.context.triggerEvent(\"focusout\", e);\n }), this.options.airMode ? this.options.overrideContextMenu && this.$editor.on(\"contextmenu\", function (e) {\n return t.context.triggerEvent(\"contextmenu\", e), !1;\n }) : (this.options.width && this.$editor.outerWidth(this.options.width), this.options.height && this.$editable.outerHeight(this.options.height), this.options.maxHeight && this.$editable.css(\"max-height\", this.options.maxHeight), this.options.minHeight && this.$editable.css(\"min-height\", this.options.minHeight)), this.history.recordUndo(), this.setLastRange();\n }\n }, {\n key: \"destroy\",\n value: function () {\n this.$editable.off();\n }\n }, {\n key: \"handleKeyMap\",\n value: function (t) {\n var e = this.options.keyMap[f.isMac ? \"mac\" : \"pc\"],\n o = [];\n t.metaKey && o.push(\"CMD\"), t.ctrlKey && !t.altKey && o.push(\"CTRL\"), t.shiftKey && o.push(\"SHIFT\");\n var n = wt.nameFromCode[t.keyCode];\n n && o.push(n);\n var i = e[o.join(\"+\")];\n if (\"TAB\" !== n || this.options.tabDisable) {\n if (i) {\n if (!1 !== this.context.invoke(i)) return t.preventDefault(), !0;\n } else wt.isEdit(t.keyCode) && this.afterCommand();\n } else this.afterCommand();\n return !1;\n }\n }, {\n key: \"preventDefaultEditableShortCuts\",\n value: function (t) {\n (t.ctrlKey || t.metaKey) && y.contains([66, 73, 85], t.keyCode) && t.preventDefault();\n }\n }, {\n key: \"isLimited\",\n value: function (t, e) {\n return t = t || 0, (void 0 === e || !(wt.isMove(e.keyCode) || wt.isNavigation(e.keyCode) || e.ctrlKey || e.metaKey || y.contains([wt.code.BACKSPACE, wt.code.DELETE], e.keyCode))) && this.options.maxTextLength > 0 && this.$editable.text().length + t > this.options.maxTextLength;\n }\n }, {\n key: \"createRange\",\n value: function () {\n return this.focus(), this.setLastRange(), this.getLastRange();\n }\n }, {\n key: \"createRangeFromList\",\n value: function (t) {\n var e = kt.createFromNodeBefore(y.head(t)).getStartPoint(),\n o = kt.createFromNodeAfter(y.last(t)).getEndPoint();\n return kt.create(e.node, e.offset, o.node, o.offset);\n }\n }, {\n key: \"setLastRange\",\n value: function (t) {\n t ? this.lastRange = t : (this.lastRange = kt.create(this.editable), 0 === e()(this.lastRange.sc).closest(\".note-editable\").length && (this.lastRange = kt.createFromBodyElement(this.editable)));\n }\n }, {\n key: \"getLastRange\",\n value: function () {\n return this.lastRange || this.setLastRange(), this.lastRange;\n }\n }, {\n key: \"saveRange\",\n value: function (t) {\n t && this.getLastRange().collapse().select();\n }\n }, {\n key: \"restoreRange\",\n value: function () {\n this.lastRange && (this.lastRange.select(), this.focus());\n }\n }, {\n key: \"saveTarget\",\n value: function (t) {\n this.$editable.data(\"target\", t);\n }\n }, {\n key: \"clearTarget\",\n value: function () {\n this.$editable.removeData(\"target\");\n }\n }, {\n key: \"restoreTarget\",\n value: function () {\n return this.$editable.data(\"target\");\n }\n }, {\n key: \"currentStyle\",\n value: function () {\n var t = kt.create();\n return t && (t = t.normalize()), t ? this.style.current(t) : this.style.fromNode(this.$editable);\n }\n }, {\n key: \"styleFromNode\",\n value: function (t) {\n return this.style.fromNode(t);\n }\n }, {\n key: \"undo\",\n value: function () {\n this.context.triggerEvent(\"before.command\", this.$editable.html()), this.history.undo(), this.context.triggerEvent(\"change\", this.$editable.html(), this.$editable);\n }\n }, {\n key: \"commit\",\n value: function () {\n this.context.triggerEvent(\"before.command\", this.$editable.html()), this.history.commit(), this.context.triggerEvent(\"change\", this.$editable.html(), this.$editable);\n }\n }, {\n key: \"redo\",\n value: function () {\n this.context.triggerEvent(\"before.command\", this.$editable.html()), this.history.redo(), this.context.triggerEvent(\"change\", this.$editable.html(), this.$editable);\n }\n }, {\n key: \"beforeCommand\",\n value: function () {\n this.context.triggerEvent(\"before.command\", this.$editable.html()), document.execCommand(\"styleWithCSS\", !1, this.options.styleWithCSS), this.focus();\n }\n }, {\n key: \"afterCommand\",\n value: function (t) {\n this.normalizeContent(), this.history.recordUndo(), t || this.context.triggerEvent(\"change\", this.$editable.html(), this.$editable);\n }\n }, {\n key: \"tab\",\n value: function () {\n var t = this.getLastRange();\n if (t.isCollapsed() && t.isOnCell()) this.table.tab(t);else {\n if (0 === this.options.tabSize) return !1;\n this.isLimited(this.options.tabSize) || (this.beforeCommand(), this.typing.insertTab(t, this.options.tabSize), this.afterCommand());\n }\n }\n }, {\n key: \"untab\",\n value: function () {\n var t = this.getLastRange();\n if (t.isCollapsed() && t.isOnCell()) this.table.tab(t, !0);else if (0 === this.options.tabSize) return !1;\n }\n }, {\n key: \"wrapCommand\",\n value: function (t) {\n return function () {\n this.beforeCommand(), t.apply(this, arguments), this.afterCommand();\n };\n }\n }, {\n key: \"insertImage\",\n value: function (t, o) {\n var n,\n i = this;\n return (n = t, e().Deferred(function (t) {\n var o = e()(\"<img>\");\n o.one(\"load\", function () {\n o.off(\"error abort\"), t.resolve(o);\n }).one(\"error abort\", function () {\n o.off(\"load\").detach(), t.reject(o);\n }).css({\n display: \"none\"\n }).appendTo(document.body).attr(\"src\", n);\n }).promise()).then(function (t) {\n i.beforeCommand(), \"function\" == typeof o ? o(t) : (\"string\" == typeof o && t.attr(\"data-filename\", o), t.css(\"width\", Math.min(i.$editable.width(), t.width()))), t.show(), i.getLastRange().insertNode(t[0]), i.setLastRange(kt.createFromNodeAfter(t[0]).select()), i.afterCommand();\n }).fail(function (t) {\n i.context.triggerEvent(\"image.upload.error\", t);\n });\n }\n }, {\n key: \"insertImagesAsDataURL\",\n value: function (t) {\n var o = this;\n e().each(t, function (t, n) {\n var i = n.name;\n o.options.maximumImageFileSize && o.options.maximumImageFileSize < n.size ? o.context.triggerEvent(\"image.upload.error\", o.lang.image.maximumFileSizeError) : function (t) {\n return e().Deferred(function (o) {\n e().extend(new FileReader(), {\n onload: function (t) {\n var e = t.target.result;\n o.resolve(e);\n },\n onerror: function (t) {\n o.reject(t);\n }\n }).readAsDataURL(t);\n }).promise();\n }(n).then(function (t) {\n return o.insertImage(t, i);\n }).fail(function () {\n o.context.triggerEvent(\"image.upload.error\");\n });\n });\n }\n }, {\n key: \"insertImagesOrCallback\",\n value: function (t) {\n this.options.callbacks.onImageUpload ? this.context.triggerEvent(\"image.upload\", t) : this.insertImagesAsDataURL(t);\n }\n }, {\n key: \"getSelectedText\",\n value: function () {\n var t = this.getLastRange();\n return t.isOnAnchor() && (t = kt.createFromNode(ht.ancestor(t.sc, ht.isAnchor))), t.toString();\n }\n }, {\n key: \"onFormatBlock\",\n value: function (t, o) {\n if (document.execCommand(\"FormatBlock\", !1, f.isMSIE ? \"<\" + t + \">\" : t), o && o.length && (o[0].tagName.toUpperCase() !== t.toUpperCase() && (o = o.find(t)), o && o.length)) {\n var n = this.createRange(),\n i = e()([n.sc, n.ec]).closest(t);\n i.removeClass();\n var r = o[0].className || \"\";\n r && i.addClass(r);\n }\n }\n }, {\n key: \"formatPara\",\n value: function () {\n this.formatBlock(\"P\");\n }\n }, {\n key: \"fontStyling\",\n value: function (t, o) {\n var n = this.getLastRange();\n if (\"\" !== n) {\n var i = this.style.styleNodes(n);\n if (this.$editor.find(\".note-status-output\").html(\"\"), e()(i).css(t, o), n.isCollapsed()) {\n var r = y.head(i);\n r && !ht.nodeLength(r) && (r.innerHTML = ht.ZERO_WIDTH_NBSP_CHAR, kt.createFromNode(r.firstChild).select(), this.setLastRange(), this.$editable.data(\"bogus\", r));\n } else this.setLastRange(this.createRangeFromList(i).select());\n } else {\n var a = e().now();\n this.$editor.find(\".note-status-output\").html('<div id=\"note-status-output-' + a + '\" class=\"alert alert-info\">' + this.lang.output.noSelection + \"</div>\"), setTimeout(function () {\n e()(\"#note-status-output-\" + a).remove();\n }, 5e3);\n }\n }\n }, {\n key: \"unlink\",\n value: function () {\n var t = this.getLastRange();\n if (t.isOnAnchor()) {\n var e = ht.ancestor(t.sc, ht.isAnchor);\n (t = kt.createFromNode(e)).select(), this.setLastRange(), this.beforeCommand(), document.execCommand(\"unlink\"), this.afterCommand();\n }\n }\n }, {\n key: \"getLinkInfo\",\n value: function () {\n var t = this.getLastRange().expand(ht.isAnchor),\n o = e()(y.head(t.nodes(ht.isAnchor))),\n n = {\n range: t,\n text: t.toString(),\n url: o.length ? o.attr(\"href\") : \"\"\n };\n return o.length && (n.isNewWindow = \"_blank\" === o.attr(\"target\")), n;\n }\n }, {\n key: \"addRow\",\n value: function (t) {\n var e = this.getLastRange(this.$editable);\n e.isCollapsed() && e.isOnCell() && (this.beforeCommand(), this.table.addRow(e, t), this.afterCommand());\n }\n }, {\n key: \"addCol\",\n value: function (t) {\n var e = this.getLastRange(this.$editable);\n e.isCollapsed() && e.isOnCell() && (this.beforeCommand(), this.table.addCol(e, t), this.afterCommand());\n }\n }, {\n key: \"deleteRow\",\n value: function () {\n var t = this.getLastRange(this.$editable);\n t.isCollapsed() && t.isOnCell() && (this.beforeCommand(), this.table.deleteRow(t), this.afterCommand());\n }\n }, {\n key: \"deleteCol\",\n value: function () {\n var t = this.getLastRange(this.$editable);\n t.isCollapsed() && t.isOnCell() && (this.beforeCommand(), this.table.deleteCol(t), this.afterCommand());\n }\n }, {\n key: \"deleteTable\",\n value: function () {\n var t = this.getLastRange(this.$editable);\n t.isCollapsed() && t.isOnCell() && (this.beforeCommand(), this.table.deleteTable(t), this.afterCommand());\n }\n }, {\n key: \"resizeTo\",\n value: function (t, e, o) {\n var n;\n if (o) {\n var i = t.y / t.x,\n r = e.data(\"ratio\");\n n = {\n width: r > i ? t.x : t.y / r,\n height: r > i ? t.x * r : t.y\n };\n } else n = {\n width: t.x,\n height: t.y\n };\n e.css(n);\n }\n }, {\n key: \"hasFocus\",\n value: function () {\n return this.$editable.is(\":focus\");\n }\n }, {\n key: \"focus\",\n value: function () {\n this.hasFocus() || this.$editable.focus();\n }\n }, {\n key: \"isEmpty\",\n value: function () {\n return ht.isEmpty(this.$editable[0]) || ht.emptyPara === this.$editable.html();\n }\n }, {\n key: \"empty\",\n value: function () {\n this.context.invoke(\"code\", ht.emptyPara);\n }\n }, {\n key: \"normalizeContent\",\n value: function () {\n this.$editable[0].normalize();\n }\n }], n && At(o.prototype, n), i && At(o, i), t;\n }();\n function Dt(t, e) {\n for (var o = 0; o < e.length; o++) {\n var n = e[o];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n var Ht = function () {\n function t(e) {\n !function (t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, t), this.context = e, this.$editable = e.layoutInfo.editable;\n }\n var e, o, n;\n return e = t, (o = [{\n key: \"initialize\",\n value: function () {\n this.$editable.on(\"paste\", this.pasteByEvent.bind(this));\n }\n }, {\n key: \"pasteByEvent\",\n value: function (t) {\n var e = this,\n o = t.originalEvent.clipboardData;\n if (o && o.items && o.items.length) {\n var n = o.items.length > 1 ? o.items[1] : y.head(o.items);\n \"file\" === n.kind && -1 !== n.type.indexOf(\"image/\") ? (this.context.invoke(\"editor.insertImagesOrCallback\", [n.getAsFile()]), t.preventDefault()) : \"string\" === n.kind && this.context.invoke(\"editor.isLimited\", o.getData(\"Text\").length) && t.preventDefault();\n } else if (window.clipboardData) {\n var i = window.clipboardData.getData(\"text\");\n this.context.invoke(\"editor.isLimited\", i.length) && t.preventDefault();\n }\n setTimeout(function () {\n e.context.invoke(\"editor.afterCommand\");\n }, 10);\n }\n }]) && Dt(e.prototype, o), n && Dt(e, n), t;\n }();\n function Bt(t, e) {\n for (var o = 0; o < e.length; o++) {\n var n = e[o];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n var zt = function () {\n function t(o) {\n !function (t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, t), this.context = o, this.$eventListener = e()(document), this.$editor = o.layoutInfo.editor, this.$editable = o.layoutInfo.editable, this.options = o.options, this.lang = this.options.langInfo, this.documentEventHandlers = {}, this.$dropzone = e()(['<div class=\"note-dropzone\">', '<div class=\"note-dropzone-message\"></div>', \"</div>\"].join(\"\")).prependTo(this.$editor);\n }\n var o, n, i;\n return o = t, n = [{\n key: \"initialize\",\n value: function () {\n this.options.disableDragAndDrop ? (this.documentEventHandlers.onDrop = function (t) {\n t.preventDefault();\n }, this.$eventListener = this.$dropzone, this.$eventListener.on(\"drop\", this.documentEventHandlers.onDrop)) : this.attachDragAndDropEvent();\n }\n }, {\n key: \"attachDragAndDropEvent\",\n value: function () {\n var t = this,\n o = e()(),\n n = this.$dropzone.find(\".note-dropzone-message\");\n this.documentEventHandlers.onDragenter = function (e) {\n var i = t.context.invoke(\"codeview.isActivated\"),\n r = t.$editor.width() > 0 && t.$editor.height() > 0;\n i || o.length || !r || (t.$editor.addClass(\"dragover\"), t.$dropzone.width(t.$editor.width()), t.$dropzone.height(t.$editor.height()), n.text(t.lang.image.dragImageHere)), o = o.add(e.target);\n }, this.documentEventHandlers.onDragleave = function (n) {\n (o = o.not(n.target)).length && \"BODY\" !== n.target.nodeName || (o = e()(), t.$editor.removeClass(\"dragover\"));\n }, this.documentEventHandlers.onDrop = function () {\n o = e()(), t.$editor.removeClass(\"dragover\");\n }, this.$eventListener.on(\"dragenter\", this.documentEventHandlers.onDragenter).on(\"dragleave\", this.documentEventHandlers.onDragleave).on(\"drop\", this.documentEventHandlers.onDrop), this.$dropzone.on(\"dragenter\", function () {\n t.$dropzone.addClass(\"hover\"), n.text(t.lang.image.dropImage);\n }).on(\"dragleave\", function () {\n t.$dropzone.removeClass(\"hover\"), n.text(t.lang.image.dragImageHere);\n }), this.$dropzone.on(\"drop\", function (o) {\n var n = o.originalEvent.dataTransfer;\n o.preventDefault(), n && n.files && n.files.length ? (t.$editable.focus(), t.context.invoke(\"editor.insertImagesOrCallback\", n.files)) : e().each(n.types, function (o, i) {\n if (!(i.toLowerCase().indexOf(\"_moz_\") > -1)) {\n var r = n.getData(i);\n i.toLowerCase().indexOf(\"text\") > -1 ? t.context.invoke(\"editor.pasteHTML\", r) : e()(r).each(function (e, o) {\n t.context.invoke(\"editor.insertNode\", o);\n });\n }\n });\n }).on(\"dragover\", !1);\n }\n }, {\n key: \"destroy\",\n value: function () {\n var t = this;\n Object.keys(this.documentEventHandlers).forEach(function (e) {\n t.$eventListener.off(e.substr(2).toLowerCase(), t.documentEventHandlers[e]);\n }), this.documentEventHandlers = {};\n }\n }], n && Bt(o.prototype, n), i && Bt(o, i), t;\n }();\n function Mt(t, e) {\n var o = \"undefined\" != typeof Symbol && t[Symbol.iterator] || t[\"@@iterator\"];\n if (!o) {\n if (Array.isArray(t) || (o = function (t, e) {\n if (!t) return;\n if (\"string\" == typeof t) return Ot(t, e);\n var o = Object.prototype.toString.call(t).slice(8, -1);\n \"Object\" === o && t.constructor && (o = t.constructor.name);\n if (\"Map\" === o || \"Set\" === o) return Array.from(t);\n if (\"Arguments\" === o || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)) return Ot(t, e);\n }(t)) || e && t && \"number\" == typeof t.length) {\n o && (t = o);\n var n = 0,\n i = function () {};\n return {\n s: i,\n n: function () {\n return n >= t.length ? {\n done: !0\n } : {\n done: !1,\n value: t[n++]\n };\n },\n e: function (t) {\n throw t;\n },\n f: i\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var r,\n a = !0,\n s = !1;\n return {\n s: function () {\n o = o.call(t);\n },\n n: function () {\n var t = o.next();\n return a = t.done, t;\n },\n e: function (t) {\n s = !0, r = t;\n },\n f: function () {\n try {\n a || null == o.return || o.return();\n } finally {\n if (s) throw r;\n }\n }\n };\n }\n function Ot(t, e) {\n (null == e || e > t.length) && (e = t.length);\n for (var o = 0, n = new Array(e); o < e; o++) n[o] = t[o];\n return n;\n }\n function jt(t, e) {\n for (var o = 0; o < e.length; o++) {\n var n = e[o];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n var Ut = function () {\n function t(e) {\n !function (t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, t), this.context = e, this.$editor = e.layoutInfo.editor, this.$editable = e.layoutInfo.editable, this.$codable = e.layoutInfo.codable, this.options = e.options, this.CodeMirrorConstructor = window.CodeMirror, this.options.codemirror.CodeMirrorConstructor && (this.CodeMirrorConstructor = this.options.codemirror.CodeMirrorConstructor);\n }\n var e, o, n;\n return e = t, o = [{\n key: \"sync\",\n value: function (t) {\n var e = this.isActivated(),\n o = this.CodeMirrorConstructor;\n e && (t ? o ? this.$codable.data(\"cmEditor\").getDoc().setValue(t) : this.$codable.val(t) : o && this.$codable.data(\"cmEditor\").save());\n }\n }, {\n key: \"initialize\",\n value: function () {\n var t = this;\n this.$codable.on(\"keyup\", function (e) {\n e.keyCode === wt.code.ESCAPE && t.deactivate();\n });\n }\n }, {\n key: \"isActivated\",\n value: function () {\n return this.$editor.hasClass(\"codeview\");\n }\n }, {\n key: \"toggle\",\n value: function () {\n this.isActivated() ? this.deactivate() : this.activate(), this.context.triggerEvent(\"codeview.toggled\");\n }\n }, {\n key: \"purify\",\n value: function (t) {\n if (this.options.codeviewFilter && (t = t.replace(this.options.codeviewFilterRegex, \"\"), this.options.codeviewIframeFilter)) {\n var e = this.options.codeviewIframeWhitelistSrc.concat(this.options.codeviewIframeWhitelistSrcBase);\n t = t.replace(/(<iframe.*?>.*?(?:<\\/iframe>)?)/gi, function (t) {\n if (/<.+src(?==?('|\"|\\s)?)[\\s\\S]+src(?=('|\"|\\s)?)[^>]*?>/i.test(t)) return \"\";\n var o,\n n = Mt(e);\n try {\n for (n.s(); !(o = n.n()).done;) {\n var i = o.value;\n if (new RegExp('src=\"(https?:)?//' + i.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\") + '/(.+)\"').test(t)) return t;\n }\n } catch (t) {\n n.e(t);\n } finally {\n n.f();\n }\n return \"\";\n });\n }\n return t;\n }\n }, {\n key: \"activate\",\n value: function () {\n var t = this,\n e = this.CodeMirrorConstructor;\n if (this.$codable.val(ht.html(this.$editable, this.options.prettifyHtml)), this.$codable.height(this.$editable.height()), this.context.invoke(\"toolbar.updateCodeview\", !0), this.context.invoke(\"airPopover.updateCodeview\", !0), this.$editor.addClass(\"codeview\"), this.$codable.focus(), e) {\n var o = e.fromTextArea(this.$codable[0], this.options.codemirror);\n if (this.options.codemirror.tern) {\n var n = new e.TernServer(this.options.codemirror.tern);\n o.ternServer = n, o.on(\"cursorActivity\", function (t) {\n n.updateArgHints(t);\n });\n }\n o.on(\"blur\", function (e) {\n t.context.triggerEvent(\"blur.codeview\", o.getValue(), e);\n }), o.on(\"change\", function () {\n t.context.triggerEvent(\"change.codeview\", o.getValue(), o);\n }), o.setSize(null, this.$editable.outerHeight()), this.$codable.data(\"cmEditor\", o);\n } else this.$codable.on(\"blur\", function (e) {\n t.context.triggerEvent(\"blur.codeview\", t.$codable.val(), e);\n }), this.$codable.on(\"input\", function () {\n t.context.triggerEvent(\"change.codeview\", t.$codable.val(), t.$codable);\n });\n }\n }, {\n key: \"deactivate\",\n value: function () {\n if (this.CodeMirrorConstructor) {\n var t = this.$codable.data(\"cmEditor\");\n this.$codable.val(t.getValue()), t.toTextArea();\n }\n var e = this.purify(ht.value(this.$codable, this.options.prettifyHtml) || ht.emptyPara),\n o = this.$editable.html() !== e;\n this.$editable.html(e), this.$editable.height(this.options.height ? this.$codable.height() : \"auto\"), this.$editor.removeClass(\"codeview\"), o && this.context.triggerEvent(\"change\", this.$editable.html(), this.$editable), this.$editable.focus(), this.context.invoke(\"toolbar.updateCodeview\", !1), this.context.invoke(\"airPopover.updateCodeview\", !1);\n }\n }, {\n key: \"destroy\",\n value: function () {\n this.isActivated() && this.deactivate();\n }\n }], o && jt(e.prototype, o), n && jt(e, n), t;\n }();\n function Wt(t, e) {\n for (var o = 0; o < e.length; o++) {\n var n = e[o];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n var Kt = function () {\n function t(o) {\n !function (t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, t), this.$document = e()(document), this.$statusbar = o.layoutInfo.statusbar, this.$editable = o.layoutInfo.editable, this.$codable = o.layoutInfo.codable, this.options = o.options;\n }\n var o, n, i;\n return o = t, (n = [{\n key: \"initialize\",\n value: function () {\n var t = this;\n this.options.airMode || this.options.disableResizeEditor ? this.destroy() : this.$statusbar.on(\"mousedown\", function (e) {\n e.preventDefault(), e.stopPropagation();\n var o = t.$editable.offset().top - t.$document.scrollTop(),\n n = t.$codable.offset().top - t.$document.scrollTop(),\n i = function (e) {\n var i = e.clientY - (o + 24),\n r = e.clientY - (n + 24);\n i = t.options.minheight > 0 ? Math.max(i, t.options.minheight) : i, i = t.options.maxHeight > 0 ? Math.min(i, t.options.maxHeight) : i, r = t.options.minheight > 0 ? Math.max(r, t.options.minheight) : r, r = t.options.maxHeight > 0 ? Math.min(r, t.options.maxHeight) : r, t.$editable.height(i), t.$codable.height(r);\n };\n t.$document.on(\"mousemove\", i).one(\"mouseup\", function () {\n t.$document.off(\"mousemove\", i);\n });\n });\n }\n }, {\n key: \"destroy\",\n value: function () {\n this.$statusbar.off(), this.$statusbar.addClass(\"locked\");\n }\n }]) && Wt(o.prototype, n), i && Wt(o, i), t;\n }();\n function Vt(t, e) {\n for (var o = 0; o < e.length; o++) {\n var n = e[o];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n var qt = function () {\n function t(o) {\n var n = this;\n !function (t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, t), this.context = o, this.$editor = o.layoutInfo.editor, this.$toolbar = o.layoutInfo.toolbar, this.$editable = o.layoutInfo.editable, this.$codable = o.layoutInfo.codable, this.$window = e()(window), this.$scrollbar = e()(\"html, body\"), this.scrollbarClassName = \"note-fullscreen-body\", this.onResize = function () {\n n.resizeTo({\n h: n.$window.height() - n.$toolbar.outerHeight()\n });\n };\n }\n var o, n, i;\n return o = t, (n = [{\n key: \"resizeTo\",\n value: function (t) {\n this.$editable.css(\"height\", t.h), this.$codable.css(\"height\", t.h), this.$codable.data(\"cmeditor\") && this.$codable.data(\"cmeditor\").setsize(null, t.h);\n }\n }, {\n key: \"toggle\",\n value: function () {\n this.$editor.toggleClass(\"fullscreen\");\n var t = this.isFullscreen();\n this.$scrollbar.toggleClass(this.scrollbarClassName, t), t ? (this.$editable.data(\"orgHeight\", this.$editable.css(\"height\")), this.$editable.data(\"orgMaxHeight\", this.$editable.css(\"maxHeight\")), this.$editable.css(\"maxHeight\", \"\"), this.$window.on(\"resize\", this.onResize).trigger(\"resize\")) : (this.$window.off(\"resize\", this.onResize), this.resizeTo({\n h: this.$editable.data(\"orgHeight\")\n }), this.$editable.css(\"maxHeight\", this.$editable.css(\"orgMaxHeight\"))), this.context.invoke(\"toolbar.updateFullscreen\", t);\n }\n }, {\n key: \"isFullscreen\",\n value: function () {\n return this.$editor.hasClass(\"fullscreen\");\n }\n }, {\n key: \"destroy\",\n value: function () {\n this.$scrollbar.removeClass(this.scrollbarClassName);\n }\n }]) && Vt(o.prototype, n), i && Vt(o, i), t;\n }();\n function _t(t, e) {\n for (var o = 0; o < e.length; o++) {\n var n = e[o];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n var Gt = function () {\n function t(o) {\n var n = this;\n !function (t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, t), this.context = o, this.$document = e()(document), this.$editingArea = o.layoutInfo.editingArea, this.options = o.options, this.lang = this.options.langInfo, this.events = {\n \"summernote.mousedown\": function (t, e) {\n n.update(e.target, e) && e.preventDefault();\n },\n \"summernote.keyup summernote.scroll summernote.change summernote.dialog.shown\": function () {\n n.update();\n },\n \"summernote.disable summernote.blur\": function () {\n n.hide();\n },\n \"summernote.codeview.toggled\": function () {\n n.update();\n }\n };\n }\n var o, n, i;\n return o = t, n = [{\n key: \"initialize\",\n value: function () {\n var t = this;\n this.$handle = e()(['<div class=\"note-handle\">', '<div class=\"note-control-selection\">', '<div class=\"note-control-selection-bg\"></div>', '<div class=\"note-control-holder note-control-nw\"></div>', '<div class=\"note-control-holder note-control-ne\"></div>', '<div class=\"note-control-holder note-control-sw\"></div>', '<div class=\"', this.options.disableResizeImage ? \"note-control-holder\" : \"note-control-sizing\", ' note-control-se\"></div>', this.options.disableResizeImage ? \"\" : '<div class=\"note-control-selection-info\"></div>', \"</div>\", \"</div>\"].join(\"\")).prependTo(this.$editingArea), this.$handle.on(\"mousedown\", function (e) {\n if (ht.isControlSizing(e.target)) {\n e.preventDefault(), e.stopPropagation();\n var o = t.$handle.find(\".note-control-selection\").data(\"target\"),\n n = o.offset(),\n i = t.$document.scrollTop(),\n r = function (e) {\n t.context.invoke(\"editor.resizeTo\", {\n x: e.clientX - n.left,\n y: e.clientY - (n.top - i)\n }, o, !e.shiftKey), t.update(o[0], e);\n };\n t.$document.on(\"mousemove\", r).one(\"mouseup\", function (e) {\n e.preventDefault(), t.$document.off(\"mousemove\", r), t.context.invoke(\"editor.afterCommand\");\n }), o.data(\"ratio\") || o.data(\"ratio\", o.height() / o.width());\n }\n }), this.$handle.on(\"wheel\", function (e) {\n e.preventDefault(), t.update();\n });\n }\n }, {\n key: \"destroy\",\n value: function () {\n this.$handle.remove();\n }\n }, {\n key: \"update\",\n value: function (t, o) {\n if (this.context.isDisabled()) return !1;\n var n = ht.isImg(t),\n i = this.$handle.find(\".note-control-selection\");\n if (this.context.invoke(\"imagePopover.update\", t, o), n) {\n var r = e()(t),\n a = r.position(),\n s = {\n left: a.left + parseInt(r.css(\"marginLeft\"), 10),\n top: a.top + parseInt(r.css(\"marginTop\"), 10)\n },\n l = {\n w: r.outerWidth(!1),\n h: r.outerHeight(!1)\n };\n i.css({\n display: \"block\",\n left: s.left,\n top: s.top,\n width: l.w,\n height: l.h\n }).data(\"target\", r);\n var c = new Image();\n c.src = r.attr(\"src\");\n var u = l.w + \"x\" + l.h + \" (\" + this.lang.image.original + \": \" + c.width + \"x\" + c.height + \")\";\n i.find(\".note-control-selection-info\").text(u), this.context.invoke(\"editor.saveTarget\", t);\n } else this.hide();\n return n;\n }\n }, {\n key: \"hide\",\n value: function () {\n this.context.invoke(\"editor.clearTarget\"), this.$handle.children().hide();\n }\n }], n && _t(o.prototype, n), i && _t(o, i), t;\n }();\n function Yt(t, e) {\n for (var o = 0; o < e.length; o++) {\n var n = e[o];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n var Zt = /^([A-Za-z][A-Za-z0-9+-.]*\\:[\\/]{2}|tel:|mailto:[A-Z0-9._%+-]+@|xmpp:[A-Z0-9._%+-]+@)?(www\\.)?(.+)$/i,\n Xt = function () {\n function t(e) {\n var o = this;\n !function (t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, t), this.context = e, this.options = e.options, this.events = {\n \"summernote.keyup\": function (t, e) {\n e.isDefaultPrevented() || o.handleKeyup(e);\n },\n \"summernote.keydown\": function (t, e) {\n o.handleKeydown(e);\n }\n };\n }\n var o, n, i;\n return o = t, (n = [{\n key: \"initialize\",\n value: function () {\n this.lastWordRange = null;\n }\n }, {\n key: \"destroy\",\n value: function () {\n this.lastWordRange = null;\n }\n }, {\n key: \"replace\",\n value: function () {\n if (this.lastWordRange) {\n var t = this.lastWordRange.toString(),\n o = t.match(Zt);\n if (o && (o[1] || o[2])) {\n var n = o[1] ? t : \"http://\" + t,\n i = this.options.showDomainOnlyForAutolink ? t.replace(/^(?:https?:\\/\\/)?(?:tel?:?)?(?:mailto?:?)?(?:xmpp?:?)?(?:www\\.)?/i, \"\").split(\"/\")[0] : t,\n r = e()(\"<a></a>\").html(i).attr(\"href\", n)[0];\n this.context.options.linkTargetBlank && e()(r).attr(\"target\", \"_blank\"), this.lastWordRange.insertNode(r), this.lastWordRange = null, this.context.invoke(\"editor.focus\");\n }\n }\n }\n }, {\n key: \"handleKeydown\",\n value: function (t) {\n if (y.contains([wt.code.ENTER, wt.code.SPACE], t.keyCode)) {\n var e = this.context.invoke(\"editor.createRange\").getWordRange();\n this.lastWordRange = e;\n }\n }\n }, {\n key: \"handleKeyup\",\n value: function (t) {\n y.contains([wt.code.ENTER, wt.code.SPACE], t.keyCode) && this.replace();\n }\n }]) && Yt(o.prototype, n), i && Yt(o, i), t;\n }();\n function Qt(t, e) {\n for (var o = 0; o < e.length; o++) {\n var n = e[o];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n var Jt = function () {\n function t(e) {\n var o = this;\n !function (t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, t), this.$note = e.layoutInfo.note, this.events = {\n \"summernote.change\": function () {\n o.$note.val(e.invoke(\"code\"));\n }\n };\n }\n var e, o, n;\n return e = t, (o = [{\n key: \"shouldInitialize\",\n value: function () {\n return ht.isTextarea(this.$note[0]);\n }\n }]) && Qt(e.prototype, o), n && Qt(e, n), t;\n }();\n function te(t, e) {\n for (var o = 0; o < e.length; o++) {\n var n = e[o];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n var ee = function () {\n function t(e) {\n var o = this;\n !function (t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, t), this.context = e, this.options = e.options.replace || {}, this.keys = [wt.code.ENTER, wt.code.SPACE, wt.code.PERIOD, wt.code.COMMA, wt.code.SEMICOLON, wt.code.SLASH], this.previousKeydownCode = null, this.events = {\n \"summernote.keyup\": function (t, e) {\n e.isDefaultPrevented() || o.handleKeyup(e);\n },\n \"summernote.keydown\": function (t, e) {\n o.handleKeydown(e);\n }\n };\n }\n var e, o, n;\n return e = t, (o = [{\n key: \"shouldInitialize\",\n value: function () {\n return !!this.options.match;\n }\n }, {\n key: \"initialize\",\n value: function () {\n this.lastWord = null;\n }\n }, {\n key: \"destroy\",\n value: function () {\n this.lastWord = null;\n }\n }, {\n key: \"replace\",\n value: function () {\n if (this.lastWord) {\n var t = this,\n e = this.lastWord.toString();\n this.options.match(e, function (e) {\n if (e) {\n var o = \"\";\n if (\"string\" == typeof e ? o = ht.createText(e) : e instanceof jQuery ? o = e[0] : e instanceof Node && (o = e), !o) return;\n t.lastWord.insertNode(o), t.lastWord = null, t.context.invoke(\"editor.focus\");\n }\n });\n }\n }\n }, {\n key: \"handleKeydown\",\n value: function (t) {\n if (this.previousKeydownCode && y.contains(this.keys, this.previousKeydownCode)) this.previousKeydownCode = t.keyCode;else {\n if (y.contains(this.keys, t.keyCode)) {\n var e = this.context.invoke(\"editor.createRange\").getWordRange();\n this.lastWord = e;\n }\n this.previousKeydownCode = t.keyCode;\n }\n }\n }, {\n key: \"handleKeyup\",\n value: function (t) {\n y.contains(this.keys, t.keyCode) && this.replace();\n }\n }]) && te(e.prototype, o), n && te(e, n), t;\n }();\n function oe(t, e) {\n for (var o = 0; o < e.length; o++) {\n var n = e[o];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n var ne = function () {\n function t(e) {\n var o = this;\n !function (t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, t), this.context = e, this.$editingArea = e.layoutInfo.editingArea, this.options = e.options, !0 === this.options.inheritPlaceholder && (this.options.placeholder = this.context.$note.attr(\"placeholder\") || this.options.placeholder), this.events = {\n \"summernote.init summernote.change\": function () {\n o.update();\n },\n \"summernote.codeview.toggled\": function () {\n o.update();\n }\n };\n }\n var o, n, i;\n return o = t, (n = [{\n key: \"shouldInitialize\",\n value: function () {\n return !!this.options.placeholder;\n }\n }, {\n key: \"initialize\",\n value: function () {\n var t = this;\n this.$placeholder = e()('<div class=\"note-placeholder\"></div>'), this.$placeholder.on(\"click\", function () {\n t.context.invoke(\"focus\");\n }).html(this.options.placeholder).prependTo(this.$editingArea), this.update();\n }\n }, {\n key: \"destroy\",\n value: function () {\n this.$placeholder.remove();\n }\n }, {\n key: \"update\",\n value: function () {\n var t = !this.context.invoke(\"codeview.isActivated\") && this.context.invoke(\"editor.isEmpty\");\n this.$placeholder.toggle(t);\n }\n }]) && oe(o.prototype, n), i && oe(o, i), t;\n }();\n function ie(t, e) {\n for (var o = 0; o < e.length; o++) {\n var n = e[o];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n var re = function () {\n function t(o) {\n !function (t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, t), this.ui = e().summernote.ui, this.context = o, this.$toolbar = o.layoutInfo.toolbar, this.options = o.options, this.lang = this.options.langInfo, this.invertedKeyMap = v.invertObject(this.options.keyMap[f.isMac ? \"mac\" : \"pc\"]);\n }\n var o, n, i;\n return o = t, n = [{\n key: \"representShortcut\",\n value: function (t) {\n var e = this.invertedKeyMap[t];\n return this.options.shortcuts && e ? (f.isMac && (e = e.replace(\"CMD\", \"⌘\").replace(\"SHIFT\", \"⇧\")), \" (\" + (e = e.replace(\"BACKSLASH\", \"\\\\\").replace(\"SLASH\", \"/\").replace(\"LEFTBRACKET\", \"[\").replace(\"RIGHTBRACKET\", \"]\")) + \")\") : \"\";\n }\n }, {\n key: \"button\",\n value: function (t) {\n return !this.options.tooltip && t.tooltip && delete t.tooltip, t.container = this.options.container, this.ui.button(t);\n }\n }, {\n key: \"initialize\",\n value: function () {\n this.addToolbarButtons(), this.addImagePopoverButtons(), this.addLinkPopoverButtons(), this.addTablePopoverButtons(), this.fontInstalledMap = {};\n }\n }, {\n key: \"destroy\",\n value: function () {\n delete this.fontInstalledMap;\n }\n }, {\n key: \"isFontInstalled\",\n value: function (t) {\n return Object.prototype.hasOwnProperty.call(this.fontInstalledMap, t) || (this.fontInstalledMap[t] = f.isFontInstalled(t) || y.contains(this.options.fontNamesIgnoreCheck, t)), this.fontInstalledMap[t];\n }\n }, {\n key: \"isFontDeservedToAdd\",\n value: function (t) {\n return \"\" !== (t = t.toLowerCase()) && this.isFontInstalled(t) && -1 === f.genericFontFamilies.indexOf(t);\n }\n }, {\n key: \"colorPalette\",\n value: function (t, o, n, i) {\n var r = this;\n return this.ui.buttonGroup({\n className: \"note-color \" + t,\n children: [this.button({\n className: \"note-current-color-button\",\n contents: this.ui.icon(this.options.icons.font + \" note-recent-color\"),\n tooltip: o,\n click: function (t) {\n var o = e()(t.currentTarget);\n n && i ? r.context.invoke(\"editor.color\", {\n backColor: o.attr(\"data-backColor\"),\n foreColor: o.attr(\"data-foreColor\")\n }) : n ? r.context.invoke(\"editor.color\", {\n backColor: o.attr(\"data-backColor\")\n }) : i && r.context.invoke(\"editor.color\", {\n foreColor: o.attr(\"data-foreColor\")\n });\n },\n callback: function (t) {\n var e = t.find(\".note-recent-color\");\n n && (e.css(\"background-color\", r.options.colorButton.backColor), t.attr(\"data-backColor\", r.options.colorButton.backColor)), i ? (e.css(\"color\", r.options.colorButton.foreColor), t.attr(\"data-foreColor\", r.options.colorButton.foreColor)) : e.css(\"color\", \"transparent\");\n }\n }), this.button({\n className: \"dropdown-toggle\",\n contents: this.ui.dropdownButtonContents(\"\", this.options),\n tooltip: this.lang.color.more,\n data: {\n toggle: \"dropdown\"\n }\n }), this.ui.dropdown({\n items: (n ? ['<div class=\"note-palette\">', '<div class=\"note-palette-title\">' + this.lang.color.background + \"</div>\", \"<div>\", '<button type=\"button\" class=\"note-color-reset btn btn-light btn-default\" data-event=\"backColor\" data-value=\"transparent\">', this.lang.color.transparent, \"</button>\", \"</div>\", '<div class=\"note-holder\" data-event=\"backColor\">\\x3c!-- back colors --\\x3e</div>', \"<div>\", '<button type=\"button\" class=\"note-color-select btn btn-light btn-default\" data-event=\"openPalette\" data-value=\"backColorPicker-' + this.options.id + '\">', this.lang.color.cpSelect, \"</button>\", '<input type=\"color\" id=\"backColorPicker-' + this.options.id + '\" class=\"note-btn note-color-select-btn\" value=\"' + this.options.colorButton.backColor + '\" data-event=\"backColorPalette-' + this.options.id + '\">', \"</div>\", '<div class=\"note-holder-custom\" id=\"backColorPalette-' + this.options.id + '\" data-event=\"backColor\"></div>', \"</div>\"].join(\"\") : \"\") + (i ? ['<div class=\"note-palette\">', '<div class=\"note-palette-title\">' + this.lang.color.foreground + \"</div>\", \"<div>\", '<button type=\"button\" class=\"note-color-reset btn btn-light btn-default\" data-event=\"removeFormat\" data-value=\"foreColor\">', this.lang.color.resetToDefault, \"</button>\", \"</div>\", '<div class=\"note-holder\" data-event=\"foreColor\">\\x3c!-- fore colors --\\x3e</div>', \"<div>\", '<button type=\"button\" class=\"note-color-select btn btn-light btn-default\" data-event=\"openPalette\" data-value=\"foreColorPicker-' + this.options.id + '\">', this.lang.color.cpSelect, \"</button>\", '<input type=\"color\" id=\"foreColorPicker-' + this.options.id + '\" class=\"note-btn note-color-select-btn\" value=\"' + this.options.colorButton.foreColor + '\" data-event=\"foreColorPalette-' + this.options.id + '\">', \"</div>\", '<div class=\"note-holder-custom\" id=\"foreColorPalette-' + this.options.id + '\" data-event=\"foreColor\"></div>', \"</div>\"].join(\"\") : \"\"),\n callback: function (t) {\n t.find(\".note-holder\").each(function (t, o) {\n var n = e()(o);\n n.append(r.ui.palette({\n colors: r.options.colors,\n colorsName: r.options.colorsName,\n eventName: n.data(\"event\"),\n container: r.options.container,\n tooltip: r.options.tooltip\n }).render());\n });\n var o = [[\"#FFFFFF\", \"#FFFFFF\", \"#FFFFFF\", \"#FFFFFF\", \"#FFFFFF\", \"#FFFFFF\", \"#FFFFFF\", \"#FFFFFF\"]];\n t.find(\".note-holder-custom\").each(function (t, n) {\n var i = e()(n);\n i.append(r.ui.palette({\n colors: o,\n colorsName: o,\n eventName: i.data(\"event\"),\n container: r.options.container,\n tooltip: r.options.tooltip\n }).render());\n }), t.find(\"input[type=color]\").each(function (o, n) {\n e()(n).change(function () {\n var o = t.find(\"#\" + e()(this).data(\"event\")).find(\".note-color-btn\").first(),\n n = this.value.toUpperCase();\n o.css(\"background-color\", n).attr(\"aria-label\", n).attr(\"data-value\", n).attr(\"data-original-title\", n), o.click();\n });\n });\n },\n click: function (o) {\n o.stopPropagation();\n var n = e()(\".\" + t).find(\".note-dropdown-menu\"),\n i = e()(o.target),\n a = i.data(\"event\"),\n s = i.attr(\"data-value\");\n if (\"openPalette\" === a) {\n var l = n.find(\"#\" + s),\n c = e()(n.find(\"#\" + l.data(\"event\")).find(\".note-color-row\")[0]),\n u = c.find(\".note-color-btn\").last().detach(),\n d = l.val();\n u.css(\"background-color\", d).attr(\"aria-label\", d).attr(\"data-value\", d).attr(\"data-original-title\", d), c.prepend(u), l.click();\n } else {\n if (y.contains([\"backColor\", \"foreColor\"], a)) {\n var h = \"backColor\" === a ? \"background-color\" : \"color\",\n f = i.closest(\".note-color\").find(\".note-recent-color\"),\n p = i.closest(\".note-color\").find(\".note-current-color-button\");\n f.css(h, s), p.attr(\"data-\" + a, s);\n }\n r.context.invoke(\"editor.\" + a, s);\n }\n }\n })]\n }).render();\n }\n }, {\n key: \"addToolbarButtons\",\n value: function () {\n var t = this;\n this.context.memo(\"button.style\", function () {\n return t.ui.buttonGroup([t.button({\n className: \"dropdown-toggle\",\n contents: t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.magic), t.options),\n tooltip: t.lang.style.style,\n data: {\n toggle: \"dropdown\"\n }\n }), t.ui.dropdown({\n className: \"dropdown-style\",\n items: t.options.styleTags,\n title: t.lang.style.style,\n template: function (e) {\n \"string\" == typeof e && (e = {\n tag: e,\n title: Object.prototype.hasOwnProperty.call(t.lang.style, e) ? t.lang.style[e] : e\n });\n var o = e.tag,\n n = e.title;\n return \"<\" + o + (e.style ? ' style=\"' + e.style + '\" ' : \"\") + (e.className ? ' class=\"' + e.className + '\"' : \"\") + \">\" + n + \"</\" + o + \">\";\n },\n click: t.context.createInvokeHandler(\"editor.formatBlock\")\n })]).render();\n });\n for (var o = function (e, o) {\n var n = t.options.styleTags[e];\n t.context.memo(\"button.style.\" + n, function () {\n return t.button({\n className: \"note-btn-style-\" + n,\n contents: '<div data-value=\"' + n + '\">' + n.toUpperCase() + \"</div>\",\n tooltip: t.lang.style[n],\n click: t.context.createInvokeHandler(\"editor.formatBlock\")\n }).render();\n });\n }, n = 0, i = this.options.styleTags.length; n < i; n++) o(n);\n this.context.memo(\"button.bold\", function () {\n return t.button({\n className: \"note-btn-bold\",\n contents: t.ui.icon(t.options.icons.bold),\n tooltip: t.lang.font.bold + t.representShortcut(\"bold\"),\n click: t.context.createInvokeHandlerAndUpdateState(\"editor.bold\")\n }).render();\n }), this.context.memo(\"button.italic\", function () {\n return t.button({\n className: \"note-btn-italic\",\n contents: t.ui.icon(t.options.icons.italic),\n tooltip: t.lang.font.italic + t.representShortcut(\"italic\"),\n click: t.context.createInvokeHandlerAndUpdateState(\"editor.italic\")\n }).render();\n }), this.context.memo(\"button.underline\", function () {\n return t.button({\n className: \"note-btn-underline\",\n contents: t.ui.icon(t.options.icons.underline),\n tooltip: t.lang.font.underline + t.representShortcut(\"underline\"),\n click: t.context.createInvokeHandlerAndUpdateState(\"editor.underline\")\n }).render();\n }), this.context.memo(\"button.clear\", function () {\n return t.button({\n contents: t.ui.icon(t.options.icons.eraser),\n tooltip: t.lang.font.clear + t.representShortcut(\"removeFormat\"),\n click: t.context.createInvokeHandler(\"editor.removeFormat\")\n }).render();\n }), this.context.memo(\"button.strikethrough\", function () {\n return t.button({\n className: \"note-btn-strikethrough\",\n contents: t.ui.icon(t.options.icons.strikethrough),\n tooltip: t.lang.font.strikethrough + t.representShortcut(\"strikethrough\"),\n click: t.context.createInvokeHandlerAndUpdateState(\"editor.strikethrough\")\n }).render();\n }), this.context.memo(\"button.superscript\", function () {\n return t.button({\n className: \"note-btn-superscript\",\n contents: t.ui.icon(t.options.icons.superscript),\n tooltip: t.lang.font.superscript,\n click: t.context.createInvokeHandlerAndUpdateState(\"editor.superscript\")\n }).render();\n }), this.context.memo(\"button.subscript\", function () {\n return t.button({\n className: \"note-btn-subscript\",\n contents: t.ui.icon(t.options.icons.subscript),\n tooltip: t.lang.font.subscript,\n click: t.context.createInvokeHandlerAndUpdateState(\"editor.subscript\")\n }).render();\n }), this.context.memo(\"button.fontname\", function () {\n var o = t.context.invoke(\"editor.currentStyle\");\n return t.options.addDefaultFonts && e().each(o[\"font-family\"].split(\",\"), function (e, o) {\n o = o.trim().replace(/['\"]+/g, \"\"), t.isFontDeservedToAdd(o) && -1 === t.options.fontNames.indexOf(o) && t.options.fontNames.push(o);\n }), t.ui.buttonGroup([t.button({\n className: \"dropdown-toggle\",\n contents: t.ui.dropdownButtonContents('<span class=\"note-current-fontname\"></span>', t.options),\n tooltip: t.lang.font.name,\n data: {\n toggle: \"dropdown\"\n }\n }), t.ui.dropdownCheck({\n className: \"dropdown-fontname\",\n checkClassName: t.options.icons.menuCheck,\n items: t.options.fontNames.filter(t.isFontInstalled.bind(t)),\n title: t.lang.font.name,\n template: function (t) {\n return '<span style=\"font-family: ' + f.validFontName(t) + '\">' + t + \"</span>\";\n },\n click: t.context.createInvokeHandlerAndUpdateState(\"editor.fontName\")\n })]).render();\n }), this.context.memo(\"button.fontsize\", function () {\n return t.ui.buttonGroup([t.button({\n className: \"dropdown-toggle\",\n contents: t.ui.dropdownButtonContents('<span class=\"note-current-fontsize\"></span>', t.options),\n tooltip: t.lang.font.size,\n data: {\n toggle: \"dropdown\"\n }\n }), t.ui.dropdownCheck({\n className: \"dropdown-fontsize\",\n checkClassName: t.options.icons.menuCheck,\n items: t.options.fontSizes,\n title: t.lang.font.size,\n click: t.context.createInvokeHandlerAndUpdateState(\"editor.fontSize\")\n })]).render();\n }), this.context.memo(\"button.fontsizeunit\", function () {\n return t.ui.buttonGroup([t.button({\n className: \"dropdown-toggle\",\n contents: t.ui.dropdownButtonContents('<span class=\"note-current-fontsizeunit\"></span>', t.options),\n tooltip: t.lang.font.sizeunit,\n data: {\n toggle: \"dropdown\"\n }\n }), t.ui.dropdownCheck({\n className: \"dropdown-fontsizeunit\",\n checkClassName: t.options.icons.menuCheck,\n items: t.options.fontSizeUnits,\n title: t.lang.font.sizeunit,\n click: t.context.createInvokeHandlerAndUpdateState(\"editor.fontSizeUnit\")\n })]).render();\n }), this.context.memo(\"button.color\", function () {\n return t.colorPalette(\"note-color-all\", t.lang.color.recent, !0, !0);\n }), this.context.memo(\"button.forecolor\", function () {\n return t.colorPalette(\"note-color-fore\", t.lang.color.foreground, !1, !0);\n }), this.context.memo(\"button.backcolor\", function () {\n return t.colorPalette(\"note-color-back\", t.lang.color.background, !0, !1);\n }), this.context.memo(\"button.ul\", function () {\n return t.button({\n contents: t.ui.icon(t.options.icons.unorderedlist),\n tooltip: t.lang.lists.unordered + t.representShortcut(\"insertUnorderedList\"),\n click: t.context.createInvokeHandler(\"editor.insertUnorderedList\")\n }).render();\n }), this.context.memo(\"button.ol\", function () {\n return t.button({\n contents: t.ui.icon(t.options.icons.orderedlist),\n tooltip: t.lang.lists.ordered + t.representShortcut(\"insertOrderedList\"),\n click: t.context.createInvokeHandler(\"editor.insertOrderedList\")\n }).render();\n });\n var r = this.button({\n contents: this.ui.icon(this.options.icons.alignLeft),\n tooltip: this.lang.paragraph.left + this.representShortcut(\"justifyLeft\"),\n click: this.context.createInvokeHandler(\"editor.justifyLeft\")\n }),\n a = this.button({\n contents: this.ui.icon(this.options.icons.alignCenter),\n tooltip: this.lang.paragraph.center + this.representShortcut(\"justifyCenter\"),\n click: this.context.createInvokeHandler(\"editor.justifyCenter\")\n }),\n s = this.button({\n contents: this.ui.icon(this.options.icons.alignRight),\n tooltip: this.lang.paragraph.right + this.representShortcut(\"justifyRight\"),\n click: this.context.createInvokeHandler(\"editor.justifyRight\")\n }),\n l = this.button({\n contents: this.ui.icon(this.options.icons.alignJustify),\n tooltip: this.lang.paragraph.justify + this.representShortcut(\"justifyFull\"),\n click: this.context.createInvokeHandler(\"editor.justifyFull\")\n }),\n c = this.button({\n contents: this.ui.icon(this.options.icons.outdent),\n tooltip: this.lang.paragraph.outdent + this.representShortcut(\"outdent\"),\n click: this.context.createInvokeHandler(\"editor.outdent\")\n }),\n u = this.button({\n contents: this.ui.icon(this.options.icons.indent),\n tooltip: this.lang.paragraph.indent + this.representShortcut(\"indent\"),\n click: this.context.createInvokeHandler(\"editor.indent\")\n });\n this.context.memo(\"button.justifyLeft\", v.invoke(r, \"render\")), this.context.memo(\"button.justifyCenter\", v.invoke(a, \"render\")), this.context.memo(\"button.justifyRight\", v.invoke(s, \"render\")), this.context.memo(\"button.justifyFull\", v.invoke(l, \"render\")), this.context.memo(\"button.outdent\", v.invoke(c, \"render\")), this.context.memo(\"button.indent\", v.invoke(u, \"render\")), this.context.memo(\"button.paragraph\", function () {\n return t.ui.buttonGroup([t.button({\n className: \"dropdown-toggle\",\n contents: t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.alignLeft), t.options),\n tooltip: t.lang.paragraph.paragraph,\n data: {\n toggle: \"dropdown\"\n }\n }), t.ui.dropdown([t.ui.buttonGroup({\n className: \"note-align\",\n children: [r, a, s, l]\n }), t.ui.buttonGroup({\n className: \"note-list\",\n children: [c, u]\n })])]).render();\n }), this.context.memo(\"button.height\", function () {\n return t.ui.buttonGroup([t.button({\n className: \"dropdown-toggle\",\n contents: t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.textHeight), t.options),\n tooltip: t.lang.font.height,\n data: {\n toggle: \"dropdown\"\n }\n }), t.ui.dropdownCheck({\n items: t.options.lineHeights,\n checkClassName: t.options.icons.menuCheck,\n className: \"dropdown-line-height\",\n title: t.lang.font.height,\n click: t.context.createInvokeHandler(\"editor.lineHeight\")\n })]).render();\n }), this.context.memo(\"button.table\", function () {\n return t.ui.buttonGroup([t.button({\n className: \"dropdown-toggle\",\n contents: t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.table), t.options),\n tooltip: t.lang.table.table,\n data: {\n toggle: \"dropdown\"\n }\n }), t.ui.dropdown({\n title: t.lang.table.table,\n className: \"note-table\",\n items: ['<div class=\"note-dimension-picker\">', '<div class=\"note-dimension-picker-mousecatcher\" data-event=\"insertTable\" data-value=\"1x1\"></div>', '<div class=\"note-dimension-picker-highlighted\"></div>', '<div class=\"note-dimension-picker-unhighlighted\"></div>', \"</div>\", '<div class=\"note-dimension-display\">1 x 1</div>'].join(\"\")\n })], {\n callback: function (e) {\n e.find(\".note-dimension-picker-mousecatcher\").css({\n width: t.options.insertTableMaxSize.col + \"em\",\n height: t.options.insertTableMaxSize.row + \"em\"\n }).mouseup(t.context.createInvokeHandler(\"editor.insertTable\")).on(\"mousemove\", t.tableMoveHandler.bind(t));\n }\n }).render();\n }), this.context.memo(\"button.link\", function () {\n return t.button({\n contents: t.ui.icon(t.options.icons.link),\n tooltip: t.lang.link.link + t.representShortcut(\"linkDialog.show\"),\n click: t.context.createInvokeHandler(\"linkDialog.show\")\n }).render();\n }), this.context.memo(\"button.picture\", function () {\n return t.button({\n contents: t.ui.icon(t.options.icons.picture),\n tooltip: t.lang.image.image,\n click: t.context.createInvokeHandler(\"imageDialog.show\")\n }).render();\n }), this.context.memo(\"button.video\", function () {\n return t.button({\n contents: t.ui.icon(t.options.icons.video),\n tooltip: t.lang.video.video,\n click: t.context.createInvokeHandler(\"videoDialog.show\")\n }).render();\n }), this.context.memo(\"button.hr\", function () {\n return t.button({\n contents: t.ui.icon(t.options.icons.minus),\n tooltip: t.lang.hr.insert + t.representShortcut(\"insertHorizontalRule\"),\n click: t.context.createInvokeHandler(\"editor.insertHorizontalRule\")\n }).render();\n }), this.context.memo(\"button.fullscreen\", function () {\n return t.button({\n className: \"btn-fullscreen note-codeview-keep\",\n contents: t.ui.icon(t.options.icons.arrowsAlt),\n tooltip: t.lang.options.fullscreen,\n click: t.context.createInvokeHandler(\"fullscreen.toggle\")\n }).render();\n }), this.context.memo(\"button.codeview\", function () {\n return t.button({\n className: \"btn-codeview note-codeview-keep\",\n contents: t.ui.icon(t.options.icons.code),\n tooltip: t.lang.options.codeview,\n click: t.context.createInvokeHandler(\"codeview.toggle\")\n }).render();\n }), this.context.memo(\"button.redo\", function () {\n return t.button({\n contents: t.ui.icon(t.options.icons.redo),\n tooltip: t.lang.history.redo + t.representShortcut(\"redo\"),\n click: t.context.createInvokeHandler(\"editor.redo\")\n }).render();\n }), this.context.memo(\"button.undo\", function () {\n return t.button({\n contents: t.ui.icon(t.options.icons.undo),\n tooltip: t.lang.history.undo + t.representShortcut(\"undo\"),\n click: t.context.createInvokeHandler(\"editor.undo\")\n }).render();\n }), this.context.memo(\"button.help\", function () {\n return t.button({\n contents: t.ui.icon(t.options.icons.question),\n tooltip: t.lang.options.help,\n click: t.context.createInvokeHandler(\"helpDialog.show\")\n }).render();\n });\n }\n }, {\n key: \"addImagePopoverButtons\",\n value: function () {\n var t = this;\n this.context.memo(\"button.resizeFull\", function () {\n return t.button({\n contents: '<span class=\"note-fontsize-10\">100%</span>',\n tooltip: t.lang.image.resizeFull,\n click: t.context.createInvokeHandler(\"editor.resize\", \"1\")\n }).render();\n }), this.context.memo(\"button.resizeHalf\", function () {\n return t.button({\n contents: '<span class=\"note-fontsize-10\">50%</span>',\n tooltip: t.lang.image.resizeHalf,\n click: t.context.createInvokeHandler(\"editor.resize\", \"0.5\")\n }).render();\n }), this.context.memo(\"button.resizeQuarter\", function () {\n return t.button({\n contents: '<span class=\"note-fontsize-10\">25%</span>',\n tooltip: t.lang.image.resizeQuarter,\n click: t.context.createInvokeHandler(\"editor.resize\", \"0.25\")\n }).render();\n }), this.context.memo(\"button.resizeNone\", function () {\n return t.button({\n contents: t.ui.icon(t.options.icons.rollback),\n tooltip: t.lang.image.resizeNone,\n click: t.context.createInvokeHandler(\"editor.resize\", \"0\")\n }).render();\n }), this.context.memo(\"button.floatLeft\", function () {\n return t.button({\n contents: t.ui.icon(t.options.icons.floatLeft),\n tooltip: t.lang.image.floatLeft,\n click: t.context.createInvokeHandler(\"editor.floatMe\", \"left\")\n }).render();\n }), this.context.memo(\"button.floatRight\", function () {\n return t.button({\n contents: t.ui.icon(t.options.icons.floatRight),\n tooltip: t.lang.image.floatRight,\n click: t.context.createInvokeHandler(\"editor.floatMe\", \"right\")\n }).render();\n }), this.context.memo(\"button.floatNone\", function () {\n return t.button({\n contents: t.ui.icon(t.options.icons.rollback),\n tooltip: t.lang.image.floatNone,\n click: t.context.createInvokeHandler(\"editor.floatMe\", \"none\")\n }).render();\n }), this.context.memo(\"button.removeMedia\", function () {\n return t.button({\n contents: t.ui.icon(t.options.icons.trash),\n tooltip: t.lang.image.remove,\n click: t.context.createInvokeHandler(\"editor.removeMedia\")\n }).render();\n });\n }\n }, {\n key: \"addLinkPopoverButtons\",\n value: function () {\n var t = this;\n this.context.memo(\"button.linkDialogShow\", function () {\n return t.button({\n contents: t.ui.icon(t.options.icons.link),\n tooltip: t.lang.link.edit,\n click: t.context.createInvokeHandler(\"linkDialog.show\")\n }).render();\n }), this.context.memo(\"button.unlink\", function () {\n return t.button({\n contents: t.ui.icon(t.options.icons.unlink),\n tooltip: t.lang.link.unlink,\n click: t.context.createInvokeHandler(\"editor.unlink\")\n }).render();\n });\n }\n }, {\n key: \"addTablePopoverButtons\",\n value: function () {\n var t = this;\n this.context.memo(\"button.addRowUp\", function () {\n return t.button({\n className: \"btn-md\",\n contents: t.ui.icon(t.options.icons.rowAbove),\n tooltip: t.lang.table.addRowAbove,\n click: t.context.createInvokeHandler(\"editor.addRow\", \"top\")\n }).render();\n }), this.context.memo(\"button.addRowDown\", function () {\n return t.button({\n className: \"btn-md\",\n contents: t.ui.icon(t.options.icons.rowBelow),\n tooltip: t.lang.table.addRowBelow,\n click: t.context.createInvokeHandler(\"editor.addRow\", \"bottom\")\n }).render();\n }), this.context.memo(\"button.addColLeft\", function () {\n return t.button({\n className: \"btn-md\",\n contents: t.ui.icon(t.options.icons.colBefore),\n tooltip: t.lang.table.addColLeft,\n click: t.context.createInvokeHandler(\"editor.addCol\", \"left\")\n }).render();\n }), this.context.memo(\"button.addColRight\", function () {\n return t.button({\n className: \"btn-md\",\n contents: t.ui.icon(t.options.icons.colAfter),\n tooltip: t.lang.table.addColRight,\n click: t.context.createInvokeHandler(\"editor.addCol\", \"right\")\n }).render();\n }), this.context.memo(\"button.deleteRow\", function () {\n return t.button({\n className: \"btn-md\",\n contents: t.ui.icon(t.options.icons.rowRemove),\n tooltip: t.lang.table.delRow,\n click: t.context.createInvokeHandler(\"editor.deleteRow\")\n }).render();\n }), this.context.memo(\"button.deleteCol\", function () {\n return t.button({\n className: \"btn-md\",\n contents: t.ui.icon(t.options.icons.colRemove),\n tooltip: t.lang.table.delCol,\n click: t.context.createInvokeHandler(\"editor.deleteCol\")\n }).render();\n }), this.context.memo(\"button.deleteTable\", function () {\n return t.button({\n className: \"btn-md\",\n contents: t.ui.icon(t.options.icons.trash),\n tooltip: t.lang.table.delTable,\n click: t.context.createInvokeHandler(\"editor.deleteTable\")\n }).render();\n });\n }\n }, {\n key: \"build\",\n value: function (t, e) {\n for (var o = 0, n = e.length; o < n; o++) {\n for (var i = e[o], r = Array.isArray(i) ? i[0] : i, a = Array.isArray(i) ? 1 === i.length ? [i[0]] : i[1] : [i], s = this.ui.buttonGroup({\n className: \"note-\" + r\n }).render(), l = 0, c = a.length; l < c; l++) {\n var u = this.context.memo(\"button.\" + a[l]);\n u && s.append(\"function\" == typeof u ? u(this.context) : u);\n }\n s.appendTo(t);\n }\n }\n }, {\n key: \"updateCurrentStyle\",\n value: function (t) {\n var o = t || this.$toolbar,\n n = this.context.invoke(\"editor.currentStyle\");\n if (this.updateBtnStates(o, {\n \".note-btn-bold\": function () {\n return \"bold\" === n[\"font-bold\"];\n },\n \".note-btn-italic\": function () {\n return \"italic\" === n[\"font-italic\"];\n },\n \".note-btn-underline\": function () {\n return \"underline\" === n[\"font-underline\"];\n },\n \".note-btn-subscript\": function () {\n return \"subscript\" === n[\"font-subscript\"];\n },\n \".note-btn-superscript\": function () {\n return \"superscript\" === n[\"font-superscript\"];\n },\n \".note-btn-strikethrough\": function () {\n return \"strikethrough\" === n[\"font-strikethrough\"];\n }\n }), n[\"font-family\"]) {\n var i = n[\"font-family\"].split(\",\").map(function (t) {\n return t.replace(/[\\'\\\"]/g, \"\").replace(/\\s+$/, \"\").replace(/^\\s+/, \"\");\n }),\n r = y.find(i, this.isFontInstalled.bind(this));\n o.find(\".dropdown-fontname a\").each(function (t, o) {\n var n = e()(o),\n i = n.data(\"value\") + \"\" == r + \"\";\n n.toggleClass(\"checked\", i);\n }), o.find(\".note-current-fontname\").text(r).css(\"font-family\", r);\n }\n if (n[\"font-size\"]) {\n var a = n[\"font-size\"];\n o.find(\".dropdown-fontsize a\").each(function (t, o) {\n var n = e()(o),\n i = n.data(\"value\") + \"\" == a + \"\";\n n.toggleClass(\"checked\", i);\n }), o.find(\".note-current-fontsize\").text(a);\n var s = n[\"font-size-unit\"];\n o.find(\".dropdown-fontsizeunit a\").each(function (t, o) {\n var n = e()(o),\n i = n.data(\"value\") + \"\" == s + \"\";\n n.toggleClass(\"checked\", i);\n }), o.find(\".note-current-fontsizeunit\").text(s);\n }\n if (n[\"line-height\"]) {\n var l = n[\"line-height\"];\n o.find(\".dropdown-line-height a\").each(function (t, o) {\n var n = e()(o),\n i = e()(o).data(\"value\") + \"\" == l + \"\";\n n.toggleClass(\"checked\", i);\n }), o.find(\".note-current-line-height\").text(l);\n }\n }\n }, {\n key: \"updateBtnStates\",\n value: function (t, o) {\n var n = this;\n e().each(o, function (e, o) {\n n.ui.toggleBtnActive(t.find(e), o());\n });\n }\n }, {\n key: \"tableMoveHandler\",\n value: function (t) {\n var o,\n n = e()(t.target.parentNode),\n i = n.next(),\n r = n.find(\".note-dimension-picker-mousecatcher\"),\n a = n.find(\".note-dimension-picker-highlighted\"),\n s = n.find(\".note-dimension-picker-unhighlighted\");\n if (void 0 === t.offsetX) {\n var l = e()(t.target).offset();\n o = {\n x: t.pageX - l.left,\n y: t.pageY - l.top\n };\n } else o = {\n x: t.offsetX,\n y: t.offsetY\n };\n var c = Math.ceil(o.x / 18) || 1,\n u = Math.ceil(o.y / 18) || 1;\n a.css({\n width: c + \"em\",\n height: u + \"em\"\n }), r.data(\"value\", c + \"x\" + u), c > 3 && c < this.options.insertTableMaxSize.col && s.css({\n width: c + 1 + \"em\"\n }), u > 3 && u < this.options.insertTableMaxSize.row && s.css({\n height: u + 1 + \"em\"\n }), i.html(c + \" x \" + u);\n }\n }], n && ie(o.prototype, n), i && ie(o, i), t;\n }();\n function ae(t, e) {\n for (var o = 0; o < e.length; o++) {\n var n = e[o];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n var se = function () {\n function t(o) {\n !function (t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, t), this.context = o, this.$window = e()(window), this.$document = e()(document), this.ui = e().summernote.ui, this.$note = o.layoutInfo.note, this.$editor = o.layoutInfo.editor, this.$toolbar = o.layoutInfo.toolbar, this.$editable = o.layoutInfo.editable, this.$statusbar = o.layoutInfo.statusbar, this.options = o.options, this.isFollowing = !1, this.followScroll = this.followScroll.bind(this);\n }\n var o, n, i;\n return o = t, (n = [{\n key: \"shouldInitialize\",\n value: function () {\n return !this.options.airMode;\n }\n }, {\n key: \"initialize\",\n value: function () {\n var t = this;\n this.options.toolbar = this.options.toolbar || [], this.options.toolbar.length ? this.context.invoke(\"buttons.build\", this.$toolbar, this.options.toolbar) : this.$toolbar.hide(), this.options.toolbarContainer && this.$toolbar.appendTo(this.options.toolbarContainer), this.changeContainer(!1), this.$note.on(\"summernote.keyup summernote.mouseup summernote.change\", function () {\n t.context.invoke(\"buttons.updateCurrentStyle\");\n }), this.context.invoke(\"buttons.updateCurrentStyle\"), this.options.followingToolbar && this.$window.on(\"scroll resize\", this.followScroll);\n }\n }, {\n key: \"destroy\",\n value: function () {\n this.$toolbar.children().remove(), this.options.followingToolbar && this.$window.off(\"scroll resize\", this.followScroll);\n }\n }, {\n key: \"followScroll\",\n value: function () {\n if (this.$editor.hasClass(\"fullscreen\")) return !1;\n var t = this.$editor.outerHeight(),\n o = this.$editor.width(),\n n = this.$toolbar.height(),\n i = this.$statusbar.height(),\n r = 0;\n this.options.otherStaticBar && (r = e()(this.options.otherStaticBar).outerHeight());\n var a = this.$document.scrollTop(),\n s = this.$editor.offset().top,\n l = s - r,\n c = s + t - r - n - i;\n !this.isFollowing && a > l && a < c - n ? (this.isFollowing = !0, this.$editable.css({\n marginTop: this.$toolbar.outerHeight()\n }), this.$toolbar.css({\n position: \"fixed\",\n top: r,\n width: o,\n zIndex: 1e3\n })) : this.isFollowing && (a < l || a > c) && (this.isFollowing = !1, this.$toolbar.css({\n position: \"relative\",\n top: 0,\n width: \"100%\",\n zIndex: \"auto\"\n }), this.$editable.css({\n marginTop: \"\"\n }));\n }\n }, {\n key: \"changeContainer\",\n value: function (t) {\n t ? this.$toolbar.prependTo(this.$editor) : this.options.toolbarContainer && this.$toolbar.appendTo(this.options.toolbarContainer), this.options.followingToolbar && this.followScroll();\n }\n }, {\n key: \"updateFullscreen\",\n value: function (t) {\n this.ui.toggleBtnActive(this.$toolbar.find(\".btn-fullscreen\"), t), this.changeContainer(t);\n }\n }, {\n key: \"updateCodeview\",\n value: function (t) {\n this.ui.toggleBtnActive(this.$toolbar.find(\".btn-codeview\"), t), t ? this.deactivate() : this.activate();\n }\n }, {\n key: \"activate\",\n value: function (t) {\n var e = this.$toolbar.find(\"button\");\n t || (e = e.not(\".note-codeview-keep\")), this.ui.toggleBtn(e, !0);\n }\n }, {\n key: \"deactivate\",\n value: function (t) {\n var e = this.$toolbar.find(\"button\");\n t || (e = e.not(\".note-codeview-keep\")), this.ui.toggleBtn(e, !1);\n }\n }]) && ae(o.prototype, n), i && ae(o, i), t;\n }();\n function le(t, e) {\n for (var o = 0; o < e.length; o++) {\n var n = e[o];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n var ce = function () {\n function t(o) {\n !function (t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, t), this.context = o, this.ui = e().summernote.ui, this.$body = e()(document.body), this.$editor = o.layoutInfo.editor, this.options = o.options, this.lang = this.options.langInfo, o.memo(\"help.linkDialog.show\", this.options.langInfo.help[\"linkDialog.show\"]);\n }\n var o, n, i;\n return o = t, (n = [{\n key: \"initialize\",\n value: function () {\n var t = this.options.dialogsInBody ? this.$body : this.options.container,\n o = ['<div class=\"form-group note-form-group\">', '<label for=\"note-dialog-link-txt-'.concat(this.options.id, '\" class=\"note-form-label\">').concat(this.lang.link.textToDisplay, \"</label>\"), '<input id=\"note-dialog-link-txt-'.concat(this.options.id, '\" class=\"note-link-text form-control note-form-control note-input\" type=\"text\"/>'), \"</div>\", '<div class=\"form-group note-form-group\">', '<label for=\"note-dialog-link-url-'.concat(this.options.id, '\" class=\"note-form-label\">').concat(this.lang.link.url, \"</label>\"), '<input id=\"note-dialog-link-url-'.concat(this.options.id, '\" class=\"note-link-url form-control note-form-control note-input\" type=\"text\" value=\"http://\"/>'), \"</div>\", this.options.disableLinkTarget ? \"\" : e()(\"<div></div>\").append(this.ui.checkbox({\n className: \"sn-checkbox-open-in-new-window\",\n text: this.lang.link.openInNewWindow,\n checked: !0\n }).render()).html(), e()(\"<div></div>\").append(this.ui.checkbox({\n className: \"sn-checkbox-use-protocol\",\n text: this.lang.link.useProtocol,\n checked: !0\n }).render()).html()].join(\"\"),\n n = '<input type=\"button\" href=\"#\" class=\"'.concat(\"btn btn-primary note-btn note-btn-primary note-link-btn\", '\" value=\"').concat(this.lang.link.insert, '\" disabled>');\n this.$dialog = this.ui.dialog({\n className: \"link-dialog\",\n title: this.lang.link.insert,\n fade: this.options.dialogsFade,\n body: o,\n footer: n\n }).render().appendTo(t);\n }\n }, {\n key: \"destroy\",\n value: function () {\n this.ui.hideDialog(this.$dialog), this.$dialog.remove();\n }\n }, {\n key: \"bindEnterKey\",\n value: function (t, e) {\n t.on(\"keypress\", function (t) {\n t.keyCode === wt.code.ENTER && (t.preventDefault(), e.trigger(\"click\"));\n });\n }\n }, {\n key: \"toggleLinkBtn\",\n value: function (t, e, o) {\n this.ui.toggleBtn(t, e.val() && o.val());\n }\n }, {\n key: \"showLinkDialog\",\n value: function (t) {\n var o = this;\n return e().Deferred(function (e) {\n var n = o.$dialog.find(\".note-link-text\"),\n i = o.$dialog.find(\".note-link-url\"),\n r = o.$dialog.find(\".note-link-btn\"),\n a = o.$dialog.find(\".sn-checkbox-open-in-new-window input[type=checkbox]\"),\n s = o.$dialog.find(\".sn-checkbox-use-protocol input[type=checkbox]\");\n o.ui.onDialogShown(o.$dialog, function () {\n o.context.triggerEvent(\"dialog.shown\"), !t.url && v.isValidUrl(t.text) && (t.url = t.text), n.on(\"input paste propertychange\", function () {\n t.text = n.val(), o.toggleLinkBtn(r, n, i);\n }).val(t.text), i.on(\"input paste propertychange\", function () {\n t.text || n.val(i.val()), o.toggleLinkBtn(r, n, i);\n }).val(t.url), f.isSupportTouch || i.trigger(\"focus\"), o.toggleLinkBtn(r, n, i), o.bindEnterKey(i, r), o.bindEnterKey(n, r);\n var l = void 0 !== t.isNewWindow ? t.isNewWindow : o.context.options.linkTargetBlank;\n a.prop(\"checked\", l);\n var c = !t.url && o.context.options.useProtocol;\n s.prop(\"checked\", c), r.one(\"click\", function (r) {\n r.preventDefault(), e.resolve({\n range: t.range,\n url: i.val(),\n text: n.val(),\n isNewWindow: a.is(\":checked\"),\n checkProtocol: s.is(\":checked\")\n }), o.ui.hideDialog(o.$dialog);\n });\n }), o.ui.onDialogHidden(o.$dialog, function () {\n n.off(), i.off(), r.off(), \"pending\" === e.state() && e.reject();\n }), o.ui.showDialog(o.$dialog);\n }).promise();\n }\n }, {\n key: \"show\",\n value: function () {\n var t = this,\n e = this.context.invoke(\"editor.getLinkInfo\");\n this.context.invoke(\"editor.saveRange\"), this.showLinkDialog(e).then(function (e) {\n t.context.invoke(\"editor.restoreRange\"), t.context.invoke(\"editor.createLink\", e);\n }).fail(function () {\n t.context.invoke(\"editor.restoreRange\");\n });\n }\n }]) && le(o.prototype, n), i && le(o, i), t;\n }();\n function ue(t, e) {\n for (var o = 0; o < e.length; o++) {\n var n = e[o];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n var de = function () {\n function t(o) {\n var n = this;\n !function (t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, t), this.context = o, this.ui = e().summernote.ui, this.options = o.options, this.events = {\n \"summernote.keyup summernote.mouseup summernote.change summernote.scroll\": function () {\n n.update();\n },\n \"summernote.disable summernote.dialog.shown\": function () {\n n.hide();\n },\n \"summernote.blur\": function (t, e) {\n e.originalEvent && e.originalEvent.relatedTarget && n.$popover[0].contains(e.originalEvent.relatedTarget) || n.hide();\n }\n };\n }\n var o, n, i;\n return o = t, (n = [{\n key: \"shouldInitialize\",\n value: function () {\n return !y.isEmpty(this.options.popover.link);\n }\n }, {\n key: \"initialize\",\n value: function () {\n this.$popover = this.ui.popover({\n className: \"note-link-popover\",\n callback: function (t) {\n t.find(\".popover-content,.note-popover-content\").prepend('<span><a target=\"_blank\"></a> </span>');\n }\n }).render().appendTo(this.options.container);\n var t = this.$popover.find(\".popover-content,.note-popover-content\");\n this.context.invoke(\"buttons.build\", t, this.options.popover.link), this.$popover.on(\"mousedown\", function (t) {\n t.preventDefault();\n });\n }\n }, {\n key: \"destroy\",\n value: function () {\n this.$popover.remove();\n }\n }, {\n key: \"update\",\n value: function () {\n if (this.context.invoke(\"editor.hasFocus\")) {\n var t = this.context.invoke(\"editor.getLastRange\");\n if (t.isCollapsed() && t.isOnAnchor()) {\n var o = ht.ancestor(t.sc, ht.isAnchor),\n n = e()(o).attr(\"href\");\n this.$popover.find(\"a\").attr(\"href\", n).text(n);\n var i = ht.posFromPlaceholder(o),\n r = e()(this.options.container).offset();\n i.top -= r.top, i.left -= r.left, this.$popover.css({\n display: \"block\",\n left: i.left,\n top: i.top\n });\n } else this.hide();\n } else this.hide();\n }\n }, {\n key: \"hide\",\n value: function () {\n this.$popover.hide();\n }\n }]) && ue(o.prototype, n), i && ue(o, i), t;\n }();\n function he(t, e) {\n for (var o = 0; o < e.length; o++) {\n var n = e[o];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n var fe = function () {\n function t(o) {\n !function (t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, t), this.context = o, this.ui = e().summernote.ui, this.$body = e()(document.body), this.$editor = o.layoutInfo.editor, this.options = o.options, this.lang = this.options.langInfo;\n }\n var o, n, i;\n return o = t, (n = [{\n key: \"initialize\",\n value: function () {\n var t = \"\";\n if (this.options.maximumImageFileSize) {\n var e = Math.floor(Math.log(this.options.maximumImageFileSize) / Math.log(1024)),\n o = 1 * (this.options.maximumImageFileSize / Math.pow(1024, e)).toFixed(2) + \" \" + \" KMGTP\"[e] + \"B\";\n t = \"<small>\".concat(this.lang.image.maximumFileSize + \" : \" + o, \"</small>\");\n }\n var n = this.options.dialogsInBody ? this.$body : this.options.container,\n i = ['<div class=\"form-group note-form-group note-group-select-from-files\">', '<label for=\"note-dialog-image-file-' + this.options.id + '\" class=\"note-form-label\">' + this.lang.image.selectFromFiles + \"</label>\", '<input id=\"note-dialog-image-file-' + this.options.id + '\" class=\"note-image-input form-control-file note-form-control note-input\" ', ' type=\"file\" name=\"files\" accept=\"' + this.options.acceptImageFileTypes + '\" multiple=\"multiple\"/>', t, \"</div>\", '<div class=\"form-group note-group-image-url\">', '<label for=\"note-dialog-image-url-' + this.options.id + '\" class=\"note-form-label\">' + this.lang.image.url + \"</label>\", '<input id=\"note-dialog-image-url-' + this.options.id + '\" class=\"note-image-url form-control note-form-control note-input\" type=\"text\"/>', \"</div>\"].join(\"\"),\n r = '<input type=\"button\" href=\"#\" class=\"'.concat(\"btn btn-primary note-btn note-btn-primary note-image-btn\", '\" value=\"').concat(this.lang.image.insert, '\" disabled>');\n this.$dialog = this.ui.dialog({\n title: this.lang.image.insert,\n fade: this.options.dialogsFade,\n body: i,\n footer: r\n }).render().appendTo(n);\n }\n }, {\n key: \"destroy\",\n value: function () {\n this.ui.hideDialog(this.$dialog), this.$dialog.remove();\n }\n }, {\n key: \"bindEnterKey\",\n value: function (t, e) {\n t.on(\"keypress\", function (t) {\n t.keyCode === wt.code.ENTER && (t.preventDefault(), e.trigger(\"click\"));\n });\n }\n }, {\n key: \"show\",\n value: function () {\n var t = this;\n this.context.invoke(\"editor.saveRange\"), this.showImageDialog().then(function (e) {\n t.ui.hideDialog(t.$dialog), t.context.invoke(\"editor.restoreRange\"), \"string\" == typeof e ? t.options.callbacks.onImageLinkInsert ? t.context.triggerEvent(\"image.link.insert\", e) : t.context.invoke(\"editor.insertImage\", e) : t.context.invoke(\"editor.insertImagesOrCallback\", e);\n }).fail(function () {\n t.context.invoke(\"editor.restoreRange\");\n });\n }\n }, {\n key: \"showImageDialog\",\n value: function () {\n var t = this;\n return e().Deferred(function (e) {\n var o = t.$dialog.find(\".note-image-input\"),\n n = t.$dialog.find(\".note-image-url\"),\n i = t.$dialog.find(\".note-image-btn\");\n t.ui.onDialogShown(t.$dialog, function () {\n t.context.triggerEvent(\"dialog.shown\"), o.replaceWith(o.clone().on(\"change\", function (t) {\n e.resolve(t.target.files || t.target.value);\n }).val(\"\")), n.on(\"input paste propertychange\", function () {\n t.ui.toggleBtn(i, n.val());\n }).val(\"\"), f.isSupportTouch || n.trigger(\"focus\"), i.click(function (t) {\n t.preventDefault(), e.resolve(n.val());\n }), t.bindEnterKey(n, i);\n }), t.ui.onDialogHidden(t.$dialog, function () {\n o.off(), n.off(), i.off(), \"pending\" === e.state() && e.reject();\n }), t.ui.showDialog(t.$dialog);\n });\n }\n }]) && he(o.prototype, n), i && he(o, i), t;\n }();\n function pe(t, e) {\n for (var o = 0; o < e.length; o++) {\n var n = e[o];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n var ve = function () {\n function t(o) {\n var n = this;\n !function (t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, t), this.context = o, this.ui = e().summernote.ui, this.editable = o.layoutInfo.editable[0], this.options = o.options, this.events = {\n \"summernote.disable summernote.dialog.shown\": function () {\n n.hide();\n },\n \"summernote.blur\": function (t, e) {\n e.originalEvent && e.originalEvent.relatedTarget && n.$popover[0].contains(e.originalEvent.relatedTarget) || n.hide();\n }\n };\n }\n var o, n, i;\n return o = t, n = [{\n key: \"shouldInitialize\",\n value: function () {\n return !y.isEmpty(this.options.popover.image);\n }\n }, {\n key: \"initialize\",\n value: function () {\n this.$popover = this.ui.popover({\n className: \"note-image-popover\"\n }).render().appendTo(this.options.container);\n var t = this.$popover.find(\".popover-content,.note-popover-content\");\n this.context.invoke(\"buttons.build\", t, this.options.popover.image), this.$popover.on(\"mousedown\", function (t) {\n t.preventDefault();\n });\n }\n }, {\n key: \"destroy\",\n value: function () {\n this.$popover.remove();\n }\n }, {\n key: \"update\",\n value: function (t, o) {\n if (ht.isImg(t)) {\n var n = e()(t).offset(),\n i = e()(this.options.container).offset(),\n r = {};\n this.options.popatmouse ? (r.left = o.pageX - 20, r.top = o.pageY) : r = n, r.top -= i.top, r.left -= i.left, this.$popover.css({\n display: \"block\",\n left: r.left,\n top: r.top\n });\n } else this.hide();\n }\n }, {\n key: \"hide\",\n value: function () {\n this.$popover.hide();\n }\n }], n && pe(o.prototype, n), i && pe(o, i), t;\n }();\n function me(t, e) {\n for (var o = 0; o < e.length; o++) {\n var n = e[o];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n var ge = function () {\n function t(o) {\n var n = this;\n !function (t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, t), this.context = o, this.ui = e().summernote.ui, this.options = o.options, this.events = {\n \"summernote.mousedown\": function (t, e) {\n n.update(e.target);\n },\n \"summernote.keyup summernote.scroll summernote.change\": function () {\n n.update();\n },\n \"summernote.disable summernote.dialog.shown\": function () {\n n.hide();\n },\n \"summernote.blur\": function (t, e) {\n e.originalEvent && e.originalEvent.relatedTarget && n.$popover[0].contains(e.originalEvent.relatedTarget) || n.hide();\n }\n };\n }\n var o, n, i;\n return o = t, n = [{\n key: \"shouldInitialize\",\n value: function () {\n return !y.isEmpty(this.options.popover.table);\n }\n }, {\n key: \"initialize\",\n value: function () {\n this.$popover = this.ui.popover({\n className: \"note-table-popover\"\n }).render().appendTo(this.options.container);\n var t = this.$popover.find(\".popover-content,.note-popover-content\");\n this.context.invoke(\"buttons.build\", t, this.options.popover.table), f.isFF && document.execCommand(\"enableInlineTableEditing\", !1, !1), this.$popover.on(\"mousedown\", function (t) {\n t.preventDefault();\n });\n }\n }, {\n key: \"destroy\",\n value: function () {\n this.$popover.remove();\n }\n }, {\n key: \"update\",\n value: function (t) {\n if (this.context.isDisabled()) return !1;\n var o = ht.isCell(t) || ht.isCell(null == t ? void 0 : t.parentElement);\n if (o) {\n var n = ht.posFromPlaceholder(t),\n i = e()(this.options.container).offset();\n n.top -= i.top, n.left -= i.left, this.$popover.css({\n display: \"block\",\n left: n.left,\n top: n.top\n });\n } else this.hide();\n return o;\n }\n }, {\n key: \"hide\",\n value: function () {\n this.$popover.hide();\n }\n }], n && me(o.prototype, n), i && me(o, i), t;\n }();\n function be(t, e) {\n for (var o = 0; o < e.length; o++) {\n var n = e[o];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n var ke = function () {\n function t(o) {\n !function (t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, t), this.context = o, this.ui = e().summernote.ui, this.$body = e()(document.body), this.$editor = o.layoutInfo.editor, this.options = o.options, this.lang = this.options.langInfo;\n }\n var o, n, i;\n return o = t, (n = [{\n key: \"initialize\",\n value: function () {\n var t = this.options.dialogsInBody ? this.$body : this.options.container,\n e = ['<div class=\"form-group note-form-group row-fluid\">', '<label for=\"note-dialog-video-url-'.concat(this.options.id, '\" class=\"note-form-label\">').concat(this.lang.video.url, ' <small class=\"text-muted\">').concat(this.lang.video.providers, \"</small></label>\"), '<input id=\"note-dialog-video-url-'.concat(this.options.id, '\" class=\"note-video-url form-control note-form-control note-input\" type=\"text\"/>'), \"</div>\"].join(\"\"),\n o = '<input type=\"button\" href=\"#\" class=\"'.concat(\"btn btn-primary note-btn note-btn-primary note-video-btn\", '\" value=\"').concat(this.lang.video.insert, '\" disabled>');\n this.$dialog = this.ui.dialog({\n title: this.lang.video.insert,\n fade: this.options.dialogsFade,\n body: e,\n footer: o\n }).render().appendTo(t);\n }\n }, {\n key: \"destroy\",\n value: function () {\n this.ui.hideDialog(this.$dialog), this.$dialog.remove();\n }\n }, {\n key: \"bindEnterKey\",\n value: function (t, e) {\n t.on(\"keypress\", function (t) {\n t.keyCode === wt.code.ENTER && (t.preventDefault(), e.trigger(\"click\"));\n });\n }\n }, {\n key: \"createVideoNode\",\n value: function (t) {\n var o,\n n = t.match(/\\/\\/(?:(?:www|m)\\.)?(?:youtu\\.be\\/|youtube\\.com\\/(?:embed\\/|v\\/|watch\\?v=|watch\\?.+&v=))([\\w|-]{11})(?:(?:[\\?&]t=)(\\S+))?$/),\n i = t.match(/(?:\\.|\\/\\/)drive\\.google\\.com\\/file\\/d\\/(.[a-zA-Z0-9_-]*)\\/view/),\n r = t.match(/(?:www\\.|\\/\\/)instagram\\.com\\/p\\/(.[a-zA-Z0-9_-]*)/),\n a = t.match(/\\/\\/vine\\.co\\/v\\/([a-zA-Z0-9]+)/),\n s = t.match(/\\/\\/(player\\.)?vimeo\\.com\\/([a-z]*\\/)*(\\d+)[?]?.*/),\n l = t.match(/.+dailymotion.com\\/(video|hub)\\/([^_]+)[^#]*(#video=([^_&]+))?/),\n c = t.match(/\\/\\/v\\.youku\\.com\\/v_show\\/id_(\\w+)=*\\.html/),\n u = t.match(/\\/\\/(.*)\\/videos\\/watch\\/([^?]*)(?:\\?(?:start=(\\w*))?(?:&stop=(\\w*))?(?:&loop=([10]))?(?:&autoplay=([10]))?(?:&muted=([10]))?)?/),\n d = t.match(/\\/\\/v\\.qq\\.com.*?vid=(.+)/),\n h = t.match(/\\/\\/v\\.qq\\.com\\/x?\\/?(page|cover).*?\\/([^\\/]+)\\.html\\??.*/),\n f = t.match(/^.+.(mp4|m4v)$/),\n p = t.match(/^.+.(ogg|ogv)$/),\n v = t.match(/^.+.(webm)$/),\n m = t.match(/(?:www\\.|\\/\\/)facebook\\.com\\/([^\\/]+)\\/videos\\/([0-9]+)/);\n if (n && 11 === n[1].length) {\n var g = n[1],\n b = 0;\n if (void 0 !== n[2]) {\n var k = n[2].match(/^(?:(\\d+)h)?(?:(\\d+)m)?(?:(\\d+)s)?$/);\n if (k) for (var y = [3600, 60, 1], w = 0, C = y.length; w < C; w++) b += void 0 !== k[w + 1] ? y[w] * parseInt(k[w + 1], 10) : 0;\n }\n o = e()(\"<iframe>\").attr(\"frameborder\", 0).attr(\"src\", \"//www.youtube.com/embed/\" + g + (b > 0 ? \"?start=\" + b : \"\")).attr(\"width\", \"640\").attr(\"height\", \"360\");\n } else if (i && i[0].length) o = e()(\"<iframe>\").attr(\"frameborder\", 0).attr(\"src\", \"https://drive.google.com/file/d/\" + i[1] + \"/preview\").attr(\"width\", \"640\").attr(\"height\", \"480\");else if (r && r[0].length) o = e()(\"<iframe>\").attr(\"frameborder\", 0).attr(\"src\", \"https://instagram.com/p/\" + r[1] + \"/embed/\").attr(\"width\", \"612\").attr(\"height\", \"710\").attr(\"scrolling\", \"no\").attr(\"allowtransparency\", \"true\");else if (a && a[0].length) o = e()(\"<iframe>\").attr(\"frameborder\", 0).attr(\"src\", a[0] + \"/embed/simple\").attr(\"width\", \"600\").attr(\"height\", \"600\").attr(\"class\", \"vine-embed\");else if (s && s[3].length) o = e()(\"<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>\").attr(\"frameborder\", 0).attr(\"src\", \"//player.vimeo.com/video/\" + s[3]).attr(\"width\", \"640\").attr(\"height\", \"360\");else if (l && l[2].length) o = e()(\"<iframe>\").attr(\"frameborder\", 0).attr(\"src\", \"//www.dailymotion.com/embed/video/\" + l[2]).attr(\"width\", \"640\").attr(\"height\", \"360\");else if (c && c[1].length) o = e()(\"<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>\").attr(\"frameborder\", 0).attr(\"height\", \"498\").attr(\"width\", \"510\").attr(\"src\", \"//player.youku.com/embed/\" + c[1]);else if (u && u[0].length) {\n var x = 0;\n \"undefined\" !== u[2] && (x = u[2]);\n var S = 0;\n \"undefined\" !== u[3] && (S = u[3]);\n var T = 0;\n \"undefined\" !== u[4] && (T = u[4]);\n var E = 0;\n \"undefined\" !== u[5] && (E = u[5]);\n var $ = 0;\n \"undefined\" !== u[6] && ($ = u[6]), o = e()('<iframe allowfullscreen sandbox=\"allow-same-origin allow-scripts allow-popups\">').attr(\"frameborder\", 0).attr(\"src\", \"//\" + u[1] + \"/videos/embed/\" + u[2] + \"?loop=\" + T + \"&autoplay=\" + E + \"&muted=\" + $ + (x > 0 ? \"&start=\" + x : \"\") + (S > 0 ? \"&end=\" + b : \"\")).attr(\"width\", \"560\").attr(\"height\", \"315\");\n } else if (d && d[1].length || h && h[2].length) {\n var N = d && d[1].length ? d[1] : h[2];\n o = e()(\"<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>\").attr(\"frameborder\", 0).attr(\"height\", \"310\").attr(\"width\", \"500\").attr(\"src\", \"https://v.qq.com/txp/iframe/player.html?vid=\" + N + \"&auto=0\");\n } else if (f || p || v) o = e()(\"<video controls>\").attr(\"src\", t).attr(\"width\", \"640\").attr(\"height\", \"360\");else {\n if (!m || !m[0].length) return !1;\n o = e()(\"<iframe>\").attr(\"frameborder\", 0).attr(\"src\", \"https://www.facebook.com/plugins/video.php?href=\" + encodeURIComponent(m[0]) + \"&show_text=0&width=560\").attr(\"width\", \"560\").attr(\"height\", \"301\").attr(\"scrolling\", \"no\").attr(\"allowtransparency\", \"true\");\n }\n return o.addClass(\"note-video-clip\"), o[0];\n }\n }, {\n key: \"show\",\n value: function () {\n var t = this,\n e = this.context.invoke(\"editor.getSelectedText\");\n this.context.invoke(\"editor.saveRange\"), this.showVideoDialog(e).then(function (e) {\n t.ui.hideDialog(t.$dialog), t.context.invoke(\"editor.restoreRange\");\n var o = t.createVideoNode(e);\n o && t.context.invoke(\"editor.insertNode\", o);\n }).fail(function () {\n t.context.invoke(\"editor.restoreRange\");\n });\n }\n }, {\n key: \"showVideoDialog\",\n value: function () {\n var t = this;\n return e().Deferred(function (e) {\n var o = t.$dialog.find(\".note-video-url\"),\n n = t.$dialog.find(\".note-video-btn\");\n t.ui.onDialogShown(t.$dialog, function () {\n t.context.triggerEvent(\"dialog.shown\"), o.on(\"input paste propertychange\", function () {\n t.ui.toggleBtn(n, o.val());\n }), f.isSupportTouch || o.trigger(\"focus\"), n.click(function (t) {\n t.preventDefault(), e.resolve(o.val());\n }), t.bindEnterKey(o, n);\n }), t.ui.onDialogHidden(t.$dialog, function () {\n o.off(), n.off(), \"pending\" === e.state() && e.reject();\n }), t.ui.showDialog(t.$dialog);\n });\n }\n }]) && be(o.prototype, n), i && be(o, i), t;\n }();\n function ye(t, e) {\n for (var o = 0; o < e.length; o++) {\n var n = e[o];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n var we = function () {\n function t(o) {\n !function (t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, t), this.context = o, this.ui = e().summernote.ui, this.$body = e()(document.body), this.$editor = o.layoutInfo.editor, this.options = o.options, this.lang = this.options.langInfo;\n }\n var o, n, i;\n return o = t, n = [{\n key: \"initialize\",\n value: function () {\n var t = this.options.dialogsInBody ? this.$body : this.options.container,\n e = ['<p class=\"text-center\">', '<a href=\"http://summernote.org/\" target=\"_blank\" rel=\"noopener noreferrer\">Summernote 0.8.20</a> · ', '<a href=\"https://github.com/summernote/summernote\" target=\"_blank\" rel=\"noopener noreferrer\">Project</a> · ', '<a href=\"https://github.com/summernote/summernote/issues\" target=\"_blank\" rel=\"noopener noreferrer\">Issues</a>', \"</p>\"].join(\"\");\n this.$dialog = this.ui.dialog({\n title: this.lang.options.help,\n fade: this.options.dialogsFade,\n body: this.createShortcutList(),\n footer: e,\n callback: function (t) {\n t.find(\".modal-body,.note-modal-body\").css({\n \"max-height\": 300,\n overflow: \"scroll\"\n });\n }\n }).render().appendTo(t);\n }\n }, {\n key: \"destroy\",\n value: function () {\n this.ui.hideDialog(this.$dialog), this.$dialog.remove();\n }\n }, {\n key: \"createShortcutList\",\n value: function () {\n var t = this,\n o = this.options.keyMap[f.isMac ? \"mac\" : \"pc\"];\n return Object.keys(o).map(function (n) {\n var i = o[n],\n r = e()('<div><div class=\"help-list-item\"></div></div>');\n return r.append(e()(\"<label><kbd>\" + n + \"</kdb></label>\").css({\n width: 180,\n \"margin-right\": 10\n })).append(e()(\"<span></span>\").html(t.context.memo(\"help.\" + i) || i)), r.html();\n }).join(\"\");\n }\n }, {\n key: \"showHelpDialog\",\n value: function () {\n var t = this;\n return e().Deferred(function (e) {\n t.ui.onDialogShown(t.$dialog, function () {\n t.context.triggerEvent(\"dialog.shown\"), e.resolve();\n }), t.ui.showDialog(t.$dialog);\n }).promise();\n }\n }, {\n key: \"show\",\n value: function () {\n var t = this;\n this.context.invoke(\"editor.saveRange\"), this.showHelpDialog().then(function () {\n t.context.invoke(\"editor.restoreRange\");\n });\n }\n }], n && ye(o.prototype, n), i && ye(o, i), t;\n }();\n function Ce(t, e) {\n for (var o = 0; o < e.length; o++) {\n var n = e[o];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n var xe = function () {\n function t(o) {\n var n = this;\n !function (t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, t), this.context = o, this.ui = e().summernote.ui, this.options = o.options, this.hidable = !0, this.onContextmenu = !1, this.pageX = null, this.pageY = null, this.events = {\n \"summernote.contextmenu\": function (t) {\n n.options.editing && (t.preventDefault(), t.stopPropagation(), n.onContextmenu = !0, n.update(!0));\n },\n \"summernote.mousedown\": function (t, e) {\n n.pageX = e.pageX, n.pageY = e.pageY;\n },\n \"summernote.keyup summernote.mouseup summernote.scroll\": function (t, e) {\n n.options.editing && !n.onContextmenu && (n.pageX = e.pageX, n.pageY = e.pageY, n.update()), n.onContextmenu = !1;\n },\n \"summernote.disable summernote.change summernote.dialog.shown summernote.blur\": function () {\n n.hide();\n },\n \"summernote.focusout\": function () {\n n.$popover.is(\":active,:focus\") || n.hide();\n }\n };\n }\n var o, n, i;\n return o = t, (n = [{\n key: \"shouldInitialize\",\n value: function () {\n return this.options.airMode && !y.isEmpty(this.options.popover.air);\n }\n }, {\n key: \"initialize\",\n value: function () {\n var t = this;\n this.$popover = this.ui.popover({\n className: \"note-air-popover\"\n }).render().appendTo(this.options.container);\n var e = this.$popover.find(\".popover-content\");\n this.context.invoke(\"buttons.build\", e, this.options.popover.air), this.$popover.on(\"mousedown\", function () {\n t.hidable = !1;\n }), this.$popover.on(\"mouseup\", function () {\n t.hidable = !0;\n });\n }\n }, {\n key: \"destroy\",\n value: function () {\n this.$popover.remove();\n }\n }, {\n key: \"update\",\n value: function (t) {\n var o = this.context.invoke(\"editor.currentStyle\");\n if (!o.range || o.range.isCollapsed() && !t) this.hide();else {\n var n = {\n left: this.pageX,\n top: this.pageY\n },\n i = e()(this.options.container).offset();\n n.top -= i.top, n.left -= i.left, this.$popover.css({\n display: \"block\",\n left: Math.max(n.left, 0) + -5,\n top: n.top + 5\n }), this.context.invoke(\"buttons.updateCurrentStyle\", this.$popover);\n }\n }\n }, {\n key: \"updateCodeview\",\n value: function (t) {\n this.ui.toggleBtnActive(this.$popover.find(\".btn-codeview\"), t), t && this.hide();\n }\n }, {\n key: \"hide\",\n value: function () {\n this.hidable && this.$popover.hide();\n }\n }]) && Ce(o.prototype, n), i && Ce(o, i), t;\n }();\n function Se(t, e) {\n for (var o = 0; o < e.length; o++) {\n var n = e[o];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n var Te = function () {\n function t(o) {\n var n = this;\n !function (t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, t), this.context = o, this.ui = e().summernote.ui, this.$editable = o.layoutInfo.editable, this.options = o.options, this.hint = this.options.hint || [], this.direction = this.options.hintDirection || \"bottom\", this.hints = Array.isArray(this.hint) ? this.hint : [this.hint], this.events = {\n \"summernote.keyup\": function (t, e) {\n e.isDefaultPrevented() || n.handleKeyup(e);\n },\n \"summernote.keydown\": function (t, e) {\n n.handleKeydown(e);\n },\n \"summernote.disable summernote.dialog.shown summernote.blur\": function () {\n n.hide();\n }\n };\n }\n var o, n, i;\n return o = t, n = [{\n key: \"shouldInitialize\",\n value: function () {\n return this.hints.length > 0;\n }\n }, {\n key: \"initialize\",\n value: function () {\n var t = this;\n this.lastWordRange = null, this.matchingWord = null, this.$popover = this.ui.popover({\n className: \"note-hint-popover\",\n hideArrow: !0,\n direction: \"\"\n }).render().appendTo(this.options.container), this.$popover.hide(), this.$content = this.$popover.find(\".popover-content,.note-popover-content\"), this.$content.on(\"click\", \".note-hint-item\", function (o) {\n t.$content.find(\".active\").removeClass(\"active\"), e()(o.currentTarget).addClass(\"active\"), t.replace();\n }), this.$popover.on(\"mousedown\", function (t) {\n t.preventDefault();\n });\n }\n }, {\n key: \"destroy\",\n value: function () {\n this.$popover.remove();\n }\n }, {\n key: \"selectItem\",\n value: function (t) {\n this.$content.find(\".active\").removeClass(\"active\"), t.addClass(\"active\"), this.$content[0].scrollTop = t[0].offsetTop - this.$content.innerHeight() / 2;\n }\n }, {\n key: \"moveDown\",\n value: function () {\n var t = this.$content.find(\".note-hint-item.active\"),\n e = t.next();\n if (e.length) this.selectItem(e);else {\n var o = t.parent().next();\n o.length || (o = this.$content.find(\".note-hint-group\").first()), this.selectItem(o.find(\".note-hint-item\").first());\n }\n }\n }, {\n key: \"moveUp\",\n value: function () {\n var t = this.$content.find(\".note-hint-item.active\"),\n e = t.prev();\n if (e.length) this.selectItem(e);else {\n var o = t.parent().prev();\n o.length || (o = this.$content.find(\".note-hint-group\").last()), this.selectItem(o.find(\".note-hint-item\").last());\n }\n }\n }, {\n key: \"replace\",\n value: function () {\n var t = this.$content.find(\".note-hint-item.active\");\n if (t.length) {\n var o = this.nodeFromItem(t);\n if (null !== this.matchingWord && 0 === this.matchingWord.length) this.lastWordRange.so = this.lastWordRange.eo;else if (null !== this.matchingWord && this.matchingWord.length > 0 && !this.lastWordRange.isCollapsed()) {\n var n = this.lastWordRange.eo - this.lastWordRange.so - this.matchingWord.length;\n n > 0 && (this.lastWordRange.so += n);\n }\n if (this.lastWordRange.insertNode(o), \"next\" === this.options.hintSelect) {\n var i = document.createTextNode(\"\");\n e()(o).after(i), kt.createFromNodeBefore(i).select();\n } else kt.createFromNodeAfter(o).select();\n this.lastWordRange = null, this.hide(), this.context.invoke(\"editor.focus\"), this.context.triggerEvent(\"change\", this.$editable.html(), this.$editable);\n }\n }\n }, {\n key: \"nodeFromItem\",\n value: function (t) {\n var e = this.hints[t.data(\"index\")],\n o = t.data(\"item\"),\n n = e.content ? e.content(o) : o;\n return \"string\" == typeof n && (n = ht.createText(n)), n;\n }\n }, {\n key: \"createItemTemplates\",\n value: function (t, o) {\n var n = this.hints[t];\n return o.map(function (o) {\n var i = e()('<div class=\"note-hint-item\"></div>');\n return i.append(n.template ? n.template(o) : o + \"\"), i.data({\n index: t,\n item: o\n }), i;\n });\n }\n }, {\n key: \"handleKeydown\",\n value: function (t) {\n this.$popover.is(\":visible\") && (t.keyCode === wt.code.ENTER ? (t.preventDefault(), this.replace()) : t.keyCode === wt.code.UP ? (t.preventDefault(), this.moveUp()) : t.keyCode === wt.code.DOWN && (t.preventDefault(), this.moveDown()));\n }\n }, {\n key: \"searchKeyword\",\n value: function (t, e, o) {\n var n = this.hints[t];\n if (n && n.match.test(e) && n.search) {\n var i = n.match.exec(e);\n this.matchingWord = i[0], n.search(i[1], o);\n } else o();\n }\n }, {\n key: \"createGroup\",\n value: function (t, o) {\n var n = this,\n i = e()('<div class=\"note-hint-group note-hint-group-' + t + '\"></div>');\n return this.searchKeyword(t, o, function (e) {\n (e = e || []).length && (i.html(n.createItemTemplates(t, e)), n.show());\n }), i;\n }\n }, {\n key: \"handleKeyup\",\n value: function (t) {\n var o = this;\n if (!y.contains([wt.code.ENTER, wt.code.UP, wt.code.DOWN], t.keyCode)) {\n var n,\n i,\n r = this.context.invoke(\"editor.getLastRange\");\n if (\"words\" === this.options.hintMode) {\n if (n = r.getWordsRange(r), i = n.toString(), this.hints.forEach(function (t) {\n if (t.match.test(i)) return n = r.getWordsMatchRange(t.match), !1;\n }), !n) return void this.hide();\n i = n.toString();\n } else n = r.getWordRange(), i = n.toString();\n if (this.hints.length && i) {\n this.$content.empty();\n var a = v.rect2bnd(y.last(n.getClientRects())),\n s = e()(this.options.container).offset();\n a && (a.top -= s.top, a.left -= s.left, this.$popover.hide(), this.lastWordRange = n, this.hints.forEach(function (t, e) {\n t.match.test(i) && o.createGroup(e, i).appendTo(o.$content);\n }), this.$content.find(\".note-hint-item:first\").addClass(\"active\"), \"top\" === this.direction ? this.$popover.css({\n left: a.left,\n top: a.top - this.$popover.outerHeight() - 5\n }) : this.$popover.css({\n left: a.left,\n top: a.top + a.height + 5\n }));\n } else this.hide();\n }\n }\n }, {\n key: \"show\",\n value: function () {\n this.$popover.show();\n }\n }, {\n key: \"hide\",\n value: function () {\n this.$popover.hide();\n }\n }], n && Se(o.prototype, n), i && Se(o, i), t;\n }();\n function Ee(t) {\n return Ee = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (t) {\n return typeof t;\n } : function (t) {\n return t && \"function\" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? \"symbol\" : typeof t;\n }, Ee(t);\n }\n function $e(t, e) {\n for (var o = 0; o < e.length; o++) {\n var n = e[o];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n e().summernote = e().extend(e().summernote, {\n version: \"0.8.20\",\n plugins: {},\n dom: ht,\n range: kt,\n lists: y,\n options: {\n langInfo: e().summernote.lang[\"en-US\"],\n editing: !0,\n modules: {\n editor: Ft,\n clipboard: Ht,\n dropzone: zt,\n codeview: Ut,\n statusbar: Kt,\n fullscreen: qt,\n handle: Gt,\n hintPopover: Te,\n autoLink: Xt,\n autoSync: Jt,\n autoReplace: ee,\n placeholder: ne,\n buttons: re,\n toolbar: se,\n linkDialog: ce,\n linkPopover: de,\n imageDialog: fe,\n imagePopover: ve,\n tablePopover: ge,\n videoDialog: ke,\n helpDialog: we,\n airPopover: xe\n },\n buttons: {},\n lang: \"en-US\",\n followingToolbar: !1,\n toolbarPosition: \"top\",\n otherStaticBar: \"\",\n codeviewKeepButton: !1,\n toolbar: [[\"style\", [\"style\"]], [\"font\", [\"bold\", \"underline\", \"clear\"]], [\"fontname\", [\"fontname\"]], [\"color\", [\"color\"]], [\"para\", [\"ul\", \"ol\", \"paragraph\"]], [\"table\", [\"table\"]], [\"insert\", [\"link\", \"picture\", \"video\"]], [\"view\", [\"fullscreen\", \"codeview\", \"help\"]]],\n popatmouse: !0,\n popover: {\n image: [[\"resize\", [\"resizeFull\", \"resizeHalf\", \"resizeQuarter\", \"resizeNone\"]], [\"float\", [\"floatLeft\", \"floatRight\", \"floatNone\"]], [\"remove\", [\"removeMedia\"]]],\n link: [[\"link\", [\"linkDialogShow\", \"unlink\"]]],\n table: [[\"add\", [\"addRowDown\", \"addRowUp\", \"addColLeft\", \"addColRight\"]], [\"delete\", [\"deleteRow\", \"deleteCol\", \"deleteTable\"]]],\n air: [[\"color\", [\"color\"]], [\"font\", [\"bold\", \"underline\", \"clear\"]], [\"para\", [\"ul\", \"paragraph\"]], [\"table\", [\"table\"]], [\"insert\", [\"link\", \"picture\"]], [\"view\", [\"fullscreen\", \"codeview\"]]]\n },\n airMode: !1,\n overrideContextMenu: !1,\n width: null,\n height: null,\n linkTargetBlank: !0,\n useProtocol: !0,\n defaultProtocol: \"http://\",\n focus: !1,\n tabDisabled: !1,\n tabSize: 4,\n styleWithCSS: !1,\n shortcuts: !0,\n textareaAutoSync: !0,\n tooltip: \"auto\",\n container: null,\n maxTextLength: 0,\n blockquoteBreakingLevel: 2,\n spellCheck: !0,\n disableGrammar: !1,\n placeholder: null,\n inheritPlaceholder: !1,\n recordEveryKeystroke: !1,\n historyLimit: 200,\n showDomainOnlyForAutolink: !1,\n hintMode: \"word\",\n hintSelect: \"after\",\n hintDirection: \"bottom\",\n styleTags: [\"p\", \"blockquote\", \"pre\", \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"],\n fontNames: [\"Arial\", \"Arial Black\", \"Comic Sans MS\", \"Courier New\", \"Helvetica Neue\", \"Helvetica\", \"Impact\", \"Lucida Grande\", \"Tahoma\", \"Times New Roman\", \"Verdana\"],\n fontNamesIgnoreCheck: [],\n addDefaultFonts: !0,\n fontSizes: [\"8\", \"9\", \"10\", \"11\", \"12\", \"14\", \"18\", \"24\", \"36\"],\n fontSizeUnits: [\"px\", \"pt\"],\n colors: [[\"#000000\", \"#424242\", \"#636363\", \"#9C9C94\", \"#CEC6CE\", \"#EFEFEF\", \"#F7F7F7\", \"#FFFFFF\"], [\"#FF0000\", \"#FF9C00\", \"#FFFF00\", \"#00FF00\", \"#00FFFF\", \"#0000FF\", \"#9C00FF\", \"#FF00FF\"], [\"#F7C6CE\", \"#FFE7CE\", \"#FFEFC6\", \"#D6EFD6\", \"#CEDEE7\", \"#CEE7F7\", \"#D6D6E7\", \"#E7D6DE\"], [\"#E79C9C\", \"#FFC69C\", \"#FFE79C\", \"#B5D6A5\", \"#A5C6CE\", \"#9CC6EF\", \"#B5A5D6\", \"#D6A5BD\"], [\"#E76363\", \"#F7AD6B\", \"#FFD663\", \"#94BD7B\", \"#73A5AD\", \"#6BADDE\", \"#8C7BC6\", \"#C67BA5\"], [\"#CE0000\", \"#E79439\", \"#EFC631\", \"#6BA54A\", \"#4A7B8C\", \"#3984C6\", \"#634AA5\", \"#A54A7B\"], [\"#9C0000\", \"#B56308\", \"#BD9400\", \"#397B21\", \"#104A5A\", \"#085294\", \"#311873\", \"#731842\"], [\"#630000\", \"#7B3900\", \"#846300\", \"#295218\", \"#083139\", \"#003163\", \"#21104A\", \"#4A1031\"]],\n colorsName: [[\"Black\", \"Tundora\", \"Dove Gray\", \"Star Dust\", \"Pale Slate\", \"Gallery\", \"Alabaster\", \"White\"], [\"Red\", \"Orange Peel\", \"Yellow\", \"Green\", \"Cyan\", \"Blue\", \"Electric Violet\", \"Magenta\"], [\"Azalea\", \"Karry\", \"Egg White\", \"Zanah\", \"Botticelli\", \"Tropical Blue\", \"Mischka\", \"Twilight\"], [\"Tonys Pink\", \"Peach Orange\", \"Cream Brulee\", \"Sprout\", \"Casper\", \"Perano\", \"Cold Purple\", \"Careys Pink\"], [\"Mandy\", \"Rajah\", \"Dandelion\", \"Olivine\", \"Gulf Stream\", \"Viking\", \"Blue Marguerite\", \"Puce\"], [\"Guardsman Red\", \"Fire Bush\", \"Golden Dream\", \"Chelsea Cucumber\", \"Smalt Blue\", \"Boston Blue\", \"Butterfly Bush\", \"Cadillac\"], [\"Sangria\", \"Mai Tai\", \"Buddha Gold\", \"Forest Green\", \"Eden\", \"Venice Blue\", \"Meteorite\", \"Claret\"], [\"Rosewood\", \"Cinnamon\", \"Olive\", \"Parsley\", \"Tiber\", \"Midnight Blue\", \"Valentino\", \"Loulou\"]],\n colorButton: {\n foreColor: \"#000000\",\n backColor: \"#FFFF00\"\n },\n lineHeights: [\"1.0\", \"1.2\", \"1.4\", \"1.5\", \"1.6\", \"1.8\", \"2.0\", \"3.0\"],\n tableClassName: \"table table-bordered\",\n insertTableMaxSize: {\n col: 10,\n row: 10\n },\n dialogsInBody: !1,\n dialogsFade: !1,\n maximumImageFileSize: null,\n acceptImageFileTypes: \"image/*\",\n callbacks: {\n onBeforeCommand: null,\n onBlur: null,\n onBlurCodeview: null,\n onChange: null,\n onChangeCodeview: null,\n onDialogShown: null,\n onEnter: null,\n onFocus: null,\n onImageLinkInsert: null,\n onImageUpload: null,\n onImageUploadError: null,\n onInit: null,\n onKeydown: null,\n onKeyup: null,\n onMousedown: null,\n onMouseup: null,\n onPaste: null,\n onScroll: null\n },\n codemirror: {\n mode: \"text/html\",\n htmlMode: !0,\n lineNumbers: !0\n },\n codeviewFilter: !0,\n codeviewFilterRegex: /<\\/*(?:applet|b(?:ase|gsound|link)|embed|frame(?:set)?|ilayer|l(?:ayer|ink)|meta|object|s(?:cript|tyle)|t(?:itle|extarea)|xml)[^>]*?>/gi,\n codeviewIframeFilter: !0,\n codeviewIframeWhitelistSrc: [],\n codeviewIframeWhitelistSrcBase: [\"www.youtube.com\", \"www.youtube-nocookie.com\", \"www.facebook.com\", \"vine.co\", \"instagram.com\", \"player.vimeo.com\", \"www.dailymotion.com\", \"player.youku.com\", \"jumpingbean.tv\", \"v.qq.com\"],\n keyMap: {\n pc: {\n ESC: \"escape\",\n ENTER: \"insertParagraph\",\n \"CTRL+Z\": \"undo\",\n \"CTRL+Y\": \"redo\",\n TAB: \"tab\",\n \"SHIFT+TAB\": \"untab\",\n \"CTRL+B\": \"bold\",\n \"CTRL+I\": \"italic\",\n \"CTRL+U\": \"underline\",\n \"CTRL+SHIFT+S\": \"strikethrough\",\n \"CTRL+BACKSLASH\": \"removeFormat\",\n \"CTRL+SHIFT+L\": \"justifyLeft\",\n \"CTRL+SHIFT+E\": \"justifyCenter\",\n \"CTRL+SHIFT+R\": \"justifyRight\",\n \"CTRL+SHIFT+J\": \"justifyFull\",\n \"CTRL+SHIFT+NUM7\": \"insertUnorderedList\",\n \"CTRL+SHIFT+NUM8\": \"insertOrderedList\",\n \"CTRL+LEFTBRACKET\": \"outdent\",\n \"CTRL+RIGHTBRACKET\": \"indent\",\n \"CTRL+NUM0\": \"formatPara\",\n \"CTRL+NUM1\": \"formatH1\",\n \"CTRL+NUM2\": \"formatH2\",\n \"CTRL+NUM3\": \"formatH3\",\n \"CTRL+NUM4\": \"formatH4\",\n \"CTRL+NUM5\": \"formatH5\",\n \"CTRL+NUM6\": \"formatH6\",\n \"CTRL+ENTER\": \"insertHorizontalRule\",\n \"CTRL+K\": \"linkDialog.show\"\n },\n mac: {\n ESC: \"escape\",\n ENTER: \"insertParagraph\",\n \"CMD+Z\": \"undo\",\n \"CMD+SHIFT+Z\": \"redo\",\n TAB: \"tab\",\n \"SHIFT+TAB\": \"untab\",\n \"CMD+B\": \"bold\",\n \"CMD+I\": \"italic\",\n \"CMD+U\": \"underline\",\n \"CMD+SHIFT+S\": \"strikethrough\",\n \"CMD+BACKSLASH\": \"removeFormat\",\n \"CMD+SHIFT+L\": \"justifyLeft\",\n \"CMD+SHIFT+E\": \"justifyCenter\",\n \"CMD+SHIFT+R\": \"justifyRight\",\n \"CMD+SHIFT+J\": \"justifyFull\",\n \"CMD+SHIFT+NUM7\": \"insertUnorderedList\",\n \"CMD+SHIFT+NUM8\": \"insertOrderedList\",\n \"CMD+LEFTBRACKET\": \"outdent\",\n \"CMD+RIGHTBRACKET\": \"indent\",\n \"CMD+NUM0\": \"formatPara\",\n \"CMD+NUM1\": \"formatH1\",\n \"CMD+NUM2\": \"formatH2\",\n \"CMD+NUM3\": \"formatH3\",\n \"CMD+NUM4\": \"formatH4\",\n \"CMD+NUM5\": \"formatH5\",\n \"CMD+NUM6\": \"formatH6\",\n \"CMD+ENTER\": \"insertHorizontalRule\",\n \"CMD+K\": \"linkDialog.show\"\n }\n },\n icons: {\n align: \"note-icon-align\",\n alignCenter: \"note-icon-align-center\",\n alignJustify: \"note-icon-align-justify\",\n alignLeft: \"note-icon-align-left\",\n alignRight: \"note-icon-align-right\",\n rowBelow: \"note-icon-row-below\",\n colBefore: \"note-icon-col-before\",\n colAfter: \"note-icon-col-after\",\n rowAbove: \"note-icon-row-above\",\n rowRemove: \"note-icon-row-remove\",\n colRemove: \"note-icon-col-remove\",\n indent: \"note-icon-align-indent\",\n outdent: \"note-icon-align-outdent\",\n arrowsAlt: \"note-icon-arrows-alt\",\n bold: \"note-icon-bold\",\n caret: \"note-icon-caret\",\n circle: \"note-icon-circle\",\n close: \"note-icon-close\",\n code: \"note-icon-code\",\n eraser: \"note-icon-eraser\",\n floatLeft: \"note-icon-float-left\",\n floatRight: \"note-icon-float-right\",\n font: \"note-icon-font\",\n frame: \"note-icon-frame\",\n italic: \"note-icon-italic\",\n link: \"note-icon-link\",\n unlink: \"note-icon-chain-broken\",\n magic: \"note-icon-magic\",\n menuCheck: \"note-icon-menu-check\",\n minus: \"note-icon-minus\",\n orderedlist: \"note-icon-orderedlist\",\n pencil: \"note-icon-pencil\",\n picture: \"note-icon-picture\",\n question: \"note-icon-question\",\n redo: \"note-icon-redo\",\n rollback: \"note-icon-rollback\",\n square: \"note-icon-square\",\n strikethrough: \"note-icon-strikethrough\",\n subscript: \"note-icon-subscript\",\n superscript: \"note-icon-superscript\",\n table: \"note-icon-table\",\n textHeight: \"note-icon-text-height\",\n trash: \"note-icon-trash\",\n underline: \"note-icon-underline\",\n undo: \"note-icon-undo\",\n unorderedlist: \"note-icon-unorderedlist\",\n video: \"note-icon-video\"\n }\n }\n });\n var Ne = function () {\n function t(e, o, n, i) {\n !function (t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, t), this.markup = e, this.children = o, this.options = n, this.callback = i;\n }\n var o, n, i;\n return o = t, (n = [{\n key: \"render\",\n value: function (t) {\n var o = e()(this.markup);\n if (this.options && this.options.contents && o.html(this.options.contents), this.options && this.options.className && o.addClass(this.options.className), this.options && this.options.data && e().each(this.options.data, function (t, e) {\n o.attr(\"data-\" + t, e);\n }), this.options && this.options.click && o.on(\"click\", this.options.click), this.children) {\n var n = o.find(\".note-children-container\");\n this.children.forEach(function (t) {\n t.render(n.length ? n : o);\n });\n }\n return this.callback && this.callback(o, this.options), this.options && this.options.callback && this.options.callback(o), t && t.append(o), o;\n }\n }]) && $e(o.prototype, n), i && $e(o, i), t;\n }();\n const Ie = function (t, e) {\n return function () {\n var o = \"object\" === Ee(arguments[1]) ? arguments[1] : arguments[0],\n n = Array.isArray(arguments[0]) ? arguments[0] : [];\n return o && o.children && (n = o.children), new Ne(t, n, o, e);\n };\n };\n function Pe(t, e) {\n for (var o = 0; o < e.length; o++) {\n var n = e[o];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n const Re = function () {\n function t(o, n) {\n if (function (t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, t), this.$node = o, this.options = e().extend({}, {\n title: \"\",\n target: n.container,\n trigger: \"hover focus\",\n placement: \"bottom\"\n }, n), this.$tooltip = e()(['<div class=\"note-tooltip\">', '<div class=\"note-tooltip-arrow\"></div>', '<div class=\"note-tooltip-content\"></div>', \"</div>\"].join(\"\")), \"manual\" !== this.options.trigger) {\n var i = this.show.bind(this),\n r = this.hide.bind(this),\n a = this.toggle.bind(this);\n this.options.trigger.split(\" \").forEach(function (t) {\n \"hover\" === t ? (o.off(\"mouseenter mouseleave\"), o.on(\"mouseenter\", i).on(\"mouseleave\", r)) : \"click\" === t ? o.on(\"click\", a) : \"focus\" === t && o.on(\"focus\", i).on(\"blur\", r);\n });\n }\n }\n var o, n, i;\n return o = t, (n = [{\n key: \"show\",\n value: function () {\n var t = this.$node,\n o = t.offset(),\n n = e()(this.options.target).offset();\n o.top -= n.top, o.left -= n.left;\n var i = this.$tooltip,\n r = this.options.title || t.attr(\"title\") || t.data(\"title\"),\n a = this.options.placement || t.data(\"placement\");\n i.addClass(a), i.find(\".note-tooltip-content\").text(r), i.appendTo(this.options.target);\n var s = t.outerWidth(),\n l = t.outerHeight(),\n c = i.outerWidth(),\n u = i.outerHeight();\n \"bottom\" === a ? i.css({\n top: o.top + l,\n left: o.left + (s / 2 - c / 2)\n }) : \"top\" === a ? i.css({\n top: o.top - u,\n left: o.left + (s / 2 - c / 2)\n }) : \"left\" === a ? i.css({\n top: o.top + (l / 2 - u / 2),\n left: o.left - c\n }) : \"right\" === a && i.css({\n top: o.top + (l / 2 - u / 2),\n left: o.left + s\n }), i.addClass(\"in\");\n }\n }, {\n key: \"hide\",\n value: function () {\n var t = this;\n this.$tooltip.removeClass(\"in\"), setTimeout(function () {\n t.$tooltip.remove();\n }, 200);\n }\n }, {\n key: \"toggle\",\n value: function () {\n this.$tooltip.hasClass(\"in\") ? this.hide() : this.show();\n }\n }]) && Pe(o.prototype, n), i && Pe(o, i), t;\n }();\n function Le(t, e) {\n for (var o = 0; o < e.length; o++) {\n var n = e[o];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n var Ae = function () {\n function t(o, n) {\n !function (t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, t), this.$button = o, this.options = e().extend({}, {\n target: n.container\n }, n), this.setEvent();\n }\n var o, n, i;\n return o = t, (n = [{\n key: \"setEvent\",\n value: function () {\n var t = this;\n this.$button.on(\"click\", function (e) {\n t.toggle(), e.stopImmediatePropagation();\n });\n }\n }, {\n key: \"clear\",\n value: function () {\n var t = e()(\".note-btn-group.open\");\n t.find(\".note-btn.active\").removeClass(\"active\"), t.removeClass(\"open\");\n }\n }, {\n key: \"show\",\n value: function () {\n this.$button.addClass(\"active\"), this.$button.parent().addClass(\"open\");\n var t = this.$button.next(),\n o = t.offset(),\n n = t.outerWidth(),\n i = e()(window).width(),\n r = parseFloat(e()(this.options.target).css(\"margin-right\"));\n o.left + n > i - r ? t.css(\"margin-left\", i - r - (o.left + n)) : t.css(\"margin-left\", \"\");\n }\n }, {\n key: \"hide\",\n value: function () {\n this.$button.removeClass(\"active\"), this.$button.parent().removeClass(\"open\");\n }\n }, {\n key: \"toggle\",\n value: function () {\n var t = this.$button.parent().hasClass(\"open\");\n this.clear(), t ? this.hide() : this.show();\n }\n }]) && Le(o.prototype, n), i && Le(o, i), t;\n }();\n e()(document).on(\"click\", function (t) {\n e()(t.target).closest(\".note-btn-group\").length || (e()(\".note-btn-group.open\").removeClass(\"open\"), e()(\".note-btn-group .note-btn.active\").removeClass(\"active\"));\n }), e()(document).on(\"click.note-dropdown-menu\", function (t) {\n e()(t.target).closest(\".note-dropdown-menu\").parent().removeClass(\"open\"), e()(t.target).closest(\".note-dropdown-menu\").parent().find(\".note-btn.active\").removeClass(\"active\");\n });\n const Fe = Ae;\n function De(t, e) {\n for (var o = 0; o < e.length; o++) {\n var n = e[o];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n const He = function () {\n function t(o) {\n !function (t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, t), this.$modal = o, this.$backdrop = e()('<div class=\"note-modal-backdrop\"></div>');\n }\n var o, n, i;\n return o = t, (n = [{\n key: \"show\",\n value: function () {\n var t = this;\n this.$backdrop.appendTo(document.body).show(), this.$modal.addClass(\"open\").show(), this.$modal.trigger(\"note.modal.show\"), this.$modal.off(\"click\", \".close\").on(\"click\", \".close\", this.hide.bind(this)), this.$modal.on(\"keydown\", function (e) {\n 27 === e.which && (e.preventDefault(), t.hide());\n });\n }\n }, {\n key: \"hide\",\n value: function () {\n this.$modal.removeClass(\"open\").hide(), this.$backdrop.hide(), this.$modal.trigger(\"note.modal.hide\"), this.$modal.off(\"keydown\");\n }\n }]) && De(o.prototype, n), i && De(o, i), t;\n }();\n var Be = Ie('<div class=\"note-editor note-frame\"></div>'),\n ze = Ie('<div class=\"note-toolbar\" role=\"toolbar\"></div>'),\n Me = Ie('<div class=\"note-editing-area\"></div>'),\n Oe = Ie('<textarea class=\"note-codable\" aria-multiline=\"true\"></textarea>'),\n je = Ie('<div class=\"note-editable\" contentEditable=\"true\" role=\"textbox\" aria-multiline=\"true\"></div>'),\n Ue = Ie(['<output class=\"note-status-output\" role=\"status\" aria-live=\"polite\"></output>', '<div class=\"note-statusbar\" role=\"status\">', '<div class=\"note-resizebar\" aria-label=\"resize\">', '<div class=\"note-icon-bar\"></div>', '<div class=\"note-icon-bar\"></div>', '<div class=\"note-icon-bar\"></div>', \"</div>\", \"</div>\"].join(\"\")),\n We = Ie('<div class=\"note-editor note-airframe\"></div>'),\n Ke = Ie(['<div class=\"note-editable\" contentEditable=\"true\" role=\"textbox\" aria-multiline=\"true\"></div>', '<output class=\"note-status-output\" role=\"status\" aria-live=\"polite\"></output>'].join(\"\")),\n Ve = Ie('<div class=\"note-btn-group\"></div>'),\n qe = Ie('<button type=\"button\" class=\"note-btn\" tabindex=\"-1\"></button>', function (t, o) {\n o && o.tooltip && (t.attr({\n \"aria-label\": o.tooltip\n }), t.data(\"_lite_tooltip\", new Re(t, {\n title: o.tooltip,\n container: o.container\n })).on(\"click\", function (t) {\n e()(t.currentTarget).data(\"_lite_tooltip\").hide();\n })), o.contents && t.html(o.contents), o && o.data && \"dropdown\" === o.data.toggle && t.data(\"_lite_dropdown\", new Fe(t, {\n container: o.container\n })), o && o.codeviewKeepButton && t.addClass(\"note-codeview-keep\");\n }),\n _e = Ie('<div class=\"note-dropdown-menu\" role=\"list\"></div>', function (t, o) {\n var n = Array.isArray(o.items) ? o.items.map(function (t) {\n var n = \"string\" == typeof t ? t : t.value || \"\",\n i = o.template ? o.template(t) : t,\n r = e()('<a class=\"note-dropdown-item\" href=\"#\" data-value=\"' + n + '\" role=\"listitem\" aria-label=\"' + n + '\"></a>');\n return r.html(i).data(\"item\", t), r;\n }) : o.items;\n t.html(n).attr({\n \"aria-label\": o.title\n }), t.on(\"click\", \"> .note-dropdown-item\", function (t) {\n var n = e()(this),\n i = n.data(\"item\"),\n r = n.data(\"value\");\n i.click ? i.click(n) : o.itemClick && o.itemClick(t, i, r);\n }), o && o.codeviewKeepButton && t.addClass(\"note-codeview-keep\");\n }),\n Ge = Ie('<div class=\"note-dropdown-menu note-check\" role=\"list\"></div>', function (t, o) {\n var n = Array.isArray(o.items) ? o.items.map(function (t) {\n var n = \"string\" == typeof t ? t : t.value || \"\",\n i = o.template ? o.template(t) : t,\n r = e()('<a class=\"note-dropdown-item\" href=\"#\" data-value=\"' + n + '\" role=\"listitem\" aria-label=\"' + t + '\"></a>');\n return r.html([lo(o.checkClassName), \" \", i]).data(\"item\", t), r;\n }) : o.items;\n t.html(n).attr({\n \"aria-label\": o.title\n }), t.on(\"click\", \"> .note-dropdown-item\", function (t) {\n var n = e()(this),\n i = n.data(\"item\"),\n r = n.data(\"value\");\n i.click ? i.click(n) : o.itemClick && o.itemClick(t, i, r);\n }), o && o.codeviewKeepButton && t.addClass(\"note-codeview-keep\");\n }),\n Ye = function (t, e) {\n return t + \" \" + lo(e.icons.caret, \"span\");\n },\n Ze = function (t, e) {\n return Ve([qe({\n className: \"dropdown-toggle\",\n contents: t.title + \" \" + lo(\"note-icon-caret\"),\n tooltip: t.tooltip,\n data: {\n toggle: \"dropdown\"\n }\n }), _e({\n className: t.className,\n items: t.items,\n template: t.template,\n itemClick: t.itemClick\n })], {\n callback: e\n }).render();\n },\n Xe = function (t, e) {\n return Ve([qe({\n className: \"dropdown-toggle\",\n contents: t.title + \" \" + lo(\"note-icon-caret\"),\n tooltip: t.tooltip,\n data: {\n toggle: \"dropdown\"\n }\n }), Ge({\n className: t.className,\n checkClassName: t.checkClassName,\n items: t.items,\n template: t.template,\n itemClick: t.itemClick\n })], {\n callback: e\n }).render();\n },\n Qe = function (t) {\n return Ve([qe({\n className: \"dropdown-toggle\",\n contents: t.title + \" \" + lo(\"note-icon-caret\"),\n tooltip: t.tooltip,\n data: {\n toggle: \"dropdown\"\n }\n }), _e([Ve({\n className: \"note-align\",\n children: t.items[0]\n }), Ve({\n className: \"note-list\",\n children: t.items[1]\n })])]).render();\n },\n Je = function (t) {\n return Ve([qe({\n className: \"dropdown-toggle\",\n contents: t.title + \" \" + lo(\"note-icon-caret\"),\n tooltip: t.tooltip,\n data: {\n toggle: \"dropdown\"\n }\n }), _e({\n className: \"note-table\",\n items: ['<div class=\"note-dimension-picker\">', '<div class=\"note-dimension-picker-mousecatcher\" data-event=\"insertTable\" data-value=\"1x1\"></div>', '<div class=\"note-dimension-picker-highlighted\"></div>', '<div class=\"note-dimension-picker-unhighlighted\"></div>', \"</div>\", '<div class=\"note-dimension-display\">1 x 1</div>'].join(\"\")\n })], {\n callback: function (o) {\n o.find(\".note-dimension-picker-mousecatcher\").css({\n width: t.col + \"em\",\n height: t.row + \"em\"\n }).mouseup(t.itemClick).mousemove(function (o) {\n !function (t, o, n) {\n var i,\n r = e()(t.target.parentNode),\n a = r.next(),\n s = r.find(\".note-dimension-picker-mousecatcher\"),\n l = r.find(\".note-dimension-picker-highlighted\"),\n c = r.find(\".note-dimension-picker-unhighlighted\");\n if (void 0 === t.offsetX) {\n var u = e()(t.target).offset();\n i = {\n x: t.pageX - u.left,\n y: t.pageY - u.top\n };\n } else i = {\n x: t.offsetX,\n y: t.offsetY\n };\n var d = Math.ceil(i.x / 18) || 1,\n h = Math.ceil(i.y / 18) || 1;\n l.css({\n width: d + \"em\",\n height: h + \"em\"\n }), s.data(\"value\", d + \"x\" + h), d > 3 && d < o && c.css({\n width: d + 1 + \"em\"\n }), h > 3 && h < n && c.css({\n height: h + 1 + \"em\"\n }), a.html(d + \" x \" + h);\n }(o, t.col, t.row);\n });\n }\n }).render();\n },\n to = Ie('<div class=\"note-color-palette\"></div>', function (t, o) {\n for (var n = [], i = 0, r = o.colors.length; i < r; i++) {\n for (var a = o.eventName, s = o.colors[i], l = o.colorsName[i], c = [], u = 0, d = s.length; u < d; u++) {\n var h = s[u],\n f = l[u];\n c.push(['<button type=\"button\" class=\"note-btn note-color-btn\"', 'style=\"background-color:', h, '\" ', 'data-event=\"', a, '\" ', 'data-value=\"', h, '\" ', 'data-title=\"', f, '\" ', 'aria-label=\"', f, '\" ', 'data-toggle=\"button\" tabindex=\"-1\"></button>'].join(\"\"));\n }\n n.push('<div class=\"note-color-row\">' + c.join(\"\") + \"</div>\");\n }\n t.html(n.join(\"\")), t.find(\".note-color-btn\").each(function () {\n e()(this).data(\"_lite_tooltip\", new Re(e()(this), {\n container: o.container\n }));\n });\n }),\n eo = function (t, o) {\n return Ve({\n className: \"note-color\",\n children: [qe({\n className: \"note-current-color-button\",\n contents: t.title,\n tooltip: t.lang.color.recent,\n click: t.currentClick,\n callback: function (t) {\n var e = t.find(\".note-recent-color\");\n \"foreColor\" !== o && (e.css(\"background-color\", \"#FFFF00\"), t.attr(\"data-backColor\", \"#FFFF00\"));\n }\n }), qe({\n className: \"dropdown-toggle\",\n contents: lo(\"note-icon-caret\"),\n tooltip: t.lang.color.more,\n data: {\n toggle: \"dropdown\"\n }\n }), _e({\n items: [\"<div>\", '<div class=\"note-btn-group btn-background-color\">', '<div class=\"note-palette-title\">' + t.lang.color.background + \"</div>\", \"<div>\", '<button type=\"button\" class=\"note-color-reset note-btn note-btn-block\" data-event=\"backColor\" data-value=\"transparent\">', t.lang.color.transparent, \"</button>\", \"</div>\", '<div class=\"note-holder\" data-event=\"backColor\"></div>', '<div class=\"btn-sm\">', '<input type=\"color\" id=\"html5bcp\" class=\"note-btn btn-default\" value=\"#21104A\" style=\"width:100%;\" data-value=\"cp\">', '<button type=\"button\" class=\"note-color-reset btn\" data-event=\"backColor\" data-value=\"cpbackColor\">', t.lang.color.cpSelect, \"</button>\", \"</div>\", \"</div>\", '<div class=\"note-btn-group btn-foreground-color\">', '<div class=\"note-palette-title\">' + t.lang.color.foreground + \"</div>\", \"<div>\", '<button type=\"button\" class=\"note-color-reset note-btn note-btn-block\" data-event=\"removeFormat\" data-value=\"foreColor\">', t.lang.color.resetToDefault, \"</button>\", \"</div>\", '<div class=\"note-holder\" data-event=\"foreColor\"></div>', '<div class=\"btn-sm\">', '<input type=\"color\" id=\"html5fcp\" class=\"note-btn btn-default\" value=\"#21104A\" style=\"width:100%;\" data-value=\"cp\">', '<button type=\"button\" class=\"note-color-reset btn\" data-event=\"foreColor\" data-value=\"cpforeColor\">', t.lang.color.cpSelect, \"</button>\", \"</div>\", \"</div>\", \"</div>\"].join(\"\"),\n callback: function (n) {\n n.find(\".note-holder\").each(function () {\n var o = e()(this);\n o.append(to({\n colors: t.colors,\n eventName: o.data(\"event\")\n }).render());\n }), \"fore\" === o ? (n.find(\".btn-background-color\").hide(), n.css({\n \"min-width\": \"210px\"\n })) : \"back\" === o && (n.find(\".btn-foreground-color\").hide(), n.css({\n \"min-width\": \"210px\"\n }));\n },\n click: function (n) {\n var i = e()(n.target),\n r = i.data(\"event\"),\n a = i.data(\"value\"),\n s = document.getElementById(\"html5fcp\").value,\n l = document.getElementById(\"html5bcp\").value;\n if (\"cp\" === a ? n.stopPropagation() : \"cpbackColor\" === a ? a = l : \"cpforeColor\" === a && (a = s), r && a) {\n var c = \"backColor\" === r ? \"background-color\" : \"color\",\n u = i.closest(\".note-color\").find(\".note-recent-color\"),\n d = i.closest(\".note-color\").find(\".note-current-color-button\");\n u.css(c, a), d.attr(\"data-\" + r, a), \"fore\" === o ? t.itemClick(\"foreColor\", a) : \"back\" === o ? t.itemClick(\"backColor\", a) : t.itemClick(r, a);\n }\n }\n })]\n }).render();\n },\n oo = Ie('<div class=\"note-modal\" aria-hidden=\"false\" tabindex=\"-1\" role=\"dialog\"></div>', function (t, e) {\n e.fade && t.addClass(\"fade\"), t.attr({\n \"aria-label\": e.title\n }), t.html(['<div class=\"note-modal-content\">', e.title ? '<div class=\"note-modal-header\"><button type=\"button\" class=\"close\" aria-label=\"Close\" aria-hidden=\"true\"><i class=\"note-icon-close\"></i></button><h4 class=\"note-modal-title\">' + e.title + \"</h4></div>\" : \"\", '<div class=\"note-modal-body\">' + e.body + \"</div>\", e.footer ? '<div class=\"note-modal-footer\">' + e.footer + \"</div>\" : \"\", \"</div>\"].join(\"\")), t.data(\"modal\", new He(t, e));\n }),\n no = function (t) {\n var e = '<div class=\"note-form-group\"><label for=\"note-dialog-video-url-' + t.id + '\" class=\"note-form-label\">' + t.lang.video.url + ' <small class=\"text-muted\">' + t.lang.video.providers + '</small></label><input id=\"note-dialog-video-url-' + t.id + '\" class=\"note-video-url note-input\" type=\"text\"/></div>',\n o = ['<button type=\"button\" href=\"#\" class=\"note-btn note-btn-primary note-video-btn disabled\" disabled>', t.lang.video.insert, \"</button>\"].join(\"\");\n return oo({\n title: t.lang.video.insert,\n fade: t.fade,\n body: e,\n footer: o\n }).render();\n },\n io = function (t) {\n var e = '<div class=\"note-form-group note-group-select-from-files\"><label for=\"note-dialog-image-file-' + t.id + '\" class=\"note-form-label\">' + t.lang.image.selectFromFiles + '</label><input id=\"note-dialog-image-file-' + t.id + '\" class=\"note-note-image-input note-input\" type=\"file\" name=\"files\" accept=\"image/*\" multiple=\"multiple\"/>' + t.imageLimitation + '</div><div class=\"note-form-group\"><label for=\"note-dialog-image-url-' + t.id + '\" class=\"note-form-label\">' + t.lang.image.url + '</label><input id=\"note-dialog-image-url-' + t.id + '\" class=\"note-image-url note-input\" type=\"text\"/></div>',\n o = ['<button href=\"#\" type=\"button\" class=\"note-btn note-btn-primary note-btn-large note-image-btn disabled\" disabled>', t.lang.image.insert, \"</button>\"].join(\"\");\n return oo({\n title: t.lang.image.insert,\n fade: t.fade,\n body: e,\n footer: o\n }).render();\n },\n ro = function (t) {\n var e = '<div class=\"note-form-group\"><label for=\"note-dialog-link-txt-' + t.id + '\" class=\"note-form-label\">' + t.lang.link.textToDisplay + '</label><input id=\"note-dialog-link-txt-' + t.id + '\" class=\"note-link-text note-input\" type=\"text\"/></div><div class=\"note-form-group\"><label for=\"note-dialog-link-url-' + t.id + '\" class=\"note-form-label\">' + t.lang.link.url + '</label><input id=\"note-dialog-link-url-' + t.id + '\" class=\"note-link-url note-input\" type=\"text\" value=\"http://\"/></div>' + (t.disableLinkTarget ? \"\" : '<div class=\"checkbox\"><label for=\"note-dialog-link-nw-' + t.id + '\"><input id=\"note-dialog-link-nw-' + t.id + '\" type=\"checkbox\" checked> ' + t.lang.link.openInNewWindow + \"</label></div>\") + '<div class=\"checkbox\"><label for=\"note-dialog-link-up-' + t.id + '\"><input id=\"note-dialog-link-up-' + t.id + '\" type=\"checkbox\" checked> ' + t.lang.link.useProtocol + \"</label></div>\",\n o = ['<button href=\"#\" type=\"button\" class=\"note-btn note-btn-primary note-link-btn disabled\" disabled>', t.lang.link.insert, \"</button>\"].join(\"\");\n return oo({\n className: \"link-dialog\",\n title: t.lang.link.insert,\n fade: t.fade,\n body: e,\n footer: o\n }).render();\n },\n ao = Ie(['<div class=\"note-popover bottom\">', '<div class=\"note-popover-arrow\"></div>', '<div class=\"popover-content note-children-container\"></div>', \"</div>\"].join(\"\"), function (t, e) {\n var o = void 0 !== e.direction ? e.direction : \"bottom\";\n t.addClass(o).hide(), e.hideArrow && t.find(\".note-popover-arrow\").hide();\n }),\n so = Ie('<div class=\"checkbox\"></div>', function (t, e) {\n t.html([\"<label\" + (e.id ? ' for=\"note-' + e.id + '\"' : \"\") + \">\", '<input role=\"checkbox\" type=\"checkbox\"' + (e.id ? ' id=\"note-' + e.id + '\"' : \"\"), e.checked ? \" checked\" : \"\", ' aria-checked=\"' + (e.checked ? \"true\" : \"false\") + '\"/>', e.text ? e.text : \"\", \"</label>\"].join(\"\"));\n }),\n lo = function (t, e) {\n return t.match(/^</) ? t : \"<\" + (e = e || \"i\") + ' class=\"' + t + '\"></' + e + \">\";\n };\n e().summernote = e().extend(e().summernote, {\n ui_template: function (t) {\n return {\n editor: Be,\n toolbar: ze,\n editingArea: Me,\n codable: Oe,\n editable: je,\n statusbar: Ue,\n airEditor: We,\n airEditable: Ke,\n buttonGroup: Ve,\n button: qe,\n dropdown: _e,\n dropdownCheck: Ge,\n dropdownButton: Ze,\n dropdownButtonContents: Ye,\n dropdownCheckButton: Xe,\n paragraphDropdownButton: Qe,\n tableDropdownButton: Je,\n colorDropdownButton: eo,\n palette: to,\n dialog: oo,\n videoDialog: no,\n imageDialog: io,\n linkDialog: ro,\n popover: ao,\n checkbox: so,\n icon: lo,\n options: t,\n toggleBtn: function (t, e) {\n t.toggleClass(\"disabled\", !e), t.attr(\"disabled\", !e);\n },\n toggleBtnActive: function (t, e) {\n t.toggleClass(\"active\", e);\n },\n check: function (t, e) {\n t.find(\".checked\").removeClass(\"checked\"), t.find('[data-value=\"' + e + '\"]').addClass(\"checked\");\n },\n onDialogShown: function (t, e) {\n t.one(\"note.modal.show\", e);\n },\n onDialogHidden: function (t, e) {\n t.one(\"note.modal.hide\", e);\n },\n showDialog: function (t) {\n t.data(\"modal\").show();\n },\n hideDialog: function (t) {\n t.data(\"modal\").hide();\n },\n getPopoverContent: function (t) {\n return t.find(\".note-popover-content\");\n },\n getDialogBody: function (t) {\n return t.find(\".note-modal-body\");\n },\n createLayout: function (e) {\n var o = (t.airMode ? We([Me([Oe(), Ke()])]) : \"bottom\" === t.toolbarPosition ? Be([Me([Oe(), je()]), ze(), Ue()]) : Be([ze(), Me([Oe(), je()]), Ue()])).render();\n return o.insertAfter(e), {\n note: e,\n editor: o,\n toolbar: o.find(\".note-toolbar\"),\n editingArea: o.find(\".note-editing-area\"),\n editable: o.find(\".note-editable\"),\n codable: o.find(\".note-codable\"),\n statusbar: o.find(\".note-statusbar\")\n };\n },\n removeLayout: function (t, e) {\n t.html(e.editable.html()), e.editor.remove(), t.off(\"summernote\"), t.show();\n }\n };\n },\n interface: \"lite\"\n });\n })(), i;\n })();\n});","var cocoon = function ($) {\n var cocoon_element_counter = 0;\n var create_new_id = function () {\n return new Date().getTime() + cocoon_element_counter++;\n };\n var newcontent_braced = function (id) {\n return '[' + id + ']$1';\n };\n var newcontent_underscord = function (id) {\n return '_' + id + '_$1';\n };\n var getInsertionNodeElem = function (insertionNode, insertionTraversal, $this) {\n if (!insertionNode) {\n return $this.parent();\n }\n if (typeof insertionNode == 'function') {\n if (insertionTraversal) {\n console.warn('association-insertion-traversal is ignored, because association-insertion-node is given as a function.');\n }\n return insertionNode($this);\n }\n if (typeof insertionNode == 'string') {\n if (insertionTraversal) {\n return $this[insertionTraversal](insertionNode);\n } else {\n return insertionNode == \"this\" ? $this : $(insertionNode);\n }\n }\n };\n $(document).on('click', '.add_fields', function (e) {\n e.preventDefault();\n var $this = $(this),\n assoc = $this.data('association'),\n assocs = $this.data('associations'),\n content = $this.data('association-insertion-template'),\n insertionMethod = $this.data('association-insertion-method') || $this.data('association-insertion-position') || 'before',\n insertionNode = $this.data('association-insertion-node'),\n insertionTraversal = $this.data('association-insertion-traversal'),\n count = parseInt($this.data('count'), 10),\n regexp_braced = new RegExp('\\\\[new_' + assoc + '\\\\](.*?\\\\s)', 'g'),\n regexp_underscord = new RegExp('_new_' + assoc + '_(\\\\w*)', 'g'),\n new_id = create_new_id(),\n new_content = content.replace(regexp_braced, newcontent_braced(new_id)),\n new_contents = [];\n if (new_content == content) {\n regexp_braced = new RegExp('\\\\[new_' + assocs + '\\\\](.*?\\\\s)', 'g');\n regexp_underscord = new RegExp('_new_' + assocs + '_(\\\\w*)', 'g');\n new_content = content.replace(regexp_braced, newcontent_braced(new_id));\n }\n new_content = new_content.replace(regexp_underscord, newcontent_underscord(new_id));\n new_contents = [new_content];\n count = isNaN(count) ? 1 : Math.max(count, 1);\n count -= 1;\n while (count) {\n new_id = create_new_id();\n new_content = content.replace(regexp_braced, newcontent_braced(new_id));\n new_content = new_content.replace(regexp_underscord, newcontent_underscord(new_id));\n new_contents.push(new_content);\n count -= 1;\n }\n var insertionNodeElem = getInsertionNodeElem(insertionNode, insertionTraversal, $this);\n if (!insertionNodeElem || insertionNodeElem.length == 0) {\n console.warn(\"Couldn't find the element to insert the template. Make sure your `data-association-insertion-*` on `link_to_add_association` is correct.\");\n }\n $.each(new_contents, function (i, node) {\n var contentNode = $(node);\n var before_insert = $.Event('cocoon:before-insert');\n insertionNodeElem.trigger(before_insert, [contentNode]);\n if (!before_insert.isDefaultPrevented()) {\n // allow any of the jquery dom manipulation methods (after, before, append, prepend, etc)\n // to be called on the node. allows the insertion node to be the parent of the inserted\n // code and doesn't force it to be a sibling like after/before does. default: 'before'\n var addedContent = insertionNodeElem[insertionMethod](contentNode);\n insertionNodeElem.trigger('cocoon:after-insert', [contentNode]);\n }\n });\n });\n $(document).on('click', '.remove_fields.dynamic, .remove_fields.existing', function (e) {\n var $this = $(this),\n wrapper_class = $this.data('wrapper-class') || 'nested-fields',\n node_to_delete = $this.closest('.' + wrapper_class),\n trigger_node = node_to_delete.parent();\n e.preventDefault();\n var before_remove = $.Event('cocoon:before-remove');\n trigger_node.trigger(before_remove, [node_to_delete]);\n if (!before_remove.isDefaultPrevented()) {\n var timeout = trigger_node.data('remove-timeout') || 0;\n setTimeout(function () {\n if ($this.hasClass('dynamic')) {\n node_to_delete.remove();\n } else {\n $this.prev(\"input[type=hidden]\").val(\"1\");\n node_to_delete.hide();\n }\n trigger_node.trigger('cocoon:after-remove', [node_to_delete]);\n }, timeout);\n }\n });\n $(document).on(\"ready page:load turbolinks:load\", function () {\n $('.remove_fields.existing.destroyed').each(function (i, obj) {\n var $this = $(this),\n wrapper_class = $this.data('wrapper-class') || 'nested-fields';\n $this.closest('.' + wrapper_class).hide();\n });\n });\n}(require(\"jquery\"));\nmodule.exports = {\n cocoon: cocoon\n};","/* flatpickr v4.6.6, @license MIT */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = global || self, global.flatpickr = factory());\n})(this, function () {\n 'use strict';\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation.\r\n Permission to use, copy, modify, and/or distribute this software for any\r\n purpose with or without fee is hereby granted.\r\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n PERFORMANCE OF THIS SOFTWARE.\r\n ***************************************************************************** */\n var __assign = function () {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n };\n function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j];\n return r;\n }\n var HOOKS = [\"onChange\", \"onClose\", \"onDayCreate\", \"onDestroy\", \"onKeyDown\", \"onMonthChange\", \"onOpen\", \"onParseConfig\", \"onReady\", \"onValueUpdate\", \"onYearChange\", \"onPreCalendarPosition\"];\n var defaults = {\n _disable: [],\n _enable: [],\n allowInput: false,\n allowInvalidPreload: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: typeof window === \"object\" && window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n autoFillDefaultTime: true,\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enable: [],\n enableSeconds: false,\n enableTime: false,\n errorHandler: function (err) {\n return typeof console !== \"undefined\" && console.warn(err);\n },\n getWeek: function (givenDate) {\n var date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n // Thursday in current week decides the year.\n date.setDate(date.getDate() + 3 - (date.getDay() + 6) % 7);\n // January 4 is always in week 1.\n var week1 = new Date(date.getFullYear(), 0, 4);\n // Adjust to Thursday in week 1 and count number of weeks from date to week1.\n return 1 + Math.round(((date.getTime() - week1.getTime()) / 86400000 - 3 + (week1.getDay() + 6) % 7) / 7);\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n monthSelectorType: \"dropdown\",\n nextArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false\n };\n var english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"]\n },\n months: {\n shorthand: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n longhand: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"]\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: function (nth) {\n var s = nth % 100;\n if (s > 3 && s < 21) return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\",\n monthAriaLabel: \"Month\",\n hourAriaLabel: \"Hour\",\n minuteAriaLabel: \"Minute\",\n time_24hr: false\n };\n var pad = function (number, length) {\n if (length === void 0) {\n length = 2;\n }\n return (\"000\" + number).slice(length * -1);\n };\n var int = function (bool) {\n return bool === true ? 1 : 0;\n };\n /* istanbul ignore next */\n function debounce(func, wait, immediate) {\n if (immediate === void 0) {\n immediate = false;\n }\n var timeout;\n return function () {\n var context = this,\n args = arguments;\n timeout !== null && clearTimeout(timeout);\n timeout = window.setTimeout(function () {\n timeout = null;\n if (!immediate) func.apply(context, args);\n }, wait);\n if (immediate && !timeout) func.apply(context, args);\n };\n }\n var arrayify = function (obj) {\n return obj instanceof Array ? obj : [obj];\n };\n function toggleClass(elem, className, bool) {\n if (bool === true) return elem.classList.add(className);\n elem.classList.remove(className);\n }\n function createElement(tag, className, content) {\n var e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined) e.textContent = content;\n return e;\n }\n function clearNode(node) {\n while (node.firstChild) node.removeChild(node.firstChild);\n }\n function findParent(node, condition) {\n if (condition(node)) return node;else if (node.parentNode) return findParent(node.parentNode, condition);\n return undefined; // nothing found\n }\n\n function createNumberInput(inputClassName, opts) {\n var wrapper = createElement(\"div\", \"numInputWrapper\"),\n numInput = createElement(\"input\", \"numInput \" + inputClassName),\n arrowUp = createElement(\"span\", \"arrowUp\"),\n arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n } else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined) for (var key in opts) numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n }\n function getEventTarget(event) {\n try {\n if (typeof event.composedPath === \"function\") {\n var path = event.composedPath();\n return path[0];\n }\n return event.target;\n } catch (error) {\n return event.target;\n }\n }\n var doNothing = function () {\n return undefined;\n };\n var monthToStr = function (monthNumber, shorthand, locale) {\n return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber];\n };\n var revFormat = {\n D: doNothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n H: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n J: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n K: function (dateObj, amPM, locale) {\n dateObj.setHours(dateObj.getHours() % 12 + 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: function (_, unixSeconds) {\n return new Date(parseFloat(unixSeconds) * 1000);\n },\n W: function (dateObj, weekNum, locale) {\n var weekNumber = parseInt(weekNum);\n var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n return date;\n },\n Y: function (dateObj, year) {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: function (_, ISODate) {\n return new Date(ISODate);\n },\n d: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n h: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n i: function (dateObj, minutes) {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: function (_, unixMillSeconds) {\n return new Date(parseFloat(unixMillSeconds));\n },\n w: doNothing,\n y: function (dateObj, year) {\n dateObj.setFullYear(2000 + parseFloat(year));\n }\n };\n var tokenRegex = {\n D: \"(\\\\w+)\",\n F: \"(\\\\w+)\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"(\\\\w+)\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"(\\\\w+)\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\"\n };\n var formats = {\n // get the date in UTC\n Z: function (date) {\n return date.toISOString();\n },\n // weekday name, short, e.g. Thu\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n // full month name e.g. January\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n // padded hour 1-12\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n // hours with leading zero e.g. 03\n H: function (date) {\n return pad(date.getHours());\n },\n // day (1-30) with ordinal suffix e.g. 1st, 2nd\n J: function (date, locale) {\n return locale.ordinal !== undefined ? date.getDate() + locale.ordinal(date.getDate()) : date.getDate();\n },\n // AM/PM\n K: function (date, locale) {\n return locale.amPM[int(date.getHours() > 11)];\n },\n // shorthand month e.g. Jan, Sep, Oct, etc\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n // seconds 00-59\n S: function (date) {\n return pad(date.getSeconds());\n },\n // unix timestamp\n U: function (date) {\n return date.getTime() / 1000;\n },\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n // full year e.g. 2016, padded (0001-9999)\n Y: function (date) {\n return pad(date.getFullYear(), 4);\n },\n // day in month, padded (01-30)\n d: function (date) {\n return pad(date.getDate());\n },\n // hour from 1-12 (am/pm)\n h: function (date) {\n return date.getHours() % 12 ? date.getHours() % 12 : 12;\n },\n // minutes, padded with leading zero e.g. 09\n i: function (date) {\n return pad(date.getMinutes());\n },\n // day in month (1-30)\n j: function (date) {\n return date.getDate();\n },\n // weekday name, full, e.g. Thursday\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n // padded month number (01-12)\n m: function (date) {\n return pad(date.getMonth() + 1);\n },\n // the month number (1-12)\n n: function (date) {\n return date.getMonth() + 1;\n },\n // seconds 0-59\n s: function (date) {\n return date.getSeconds();\n },\n // Unix Milliseconds\n u: function (date) {\n return date.getTime();\n },\n // number of the day of the week\n w: function (date) {\n return date.getDay();\n },\n // last two digits of year e.g. 16 for 2016\n y: function (date) {\n return String(date.getFullYear()).substring(2);\n }\n };\n var createDateFormatter = function (_a) {\n var _b = _a.config,\n config = _b === void 0 ? defaults : _b,\n _c = _a.l10n,\n l10n = _c === void 0 ? english : _c,\n _d = _a.isMobile,\n isMobile = _d === void 0 ? false : _d;\n return function (dateObj, frmt, overrideLocale) {\n var locale = overrideLocale || l10n;\n if (config.formatDate !== undefined && !isMobile) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt.split(\"\").map(function (c, i, arr) {\n return formats[c] && arr[i - 1] !== \"\\\\\" ? formats[c](dateObj, locale, config) : c !== \"\\\\\" ? c : \"\";\n }).join(\"\");\n };\n };\n var createDateParser = function (_a) {\n var _b = _a.config,\n config = _b === void 0 ? defaults : _b,\n _c = _a.l10n,\n l10n = _c === void 0 ? english : _c;\n return function (date, givenFormat, timeless, customLocale) {\n if (date !== 0 && !date) return undefined;\n var locale = customLocale || l10n;\n var parsedDate;\n var dateOrig = date;\n if (date instanceof Date) parsedDate = new Date(date.getTime());else if (typeof date !== \"string\" && date.toFixed !== undefined // timestamp\n )\n // create a copy\n parsedDate = new Date(date);else if (typeof date === \"string\") {\n // date string\n var format = givenFormat || (config || defaults).dateFormat;\n var datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n } else if (/Z$/.test(datestr) || /GMT$/.test(datestr) // datestrings w/ timezone\n ) parsedDate = new Date(date);else if (config && config.parseDate) parsedDate = config.parseDate(date, format);else {\n parsedDate = !config || !config.noCalendar ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0) : new Date(new Date().setHours(0, 0, 0, 0));\n var matched = void 0,\n ops = [];\n for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n var token_1 = format[i];\n var isBackSlash = token_1 === \"\\\\\";\n var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token_1] && !escaped) {\n regexStr += tokenRegex[token_1];\n var match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token_1 !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token_1],\n val: match[++matchIndex]\n });\n }\n } else if (!isBackSlash) regexStr += \".\"; // don't really care\n ops.forEach(function (_a) {\n var fn = _a.fn,\n val = _a.val;\n return parsedDate = fn(parsedDate, val, locale) || parsedDate;\n });\n }\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n /* istanbul ignore next */\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n return undefined;\n }\n if (timeless === true) parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n };\n };\n /**\n * Compute the difference in dates, measured in ms\n */\n function compareDates(date1, date2, timeless) {\n if (timeless === void 0) {\n timeless = true;\n }\n if (timeless !== false) {\n return new Date(date1.getTime()).setHours(0, 0, 0, 0) - new Date(date2.getTime()).setHours(0, 0, 0, 0);\n }\n return date1.getTime() - date2.getTime();\n }\n var isBetween = function (ts, ts1, ts2) {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n };\n var duration = {\n DAY: 86400000\n };\n if (typeof Object.assign !== \"function\") {\n Object.assign = function (target) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n var _loop_1 = function (source) {\n if (source) {\n Object.keys(source).forEach(function (key) {\n return target[key] = source[key];\n });\n }\n };\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var source = args_1[_a];\n _loop_1(source);\n }\n return target;\n };\n }\n var DEBOUNCED_CHANGE_MS = 300;\n function FlatpickrInstance(element, instanceConfig) {\n var self = {\n config: __assign(__assign({}, defaults), flatpickr.defaultConfig),\n l10n: english\n };\n self.parseDate = createDateParser({\n config: self.config,\n l10n: self.l10n\n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self._createElement = createElement;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth: function (month, yr) {\n if (month === void 0) {\n month = self.currentMonth;\n }\n if (yr === void 0) {\n yr = self.currentYear;\n }\n if (month === 1 && (yr % 4 === 0 && yr % 100 !== 0 || yr % 400 === 0)) return 29;\n return self.l10n.daysInMonth[month];\n }\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile) build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj || self.config.minDate : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n /* TODO: investigate this further\n Currently, there is weird positioning behavior in safari causing pages\n to scroll up. https://github.com/chmln/flatpickr/issues/563\n However, most browsers are not Safari and positioning is expensive when used\n in scale. https://github.com/chmln/flatpickr/issues/1096\n */\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n var config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1) {\n return;\n } else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width = daysWidth + (self.weekWrapper !== undefined ? self.weekWrapper.offsetWidth : 0) + \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n /**\n * The handler for all events targeting the time inputs\n */\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n var defaultDate = self.config.minDate !== undefined ? new Date(self.config.minDate.getTime()) : new Date();\n var _a = getDefaultHours(),\n hours = _a.hours,\n minutes = _a.minutes,\n seconds = _a.seconds;\n defaultDate.setHours(hours, minutes, seconds, 0);\n self.setDate(defaultDate, false);\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n var prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return hour % 12 + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n /**\n * Syncs the selected date object time with user's time input\n */\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined) return;\n var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24,\n minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60,\n seconds = self.secondElement !== undefined ? (parseInt(self.secondElement.value, 10) || 0) % 60 : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n var limitMinHours = self.config.minTime !== undefined || self.config.minDate && self.minDateHasTime && self.latestSelectedDateObj && compareDates(self.latestSelectedDateObj, self.config.minDate, true) === 0;\n var limitMaxHours = self.config.maxTime !== undefined || self.config.maxDate && self.maxDateHasTime && self.latestSelectedDateObj && compareDates(self.latestSelectedDateObj, self.config.maxDate, true) === 0;\n if (limitMaxHours) {\n var maxTime = self.config.maxTime !== undefined ? self.config.maxTime : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours()) minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes()) seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n var minTime = self.config.minTime !== undefined ? self.config.minTime : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours()) minutes = Math.max(minutes, minTime.getMinutes());\n if (minutes === minTime.getMinutes()) seconds = Math.max(seconds, minTime.getSeconds());\n }\n setHours(hours, minutes, seconds);\n }\n /**\n * Syncs time input values with a date\n */\n function setHoursFromDate(dateObj) {\n var date = dateObj || self.latestSelectedDateObj;\n if (date) {\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n }\n function getDefaultHours() {\n var hours = self.config.defaultHour;\n var minutes = self.config.defaultMinute;\n var seconds = self.config.defaultSeconds;\n if (self.config.minDate !== undefined) {\n var minHr = self.config.minDate.getHours();\n var minMinutes = self.config.minDate.getMinutes();\n hours = Math.max(hours, minHr);\n if (hours === minHr) minutes = Math.max(minMinutes, minutes);\n if (hours === minHr && minutes === minMinutes) seconds = self.config.minDate.getSeconds();\n }\n if (self.config.maxDate !== undefined) {\n var maxHr = self.config.maxDate.getHours();\n var maxMinutes = self.config.maxDate.getMinutes();\n hours = Math.min(hours, maxHr);\n if (hours === maxHr) minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes) seconds = self.config.maxDate.getSeconds();\n }\n return {\n hours: hours,\n minutes: minutes,\n seconds: seconds\n };\n }\n /**\n * Sets the hours, minutes, and optionally seconds\n * of the latest selected date object and the\n * corresponding time inputs\n * @param {Number} hours the hour. whether its military\n * or am-pm gets inferred from config\n * @param {Number} minutes the minutes\n * @param {Number} seconds the seconds (optional)\n */\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile) return;\n self.hourElement.value = pad(!self.config.time_24hr ? (12 + hours) % 12 + 12 * int(hours % 12 === 0) : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined) self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined) self.secondElement.value = pad(seconds);\n }\n /**\n * Handles the year input and incrementing events\n * @param {Event} event the keyup or increment event\n */\n function onYearInput(event) {\n var eventTarget = getEventTarget(event);\n var year = parseInt(eventTarget.value) + (event.delta || 0);\n if (year / 1000 > 1 || event.key === \"Enter\" && !/[^\\d]/.test(year.toString())) {\n changeYear(year);\n }\n }\n /**\n * Essentially addEventListener + tracking\n * @param {Element} element the element to addEventListener to\n * @param {String} event the event name\n * @param {Function} handler the event handler\n */\n function bind(element, event, handler, options) {\n if (event instanceof Array) return event.forEach(function (ev) {\n return bind(element, ev, handler, options);\n });\n if (element instanceof Array) return element.forEach(function (el) {\n return bind(el, event, handler, options);\n });\n element.addEventListener(event, handler, options);\n self._handlers.push({\n element: element,\n event: event,\n handler: handler,\n options: options\n });\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n /**\n * Adds all the necessary event listeners\n */\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n return bind(el, \"click\", self[evt]);\n });\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n var debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent)) bind(self.daysContainer, \"mouseover\", function (e) {\n if (self.config.mode === \"range\") onMouseOver(getEventTarget(e));\n });\n bind(window.document.body, \"keydown\", onKeyDown);\n if (!self.config.inline && !self.config.static) bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined) bind(window.document, \"touchstart\", documentClick);else bind(window.document, \"click\", documentClick);\n bind(window.document, \"focus\", documentClick, {\n capture: true\n });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"click\", onMonthNavClick);\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"click\", selectDate);\n }\n if (self.timeContainer !== undefined && self.minuteElement !== undefined && self.hourElement !== undefined) {\n var selText = function (e) {\n return getEventTarget(e).select();\n };\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, {\n capture: true\n });\n bind(self.timeContainer, \"click\", timeIncrement);\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined) bind(self.secondElement, \"focus\", function () {\n return self.secondElement && self.secondElement.select();\n });\n if (self.amPM !== undefined) {\n bind(self.amPM, \"click\", function (e) {\n updateTime(e);\n triggerChange();\n });\n }\n }\n if (self.config.allowInput) bind(self._input, \"blur\", onBlur);\n }\n /**\n * Set the calendar view to a particular date.\n * @param {Date} jumpDate the date to set the view to\n * @param {boolean} triggerChange if change events should be triggered\n */\n function jumpToDate(jumpDate, triggerChange) {\n var jumpTo = jumpDate !== undefined ? self.parseDate(jumpDate) : self.latestSelectedDateObj || (self.config.minDate && self.config.minDate > self.now ? self.config.minDate : self.config.maxDate && self.config.maxDate < self.now ? self.config.maxDate : self.now);\n var oldYear = self.currentYear;\n var oldMonth = self.currentMonth;\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n } catch (e) {\n /* istanbul ignore next */\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n if (triggerChange && (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n self.redraw();\n }\n /**\n * The up/down arrow handler for time inputs\n * @param {Event} e the click event\n */\n function timeIncrement(e) {\n var eventTarget = getEventTarget(e);\n if (~eventTarget.className.indexOf(\"arrow\")) incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n /**\n * Increments/decrements the value of input associ-\n * ated with the up/down arrow by dispatching an\n * \"increment\" event on the input.\n *\n * @param {Event} e the click event\n * @param {Number} delta the diff (usually 1 or -1)\n * @param {Element} inputElem the input element\n */\n function incrementNumInput(e, delta, inputElem) {\n var target = e && getEventTarget(e);\n var input = inputElem || target && target.parentNode && target.parentNode.firstChild;\n var event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n var fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n var _a = buildWeeks(),\n weekWrapper = _a.weekWrapper,\n weekNumbers = _a.weekNumbers;\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n var customAppend = self.config.appendTo !== undefined && self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode) self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);else if (self.config.appendTo !== undefined) self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode) self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput) wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline) (self.config.appendTo !== undefined ? self.config.appendTo : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, dayNumber, i) {\n var dateIsEnabled = isEnabled(date, true),\n dayElement = createElement(\"span\", \"flatpickr-day \" + className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 && compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] && compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] && compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\") dayElement.classList.add(\"inRange\");\n }\n }\n } else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date)) dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers && self.config.showMonths === 1 && className !== \"prevMonthDay\" && dayNumber % 7 === 1) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"<span class='flatpickr-day'>\" + self.config.getWeek(date) + \"</span>\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\") onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n for (var m = startMonth; m != endMonth; m += delta) {\n var month = self.daysContainer.children[m];\n var startIndex = delta > 0 ? 0 : month.children.length - 1;\n var endIndex = delta > 0 ? month.children.length : -1;\n for (var i = startIndex; i != endIndex; i += delta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj)) return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n var givenMonth = current.className.indexOf(\"Month\") === -1 ? current.dateObj.getMonth() : self.currentMonth;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n var loopDelta = delta > 0 ? 1 : -1;\n for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n var month = self.daysContainer.children[m];\n var startIndex = givenMonth - self.currentMonth === m ? current.$i + delta : delta < 0 ? month.children.length - 1 : 0;\n var numMonthDays = month.children.length;\n for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj) && Math.abs(current.$i - i) >= Math.abs(delta)) return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n var dayFocused = isInView(document.activeElement || document.body);\n var startElem = current !== undefined ? current : dayFocused ? document.activeElement : self.selectedDateElem !== undefined && isInView(self.selectedDateElem) ? self.selectedDateElem : self.todayDateElem !== undefined && isInView(self.todayDateElem) ? self.todayDateElem : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined) {\n self._input.focus();\n } else if (!dayFocused) {\n focusOnDayElem(startElem);\n } else {\n getNextAvailableDay(startElem, offset);\n }\n }\n function buildMonthDays(year, month) {\n var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n var daysInMonth = self.utils.getDaysInMonth(month, year),\n days = window.document.createDocumentFragment(),\n isMultiMonth = self.config.showMonths > 1,\n prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\",\n nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n var dayNumber = prevMonthDays + 1 - firstOfMonth,\n dayIndex = 0;\n // prepend days from the ending of previous month\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n // Start at 1 since there is no 0th day\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n // append days from the next month\n for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth && (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n //updateNavigationCurrentMonth();\n var dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n // TODO: week numbers for each month\n if (self.weekNumbers) clearNode(self.weekNumbers);\n var frag = document.createDocumentFragment();\n for (var i = 0; i < self.config.showMonths; i++) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonthSwitch() {\n if (self.config.showMonths > 1 || self.config.monthSelectorType !== \"dropdown\") return;\n var shouldBuildMonth = function (month) {\n if (self.config.minDate !== undefined && self.currentYear === self.config.minDate.getFullYear() && month < self.config.minDate.getMonth()) {\n return false;\n }\n return !(self.config.maxDate !== undefined && self.currentYear === self.config.maxDate.getFullYear() && month > self.config.maxDate.getMonth());\n };\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n for (var i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i)) continue;\n var month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n month.tabIndex = -1;\n if (self.currentMonth === i) {\n month.selected = true;\n }\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n function buildMonth() {\n var container = createElement(\"div\", \"flatpickr-month\");\n var monthNavFragment = window.document.createDocumentFragment();\n var monthElement;\n if (self.config.showMonths > 1 || self.config.monthSelectorType === \"static\") {\n monthElement = createElement(\"span\", \"cur-month\");\n } else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n bind(self.monthsDropdownContainer, \"change\", function (e) {\n var target = getEventTarget(e);\n var selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n var yearInput = createNumberInput(\"cur-year\", {\n tabindex: \"-1\"\n });\n var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled = !!self.config.minDate && self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n var currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container: container,\n yearElement: yearElement,\n monthElement: monthElement\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (var m = self.config.showMonths; m--;) {\n var month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: function () {\n return self.__hidePrevMonthArrow;\n },\n set: function (bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n }\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: function () {\n return self.__hideNextMonthArrow;\n },\n set: function (bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n }\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar) self.calendarContainer.classList.add(\"noCalendar\");\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n var separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n var hourInput = createNumberInput(\"flatpickr-hour\", {\n \"aria-label\": self.l10n.hourAriaLabel\n });\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n var minuteInput = createNumberInput(\"flatpickr-minute\", {\n \"aria-label\": self.l10n.minuteAriaLabel\n });\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj ? self.latestSelectedDateObj.getHours() : self.config.time_24hr ? self.config.defaultHour : military2ampm(self.config.defaultHour));\n self.minuteElement.value = pad(self.latestSelectedDateObj ? self.latestSelectedDateObj.getMinutes() : self.config.defaultMinute);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr) self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n var secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj ? self.latestSelectedDateObj.getSeconds() : self.config.defaultSeconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n // add self.amPM if appropriate\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj ? self.hourElement.value : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer) self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");else clearNode(self.weekdayContainer);\n for (var i = self.config.showMonths; i--;) {\n var container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n if (!self.weekdayContainer) {\n return;\n }\n var firstDayOfWeek = self.l10n.firstDayOfWeek;\n var weekdays = __spreadArrays(self.l10n.weekdays.shorthand);\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = __spreadArrays(weekdays.splice(firstDayOfWeek, weekdays.length), weekdays.splice(0, firstDayOfWeek));\n }\n for (var i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = \"\\n <span class='flatpickr-weekday'>\\n \" + weekdays.join(\"</span><span class='flatpickr-weekday'>\") + \"\\n </span>\\n \";\n }\n }\n /* istanbul ignore next */\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n var weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n var weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper: weekWrapper,\n weekNumbers: weekNumbers\n };\n }\n function changeMonth(value, isOffset) {\n if (isOffset === void 0) {\n isOffset = true;\n }\n var delta = isOffset ? value : value - self.currentMonth;\n if (delta < 0 && self._hidePrevMonthArrow === true || delta > 0 && self._hideNextMonthArrow === true) return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent, toInitial) {\n if (triggerChangeEvent === void 0) {\n triggerChangeEvent = true;\n }\n if (toInitial === void 0) {\n toInitial = true;\n }\n self.input.value = \"\";\n if (self.altInput !== undefined) self.altInput.value = \"\";\n if (self.mobileInput !== undefined) self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n if (self.config.enableTime === true) {\n var _a = getDefaultHours(),\n hours = _a.hours,\n minutes = _a.minutes,\n seconds = _a.seconds;\n setHours(hours, minutes, seconds);\n }\n self.redraw();\n if (triggerChangeEvent)\n // triggerChangeEvent is true (default) or an Event\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined) triggerEvent(\"onDestroy\");\n for (var i = self._handlers.length; i--;) {\n var h = self._handlers[i];\n h.element.removeEventListener(h.event, h.handler, h.options);\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode) self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n } else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n var wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild) wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n } else self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode) self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n }\n [\"_showTimeInput\", \"latestSelectedDateObj\", \"_hideNextMonthArrow\", \"_hidePrevMonthArrow\", \"__hideNextMonthArrow\", \"__hidePrevMonthArrow\", \"isMobile\", \"isOpen\", \"selectedDateElem\", \"minDateHasTime\", \"maxDateHasTime\", \"days\", \"daysContainer\", \"_input\", \"_positionElement\", \"innerContainer\", \"rContainer\", \"monthNav\", \"todayDateElem\", \"calendarContainer\", \"weekdayContainer\", \"prevMonthNav\", \"nextMonthNav\", \"monthsDropdownContainer\", \"currentMonthElement\", \"currentYearElement\", \"navigationCurrentMonth\", \"selectedDateElem\", \"config\"].forEach(function (k) {\n try {\n delete self[k];\n } catch (_) {}\n });\n }\n function isCalendarElem(elem) {\n if (self.config.appendTo && self.config.appendTo.contains(elem)) return true;\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n var eventTarget_1 = getEventTarget(e);\n var isCalendarElement = isCalendarElem(eventTarget_1);\n var isInput = eventTarget_1 === self.input || eventTarget_1 === self.altInput || self.element.contains(eventTarget_1) ||\n // web components\n // e.path is not present in all browsers. circumventing typechecks\n e.path && e.path.indexOf && (~e.path.indexOf(self.input) || ~e.path.indexOf(self.altInput));\n var lostFocus = e.type === \"blur\" ? isInput && e.relatedTarget && !isCalendarElem(e.relatedTarget) : !isInput && !isCalendarElement && !isCalendarElem(e.relatedTarget);\n var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n return elem.contains(eventTarget_1);\n });\n if (lostFocus && isIgnored) {\n if (self.timeContainer !== undefined && self.minuteElement !== undefined && self.hourElement !== undefined && self.input.value !== \"\" && self.input.value !== undefined) {\n updateTime();\n }\n self.close();\n if (self.config && self.config.mode === \"range\" && self.selectedDates.length === 1) {\n self.clear(false);\n self.redraw();\n }\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear || self.config.minDate && newYear < self.config.minDate.getFullYear() || self.config.maxDate && newYear > self.config.maxDate.getFullYear()) return;\n var newYearNum = newYear,\n isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate && self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n } else if (self.config.minDate && self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n function isEnabled(date, timeless) {\n if (timeless === void 0) {\n timeless = true;\n }\n var dateToCheck = self.parseDate(date, undefined, timeless); // timeless\n if (self.config.minDate && dateToCheck && compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0 || self.config.maxDate && dateToCheck && compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0) return false;\n if (self.config.enable.length === 0 && self.config.disable.length === 0) return true;\n if (dateToCheck === undefined) return false;\n var bool = self.config.enable.length > 0,\n array = bool ? self.config.enable : self.config.disable;\n for (var i = 0, d = void 0; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" && d(dateToCheck) // disabled by function\n ) return bool;else if (d instanceof Date && dateToCheck !== undefined && d.getTime() === dateToCheck.getTime())\n // disabled by date\n return bool;else if (typeof d === \"string\" && dateToCheck !== undefined) {\n // disabled by date string\n var parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime() ? bool : !bool;\n } else if (\n // disabled by range\n typeof d === \"object\" && dateToCheck !== undefined && d.from && d.to && dateToCheck.getTime() >= d.from.getTime() && dateToCheck.getTime() <= d.to.getTime()) return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined) return elem.className.indexOf(\"hidden\") === -1 && elem.className.indexOf(\"flatpickr-disabled\") === -1 && self.daysContainer.contains(elem);\n return false;\n }\n function onBlur(e) {\n var isInput = e.target === self._input;\n if (isInput && !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n self.setDate(self._input.value, true, e.target === self.altInput ? self.config.altFormat : self.config.dateFormat);\n }\n }\n function onKeyDown(e) {\n // e.key e.keyCode\n // \"Backspace\" 8\n // \"Tab\" 9\n // \"Enter\" 13\n // \"Escape\" (IE \"Esc\") 27\n // \"ArrowLeft\" (IE \"Left\") 37\n // \"ArrowUp\" (IE \"Up\") 38\n // \"ArrowRight\" (IE \"Right\") 39\n // \"ArrowDown\" (IE \"Down\") 40\n // \"Delete\" (IE \"Del\") 46\n var eventTarget = getEventTarget(e);\n var isInput = self.config.wrap ? element.contains(eventTarget) : eventTarget === self._input;\n var allowInput = self.config.allowInput;\n var allowKeydown = self.isOpen && (!allowInput || !isInput);\n var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, eventTarget === self.altInput ? self.config.altFormat : self.config.dateFormat);\n return eventTarget.blur();\n } else {\n self.open();\n }\n } else if (isCalendarElem(eventTarget) || allowKeydown || allowInlineKeydown) {\n var isTimeObj = !!self.timeContainer && self.timeContainer.contains(eventTarget);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n } else selectDate(e);\n break;\n case 27:\n // escape\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n if (self.daysContainer !== undefined && (allowInput === false || document.activeElement && isInView(document.activeElement))) {\n var delta_1 = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey) focusOnDay(undefined, delta_1);else {\n e.stopPropagation();\n changeMonth(delta_1);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n } else if (self.hourElement) self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n var delta = e.keyCode === 40 ? 1 : -1;\n if (self.daysContainer && eventTarget.$i !== undefined || eventTarget === self.input || eventTarget === self.altInput) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n } else if (!isTimeObj) focusOnDay(undefined, delta * 7);\n } else if (eventTarget === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n } else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement) self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n var elems = [self.hourElement, self.minuteElement, self.secondElement, self.amPM].concat(self.pluginElements).filter(function (x) {\n return x;\n });\n var i = elems.indexOf(eventTarget);\n if (i !== -1) {\n var target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n (target || self._input).focus();\n }\n } else if (!self.config.noCalendar && self.daysContainer && self.daysContainer.contains(eventTarget) && e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n }\n }\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n if (isInput || isCalendarElem(eventTarget)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem) {\n if (self.selectedDates.length !== 1 || elem && (!elem.classList.contains(\"flatpickr-day\") || elem.classList.contains(\"flatpickr-disabled\"))) return;\n var hoverDate = elem ? elem.dateObj.getTime() : self.days.firstElementChild.dateObj.getTime(),\n initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(),\n rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()),\n rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n var containsDisabled = false;\n var minRange = 0,\n maxRange = 0;\n for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled = containsDisabled || t > rangeStartDate && t < rangeEndDate;\n if (t < initialDate && (!minRange || t > minRange)) minRange = t;else if (t > initialDate && (!maxRange || t < maxRange)) maxRange = t;\n }\n }\n for (var m = 0; m < self.config.showMonths; m++) {\n var month = self.daysContainer.children[m];\n var _loop_1 = function (i, l) {\n var dayElem = month.children[i],\n date = dayElem.dateObj;\n var timestamp = date.getTime();\n var outOfRange = minRange > 0 && timestamp < minRange || maxRange > 0 && timestamp > maxRange;\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n return \"continue\";\n } else if (containsDisabled && !outOfRange) return \"continue\";\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime() ? \"startRange\" : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate) dayElem.classList.add(\"startRange\");else if (initialDate > hoverDate && timestamp === initialDate) dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange && (maxRange === 0 || timestamp <= maxRange) && isBetween(timestamp, initialDate, hoverDate)) dayElem.classList.add(\"inRange\");\n }\n };\n for (var i = 0, l = month.children.length; i < l; i++) {\n _loop_1(i, l);\n }\n }\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline) positionCalendar();\n }\n function open(e, positionElement) {\n if (positionElement === void 0) {\n positionElement = self._positionElement;\n }\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n var eventTarget = getEventTarget(e);\n eventTarget && eventTarget.blur();\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n if (self._input.disabled || self.config.inline) return;\n var wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.config.allowInput === false && (e === undefined || !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(function () {\n return self.hourElement.select();\n }, 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return function (date) {\n var dateObj = self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat);\n var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] = dateObj.getHours() > 0 || dateObj.getMinutes() > 0 || dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter(function (d) {\n return isEnabled(d);\n });\n if (!self.selectedDates.length && type === \"min\") setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined) self.currentYearElement[type] = dateObj.getFullYear().toString();else self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled = !!inverseDateObj && dateObj !== undefined && inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n var boolOpts = [\"wrap\", \"weekNumbers\", \"allowInput\", \"allowInvalidPreload\", \"clickOpens\", \"time_24hr\", \"enableTime\", \"noCalendar\", \"altInput\", \"shorthandCurrentMonth\", \"inline\", \"static\", \"enableSeconds\", \"disableMobile\"];\n var userConfig = __assign(__assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\n var formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: function () {\n return self.config._enable;\n },\n set: function (dates) {\n self.config._enable = parseDateRules(dates);\n }\n });\n Object.defineProperty(self.config, \"disable\", {\n get: function () {\n return self.config._disable;\n },\n set: function (dates) {\n self.config._disable = parseDateRules(dates);\n }\n });\n var timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaults.dateFormat;\n formats.dateFormat = userConfig.noCalendar || timeMode ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\") : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput && (userConfig.enableTime || timeMode) && !userConfig.altFormat) {\n var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaults.altFormat;\n formats.altFormat = userConfig.noCalendar || timeMode ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\") : defaultAltFormat + (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: function () {\n return self.config._minDate;\n },\n set: minMaxDateSetter(\"min\")\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: function () {\n return self.config._maxDate;\n },\n set: minMaxDateSetter(\"max\")\n });\n var minMaxTimeSetter = function (type) {\n return function (val) {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n };\n };\n Object.defineProperty(self.config, \"minTime\", {\n get: function () {\n return self.config._minTime;\n },\n set: minMaxTimeSetter(\"min\")\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: function () {\n return self.config._maxTime;\n },\n set: minMaxTimeSetter(\"max\")\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (var i = 0; i < boolOpts.length; i++)\n // https://github.com/microsoft/TypeScript/issues/31663\n self.config[boolOpts[i]] = self.config[boolOpts[i]] === true || self.config[boolOpts[i]] === \"true\";\n HOOKS.filter(function (hook) {\n return self.config[hook] !== undefined;\n }).forEach(function (hook) {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile = !self.config.disableMobile && !self.config.inline && self.config.mode === \"single\" && !self.config.disable.length && !self.config.enable.length && !self.config.weekNumbers && /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (var i = 0; i < self.config.plugins.length; i++) {\n var pluginConf = self.config.plugins[i](self) || {};\n for (var key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key]).map(bindToInstance).concat(self.config[key]);\n } else if (typeof userConfig[key] === \"undefined\") self.config[key] = pluginConf[key];\n }\n }\n if (!userConfig.altInputClass) {\n self.config.altInputClass = getInputElem().className + \" \" + self.config.altInputClass;\n }\n triggerEvent(\"onParseConfig\");\n }\n function getInputElem() {\n return self.config.wrap ? element.querySelector(\"[data-input]\") : element;\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" && typeof flatpickr.l10ns[self.config.locale] === \"undefined\") self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n self.l10n = __assign(__assign({}, flatpickr.l10ns.default), typeof self.config.locale === \"object\" ? self.config.locale : self.config.locale !== \"default\" ? flatpickr.l10ns[self.config.locale] : undefined);\n tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n var userConfig = __assign(__assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));\n if (userConfig.time_24hr === undefined && flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({\n config: self.config,\n l10n: self.l10n\n });\n }\n function positionCalendar(customPositionElement) {\n if (self.calendarContainer === undefined) return;\n triggerEvent(\"onPreCalendarPosition\");\n var positionElement = customPositionElement || self._positionElement;\n var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, function (acc, child) {\n return acc + child.offsetHeight;\n }, 0),\n calendarWidth = self.calendarContainer.offsetWidth,\n configPos = self.config.position.split(\" \"),\n configPosVertical = configPos[0],\n configPosHorizontal = configPos.length > 1 ? configPos[1] : null,\n inputBounds = positionElement.getBoundingClientRect(),\n distanceFromBottom = window.innerHeight - inputBounds.bottom,\n showOnTop = configPosVertical === \"above\" || configPosVertical !== \"below\" && distanceFromBottom < calendarHeight && inputBounds.top > calendarHeight;\n var top = window.pageYOffset + inputBounds.top + (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline) return;\n var left = window.pageXOffset + inputBounds.left;\n var isCenter = false;\n var isRight = false;\n if (configPosHorizontal === \"center\") {\n left -= (calendarWidth - inputBounds.width) / 2;\n isCenter = true;\n } else if (configPosHorizontal === \"right\") {\n left -= calendarWidth - inputBounds.width;\n isRight = true;\n }\n toggleClass(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n toggleClass(self.calendarContainer, \"arrowCenter\", isCenter);\n toggleClass(self.calendarContainer, \"arrowRight\", isRight);\n var right = window.document.body.offsetWidth - (window.pageXOffset + inputBounds.right);\n var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static) return;\n self.calendarContainer.style.top = top + \"px\";\n if (!rightMost) {\n self.calendarContainer.style.left = left + \"px\";\n self.calendarContainer.style.right = \"auto\";\n } else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = right + \"px\";\n } else {\n var doc = getDocumentStyleSheet();\n // some testing environments don't have css support\n if (doc === undefined) return;\n var bodyWidth = window.document.body.offsetWidth;\n var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n var centerBefore = \".flatpickr-calendar.centerMost:before\";\n var centerAfter = \".flatpickr-calendar.centerMost:after\";\n var centerIndex = doc.cssRules.length;\n var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n self.calendarContainer.style.left = centerLeft + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function getDocumentStyleSheet() {\n var editableSheet = null;\n for (var i = 0; i < document.styleSheets.length; i++) {\n var sheet = document.styleSheets[i];\n try {\n sheet.cssRules;\n } catch (err) {\n continue;\n }\n editableSheet = sheet;\n break;\n }\n return editableSheet != null ? editableSheet : createStyleSheet();\n }\n function createStyleSheet() {\n var style = document.createElement(\"style\");\n document.head.appendChild(style);\n return style.sheet;\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile) return;\n buildMonthSwitch();\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 || navigator.msMaxTouchPoints !== undefined) {\n // hack - bugs in the way IE handles focus keeps the calendar open\n setTimeout(self.close, 0);\n } else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n var isSelectable = function (day) {\n return day.classList && day.classList.contains(\"flatpickr-day\") && !day.classList.contains(\"flatpickr-disabled\") && !day.classList.contains(\"notAllowed\");\n };\n var t = findParent(getEventTarget(e), isSelectable);\n if (t === undefined) return;\n var target = t;\n var selectedDate = self.latestSelectedDateObj = new Date(target.dateObj.getTime());\n var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth || selectedDate.getMonth() > self.currentMonth + self.config.showMonths - 1) && self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\") self.selectedDates = [selectedDate];else if (self.config.mode === \"multiple\") {\n var selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex) self.selectedDates.splice(parseInt(selectedIndex), 1);else self.selectedDates.push(selectedDate);\n } else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n // unless selecting same date twice, sort ascendingly\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0) self.selectedDates.sort(function (a, b) {\n return a.getTime() - b.getTime();\n });\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n var isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n // maintain focus\n if (!shouldChangeMonth && self.config.mode !== \"range\" && self.config.showMonths === 1) focusOnDayElem(target);else if (self.selectedDateElem !== undefined && self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined) self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n var single = self.config.mode === \"single\" && !self.config.enableTime;\n var range = self.config.mode === \"range\" && self.selectedDates.length === 2 && !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n var CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate]\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\") {\n Object.assign(self.config, option);\n for (var key in option) {\n if (CALLBACKS[key] !== undefined) CALLBACKS[key].forEach(function (x) {\n return x();\n });\n }\n } else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined) CALLBACKS[option].forEach(function (x) {\n return x();\n });else if (HOOKS.indexOf(option) > -1) self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(true);\n }\n function setSelectedDate(inputDate, format) {\n var dates = [];\n if (inputDate instanceof Array) dates = inputDate.map(function (d) {\n return self.parseDate(d, format);\n });else if (inputDate instanceof Date || typeof inputDate === \"number\") dates = [self.parseDate(inputDate, format)];else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate.split(self.config.conjunction).map(function (date) {\n return self.parseDate(date, format);\n });\n break;\n case \"range\":\n dates = inputDate.split(self.l10n.rangeSeparator).map(function (date) {\n return self.parseDate(date, format);\n });\n break;\n }\n } else self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n self.selectedDates = self.config.allowInvalidPreload ? dates : dates.filter(function (d) {\n return d instanceof Date && isEnabled(d, false);\n });\n if (self.config.mode === \"range\") self.selectedDates.sort(function (a, b) {\n return a.getTime() - b.getTime();\n });\n }\n function setDate(date, triggerChange, format) {\n if (triggerChange === void 0) {\n triggerChange = false;\n }\n if (format === void 0) {\n format = self.config.dateFormat;\n }\n if (date !== 0 && !date || date instanceof Array && date.length === 0) return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.latestSelectedDateObj = self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate(undefined, triggerChange);\n setHoursFromDate();\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n updateValue(triggerChange);\n if (triggerChange) triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr.slice().map(function (rule) {\n if (typeof rule === \"string\" || typeof rule === \"number\" || rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n } else if (rule && typeof rule === \"object\" && rule.from && rule.to) return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined)\n };\n return rule;\n }).filter(function (x) {\n return x;\n }); // remove falsy values\n }\n\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n // Workaround IE11 setting placeholder as the input's value\n var preloadedDate = self.config.defaultDate || ((self.input.nodeName === \"INPUT\" || self.input.nodeName === \"TEXTAREA\") && self.input.placeholder && self.input.value === self.input.placeholder ? null : self.input.value);\n if (preloadedDate) setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate = self.selectedDates.length > 0 ? self.selectedDates[0] : self.config.minDate && self.config.minDate.getTime() > self.now.getTime() ? self.config.minDate : self.config.maxDate && self.config.maxDate.getTime() < self.now.getTime() ? self.config.maxDate : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0) self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined) self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined) self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime = !!self.config.minDate && (self.config.minDate.getHours() > 0 || self.config.minDate.getMinutes() > 0 || self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime = !!self.config.maxDate && (self.config.maxDate.getHours() > 0 || self.config.maxDate.getMinutes() > 0 || self.config.maxDate.getSeconds() > 0);\n }\n function setupInputs() {\n self.input = getInputElem();\n /* istanbul ignore next */\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n // hack: store previous type to restore it after destroy()\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n // replicate self.element\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode) self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput) self._input.setAttribute(\"readonly\", \"readonly\");\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n var inputType = self.config.enableTime ? self.config.noCalendar ? \"time\" : \"datetime-local\" : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr = inputType === \"datetime-local\" ? \"Y-m-d\\\\TH:i:S\" : inputType === \"date\" ? \"Y-m-d\" : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate) self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate) self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n if (self.input.getAttribute(\"step\")) self.mobileInput.step = String(self.input.getAttribute(\"step\"));\n self.input.type = \"hidden\";\n if (self.altInput !== undefined) self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode) self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n } catch (_a) {}\n bind(self.mobileInput, \"change\", function (e) {\n self.setDate(getEventTarget(e).value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true) return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n // If the instance has been destroyed already, all hooks have been removed\n if (self.config === undefined) return;\n var hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (var i = 0; hooks[i] && i < hooks.length; i++) hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n // many front-end frameworks bind to the input event\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n var e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (var i = 0; i < self.selectedDates.length; i++) {\n if (compareDates(self.selectedDates[i], date) === 0) return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2) return false;\n return compareDates(date, self.selectedDates[0]) >= 0 && compareDates(date, self.selectedDates[1]) <= 0;\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav) return;\n self.yearElements.forEach(function (yearElement, i) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n if (self.config.showMonths > 1 || self.config.monthSelectorType === \"static\") {\n self.monthElements[i].textContent = monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n } else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow = self.config.minDate !== undefined && (self.currentYear === self.config.minDate.getFullYear() ? self.currentMonth <= self.config.minDate.getMonth() : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow = self.config.maxDate !== undefined && (self.currentYear === self.config.maxDate.getFullYear() ? self.currentMonth + 1 > self.config.maxDate.getMonth() : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(format) {\n return self.selectedDates.map(function (dObj) {\n return self.formatDate(dObj, format);\n }).filter(function (d, i, arr) {\n return self.config.mode !== \"range\" || self.config.enableTime || arr.indexOf(d) === i;\n }).join(self.config.mode !== \"range\" ? self.config.conjunction : self.l10n.rangeSeparator);\n }\n /**\n * Updates the values of inputs associated with the calendar\n */\n function updateValue(triggerChange) {\n if (triggerChange === void 0) {\n triggerChange = true;\n }\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value = self.latestSelectedDateObj !== undefined ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr) : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false) triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n var eventTarget = getEventTarget(e);\n var isPrevMonth = self.prevMonthNav.contains(eventTarget);\n var isNextMonth = self.nextMonthNav.contains(eventTarget);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n } else if (self.yearElements.indexOf(eventTarget) >= 0) {\n eventTarget.select();\n } else if (eventTarget.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n } else if (eventTarget.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n var isKeyDown = e.type === \"keydown\",\n eventTarget = getEventTarget(e),\n input = eventTarget;\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n self.amPM.textContent = self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n var min = parseFloat(input.getAttribute(\"min\")),\n max = parseFloat(input.getAttribute(\"max\")),\n step = parseFloat(input.getAttribute(\"step\")),\n curValue = parseInt(input.value, 10),\n delta = e.delta || (isKeyDown ? e.which === 38 ? 1 : -1 : 0);\n var newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n var isHourElem = input === self.hourElement,\n isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue = max + newValue + int(!isHourElem) + (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem) incrementNumInput(undefined, -1, self.hourElement);\n } else if (newValue > max) {\n newValue = input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem) incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM && isHourElem && (step === 1 ? newValue + curValue === 23 : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent = self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n }\n /* istanbul ignore next */\n function _flatpickr(nodeList, config) {\n // static list\n var nodes = Array.prototype.slice.call(nodeList).filter(function (x) {\n return x instanceof HTMLElement;\n });\n var instances = [];\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null) continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n } catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n }\n /* istanbul ignore next */\n if (typeof HTMLElement !== \"undefined\" && typeof HTMLCollection !== \"undefined\" && typeof NodeList !== \"undefined\") {\n // browser env\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n }\n /* istanbul ignore next */\n var flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n } else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n } else {\n return _flatpickr(selector, config);\n }\n };\n /* istanbul ignore next */\n flatpickr.defaultConfig = {};\n flatpickr.l10ns = {\n en: __assign({}, english),\n default: __assign({}, english)\n };\n flatpickr.localize = function (l10n) {\n flatpickr.l10ns.default = __assign(__assign({}, flatpickr.l10ns.default), l10n);\n };\n flatpickr.setDefaults = function (config) {\n flatpickr.defaultConfig = __assign(__assign({}, flatpickr.defaultConfig), config);\n };\n flatpickr.parseDate = createDateParser({});\n flatpickr.formatDate = createDateFormatter({});\n flatpickr.compareDates = compareDates;\n /* istanbul ignore next */\n if (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n }\n // eslint-disable-next-line @typescript-eslint/camelcase\n Date.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n };\n if (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n }\n return flatpickr;\n});","/*!\n * Select2 4.1.0-rc.0\n * https://select2.github.io\n *\n * Released under the MIT license\n * https://github.com/select2/select2/blob/master/LICENSE.md\n */\n;\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(['jquery'], factory);\n } else if (typeof module === 'object' && module.exports) {\n // Node/CommonJS\n module.exports = function (root, jQuery) {\n if (jQuery === undefined) {\n // require('jQuery') returns a factory that requires window to\n // build a jQuery instance, we normalize how we use modules\n // that require this pattern but the window provided is a noop\n // if it's defined (how jquery works)\n if (typeof window !== 'undefined') {\n jQuery = require('jquery');\n } else {\n jQuery = require('jquery')(root);\n }\n }\n factory(jQuery);\n return jQuery;\n };\n } else {\n // Browser globals\n factory(jQuery);\n }\n})(function (jQuery) {\n // This is needed so we can catch the AMD loader configuration and use it\n // The inner file should be wrapped (by `banner.start.js`) in a function that\n // returns the AMD loader references.\n var S2 = function () {\n // Restore the Select2 AMD loader so it can be used\n // Needed mostly in the language files, where the loader is not inserted\n if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {\n var S2 = jQuery.fn.select2.amd;\n }\n var S2;\n (function () {\n if (!S2 || !S2.requirejs) {\n if (!S2) {\n S2 = {};\n } else {\n require = S2;\n }\n /**\n * @license almond 0.3.3 Copyright jQuery Foundation and other contributors.\n * Released under MIT license, http://github.com/requirejs/almond/LICENSE\n */\n //Going sloppy to avoid 'use strict' string cost, but strict practices should\n //be followed.\n /*global setTimeout: false */\n\n var requirejs, require, define;\n (function (undef) {\n var main,\n req,\n makeMap,\n handlers,\n defined = {},\n waiting = {},\n config = {},\n defining = {},\n hasOwn = Object.prototype.hasOwnProperty,\n aps = [].slice,\n jsSuffixRegExp = /\\.js$/;\n function hasProp(obj, prop) {\n return hasOwn.call(obj, prop);\n }\n\n /**\n * Given a relative module name, like ./something, normalize it to\n * a real name that can be mapped to a path.\n * @param {String} name the relative name\n * @param {String} baseName a real name that the name arg is relative\n * to.\n * @returns {String} normalized name\n */\n function normalize(name, baseName) {\n var nameParts,\n nameSegment,\n mapValue,\n foundMap,\n lastIndex,\n foundI,\n foundStarMap,\n starI,\n i,\n j,\n part,\n normalizedBaseParts,\n baseParts = baseName && baseName.split(\"/\"),\n map = config.map,\n starMap = map && map['*'] || {};\n\n //Adjust any relative paths.\n if (name) {\n name = name.split('/');\n lastIndex = name.length - 1;\n\n // If wanting node ID compatibility, strip .js from end\n // of IDs. Have to do this here, and not in nameToUrl\n // because node allows either .js or non .js to map\n // to same file.\n if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n }\n\n // Starts with a '.' so need the baseName\n if (name[0].charAt(0) === '.' && baseParts) {\n //Convert baseName to array, and lop off the last part,\n //so that . matches that 'directory' and not name of the baseName's\n //module. For instance, baseName of 'one/two/three', maps to\n //'one/two/three.js', but we want the directory, 'one/two' for\n //this normalization.\n normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);\n name = normalizedBaseParts.concat(name);\n }\n\n //start trimDots\n for (i = 0; i < name.length; i++) {\n part = name[i];\n if (part === '.') {\n name.splice(i, 1);\n i -= 1;\n } else if (part === '..') {\n // If at the start, or previous value is still ..,\n // keep them so that when converted to a path it may\n // still work when converted to a path, even though\n // as an ID it is less than ideal. In larger point\n // releases, may be better to just kick out an error.\n if (i === 0 || i === 1 && name[2] === '..' || name[i - 1] === '..') {\n continue;\n } else if (i > 0) {\n name.splice(i - 1, 2);\n i -= 2;\n }\n }\n }\n //end trimDots\n\n name = name.join('/');\n }\n\n //Apply map config if available.\n if ((baseParts || starMap) && map) {\n nameParts = name.split('/');\n for (i = nameParts.length; i > 0; i -= 1) {\n nameSegment = nameParts.slice(0, i).join(\"/\");\n if (baseParts) {\n //Find the longest baseName segment match in the config.\n //So, do joins on the biggest to smallest lengths of baseParts.\n for (j = baseParts.length; j > 0; j -= 1) {\n mapValue = map[baseParts.slice(0, j).join('/')];\n\n //baseName segment has config, find if it has one for\n //this name.\n if (mapValue) {\n mapValue = mapValue[nameSegment];\n if (mapValue) {\n //Match, update name to the new value.\n foundMap = mapValue;\n foundI = i;\n break;\n }\n }\n }\n }\n if (foundMap) {\n break;\n }\n\n //Check for a star map match, but just hold on to it,\n //if there is a shorter segment match later in a matching\n //config, then favor over this star map.\n if (!foundStarMap && starMap && starMap[nameSegment]) {\n foundStarMap = starMap[nameSegment];\n starI = i;\n }\n }\n if (!foundMap && foundStarMap) {\n foundMap = foundStarMap;\n foundI = starI;\n }\n if (foundMap) {\n nameParts.splice(0, foundI, foundMap);\n name = nameParts.join('/');\n }\n }\n return name;\n }\n function makeRequire(relName, forceSync) {\n return function () {\n //A version of a require function that passes a moduleName\n //value for items that may need to\n //look up paths relative to the moduleName\n var args = aps.call(arguments, 0);\n\n //If first arg is not require('string'), and there is only\n //one arg, it is the array form without a callback. Insert\n //a null so that the following concat is correct.\n if (typeof args[0] !== 'string' && args.length === 1) {\n args.push(null);\n }\n return req.apply(undef, args.concat([relName, forceSync]));\n };\n }\n function makeNormalize(relName) {\n return function (name) {\n return normalize(name, relName);\n };\n }\n function makeLoad(depName) {\n return function (value) {\n defined[depName] = value;\n };\n }\n function callDep(name) {\n if (hasProp(waiting, name)) {\n var args = waiting[name];\n delete waiting[name];\n defining[name] = true;\n main.apply(undef, args);\n }\n if (!hasProp(defined, name) && !hasProp(defining, name)) {\n throw new Error('No ' + name);\n }\n return defined[name];\n }\n\n //Turns a plugin!resource to [plugin, resource]\n //with the plugin being undefined if the name\n //did not have a plugin prefix.\n function splitPrefix(name) {\n var prefix,\n index = name ? name.indexOf('!') : -1;\n if (index > -1) {\n prefix = name.substring(0, index);\n name = name.substring(index + 1, name.length);\n }\n return [prefix, name];\n }\n\n //Creates a parts array for a relName where first part is plugin ID,\n //second part is resource ID. Assumes relName has already been normalized.\n function makeRelParts(relName) {\n return relName ? splitPrefix(relName) : [];\n }\n\n /**\n * Makes a name map, normalizing the name, and using a plugin\n * for normalization if necessary. Grabs a ref to plugin\n * too, as an optimization.\n */\n makeMap = function (name, relParts) {\n var plugin,\n parts = splitPrefix(name),\n prefix = parts[0],\n relResourceName = relParts[1];\n name = parts[1];\n if (prefix) {\n prefix = normalize(prefix, relResourceName);\n plugin = callDep(prefix);\n }\n\n //Normalize according\n if (prefix) {\n if (plugin && plugin.normalize) {\n name = plugin.normalize(name, makeNormalize(relResourceName));\n } else {\n name = normalize(name, relResourceName);\n }\n } else {\n name = normalize(name, relResourceName);\n parts = splitPrefix(name);\n prefix = parts[0];\n name = parts[1];\n if (prefix) {\n plugin = callDep(prefix);\n }\n }\n\n //Using ridiculous property names for space reasons\n return {\n f: prefix ? prefix + '!' + name : name,\n //fullName\n n: name,\n pr: prefix,\n p: plugin\n };\n };\n function makeConfig(name) {\n return function () {\n return config && config.config && config.config[name] || {};\n };\n }\n handlers = {\n require: function (name) {\n return makeRequire(name);\n },\n exports: function (name) {\n var e = defined[name];\n if (typeof e !== 'undefined') {\n return e;\n } else {\n return defined[name] = {};\n }\n },\n module: function (name) {\n return {\n id: name,\n uri: '',\n exports: defined[name],\n config: makeConfig(name)\n };\n }\n };\n main = function (name, deps, callback, relName) {\n var cjsModule,\n depName,\n ret,\n map,\n i,\n relParts,\n args = [],\n callbackType = typeof callback,\n usingExports;\n\n //Use name if no relName\n relName = relName || name;\n relParts = makeRelParts(relName);\n\n //Call the callback to define the module, if necessary.\n if (callbackType === 'undefined' || callbackType === 'function') {\n //Pull out the defined dependencies and pass the ordered\n //values to the callback.\n //Default to [require, exports, module] if no deps\n deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n for (i = 0; i < deps.length; i += 1) {\n map = makeMap(deps[i], relParts);\n depName = map.f;\n\n //Fast path CommonJS standard dependencies.\n if (depName === \"require\") {\n args[i] = handlers.require(name);\n } else if (depName === \"exports\") {\n //CommonJS module spec 1.1\n args[i] = handlers.exports(name);\n usingExports = true;\n } else if (depName === \"module\") {\n //CommonJS module spec 1.1\n cjsModule = args[i] = handlers.module(name);\n } else if (hasProp(defined, depName) || hasProp(waiting, depName) || hasProp(defining, depName)) {\n args[i] = callDep(depName);\n } else if (map.p) {\n map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n args[i] = defined[depName];\n } else {\n throw new Error(name + ' missing ' + depName);\n }\n }\n ret = callback ? callback.apply(defined[name], args) : undefined;\n if (name) {\n //If setting exports via \"module\" is in play,\n //favor that over return value and exports. After that,\n //favor a non-undefined return value over exports use.\n if (cjsModule && cjsModule.exports !== undef && cjsModule.exports !== defined[name]) {\n defined[name] = cjsModule.exports;\n } else if (ret !== undef || !usingExports) {\n //Use the return value from the function.\n defined[name] = ret;\n }\n }\n } else if (name) {\n //May just be an object definition for the module. Only\n //worry about defining if have a module name.\n defined[name] = callback;\n }\n };\n requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\n if (typeof deps === \"string\") {\n if (handlers[deps]) {\n //callback in this case is really relName\n return handlers[deps](callback);\n }\n //Just return the module wanted. In this scenario, the\n //deps arg is the module name, and second arg (if passed)\n //is just the relName.\n //Normalize module name, if it contains . or ..\n return callDep(makeMap(deps, makeRelParts(callback)).f);\n } else if (!deps.splice) {\n //deps is a config object, not an array.\n config = deps;\n if (config.deps) {\n req(config.deps, config.callback);\n }\n if (!callback) {\n return;\n }\n if (callback.splice) {\n //callback is an array, which means it is a dependency list.\n //Adjust args if there are dependencies\n deps = callback;\n callback = relName;\n relName = null;\n } else {\n deps = undef;\n }\n }\n\n //Support require(['a'])\n callback = callback || function () {};\n\n //If relName is a function, it is an errback handler,\n //so remove it.\n if (typeof relName === 'function') {\n relName = forceSync;\n forceSync = alt;\n }\n\n //Simulate async callback;\n if (forceSync) {\n main(undef, deps, callback, relName);\n } else {\n //Using a non-zero value because of concern for what old browsers\n //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n //If want a value immediately, use require('id') instead -- something\n //that works in almond on the global level, but not guaranteed and\n //unlikely to work in other AMD implementations.\n setTimeout(function () {\n main(undef, deps, callback, relName);\n }, 4);\n }\n return req;\n };\n\n /**\n * Just drops the config on the floor, but returns req in case\n * the config return value is used.\n */\n req.config = function (cfg) {\n return req(cfg);\n };\n\n /**\n * Expose module registry for debugging and tooling\n */\n requirejs._defined = defined;\n define = function (name, deps, callback) {\n if (typeof name !== 'string') {\n throw new Error('See almond README: incorrect module build, no module name');\n }\n\n //This module may not have dependencies\n if (!deps.splice) {\n //deps is not an array, so probably means\n //an object literal or factory function for\n //the value. Adjust args.\n callback = deps;\n deps = [];\n }\n if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n waiting[name] = [name, deps, callback];\n }\n };\n define.amd = {\n jQuery: true\n };\n })();\n S2.requirejs = requirejs;\n S2.require = require;\n S2.define = define;\n }\n })();\n S2.define(\"almond\", function () {});\n\n /* global jQuery:false, $:false */\n S2.define('jquery', [], function () {\n var _$ = jQuery || $;\n if (_$ == null && console && console.error) {\n console.error('Select2: An instance of jQuery or a jQuery-compatible library was not ' + 'found. Make sure that you are including jQuery before Select2 on your ' + 'web page.');\n }\n return _$;\n });\n S2.define('select2/utils', ['jquery'], function ($) {\n var Utils = {};\n Utils.Extend = function (ChildClass, SuperClass) {\n var __hasProp = {}.hasOwnProperty;\n function BaseConstructor() {\n this.constructor = ChildClass;\n }\n for (var key in SuperClass) {\n if (__hasProp.call(SuperClass, key)) {\n ChildClass[key] = SuperClass[key];\n }\n }\n BaseConstructor.prototype = SuperClass.prototype;\n ChildClass.prototype = new BaseConstructor();\n ChildClass.__super__ = SuperClass.prototype;\n return ChildClass;\n };\n function getMethods(theClass) {\n var proto = theClass.prototype;\n var methods = [];\n for (var methodName in proto) {\n var m = proto[methodName];\n if (typeof m !== 'function') {\n continue;\n }\n if (methodName === 'constructor') {\n continue;\n }\n methods.push(methodName);\n }\n return methods;\n }\n Utils.Decorate = function (SuperClass, DecoratorClass) {\n var decoratedMethods = getMethods(DecoratorClass);\n var superMethods = getMethods(SuperClass);\n function DecoratedClass() {\n var unshift = Array.prototype.unshift;\n var argCount = DecoratorClass.prototype.constructor.length;\n var calledConstructor = SuperClass.prototype.constructor;\n if (argCount > 0) {\n unshift.call(arguments, SuperClass.prototype.constructor);\n calledConstructor = DecoratorClass.prototype.constructor;\n }\n calledConstructor.apply(this, arguments);\n }\n DecoratorClass.displayName = SuperClass.displayName;\n function ctr() {\n this.constructor = DecoratedClass;\n }\n DecoratedClass.prototype = new ctr();\n for (var m = 0; m < superMethods.length; m++) {\n var superMethod = superMethods[m];\n DecoratedClass.prototype[superMethod] = SuperClass.prototype[superMethod];\n }\n var calledMethod = function (methodName) {\n // Stub out the original method if it's not decorating an actual method\n var originalMethod = function () {};\n if (methodName in DecoratedClass.prototype) {\n originalMethod = DecoratedClass.prototype[methodName];\n }\n var decoratedMethod = DecoratorClass.prototype[methodName];\n return function () {\n var unshift = Array.prototype.unshift;\n unshift.call(arguments, originalMethod);\n return decoratedMethod.apply(this, arguments);\n };\n };\n for (var d = 0; d < decoratedMethods.length; d++) {\n var decoratedMethod = decoratedMethods[d];\n DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\n }\n return DecoratedClass;\n };\n var Observable = function () {\n this.listeners = {};\n };\n Observable.prototype.on = function (event, callback) {\n this.listeners = this.listeners || {};\n if (event in this.listeners) {\n this.listeners[event].push(callback);\n } else {\n this.listeners[event] = [callback];\n }\n };\n Observable.prototype.trigger = function (event) {\n var slice = Array.prototype.slice;\n var params = slice.call(arguments, 1);\n this.listeners = this.listeners || {};\n\n // Params should always come in as an array\n if (params == null) {\n params = [];\n }\n\n // If there are no arguments to the event, use a temporary object\n if (params.length === 0) {\n params.push({});\n }\n\n // Set the `_type` of the first object to the event\n params[0]._type = event;\n if (event in this.listeners) {\n this.invoke(this.listeners[event], slice.call(arguments, 1));\n }\n if ('*' in this.listeners) {\n this.invoke(this.listeners['*'], arguments);\n }\n };\n Observable.prototype.invoke = function (listeners, params) {\n for (var i = 0, len = listeners.length; i < len; i++) {\n listeners[i].apply(this, params);\n }\n };\n Utils.Observable = Observable;\n Utils.generateChars = function (length) {\n var chars = '';\n for (var i = 0; i < length; i++) {\n var randomChar = Math.floor(Math.random() * 36);\n chars += randomChar.toString(36);\n }\n return chars;\n };\n Utils.bind = function (func, context) {\n return function () {\n func.apply(context, arguments);\n };\n };\n Utils._convertData = function (data) {\n for (var originalKey in data) {\n var keys = originalKey.split('-');\n var dataLevel = data;\n if (keys.length === 1) {\n continue;\n }\n for (var k = 0; k < keys.length; k++) {\n var key = keys[k];\n\n // Lowercase the first letter\n // By default, dash-separated becomes camelCase\n key = key.substring(0, 1).toLowerCase() + key.substring(1);\n if (!(key in dataLevel)) {\n dataLevel[key] = {};\n }\n if (k == keys.length - 1) {\n dataLevel[key] = data[originalKey];\n }\n dataLevel = dataLevel[key];\n }\n delete data[originalKey];\n }\n return data;\n };\n Utils.hasScroll = function (index, el) {\n // Adapted from the function created by @ShadowScripter\n // and adapted by @BillBarry on the Stack Exchange Code Review website.\n // The original code can be found at\n // http://codereview.stackexchange.com/q/13338\n // and was designed to be used with the Sizzle selector engine.\n\n var $el = $(el);\n var overflowX = el.style.overflowX;\n var overflowY = el.style.overflowY;\n\n //Check both x and y declarations\n if (overflowX === overflowY && (overflowY === 'hidden' || overflowY === 'visible')) {\n return false;\n }\n if (overflowX === 'scroll' || overflowY === 'scroll') {\n return true;\n }\n return $el.innerHeight() < el.scrollHeight || $el.innerWidth() < el.scrollWidth;\n };\n Utils.escapeMarkup = function (markup) {\n var replaceMap = {\n '\\\\': '\',\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': ''',\n '/': '/'\n };\n\n // Do not try to escape the markup if it's not a string\n if (typeof markup !== 'string') {\n return markup;\n }\n return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n return replaceMap[match];\n });\n };\n\n // Cache objects in Utils.__cache instead of $.data (see #4346)\n Utils.__cache = {};\n var id = 0;\n Utils.GetUniqueElementId = function (element) {\n // Get a unique element Id. If element has no id,\n // creates a new unique number, stores it in the id\n // attribute and returns the new id with a prefix.\n // If an id already exists, it simply returns it with a prefix.\n\n var select2Id = element.getAttribute('data-select2-id');\n if (select2Id != null) {\n return select2Id;\n }\n\n // If element has id, use it.\n if (element.id) {\n select2Id = 'select2-data-' + element.id;\n } else {\n select2Id = 'select2-data-' + (++id).toString() + '-' + Utils.generateChars(4);\n }\n element.setAttribute('data-select2-id', select2Id);\n return select2Id;\n };\n Utils.StoreData = function (element, name, value) {\n // Stores an item in the cache for a specified element.\n // name is the cache key.\n var id = Utils.GetUniqueElementId(element);\n if (!Utils.__cache[id]) {\n Utils.__cache[id] = {};\n }\n Utils.__cache[id][name] = value;\n };\n Utils.GetData = function (element, name) {\n // Retrieves a value from the cache by its key (name)\n // name is optional. If no name specified, return\n // all cache items for the specified element.\n // and for a specified element.\n var id = Utils.GetUniqueElementId(element);\n if (name) {\n if (Utils.__cache[id]) {\n if (Utils.__cache[id][name] != null) {\n return Utils.__cache[id][name];\n }\n return $(element).data(name); // Fallback to HTML5 data attribs.\n }\n\n return $(element).data(name); // Fallback to HTML5 data attribs.\n } else {\n return Utils.__cache[id];\n }\n };\n Utils.RemoveData = function (element) {\n // Removes all cached items for a specified element.\n var id = Utils.GetUniqueElementId(element);\n if (Utils.__cache[id] != null) {\n delete Utils.__cache[id];\n }\n element.removeAttribute('data-select2-id');\n };\n Utils.copyNonInternalCssClasses = function (dest, src) {\n var classes;\n var destinationClasses = dest.getAttribute('class').trim().split(/\\s+/);\n destinationClasses = destinationClasses.filter(function (clazz) {\n // Save all Select2 classes\n return clazz.indexOf('select2-') === 0;\n });\n var sourceClasses = src.getAttribute('class').trim().split(/\\s+/);\n sourceClasses = sourceClasses.filter(function (clazz) {\n // Only copy non-Select2 classes\n return clazz.indexOf('select2-') !== 0;\n });\n var replacements = destinationClasses.concat(sourceClasses);\n dest.setAttribute('class', replacements.join(' '));\n };\n return Utils;\n });\n S2.define('select2/results', ['jquery', './utils'], function ($, Utils) {\n function Results($element, options, dataAdapter) {\n this.$element = $element;\n this.data = dataAdapter;\n this.options = options;\n Results.__super__.constructor.call(this);\n }\n Utils.Extend(Results, Utils.Observable);\n Results.prototype.render = function () {\n var $results = $('<ul class=\"select2-results__options\" role=\"listbox\"></ul>');\n if (this.options.get('multiple')) {\n $results.attr('aria-multiselectable', 'true');\n }\n this.$results = $results;\n return $results;\n };\n Results.prototype.clear = function () {\n this.$results.empty();\n };\n Results.prototype.displayMessage = function (params) {\n var escapeMarkup = this.options.get('escapeMarkup');\n this.clear();\n this.hideLoading();\n var $message = $('<li role=\"alert\" aria-live=\"assertive\"' + ' class=\"select2-results__option\"></li>');\n var message = this.options.get('translations').get(params.message);\n $message.append(escapeMarkup(message(params.args)));\n $message[0].className += ' select2-results__message';\n this.$results.append($message);\n };\n Results.prototype.hideMessages = function () {\n this.$results.find('.select2-results__message').remove();\n };\n Results.prototype.append = function (data) {\n this.hideLoading();\n var $options = [];\n if (data.results == null || data.results.length === 0) {\n if (this.$results.children().length === 0) {\n this.trigger('results:message', {\n message: 'noResults'\n });\n }\n return;\n }\n data.results = this.sort(data.results);\n for (var d = 0; d < data.results.length; d++) {\n var item = data.results[d];\n var $option = this.option(item);\n $options.push($option);\n }\n this.$results.append($options);\n };\n Results.prototype.position = function ($results, $dropdown) {\n var $resultsContainer = $dropdown.find('.select2-results');\n $resultsContainer.append($results);\n };\n Results.prototype.sort = function (data) {\n var sorter = this.options.get('sorter');\n return sorter(data);\n };\n Results.prototype.highlightFirstItem = function () {\n var $options = this.$results.find('.select2-results__option--selectable');\n var $selected = $options.filter('.select2-results__option--selected');\n\n // Check if there are any selected options\n if ($selected.length > 0) {\n // If there are selected options, highlight the first\n $selected.first().trigger('mouseenter');\n } else {\n // If there are no selected options, highlight the first option\n // in the dropdown\n $options.first().trigger('mouseenter');\n }\n this.ensureHighlightVisible();\n };\n Results.prototype.setClasses = function () {\n var self = this;\n this.data.current(function (selected) {\n var selectedIds = selected.map(function (s) {\n return s.id.toString();\n });\n var $options = self.$results.find('.select2-results__option--selectable');\n $options.each(function () {\n var $option = $(this);\n var item = Utils.GetData(this, 'data');\n\n // id needs to be converted to a string when comparing\n var id = '' + item.id;\n if (item.element != null && item.element.selected || item.element == null && selectedIds.indexOf(id) > -1) {\n this.classList.add('select2-results__option--selected');\n $option.attr('aria-selected', 'true');\n } else {\n this.classList.remove('select2-results__option--selected');\n $option.attr('aria-selected', 'false');\n }\n });\n });\n };\n Results.prototype.showLoading = function (params) {\n this.hideLoading();\n var loadingMore = this.options.get('translations').get('searching');\n var loading = {\n disabled: true,\n loading: true,\n text: loadingMore(params)\n };\n var $loading = this.option(loading);\n $loading.className += ' loading-results';\n this.$results.prepend($loading);\n };\n Results.prototype.hideLoading = function () {\n this.$results.find('.loading-results').remove();\n };\n Results.prototype.option = function (data) {\n var option = document.createElement('li');\n option.classList.add('select2-results__option');\n option.classList.add('select2-results__option--selectable');\n var attrs = {\n 'role': 'option'\n };\n var matches = window.Element.prototype.matches || window.Element.prototype.msMatchesSelector || window.Element.prototype.webkitMatchesSelector;\n if (data.element != null && matches.call(data.element, ':disabled') || data.element == null && data.disabled) {\n attrs['aria-disabled'] = 'true';\n option.classList.remove('select2-results__option--selectable');\n option.classList.add('select2-results__option--disabled');\n }\n if (data.id == null) {\n option.classList.remove('select2-results__option--selectable');\n }\n if (data._resultId != null) {\n option.id = data._resultId;\n }\n if (data.title) {\n option.title = data.title;\n }\n if (data.children) {\n attrs.role = 'group';\n attrs['aria-label'] = data.text;\n option.classList.remove('select2-results__option--selectable');\n option.classList.add('select2-results__option--group');\n }\n for (var attr in attrs) {\n var val = attrs[attr];\n option.setAttribute(attr, val);\n }\n if (data.children) {\n var $option = $(option);\n var label = document.createElement('strong');\n label.className = 'select2-results__group';\n this.template(data, label);\n var $children = [];\n for (var c = 0; c < data.children.length; c++) {\n var child = data.children[c];\n var $child = this.option(child);\n $children.push($child);\n }\n var $childrenContainer = $('<ul></ul>', {\n 'class': 'select2-results__options select2-results__options--nested',\n 'role': 'none'\n });\n $childrenContainer.append($children);\n $option.append(label);\n $option.append($childrenContainer);\n } else {\n this.template(data, option);\n }\n Utils.StoreData(option, 'data', data);\n return option;\n };\n Results.prototype.bind = function (container, $container) {\n var self = this;\n var id = container.id + '-results';\n this.$results.attr('id', id);\n container.on('results:all', function (params) {\n self.clear();\n self.append(params.data);\n if (container.isOpen()) {\n self.setClasses();\n self.highlightFirstItem();\n }\n });\n container.on('results:append', function (params) {\n self.append(params.data);\n if (container.isOpen()) {\n self.setClasses();\n }\n });\n container.on('query', function (params) {\n self.hideMessages();\n self.showLoading(params);\n });\n container.on('select', function () {\n if (!container.isOpen()) {\n return;\n }\n self.setClasses();\n if (self.options.get('scrollAfterSelect')) {\n self.highlightFirstItem();\n }\n });\n container.on('unselect', function () {\n if (!container.isOpen()) {\n return;\n }\n self.setClasses();\n if (self.options.get('scrollAfterSelect')) {\n self.highlightFirstItem();\n }\n });\n container.on('open', function () {\n // When the dropdown is open, aria-expended=\"true\"\n self.$results.attr('aria-expanded', 'true');\n self.$results.attr('aria-hidden', 'false');\n self.setClasses();\n self.ensureHighlightVisible();\n });\n container.on('close', function () {\n // When the dropdown is closed, aria-expended=\"false\"\n self.$results.attr('aria-expanded', 'false');\n self.$results.attr('aria-hidden', 'true');\n self.$results.removeAttr('aria-activedescendant');\n });\n container.on('results:toggle', function () {\n var $highlighted = self.getHighlightedResults();\n if ($highlighted.length === 0) {\n return;\n }\n $highlighted.trigger('mouseup');\n });\n container.on('results:select', function () {\n var $highlighted = self.getHighlightedResults();\n if ($highlighted.length === 0) {\n return;\n }\n var data = Utils.GetData($highlighted[0], 'data');\n if ($highlighted.hasClass('select2-results__option--selected')) {\n self.trigger('close', {});\n } else {\n self.trigger('select', {\n data: data\n });\n }\n });\n container.on('results:previous', function () {\n var $highlighted = self.getHighlightedResults();\n var $options = self.$results.find('.select2-results__option--selectable');\n var currentIndex = $options.index($highlighted);\n\n // If we are already at the top, don't move further\n // If no options, currentIndex will be -1\n if (currentIndex <= 0) {\n return;\n }\n var nextIndex = currentIndex - 1;\n\n // If none are highlighted, highlight the first\n if ($highlighted.length === 0) {\n nextIndex = 0;\n }\n var $next = $options.eq(nextIndex);\n $next.trigger('mouseenter');\n var currentOffset = self.$results.offset().top;\n var nextTop = $next.offset().top;\n var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\n if (nextIndex === 0) {\n self.$results.scrollTop(0);\n } else if (nextTop - currentOffset < 0) {\n self.$results.scrollTop(nextOffset);\n }\n });\n container.on('results:next', function () {\n var $highlighted = self.getHighlightedResults();\n var $options = self.$results.find('.select2-results__option--selectable');\n var currentIndex = $options.index($highlighted);\n var nextIndex = currentIndex + 1;\n\n // If we are at the last option, stay there\n if (nextIndex >= $options.length) {\n return;\n }\n var $next = $options.eq(nextIndex);\n $next.trigger('mouseenter');\n var currentOffset = self.$results.offset().top + self.$results.outerHeight(false);\n var nextBottom = $next.offset().top + $next.outerHeight(false);\n var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\n if (nextIndex === 0) {\n self.$results.scrollTop(0);\n } else if (nextBottom > currentOffset) {\n self.$results.scrollTop(nextOffset);\n }\n });\n container.on('results:focus', function (params) {\n params.element[0].classList.add('select2-results__option--highlighted');\n params.element[0].setAttribute('aria-selected', 'true');\n });\n container.on('results:message', function (params) {\n self.displayMessage(params);\n });\n if ($.fn.mousewheel) {\n this.$results.on('mousewheel', function (e) {\n var top = self.$results.scrollTop();\n var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\n var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\n var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\n if (isAtTop) {\n self.$results.scrollTop(0);\n e.preventDefault();\n e.stopPropagation();\n } else if (isAtBottom) {\n self.$results.scrollTop(self.$results.get(0).scrollHeight - self.$results.height());\n e.preventDefault();\n e.stopPropagation();\n }\n });\n }\n this.$results.on('mouseup', '.select2-results__option--selectable', function (evt) {\n var $this = $(this);\n var data = Utils.GetData(this, 'data');\n if ($this.hasClass('select2-results__option--selected')) {\n if (self.options.get('multiple')) {\n self.trigger('unselect', {\n originalEvent: evt,\n data: data\n });\n } else {\n self.trigger('close', {});\n }\n return;\n }\n self.trigger('select', {\n originalEvent: evt,\n data: data\n });\n });\n this.$results.on('mouseenter', '.select2-results__option--selectable', function (evt) {\n var data = Utils.GetData(this, 'data');\n self.getHighlightedResults().removeClass('select2-results__option--highlighted').attr('aria-selected', 'false');\n self.trigger('results:focus', {\n data: data,\n element: $(this)\n });\n });\n };\n Results.prototype.getHighlightedResults = function () {\n var $highlighted = this.$results.find('.select2-results__option--highlighted');\n return $highlighted;\n };\n Results.prototype.destroy = function () {\n this.$results.remove();\n };\n Results.prototype.ensureHighlightVisible = function () {\n var $highlighted = this.getHighlightedResults();\n if ($highlighted.length === 0) {\n return;\n }\n var $options = this.$results.find('.select2-results__option--selectable');\n var currentIndex = $options.index($highlighted);\n var currentOffset = this.$results.offset().top;\n var nextTop = $highlighted.offset().top;\n var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\n var offsetDelta = nextTop - currentOffset;\n nextOffset -= $highlighted.outerHeight(false) * 2;\n if (currentIndex <= 2) {\n this.$results.scrollTop(0);\n } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {\n this.$results.scrollTop(nextOffset);\n }\n };\n Results.prototype.template = function (result, container) {\n var template = this.options.get('templateResult');\n var escapeMarkup = this.options.get('escapeMarkup');\n var content = template(result, container);\n if (content == null) {\n container.style.display = 'none';\n } else if (typeof content === 'string') {\n container.innerHTML = escapeMarkup(content);\n } else {\n $(container).append(content);\n }\n };\n return Results;\n });\n S2.define('select2/keys', [], function () {\n var KEYS = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n SHIFT: 16,\n CTRL: 17,\n ALT: 18,\n ESC: 27,\n SPACE: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n END: 35,\n HOME: 36,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46\n };\n return KEYS;\n });\n S2.define('select2/selection/base', ['jquery', '../utils', '../keys'], function ($, Utils, KEYS) {\n function BaseSelection($element, options) {\n this.$element = $element;\n this.options = options;\n BaseSelection.__super__.constructor.call(this);\n }\n Utils.Extend(BaseSelection, Utils.Observable);\n BaseSelection.prototype.render = function () {\n var $selection = $('<span class=\"select2-selection\" role=\"combobox\" ' + ' aria-haspopup=\"true\" aria-expanded=\"false\">' + '</span>');\n this._tabindex = 0;\n if (Utils.GetData(this.$element[0], 'old-tabindex') != null) {\n this._tabindex = Utils.GetData(this.$element[0], 'old-tabindex');\n } else if (this.$element.attr('tabindex') != null) {\n this._tabindex = this.$element.attr('tabindex');\n }\n $selection.attr('title', this.$element.attr('title'));\n $selection.attr('tabindex', this._tabindex);\n $selection.attr('aria-disabled', 'false');\n this.$selection = $selection;\n return $selection;\n };\n BaseSelection.prototype.bind = function (container, $container) {\n var self = this;\n var resultsId = container.id + '-results';\n this.container = container;\n this.$selection.on('focus', function (evt) {\n self.trigger('focus', evt);\n });\n this.$selection.on('blur', function (evt) {\n self._handleBlur(evt);\n });\n this.$selection.on('keydown', function (evt) {\n self.trigger('keypress', evt);\n if (evt.which === KEYS.SPACE) {\n evt.preventDefault();\n }\n });\n container.on('results:focus', function (params) {\n self.$selection.attr('aria-activedescendant', params.data._resultId);\n });\n container.on('selection:update', function (params) {\n self.update(params.data);\n });\n container.on('open', function () {\n // When the dropdown is open, aria-expanded=\"true\"\n self.$selection.attr('aria-expanded', 'true');\n self.$selection.attr('aria-owns', resultsId);\n self._attachCloseHandler(container);\n });\n container.on('close', function () {\n // When the dropdown is closed, aria-expanded=\"false\"\n self.$selection.attr('aria-expanded', 'false');\n self.$selection.removeAttr('aria-activedescendant');\n self.$selection.removeAttr('aria-owns');\n self.$selection.trigger('focus');\n self._detachCloseHandler(container);\n });\n container.on('enable', function () {\n self.$selection.attr('tabindex', self._tabindex);\n self.$selection.attr('aria-disabled', 'false');\n });\n container.on('disable', function () {\n self.$selection.attr('tabindex', '-1');\n self.$selection.attr('aria-disabled', 'true');\n });\n };\n BaseSelection.prototype._handleBlur = function (evt) {\n var self = this;\n\n // This needs to be delayed as the active element is the body when the tab\n // key is pressed, possibly along with others.\n window.setTimeout(function () {\n // Don't trigger `blur` if the focus is still in the selection\n if (document.activeElement == self.$selection[0] || $.contains(self.$selection[0], document.activeElement)) {\n return;\n }\n self.trigger('blur', evt);\n }, 1);\n };\n BaseSelection.prototype._attachCloseHandler = function (container) {\n $(document.body).on('mousedown.select2.' + container.id, function (e) {\n var $target = $(e.target);\n var $select = $target.closest('.select2');\n var $all = $('.select2.select2-container--open');\n $all.each(function () {\n if (this == $select[0]) {\n return;\n }\n var $element = Utils.GetData(this, 'element');\n $element.select2('close');\n });\n });\n };\n BaseSelection.prototype._detachCloseHandler = function (container) {\n $(document.body).off('mousedown.select2.' + container.id);\n };\n BaseSelection.prototype.position = function ($selection, $container) {\n var $selectionContainer = $container.find('.selection');\n $selectionContainer.append($selection);\n };\n BaseSelection.prototype.destroy = function () {\n this._detachCloseHandler(this.container);\n };\n BaseSelection.prototype.update = function (data) {\n throw new Error('The `update` method must be defined in child classes.');\n };\n\n /**\n * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n * object.\n *\n * @return {true} if the instance is not disabled.\n * @return {false} if the instance is disabled.\n */\n BaseSelection.prototype.isEnabled = function () {\n return !this.isDisabled();\n };\n\n /**\n * Helper method to abstract the \"disabled\" state of this object.\n *\n * @return {true} if the disabled option is true.\n * @return {false} if the disabled option is false.\n */\n BaseSelection.prototype.isDisabled = function () {\n return this.options.get('disabled');\n };\n return BaseSelection;\n });\n S2.define('select2/selection/single', ['jquery', './base', '../utils', '../keys'], function ($, BaseSelection, Utils, KEYS) {\n function SingleSelection() {\n SingleSelection.__super__.constructor.apply(this, arguments);\n }\n Utils.Extend(SingleSelection, BaseSelection);\n SingleSelection.prototype.render = function () {\n var $selection = SingleSelection.__super__.render.call(this);\n $selection[0].classList.add('select2-selection--single');\n $selection.html('<span class=\"select2-selection__rendered\"></span>' + '<span class=\"select2-selection__arrow\" role=\"presentation\">' + '<b role=\"presentation\"></b>' + '</span>');\n return $selection;\n };\n SingleSelection.prototype.bind = function (container, $container) {\n var self = this;\n SingleSelection.__super__.bind.apply(this, arguments);\n var id = container.id + '-container';\n this.$selection.find('.select2-selection__rendered').attr('id', id).attr('role', 'textbox').attr('aria-readonly', 'true');\n this.$selection.attr('aria-labelledby', id);\n this.$selection.attr('aria-controls', id);\n this.$selection.on('mousedown', function (evt) {\n // Only respond to left clicks\n if (evt.which !== 1) {\n return;\n }\n self.trigger('toggle', {\n originalEvent: evt\n });\n });\n this.$selection.on('focus', function (evt) {\n // User focuses on the container\n });\n this.$selection.on('blur', function (evt) {\n // User exits the container\n });\n container.on('focus', function (evt) {\n if (!container.isOpen()) {\n self.$selection.trigger('focus');\n }\n });\n };\n SingleSelection.prototype.clear = function () {\n var $rendered = this.$selection.find('.select2-selection__rendered');\n $rendered.empty();\n $rendered.removeAttr('title'); // clear tooltip on empty\n };\n\n SingleSelection.prototype.display = function (data, container) {\n var template = this.options.get('templateSelection');\n var escapeMarkup = this.options.get('escapeMarkup');\n return escapeMarkup(template(data, container));\n };\n SingleSelection.prototype.selectionContainer = function () {\n return $('<span></span>');\n };\n SingleSelection.prototype.update = function (data) {\n if (data.length === 0) {\n this.clear();\n return;\n }\n var selection = data[0];\n var $rendered = this.$selection.find('.select2-selection__rendered');\n var formatted = this.display(selection, $rendered);\n $rendered.empty().append(formatted);\n var title = selection.title || selection.text;\n if (title) {\n $rendered.attr('title', title);\n } else {\n $rendered.removeAttr('title');\n }\n };\n return SingleSelection;\n });\n S2.define('select2/selection/multiple', ['jquery', './base', '../utils'], function ($, BaseSelection, Utils) {\n function MultipleSelection($element, options) {\n MultipleSelection.__super__.constructor.apply(this, arguments);\n }\n Utils.Extend(MultipleSelection, BaseSelection);\n MultipleSelection.prototype.render = function () {\n var $selection = MultipleSelection.__super__.render.call(this);\n $selection[0].classList.add('select2-selection--multiple');\n $selection.html('<ul class=\"select2-selection__rendered\"></ul>');\n return $selection;\n };\n MultipleSelection.prototype.bind = function (container, $container) {\n var self = this;\n MultipleSelection.__super__.bind.apply(this, arguments);\n var id = container.id + '-container';\n this.$selection.find('.select2-selection__rendered').attr('id', id);\n this.$selection.on('click', function (evt) {\n self.trigger('toggle', {\n originalEvent: evt\n });\n });\n this.$selection.on('click', '.select2-selection__choice__remove', function (evt) {\n // Ignore the event if it is disabled\n if (self.isDisabled()) {\n return;\n }\n var $remove = $(this);\n var $selection = $remove.parent();\n var data = Utils.GetData($selection[0], 'data');\n self.trigger('unselect', {\n originalEvent: evt,\n data: data\n });\n });\n this.$selection.on('keydown', '.select2-selection__choice__remove', function (evt) {\n // Ignore the event if it is disabled\n if (self.isDisabled()) {\n return;\n }\n evt.stopPropagation();\n });\n };\n MultipleSelection.prototype.clear = function () {\n var $rendered = this.$selection.find('.select2-selection__rendered');\n $rendered.empty();\n $rendered.removeAttr('title');\n };\n MultipleSelection.prototype.display = function (data, container) {\n var template = this.options.get('templateSelection');\n var escapeMarkup = this.options.get('escapeMarkup');\n return escapeMarkup(template(data, container));\n };\n MultipleSelection.prototype.selectionContainer = function () {\n var $container = $('<li class=\"select2-selection__choice\">' + '<button type=\"button\" class=\"select2-selection__choice__remove\" ' + 'tabindex=\"-1\">' + '<span aria-hidden=\"true\">×</span>' + '</button>' + '<span class=\"select2-selection__choice__display\"></span>' + '</li>');\n return $container;\n };\n MultipleSelection.prototype.update = function (data) {\n this.clear();\n if (data.length === 0) {\n return;\n }\n var $selections = [];\n var selectionIdPrefix = this.$selection.find('.select2-selection__rendered').attr('id') + '-choice-';\n for (var d = 0; d < data.length; d++) {\n var selection = data[d];\n var $selection = this.selectionContainer();\n var formatted = this.display(selection, $selection);\n var selectionId = selectionIdPrefix + Utils.generateChars(4) + '-';\n if (selection.id) {\n selectionId += selection.id;\n } else {\n selectionId += Utils.generateChars(4);\n }\n $selection.find('.select2-selection__choice__display').append(formatted).attr('id', selectionId);\n var title = selection.title || selection.text;\n if (title) {\n $selection.attr('title', title);\n }\n var removeItem = this.options.get('translations').get('removeItem');\n var $remove = $selection.find('.select2-selection__choice__remove');\n $remove.attr('title', removeItem());\n $remove.attr('aria-label', removeItem());\n $remove.attr('aria-describedby', selectionId);\n Utils.StoreData($selection[0], 'data', selection);\n $selections.push($selection);\n }\n var $rendered = this.$selection.find('.select2-selection__rendered');\n $rendered.append($selections);\n };\n return MultipleSelection;\n });\n S2.define('select2/selection/placeholder', [], function () {\n function Placeholder(decorated, $element, options) {\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n decorated.call(this, $element, options);\n }\n Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\n if (typeof placeholder === 'string') {\n placeholder = {\n id: '',\n text: placeholder\n };\n }\n return placeholder;\n };\n Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\n var $placeholder = this.selectionContainer();\n $placeholder.html(this.display(placeholder));\n $placeholder[0].classList.add('select2-selection__placeholder');\n $placeholder[0].classList.remove('select2-selection__choice');\n var placeholderTitle = placeholder.title || placeholder.text || $placeholder.text();\n this.$selection.find('.select2-selection__rendered').attr('title', placeholderTitle);\n return $placeholder;\n };\n Placeholder.prototype.update = function (decorated, data) {\n var singlePlaceholder = data.length == 1 && data[0].id != this.placeholder.id;\n var multipleSelections = data.length > 1;\n if (multipleSelections || singlePlaceholder) {\n return decorated.call(this, data);\n }\n this.clear();\n var $placeholder = this.createPlaceholder(this.placeholder);\n this.$selection.find('.select2-selection__rendered').append($placeholder);\n };\n return Placeholder;\n });\n S2.define('select2/selection/allowClear', ['jquery', '../keys', '../utils'], function ($, KEYS, Utils) {\n function AllowClear() {}\n AllowClear.prototype.bind = function (decorated, container, $container) {\n var self = this;\n decorated.call(this, container, $container);\n if (this.placeholder == null) {\n if (this.options.get('debug') && window.console && console.error) {\n console.error('Select2: The `allowClear` option should be used in combination ' + 'with the `placeholder` option.');\n }\n }\n this.$selection.on('mousedown', '.select2-selection__clear', function (evt) {\n self._handleClear(evt);\n });\n container.on('keypress', function (evt) {\n self._handleKeyboardClear(evt, container);\n });\n };\n AllowClear.prototype._handleClear = function (_, evt) {\n // Ignore the event if it is disabled\n if (this.isDisabled()) {\n return;\n }\n var $clear = this.$selection.find('.select2-selection__clear');\n\n // Ignore the event if nothing has been selected\n if ($clear.length === 0) {\n return;\n }\n evt.stopPropagation();\n var data = Utils.GetData($clear[0], 'data');\n var previousVal = this.$element.val();\n this.$element.val(this.placeholder.id);\n var unselectData = {\n data: data\n };\n this.trigger('clear', unselectData);\n if (unselectData.prevented) {\n this.$element.val(previousVal);\n return;\n }\n for (var d = 0; d < data.length; d++) {\n unselectData = {\n data: data[d]\n };\n\n // Trigger the `unselect` event, so people can prevent it from being\n // cleared.\n this.trigger('unselect', unselectData);\n\n // If the event was prevented, don't clear it out.\n if (unselectData.prevented) {\n this.$element.val(previousVal);\n return;\n }\n }\n this.$element.trigger('input').trigger('change');\n this.trigger('toggle', {});\n };\n AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\n if (container.isOpen()) {\n return;\n }\n if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\n this._handleClear(evt);\n }\n };\n AllowClear.prototype.update = function (decorated, data) {\n decorated.call(this, data);\n this.$selection.find('.select2-selection__clear').remove();\n this.$selection[0].classList.remove('select2-selection--clearable');\n if (this.$selection.find('.select2-selection__placeholder').length > 0 || data.length === 0) {\n return;\n }\n var selectionId = this.$selection.find('.select2-selection__rendered').attr('id');\n var removeAll = this.options.get('translations').get('removeAllItems');\n var $remove = $('<button type=\"button\" class=\"select2-selection__clear\" tabindex=\"-1\">' + '<span aria-hidden=\"true\">×</span>' + '</button>');\n $remove.attr('title', removeAll());\n $remove.attr('aria-label', removeAll());\n $remove.attr('aria-describedby', selectionId);\n Utils.StoreData($remove[0], 'data', data);\n this.$selection.prepend($remove);\n this.$selection[0].classList.add('select2-selection--clearable');\n };\n return AllowClear;\n });\n S2.define('select2/selection/search', ['jquery', '../utils', '../keys'], function ($, Utils, KEYS) {\n function Search(decorated, $element, options) {\n decorated.call(this, $element, options);\n }\n Search.prototype.render = function (decorated) {\n var searchLabel = this.options.get('translations').get('search');\n var $search = $('<span class=\"select2-search select2-search--inline\">' + '<textarea class=\"select2-search__field\"' + ' type=\"search\" tabindex=\"-1\"' + ' autocorrect=\"off\" autocapitalize=\"none\"' + ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" >' + '</textarea>' + '</span>');\n this.$searchContainer = $search;\n this.$search = $search.find('textarea');\n this.$search.prop('autocomplete', this.options.get('autocomplete'));\n this.$search.attr('aria-label', searchLabel());\n var $rendered = decorated.call(this);\n this._transferTabIndex();\n $rendered.append(this.$searchContainer);\n return $rendered;\n };\n Search.prototype.bind = function (decorated, container, $container) {\n var self = this;\n var resultsId = container.id + '-results';\n var selectionId = container.id + '-container';\n decorated.call(this, container, $container);\n self.$search.attr('aria-describedby', selectionId);\n container.on('open', function () {\n self.$search.attr('aria-controls', resultsId);\n self.$search.trigger('focus');\n });\n container.on('close', function () {\n self.$search.val('');\n self.resizeSearch();\n self.$search.removeAttr('aria-controls');\n self.$search.removeAttr('aria-activedescendant');\n self.$search.trigger('focus');\n });\n container.on('enable', function () {\n self.$search.prop('disabled', false);\n self._transferTabIndex();\n });\n container.on('disable', function () {\n self.$search.prop('disabled', true);\n });\n container.on('focus', function (evt) {\n self.$search.trigger('focus');\n });\n container.on('results:focus', function (params) {\n if (params.data._resultId) {\n self.$search.attr('aria-activedescendant', params.data._resultId);\n } else {\n self.$search.removeAttr('aria-activedescendant');\n }\n });\n this.$selection.on('focusin', '.select2-search--inline', function (evt) {\n self.trigger('focus', evt);\n });\n this.$selection.on('focusout', '.select2-search--inline', function (evt) {\n self._handleBlur(evt);\n });\n this.$selection.on('keydown', '.select2-search--inline', function (evt) {\n evt.stopPropagation();\n self.trigger('keypress', evt);\n self._keyUpPrevented = evt.isDefaultPrevented();\n var key = evt.which;\n if (key === KEYS.BACKSPACE && self.$search.val() === '') {\n var $previousChoice = self.$selection.find('.select2-selection__choice').last();\n if ($previousChoice.length > 0) {\n var item = Utils.GetData($previousChoice[0], 'data');\n self.searchRemoveChoice(item);\n evt.preventDefault();\n }\n }\n });\n this.$selection.on('click', '.select2-search--inline', function (evt) {\n if (self.$search.val()) {\n evt.stopPropagation();\n }\n });\n\n // Try to detect the IE version should the `documentMode` property that\n // is stored on the document. This is only implemented in IE and is\n // slightly cleaner than doing a user agent check.\n // This property is not available in Edge, but Edge also doesn't have\n // this bug.\n var msie = document.documentMode;\n var disableInputEvents = msie && msie <= 11;\n\n // Workaround for browsers which do not support the `input` event\n // This will prevent double-triggering of events for browsers which support\n // both the `keyup` and `input` events.\n this.$selection.on('input.searchcheck', '.select2-search--inline', function (evt) {\n // IE will trigger the `input` event when a placeholder is used on a\n // search box. To get around this issue, we are forced to ignore all\n // `input` events in IE and keep using `keyup`.\n if (disableInputEvents) {\n self.$selection.off('input.search input.searchcheck');\n return;\n }\n\n // Unbind the duplicated `keyup` event\n self.$selection.off('keyup.search');\n });\n this.$selection.on('keyup.search input.search', '.select2-search--inline', function (evt) {\n // IE will trigger the `input` event when a placeholder is used on a\n // search box. To get around this issue, we are forced to ignore all\n // `input` events in IE and keep using `keyup`.\n if (disableInputEvents && evt.type === 'input') {\n self.$selection.off('input.search input.searchcheck');\n return;\n }\n var key = evt.which;\n\n // We can freely ignore events from modifier keys\n if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {\n return;\n }\n\n // Tabbing will be handled during the `keydown` phase\n if (key == KEYS.TAB) {\n return;\n }\n self.handleSearch(evt);\n });\n };\n\n /**\n * This method will transfer the tabindex attribute from the rendered\n * selection to the search box. This allows for the search box to be used as\n * the primary focus instead of the selection container.\n *\n * @private\n */\n Search.prototype._transferTabIndex = function (decorated) {\n this.$search.attr('tabindex', this.$selection.attr('tabindex'));\n this.$selection.attr('tabindex', '-1');\n };\n Search.prototype.createPlaceholder = function (decorated, placeholder) {\n this.$search.attr('placeholder', placeholder.text);\n };\n Search.prototype.update = function (decorated, data) {\n var searchHadFocus = this.$search[0] == document.activeElement;\n this.$search.attr('placeholder', '');\n decorated.call(this, data);\n this.resizeSearch();\n if (searchHadFocus) {\n this.$search.trigger('focus');\n }\n };\n Search.prototype.handleSearch = function () {\n this.resizeSearch();\n if (!this._keyUpPrevented) {\n var input = this.$search.val();\n this.trigger('query', {\n term: input\n });\n }\n this._keyUpPrevented = false;\n };\n Search.prototype.searchRemoveChoice = function (decorated, item) {\n this.trigger('unselect', {\n data: item\n });\n this.$search.val(item.text);\n this.handleSearch();\n };\n Search.prototype.resizeSearch = function () {\n this.$search.css('width', '25px');\n var width = '100%';\n if (this.$search.attr('placeholder') === '') {\n var minimumWidth = this.$search.val().length + 1;\n width = minimumWidth * 0.75 + 'em';\n }\n this.$search.css('width', width);\n };\n return Search;\n });\n S2.define('select2/selection/selectionCss', ['../utils'], function (Utils) {\n function SelectionCSS() {}\n SelectionCSS.prototype.render = function (decorated) {\n var $selection = decorated.call(this);\n var selectionCssClass = this.options.get('selectionCssClass') || '';\n if (selectionCssClass.indexOf(':all:') !== -1) {\n selectionCssClass = selectionCssClass.replace(':all:', '');\n Utils.copyNonInternalCssClasses($selection[0], this.$element[0]);\n }\n $selection.addClass(selectionCssClass);\n return $selection;\n };\n return SelectionCSS;\n });\n S2.define('select2/selection/eventRelay', ['jquery'], function ($) {\n function EventRelay() {}\n EventRelay.prototype.bind = function (decorated, container, $container) {\n var self = this;\n var relayEvents = ['open', 'opening', 'close', 'closing', 'select', 'selecting', 'unselect', 'unselecting', 'clear', 'clearing'];\n var preventableEvents = ['opening', 'closing', 'selecting', 'unselecting', 'clearing'];\n decorated.call(this, container, $container);\n container.on('*', function (name, params) {\n // Ignore events that should not be relayed\n if (relayEvents.indexOf(name) === -1) {\n return;\n }\n\n // The parameters should always be an object\n params = params || {};\n\n // Generate the jQuery event for the Select2 event\n var evt = $.Event('select2:' + name, {\n params: params\n });\n self.$element.trigger(evt);\n\n // Only handle preventable events if it was one\n if (preventableEvents.indexOf(name) === -1) {\n return;\n }\n params.prevented = evt.isDefaultPrevented();\n });\n };\n return EventRelay;\n });\n S2.define('select2/translation', ['jquery', 'require'], function ($, require) {\n function Translation(dict) {\n this.dict = dict || {};\n }\n Translation.prototype.all = function () {\n return this.dict;\n };\n Translation.prototype.get = function (key) {\n return this.dict[key];\n };\n Translation.prototype.extend = function (translation) {\n this.dict = $.extend({}, translation.all(), this.dict);\n };\n\n // Static functions\n\n Translation._cache = {};\n Translation.loadPath = function (path) {\n if (!(path in Translation._cache)) {\n var translations = require(path);\n Translation._cache[path] = translations;\n }\n return new Translation(Translation._cache[path]);\n };\n return Translation;\n });\n S2.define('select2/diacritics', [], function () {\n var diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\u0152': 'OE',\n '\\u01A2': 'OI',\n '\\uA74E': 'OO',\n '\\u0222': 'OU',\n '\\u24C5': 'P',\n '\\uFF30': 'P',\n '\\u1E54': 'P',\n '\\u1E56': 'P',\n '\\u01A4': 'P',\n '\\u2C63': 'P',\n '\\uA750': 'P',\n '\\uA752': 'P',\n '\\uA754': 'P',\n '\\u24C6': 'Q',\n '\\uFF31': 'Q',\n '\\uA756': 'Q',\n '\\uA758': 'Q',\n '\\u024A': 'Q',\n '\\u24C7': 'R',\n '\\uFF32': 'R',\n '\\u0154': 'R',\n '\\u1E58': 'R',\n '\\u0158': 'R',\n '\\u0210': 'R',\n '\\u0212': 'R',\n '\\u1E5A': 'R',\n '\\u1E5C': 'R',\n '\\u0156': 'R',\n '\\u1E5E': 'R',\n '\\u024C': 'R',\n '\\u2C64': 'R',\n '\\uA75A': 'R',\n '\\uA7A6': 'R',\n '\\uA782': 'R',\n '\\u24C8': 'S',\n '\\uFF33': 'S',\n '\\u1E9E': 'S',\n '\\u015A': 'S',\n '\\u1E64': 'S',\n '\\u015C': 'S',\n '\\u1E60': 'S',\n '\\u0160': 'S',\n '\\u1E66': 'S',\n '\\u1E62': 'S',\n '\\u1E68': 'S',\n '\\u0218': 'S',\n '\\u015E': 'S',\n '\\u2C7E': 'S',\n '\\uA7A8': 'S',\n '\\uA784': 'S',\n '\\u24C9': 'T',\n '\\uFF34': 'T',\n '\\u1E6A': 'T',\n '\\u0164': 'T',\n '\\u1E6C': 'T',\n '\\u021A': 'T',\n '\\u0162': 'T',\n '\\u1E70': 'T',\n '\\u1E6E': 'T',\n '\\u0166': 'T',\n '\\u01AC': 'T',\n '\\u01AE': 'T',\n '\\u023E': 'T',\n '\\uA786': 'T',\n '\\uA728': 'TZ',\n '\\u24CA': 'U',\n '\\uFF35': 'U',\n '\\u00D9': 'U',\n '\\u00DA': 'U',\n '\\u00DB': 'U',\n '\\u0168': 'U',\n '\\u1E78': 'U',\n '\\u016A': 'U',\n '\\u1E7A': 'U',\n '\\u016C': 'U',\n '\\u00DC': 'U',\n '\\u01DB': 'U',\n '\\u01D7': 'U',\n '\\u01D5': 'U',\n '\\u01D9': 'U',\n '\\u1EE6': 'U',\n '\\u016E': 'U',\n '\\u0170': 'U',\n '\\u01D3': 'U',\n '\\u0214': 'U',\n '\\u0216': 'U',\n '\\u01AF': 'U',\n '\\u1EEA': 'U',\n '\\u1EE8': 'U',\n '\\u1EEE': 'U',\n '\\u1EEC': 'U',\n '\\u1EF0': 'U',\n '\\u1EE4': 'U',\n '\\u1E72': 'U',\n '\\u0172': 'U',\n '\\u1E76': 'U',\n '\\u1E74': 'U',\n '\\u0244': 'U',\n '\\u24CB': 'V',\n '\\uFF36': 'V',\n '\\u1E7C': 'V',\n '\\u1E7E': 'V',\n '\\u01B2': 'V',\n '\\uA75E': 'V',\n '\\u0245': 'V',\n '\\uA760': 'VY',\n '\\u24CC': 'W',\n '\\uFF37': 'W',\n '\\u1E80': 'W',\n '\\u1E82': 'W',\n '\\u0174': 'W',\n '\\u1E86': 'W',\n '\\u1E84': 'W',\n '\\u1E88': 'W',\n '\\u2C72': 'W',\n '\\u24CD': 'X',\n '\\uFF38': 'X',\n '\\u1E8A': 'X',\n '\\u1E8C': 'X',\n '\\u24CE': 'Y',\n '\\uFF39': 'Y',\n '\\u1EF2': 'Y',\n '\\u00DD': 'Y',\n '\\u0176': 'Y',\n '\\u1EF8': 'Y',\n '\\u0232': 'Y',\n '\\u1E8E': 'Y',\n '\\u0178': 'Y',\n '\\u1EF6': 'Y',\n '\\u1EF4': 'Y',\n '\\u01B3': 'Y',\n '\\u024E': 'Y',\n '\\u1EFE': 'Y',\n '\\u24CF': 'Z',\n '\\uFF3A': 'Z',\n '\\u0179': 'Z',\n '\\u1E90': 'Z',\n '\\u017B': 'Z',\n '\\u017D': 'Z',\n '\\u1E92': 'Z',\n '\\u1E94': 'Z',\n '\\u01B5': 'Z',\n '\\u0224': 'Z',\n '\\u2C7F': 'Z',\n '\\u2C6B': 'Z',\n '\\uA762': 'Z',\n '\\u24D0': 'a',\n '\\uFF41': 'a',\n '\\u1E9A': 'a',\n '\\u00E0': 'a',\n '\\u00E1': 'a',\n '\\u00E2': 'a',\n '\\u1EA7': 'a',\n '\\u1EA5': 'a',\n '\\u1EAB': 'a',\n '\\u1EA9': 'a',\n '\\u00E3': 'a',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u1EB1': 'a',\n '\\u1EAF': 'a',\n '\\u1EB5': 'a',\n '\\u1EB3': 'a',\n '\\u0227': 'a',\n '\\u01E1': 'a',\n '\\u00E4': 'a',\n '\\u01DF': 'a',\n '\\u1EA3': 'a',\n '\\u00E5': 'a',\n '\\u01FB': 'a',\n '\\u01CE': 'a',\n '\\u0201': 'a',\n '\\u0203': 'a',\n '\\u1EA1': 'a',\n '\\u1EAD': 'a',\n '\\u1EB7': 'a',\n '\\u1E01': 'a',\n '\\u0105': 'a',\n '\\u2C65': 'a',\n '\\u0250': 'a',\n '\\uA733': 'aa',\n '\\u00E6': 'ae',\n '\\u01FD': 'ae',\n '\\u01E3': 'ae',\n '\\uA735': 'ao',\n '\\uA737': 'au',\n '\\uA739': 'av',\n '\\uA73B': 'av',\n '\\uA73D': 'ay',\n '\\u24D1': 'b',\n '\\uFF42': 'b',\n '\\u1E03': 'b',\n '\\u1E05': 'b',\n '\\u1E07': 'b',\n '\\u0180': 'b',\n '\\u0183': 'b',\n '\\u0253': 'b',\n '\\u24D2': 'c',\n '\\uFF43': 'c',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010B': 'c',\n '\\u010D': 'c',\n '\\u00E7': 'c',\n '\\u1E09': 'c',\n '\\u0188': 'c',\n '\\u023C': 'c',\n '\\uA73F': 'c',\n '\\u2184': 'c',\n '\\u24D3': 'd',\n '\\uFF44': 'd',\n '\\u1E0B': 'd',\n '\\u010F': 'd',\n '\\u1E0D': 'd',\n '\\u1E11': 'd',\n '\\u1E13': 'd',\n '\\u1E0F': 'd',\n '\\u0111': 'd',\n '\\u018C': 'd',\n '\\u0256': 'd',\n '\\u0257': 'd',\n '\\uA77A': 'd',\n '\\u01F3': 'dz',\n '\\u01C6': 'dz',\n '\\u24D4': 'e',\n '\\uFF45': 'e',\n '\\u00E8': 'e',\n '\\u00E9': 'e',\n '\\u00EA': 'e',\n '\\u1EC1': 'e',\n '\\u1EBF': 'e',\n '\\u1EC5': 'e',\n '\\u1EC3': 'e',\n '\\u1EBD': 'e',\n '\\u0113': 'e',\n '\\u1E15': 'e',\n '\\u1E17': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u00EB': 'e',\n '\\u1EBB': 'e',\n '\\u011B': 'e',\n '\\u0205': 'e',\n '\\u0207': 'e',\n '\\u1EB9': 'e',\n '\\u1EC7': 'e',\n '\\u0229': 'e',\n '\\u1E1D': 'e',\n '\\u0119': 'e',\n '\\u1E19': 'e',\n '\\u1E1B': 'e',\n '\\u0247': 'e',\n '\\u025B': 'e',\n '\\u01DD': 'e',\n '\\u24D5': 'f',\n '\\uFF46': 'f',\n '\\u1E1F': 'f',\n '\\u0192': 'f',\n '\\uA77C': 'f',\n '\\u24D6': 'g',\n '\\uFF47': 'g',\n '\\u01F5': 'g',\n '\\u011D': 'g',\n '\\u1E21': 'g',\n '\\u011F': 'g',\n '\\u0121': 'g',\n '\\u01E7': 'g',\n '\\u0123': 'g',\n '\\u01E5': 'g',\n '\\u0260': 'g',\n '\\uA7A1': 'g',\n '\\u1D79': 'g',\n '\\uA77F': 'g',\n '\\u24D7': 'h',\n '\\uFF48': 'h',\n '\\u0125': 'h',\n '\\u1E23': 'h',\n '\\u1E27': 'h',\n '\\u021F': 'h',\n '\\u1E25': 'h',\n '\\u1E29': 'h',\n '\\u1E2B': 'h',\n '\\u1E96': 'h',\n '\\u0127': 'h',\n '\\u2C68': 'h',\n '\\u2C76': 'h',\n '\\u0265': 'h',\n '\\u0195': 'hv',\n '\\u24D8': 'i',\n '\\uFF49': 'i',\n '\\u00EC': 'i',\n '\\u00ED': 'i',\n '\\u00EE': 'i',\n '\\u0129': 'i',\n '\\u012B': 'i',\n '\\u012D': 'i',\n '\\u00EF': 'i',\n '\\u1E2F': 'i',\n '\\u1EC9': 'i',\n '\\u01D0': 'i',\n '\\u0209': 'i',\n '\\u020B': 'i',\n '\\u1ECB': 'i',\n '\\u012F': 'i',\n '\\u1E2D': 'i',\n '\\u0268': 'i',\n '\\u0131': 'i',\n '\\u24D9': 'j',\n '\\uFF4A': 'j',\n '\\u0135': 'j',\n '\\u01F0': 'j',\n '\\u0249': 'j',\n '\\u24DA': 'k',\n '\\uFF4B': 'k',\n '\\u1E31': 'k',\n '\\u01E9': 'k',\n '\\u1E33': 'k',\n '\\u0137': 'k',\n '\\u1E35': 'k',\n '\\u0199': 'k',\n '\\u2C6A': 'k',\n '\\uA741': 'k',\n '\\uA743': 'k',\n '\\uA745': 'k',\n '\\uA7A3': 'k',\n '\\u24DB': 'l',\n '\\uFF4C': 'l',\n '\\u0140': 'l',\n '\\u013A': 'l',\n '\\u013E': 'l',\n '\\u1E37': 'l',\n '\\u1E39': 'l',\n '\\u013C': 'l',\n '\\u1E3D': 'l',\n '\\u1E3B': 'l',\n '\\u017F': 'l',\n '\\u0142': 'l',\n '\\u019A': 'l',\n '\\u026B': 'l',\n '\\u2C61': 'l',\n '\\uA749': 'l',\n '\\uA781': 'l',\n '\\uA747': 'l',\n '\\u01C9': 'lj',\n '\\u24DC': 'm',\n '\\uFF4D': 'm',\n '\\u1E3F': 'm',\n '\\u1E41': 'm',\n '\\u1E43': 'm',\n '\\u0271': 'm',\n '\\u026F': 'm',\n '\\u24DD': 'n',\n '\\uFF4E': 'n',\n '\\u01F9': 'n',\n '\\u0144': 'n',\n '\\u00F1': 'n',\n '\\u1E45': 'n',\n '\\u0148': 'n',\n '\\u1E47': 'n',\n '\\u0146': 'n',\n '\\u1E4B': 'n',\n '\\u1E49': 'n',\n '\\u019E': 'n',\n '\\u0272': 'n',\n '\\u0149': 'n',\n '\\uA791': 'n',\n '\\uA7A5': 'n',\n '\\u01CC': 'nj',\n '\\u24DE': 'o',\n '\\uFF4F': 'o',\n '\\u00F2': 'o',\n '\\u00F3': 'o',\n '\\u00F4': 'o',\n '\\u1ED3': 'o',\n '\\u1ED1': 'o',\n '\\u1ED7': 'o',\n '\\u1ED5': 'o',\n '\\u00F5': 'o',\n '\\u1E4D': 'o',\n '\\u022D': 'o',\n '\\u1E4F': 'o',\n '\\u014D': 'o',\n '\\u1E51': 'o',\n '\\u1E53': 'o',\n '\\u014F': 'o',\n '\\u022F': 'o',\n '\\u0231': 'o',\n '\\u00F6': 'o',\n '\\u022B': 'o',\n '\\u1ECF': 'o',\n '\\u0151': 'o',\n '\\u01D2': 'o',\n '\\u020D': 'o',\n '\\u020F': 'o',\n '\\u01A1': 'o',\n '\\u1EDD': 'o',\n '\\u1EDB': 'o',\n '\\u1EE1': 'o',\n '\\u1EDF': 'o',\n '\\u1EE3': 'o',\n '\\u1ECD': 'o',\n '\\u1ED9': 'o',\n '\\u01EB': 'o',\n '\\u01ED': 'o',\n '\\u00F8': 'o',\n '\\u01FF': 'o',\n '\\u0254': 'o',\n '\\uA74B': 'o',\n '\\uA74D': 'o',\n '\\u0275': 'o',\n '\\u0153': 'oe',\n '\\u01A3': 'oi',\n '\\u0223': 'ou',\n '\\uA74F': 'oo',\n '\\u24DF': 'p',\n '\\uFF50': 'p',\n '\\u1E55': 'p',\n '\\u1E57': 'p',\n '\\u01A5': 'p',\n '\\u1D7D': 'p',\n '\\uA751': 'p',\n '\\uA753': 'p',\n '\\uA755': 'p',\n '\\u24E0': 'q',\n '\\uFF51': 'q',\n '\\u024B': 'q',\n '\\uA757': 'q',\n '\\uA759': 'q',\n '\\u24E1': 'r',\n '\\uFF52': 'r',\n '\\u0155': 'r',\n '\\u1E59': 'r',\n '\\u0159': 'r',\n '\\u0211': 'r',\n '\\u0213': 'r',\n '\\u1E5B': 'r',\n '\\u1E5D': 'r',\n '\\u0157': 'r',\n '\\u1E5F': 'r',\n '\\u024D': 'r',\n '\\u027D': 'r',\n '\\uA75B': 'r',\n '\\uA7A7': 'r',\n '\\uA783': 'r',\n '\\u24E2': 's',\n '\\uFF53': 's',\n '\\u00DF': 's',\n '\\u015B': 's',\n '\\u1E65': 's',\n '\\u015D': 's',\n '\\u1E61': 's',\n '\\u0161': 's',\n '\\u1E67': 's',\n '\\u1E63': 's',\n '\\u1E69': 's',\n '\\u0219': 's',\n '\\u015F': 's',\n '\\u023F': 's',\n '\\uA7A9': 's',\n '\\uA785': 's',\n '\\u1E9B': 's',\n '\\u24E3': 't',\n '\\uFF54': 't',\n '\\u1E6B': 't',\n '\\u1E97': 't',\n '\\u0165': 't',\n '\\u1E6D': 't',\n '\\u021B': 't',\n '\\u0163': 't',\n '\\u1E71': 't',\n '\\u1E6F': 't',\n '\\u0167': 't',\n '\\u01AD': 't',\n '\\u0288': 't',\n '\\u2C66': 't',\n '\\uA787': 't',\n '\\uA729': 'tz',\n '\\u24E4': 'u',\n '\\uFF55': 'u',\n '\\u00F9': 'u',\n '\\u00FA': 'u',\n '\\u00FB': 'u',\n '\\u0169': 'u',\n '\\u1E79': 'u',\n '\\u016B': 'u',\n '\\u1E7B': 'u',\n '\\u016D': 'u',\n '\\u00FC': 'u',\n '\\u01DC': 'u',\n '\\u01D8': 'u',\n '\\u01D6': 'u',\n '\\u01DA': 'u',\n '\\u1EE7': 'u',\n '\\u016F': 'u',\n '\\u0171': 'u',\n '\\u01D4': 'u',\n '\\u0215': 'u',\n '\\u0217': 'u',\n '\\u01B0': 'u',\n '\\u1EEB': 'u',\n '\\u1EE9': 'u',\n '\\u1EEF': 'u',\n '\\u1EED': 'u',\n '\\u1EF1': 'u',\n '\\u1EE5': 'u',\n '\\u1E73': 'u',\n '\\u0173': 'u',\n '\\u1E77': 'u',\n '\\u1E75': 'u',\n '\\u0289': 'u',\n '\\u24E5': 'v',\n '\\uFF56': 'v',\n '\\u1E7D': 'v',\n '\\u1E7F': 'v',\n '\\u028B': 'v',\n '\\uA75F': 'v',\n '\\u028C': 'v',\n '\\uA761': 'vy',\n '\\u24E6': 'w',\n '\\uFF57': 'w',\n '\\u1E81': 'w',\n '\\u1E83': 'w',\n '\\u0175': 'w',\n '\\u1E87': 'w',\n '\\u1E85': 'w',\n '\\u1E98': 'w',\n '\\u1E89': 'w',\n '\\u2C73': 'w',\n '\\u24E7': 'x',\n '\\uFF58': 'x',\n '\\u1E8B': 'x',\n '\\u1E8D': 'x',\n '\\u24E8': 'y',\n '\\uFF59': 'y',\n '\\u1EF3': 'y',\n '\\u00FD': 'y',\n '\\u0177': 'y',\n '\\u1EF9': 'y',\n '\\u0233': 'y',\n '\\u1E8F': 'y',\n '\\u00FF': 'y',\n '\\u1EF7': 'y',\n '\\u1E99': 'y',\n '\\u1EF5': 'y',\n '\\u01B4': 'y',\n '\\u024F': 'y',\n '\\u1EFF': 'y',\n '\\u24E9': 'z',\n '\\uFF5A': 'z',\n '\\u017A': 'z',\n '\\u1E91': 'z',\n '\\u017C': 'z',\n '\\u017E': 'z',\n '\\u1E93': 'z',\n '\\u1E95': 'z',\n '\\u01B6': 'z',\n '\\u0225': 'z',\n '\\u0240': 'z',\n '\\u2C6C': 'z',\n '\\uA763': 'z',\n '\\u0386': '\\u0391',\n '\\u0388': '\\u0395',\n '\\u0389': '\\u0397',\n '\\u038A': '\\u0399',\n '\\u03AA': '\\u0399',\n '\\u038C': '\\u039F',\n '\\u038E': '\\u03A5',\n '\\u03AB': '\\u03A5',\n '\\u038F': '\\u03A9',\n '\\u03AC': '\\u03B1',\n '\\u03AD': '\\u03B5',\n '\\u03AE': '\\u03B7',\n '\\u03AF': '\\u03B9',\n '\\u03CA': '\\u03B9',\n '\\u0390': '\\u03B9',\n '\\u03CC': '\\u03BF',\n '\\u03CD': '\\u03C5',\n '\\u03CB': '\\u03C5',\n '\\u03B0': '\\u03C5',\n '\\u03CE': '\\u03C9',\n '\\u03C2': '\\u03C3',\n '\\u2019': '\\''\n };\n return diacritics;\n });\n S2.define('select2/data/base', ['../utils'], function (Utils) {\n function BaseAdapter($element, options) {\n BaseAdapter.__super__.constructor.call(this);\n }\n Utils.Extend(BaseAdapter, Utils.Observable);\n BaseAdapter.prototype.current = function (callback) {\n throw new Error('The `current` method must be defined in child classes.');\n };\n BaseAdapter.prototype.query = function (params, callback) {\n throw new Error('The `query` method must be defined in child classes.');\n };\n BaseAdapter.prototype.bind = function (container, $container) {\n // Can be implemented in subclasses\n };\n BaseAdapter.prototype.destroy = function () {\n // Can be implemented in subclasses\n };\n BaseAdapter.prototype.generateResultId = function (container, data) {\n var id = container.id + '-result-';\n id += Utils.generateChars(4);\n if (data.id != null) {\n id += '-' + data.id.toString();\n } else {\n id += '-' + Utils.generateChars(4);\n }\n return id;\n };\n return BaseAdapter;\n });\n S2.define('select2/data/select', ['./base', '../utils', 'jquery'], function (BaseAdapter, Utils, $) {\n function SelectAdapter($element, options) {\n this.$element = $element;\n this.options = options;\n SelectAdapter.__super__.constructor.call(this);\n }\n Utils.Extend(SelectAdapter, BaseAdapter);\n SelectAdapter.prototype.current = function (callback) {\n var self = this;\n var data = Array.prototype.map.call(this.$element[0].querySelectorAll(':checked'), function (selectedElement) {\n return self.item($(selectedElement));\n });\n callback(data);\n };\n SelectAdapter.prototype.select = function (data) {\n var self = this;\n data.selected = true;\n\n // If data.element is a DOM node, use it instead\n if (data.element != null && data.element.tagName.toLowerCase() === 'option') {\n data.element.selected = true;\n this.$element.trigger('input').trigger('change');\n return;\n }\n if (this.$element.prop('multiple')) {\n this.current(function (currentData) {\n var val = [];\n data = [data];\n data.push.apply(data, currentData);\n for (var d = 0; d < data.length; d++) {\n var id = data[d].id;\n if (val.indexOf(id) === -1) {\n val.push(id);\n }\n }\n self.$element.val(val);\n self.$element.trigger('input').trigger('change');\n });\n } else {\n var val = data.id;\n this.$element.val(val);\n this.$element.trigger('input').trigger('change');\n }\n };\n SelectAdapter.prototype.unselect = function (data) {\n var self = this;\n if (!this.$element.prop('multiple')) {\n return;\n }\n data.selected = false;\n if (data.element != null && data.element.tagName.toLowerCase() === 'option') {\n data.element.selected = false;\n this.$element.trigger('input').trigger('change');\n return;\n }\n this.current(function (currentData) {\n var val = [];\n for (var d = 0; d < currentData.length; d++) {\n var id = currentData[d].id;\n if (id !== data.id && val.indexOf(id) === -1) {\n val.push(id);\n }\n }\n self.$element.val(val);\n self.$element.trigger('input').trigger('change');\n });\n };\n SelectAdapter.prototype.bind = function (container, $container) {\n var self = this;\n this.container = container;\n container.on('select', function (params) {\n self.select(params.data);\n });\n container.on('unselect', function (params) {\n self.unselect(params.data);\n });\n };\n SelectAdapter.prototype.destroy = function () {\n // Remove anything added to child elements\n this.$element.find('*').each(function () {\n // Remove any custom data set by Select2\n Utils.RemoveData(this);\n });\n };\n SelectAdapter.prototype.query = function (params, callback) {\n var data = [];\n var self = this;\n var $options = this.$element.children();\n $options.each(function () {\n if (this.tagName.toLowerCase() !== 'option' && this.tagName.toLowerCase() !== 'optgroup') {\n return;\n }\n var $option = $(this);\n var option = self.item($option);\n var matches = self.matches(params, option);\n if (matches !== null) {\n data.push(matches);\n }\n });\n callback({\n results: data\n });\n };\n SelectAdapter.prototype.addOptions = function ($options) {\n this.$element.append($options);\n };\n SelectAdapter.prototype.option = function (data) {\n var option;\n if (data.children) {\n option = document.createElement('optgroup');\n option.label = data.text;\n } else {\n option = document.createElement('option');\n if (option.textContent !== undefined) {\n option.textContent = data.text;\n } else {\n option.innerText = data.text;\n }\n }\n if (data.id !== undefined) {\n option.value = data.id;\n }\n if (data.disabled) {\n option.disabled = true;\n }\n if (data.selected) {\n option.selected = true;\n }\n if (data.title) {\n option.title = data.title;\n }\n var normalizedData = this._normalizeItem(data);\n normalizedData.element = option;\n\n // Override the option's data with the combined data\n Utils.StoreData(option, 'data', normalizedData);\n return $(option);\n };\n SelectAdapter.prototype.item = function ($option) {\n var data = {};\n data = Utils.GetData($option[0], 'data');\n if (data != null) {\n return data;\n }\n var option = $option[0];\n if (option.tagName.toLowerCase() === 'option') {\n data = {\n id: $option.val(),\n text: $option.text(),\n disabled: $option.prop('disabled'),\n selected: $option.prop('selected'),\n title: $option.prop('title')\n };\n } else if (option.tagName.toLowerCase() === 'optgroup') {\n data = {\n text: $option.prop('label'),\n children: [],\n title: $option.prop('title')\n };\n var $children = $option.children('option');\n var children = [];\n for (var c = 0; c < $children.length; c++) {\n var $child = $($children[c]);\n var child = this.item($child);\n children.push(child);\n }\n data.children = children;\n }\n data = this._normalizeItem(data);\n data.element = $option[0];\n Utils.StoreData($option[0], 'data', data);\n return data;\n };\n SelectAdapter.prototype._normalizeItem = function (item) {\n if (item !== Object(item)) {\n item = {\n id: item,\n text: item\n };\n }\n item = $.extend({}, {\n text: ''\n }, item);\n var defaults = {\n selected: false,\n disabled: false\n };\n if (item.id != null) {\n item.id = item.id.toString();\n }\n if (item.text != null) {\n item.text = item.text.toString();\n }\n if (item._resultId == null && item.id && this.container != null) {\n item._resultId = this.generateResultId(this.container, item);\n }\n return $.extend({}, defaults, item);\n };\n SelectAdapter.prototype.matches = function (params, data) {\n var matcher = this.options.get('matcher');\n return matcher(params, data);\n };\n return SelectAdapter;\n });\n S2.define('select2/data/array', ['./select', '../utils', 'jquery'], function (SelectAdapter, Utils, $) {\n function ArrayAdapter($element, options) {\n this._dataToConvert = options.get('data') || [];\n ArrayAdapter.__super__.constructor.call(this, $element, options);\n }\n Utils.Extend(ArrayAdapter, SelectAdapter);\n ArrayAdapter.prototype.bind = function (container, $container) {\n ArrayAdapter.__super__.bind.call(this, container, $container);\n this.addOptions(this.convertToOptions(this._dataToConvert));\n };\n ArrayAdapter.prototype.select = function (data) {\n var $option = this.$element.find('option').filter(function (i, elm) {\n return elm.value == data.id.toString();\n });\n if ($option.length === 0) {\n $option = this.option(data);\n this.addOptions($option);\n }\n ArrayAdapter.__super__.select.call(this, data);\n };\n ArrayAdapter.prototype.convertToOptions = function (data) {\n var self = this;\n var $existing = this.$element.find('option');\n var existingIds = $existing.map(function () {\n return self.item($(this)).id;\n }).get();\n var $options = [];\n\n // Filter out all items except for the one passed in the argument\n function onlyItem(item) {\n return function () {\n return $(this).val() == item.id;\n };\n }\n for (var d = 0; d < data.length; d++) {\n var item = this._normalizeItem(data[d]);\n\n // Skip items which were pre-loaded, only merge the data\n if (existingIds.indexOf(item.id) >= 0) {\n var $existingOption = $existing.filter(onlyItem(item));\n var existingData = this.item($existingOption);\n var newData = $.extend(true, {}, item, existingData);\n var $newOption = this.option(newData);\n $existingOption.replaceWith($newOption);\n continue;\n }\n var $option = this.option(item);\n if (item.children) {\n var $children = this.convertToOptions(item.children);\n $option.append($children);\n }\n $options.push($option);\n }\n return $options;\n };\n return ArrayAdapter;\n });\n S2.define('select2/data/ajax', ['./array', '../utils', 'jquery'], function (ArrayAdapter, Utils, $) {\n function AjaxAdapter($element, options) {\n this.ajaxOptions = this._applyDefaults(options.get('ajax'));\n if (this.ajaxOptions.processResults != null) {\n this.processResults = this.ajaxOptions.processResults;\n }\n AjaxAdapter.__super__.constructor.call(this, $element, options);\n }\n Utils.Extend(AjaxAdapter, ArrayAdapter);\n AjaxAdapter.prototype._applyDefaults = function (options) {\n var defaults = {\n data: function (params) {\n return $.extend({}, params, {\n q: params.term\n });\n },\n transport: function (params, success, failure) {\n var $request = $.ajax(params);\n $request.then(success);\n $request.fail(failure);\n return $request;\n }\n };\n return $.extend({}, defaults, options, true);\n };\n AjaxAdapter.prototype.processResults = function (results) {\n return results;\n };\n AjaxAdapter.prototype.query = function (params, callback) {\n var matches = [];\n var self = this;\n if (this._request != null) {\n // JSONP requests cannot always be aborted\n if (typeof this._request.abort === 'function') {\n this._request.abort();\n }\n this._request = null;\n }\n var options = $.extend({\n type: 'GET'\n }, this.ajaxOptions);\n if (typeof options.url === 'function') {\n options.url = options.url.call(this.$element, params);\n }\n if (typeof options.data === 'function') {\n options.data = options.data.call(this.$element, params);\n }\n function request() {\n var $request = options.transport(options, function (data) {\n var results = self.processResults(data, params);\n if (self.options.get('debug') && window.console && console.error) {\n // Check to make sure that the response included a `results` key.\n if (!results || !results.results || !Array.isArray(results.results)) {\n console.error('Select2: The AJAX results did not return an array in the ' + '`results` key of the response.');\n }\n }\n callback(results);\n }, function () {\n // Attempt to detect if a request was aborted\n // Only works if the transport exposes a status property\n if ('status' in $request && ($request.status === 0 || $request.status === '0')) {\n return;\n }\n self.trigger('results:message', {\n message: 'errorLoading'\n });\n });\n self._request = $request;\n }\n if (this.ajaxOptions.delay && params.term != null) {\n if (this._queryTimeout) {\n window.clearTimeout(this._queryTimeout);\n }\n this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\n } else {\n request();\n }\n };\n return AjaxAdapter;\n });\n S2.define('select2/data/tags', ['jquery'], function ($) {\n function Tags(decorated, $element, options) {\n var tags = options.get('tags');\n var createTag = options.get('createTag');\n if (createTag !== undefined) {\n this.createTag = createTag;\n }\n var insertTag = options.get('insertTag');\n if (insertTag !== undefined) {\n this.insertTag = insertTag;\n }\n decorated.call(this, $element, options);\n if (Array.isArray(tags)) {\n for (var t = 0; t < tags.length; t++) {\n var tag = tags[t];\n var item = this._normalizeItem(tag);\n var $option = this.option(item);\n this.$element.append($option);\n }\n }\n }\n Tags.prototype.query = function (decorated, params, callback) {\n var self = this;\n this._removeOldTags();\n if (params.term == null || params.page != null) {\n decorated.call(this, params, callback);\n return;\n }\n function wrapper(obj, child) {\n var data = obj.results;\n for (var i = 0; i < data.length; i++) {\n var option = data[i];\n var checkChildren = option.children != null && !wrapper({\n results: option.children\n }, true);\n var optionText = (option.text || '').toUpperCase();\n var paramsTerm = (params.term || '').toUpperCase();\n var checkText = optionText === paramsTerm;\n if (checkText || checkChildren) {\n if (child) {\n return false;\n }\n obj.data = data;\n callback(obj);\n return;\n }\n }\n if (child) {\n return true;\n }\n var tag = self.createTag(params);\n if (tag != null) {\n var $option = self.option(tag);\n $option.attr('data-select2-tag', 'true');\n self.addOptions([$option]);\n self.insertTag(data, tag);\n }\n obj.results = data;\n callback(obj);\n }\n decorated.call(this, params, wrapper);\n };\n Tags.prototype.createTag = function (decorated, params) {\n if (params.term == null) {\n return null;\n }\n var term = params.term.trim();\n if (term === '') {\n return null;\n }\n return {\n id: term,\n text: term\n };\n };\n Tags.prototype.insertTag = function (_, data, tag) {\n data.unshift(tag);\n };\n Tags.prototype._removeOldTags = function (_) {\n var $options = this.$element.find('option[data-select2-tag]');\n $options.each(function () {\n if (this.selected) {\n return;\n }\n $(this).remove();\n });\n };\n return Tags;\n });\n S2.define('select2/data/tokenizer', ['jquery'], function ($) {\n function Tokenizer(decorated, $element, options) {\n var tokenizer = options.get('tokenizer');\n if (tokenizer !== undefined) {\n this.tokenizer = tokenizer;\n }\n decorated.call(this, $element, options);\n }\n Tokenizer.prototype.bind = function (decorated, container, $container) {\n decorated.call(this, container, $container);\n this.$search = container.dropdown.$search || container.selection.$search || $container.find('.select2-search__field');\n };\n Tokenizer.prototype.query = function (decorated, params, callback) {\n var self = this;\n function createAndSelect(data) {\n // Normalize the data object so we can use it for checks\n var item = self._normalizeItem(data);\n\n // Check if the data object already exists as a tag\n // Select it if it doesn't\n var $existingOptions = self.$element.find('option').filter(function () {\n return $(this).val() === item.id;\n });\n\n // If an existing option wasn't found for it, create the option\n if (!$existingOptions.length) {\n var $option = self.option(item);\n $option.attr('data-select2-tag', true);\n self._removeOldTags();\n self.addOptions([$option]);\n }\n\n // Select the item, now that we know there is an option for it\n select(item);\n }\n function select(data) {\n self.trigger('select', {\n data: data\n });\n }\n params.term = params.term || '';\n var tokenData = this.tokenizer(params, this.options, createAndSelect);\n if (tokenData.term !== params.term) {\n // Replace the search term if we have the search box\n if (this.$search.length) {\n this.$search.val(tokenData.term);\n this.$search.trigger('focus');\n }\n params.term = tokenData.term;\n }\n decorated.call(this, params, callback);\n };\n Tokenizer.prototype.tokenizer = function (_, params, options, callback) {\n var separators = options.get('tokenSeparators') || [];\n var term = params.term;\n var i = 0;\n var createTag = this.createTag || function (params) {\n return {\n id: params.term,\n text: params.term\n };\n };\n while (i < term.length) {\n var termChar = term[i];\n if (separators.indexOf(termChar) === -1) {\n i++;\n continue;\n }\n var part = term.substr(0, i);\n var partParams = $.extend({}, params, {\n term: part\n });\n var data = createTag(partParams);\n if (data == null) {\n i++;\n continue;\n }\n callback(data);\n\n // Reset the term to not include the tokenized portion\n term = term.substr(i + 1) || '';\n i = 0;\n }\n return {\n term: term\n };\n };\n return Tokenizer;\n });\n S2.define('select2/data/minimumInputLength', [], function () {\n function MinimumInputLength(decorated, $e, options) {\n this.minimumInputLength = options.get('minimumInputLength');\n decorated.call(this, $e, options);\n }\n MinimumInputLength.prototype.query = function (decorated, params, callback) {\n params.term = params.term || '';\n if (params.term.length < this.minimumInputLength) {\n this.trigger('results:message', {\n message: 'inputTooShort',\n args: {\n minimum: this.minimumInputLength,\n input: params.term,\n params: params\n }\n });\n return;\n }\n decorated.call(this, params, callback);\n };\n return MinimumInputLength;\n });\n S2.define('select2/data/maximumInputLength', [], function () {\n function MaximumInputLength(decorated, $e, options) {\n this.maximumInputLength = options.get('maximumInputLength');\n decorated.call(this, $e, options);\n }\n MaximumInputLength.prototype.query = function (decorated, params, callback) {\n params.term = params.term || '';\n if (this.maximumInputLength > 0 && params.term.length > this.maximumInputLength) {\n this.trigger('results:message', {\n message: 'inputTooLong',\n args: {\n maximum: this.maximumInputLength,\n input: params.term,\n params: params\n }\n });\n return;\n }\n decorated.call(this, params, callback);\n };\n return MaximumInputLength;\n });\n S2.define('select2/data/maximumSelectionLength', [], function () {\n function MaximumSelectionLength(decorated, $e, options) {\n this.maximumSelectionLength = options.get('maximumSelectionLength');\n decorated.call(this, $e, options);\n }\n MaximumSelectionLength.prototype.bind = function (decorated, container, $container) {\n var self = this;\n decorated.call(this, container, $container);\n container.on('select', function () {\n self._checkIfMaximumSelected();\n });\n };\n MaximumSelectionLength.prototype.query = function (decorated, params, callback) {\n var self = this;\n this._checkIfMaximumSelected(function () {\n decorated.call(self, params, callback);\n });\n };\n MaximumSelectionLength.prototype._checkIfMaximumSelected = function (_, successCallback) {\n var self = this;\n this.current(function (currentData) {\n var count = currentData != null ? currentData.length : 0;\n if (self.maximumSelectionLength > 0 && count >= self.maximumSelectionLength) {\n self.trigger('results:message', {\n message: 'maximumSelected',\n args: {\n maximum: self.maximumSelectionLength\n }\n });\n return;\n }\n if (successCallback) {\n successCallback();\n }\n });\n };\n return MaximumSelectionLength;\n });\n S2.define('select2/dropdown', ['jquery', './utils'], function ($, Utils) {\n function Dropdown($element, options) {\n this.$element = $element;\n this.options = options;\n Dropdown.__super__.constructor.call(this);\n }\n Utils.Extend(Dropdown, Utils.Observable);\n Dropdown.prototype.render = function () {\n var $dropdown = $('<span class=\"select2-dropdown\">' + '<span class=\"select2-results\"></span>' + '</span>');\n $dropdown.attr('dir', this.options.get('dir'));\n this.$dropdown = $dropdown;\n return $dropdown;\n };\n Dropdown.prototype.bind = function () {\n // Should be implemented in subclasses\n };\n Dropdown.prototype.position = function ($dropdown, $container) {\n // Should be implemented in subclasses\n };\n Dropdown.prototype.destroy = function () {\n // Remove the dropdown from the DOM\n this.$dropdown.remove();\n };\n return Dropdown;\n });\n S2.define('select2/dropdown/search', ['jquery'], function ($) {\n function Search() {}\n Search.prototype.render = function (decorated) {\n var $rendered = decorated.call(this);\n var searchLabel = this.options.get('translations').get('search');\n var $search = $('<span class=\"select2-search select2-search--dropdown\">' + '<input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\"' + ' autocorrect=\"off\" autocapitalize=\"none\"' + ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" />' + '</span>');\n this.$searchContainer = $search;\n this.$search = $search.find('input');\n this.$search.prop('autocomplete', this.options.get('autocomplete'));\n this.$search.attr('aria-label', searchLabel());\n $rendered.prepend($search);\n return $rendered;\n };\n Search.prototype.bind = function (decorated, container, $container) {\n var self = this;\n var resultsId = container.id + '-results';\n decorated.call(this, container, $container);\n this.$search.on('keydown', function (evt) {\n self.trigger('keypress', evt);\n self._keyUpPrevented = evt.isDefaultPrevented();\n });\n\n // Workaround for browsers which do not support the `input` event\n // This will prevent double-triggering of events for browsers which support\n // both the `keyup` and `input` events.\n this.$search.on('input', function (evt) {\n // Unbind the duplicated `keyup` event\n $(this).off('keyup');\n });\n this.$search.on('keyup input', function (evt) {\n self.handleSearch(evt);\n });\n container.on('open', function () {\n self.$search.attr('tabindex', 0);\n self.$search.attr('aria-controls', resultsId);\n self.$search.trigger('focus');\n window.setTimeout(function () {\n self.$search.trigger('focus');\n }, 0);\n });\n container.on('close', function () {\n self.$search.attr('tabindex', -1);\n self.$search.removeAttr('aria-controls');\n self.$search.removeAttr('aria-activedescendant');\n self.$search.val('');\n self.$search.trigger('blur');\n });\n container.on('focus', function () {\n if (!container.isOpen()) {\n self.$search.trigger('focus');\n }\n });\n container.on('results:all', function (params) {\n if (params.query.term == null || params.query.term === '') {\n var showSearch = self.showSearch(params);\n if (showSearch) {\n self.$searchContainer[0].classList.remove('select2-search--hide');\n } else {\n self.$searchContainer[0].classList.add('select2-search--hide');\n }\n }\n });\n container.on('results:focus', function (params) {\n if (params.data._resultId) {\n self.$search.attr('aria-activedescendant', params.data._resultId);\n } else {\n self.$search.removeAttr('aria-activedescendant');\n }\n });\n };\n Search.prototype.handleSearch = function (evt) {\n if (!this._keyUpPrevented) {\n var input = this.$search.val();\n this.trigger('query', {\n term: input\n });\n }\n this._keyUpPrevented = false;\n };\n Search.prototype.showSearch = function (_, params) {\n return true;\n };\n return Search;\n });\n S2.define('select2/dropdown/hidePlaceholder', [], function () {\n function HidePlaceholder(decorated, $element, options, dataAdapter) {\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n decorated.call(this, $element, options, dataAdapter);\n }\n HidePlaceholder.prototype.append = function (decorated, data) {\n data.results = this.removePlaceholder(data.results);\n decorated.call(this, data);\n };\n HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\n if (typeof placeholder === 'string') {\n placeholder = {\n id: '',\n text: placeholder\n };\n }\n return placeholder;\n };\n HidePlaceholder.prototype.removePlaceholder = function (_, data) {\n var modifiedData = data.slice(0);\n for (var d = data.length - 1; d >= 0; d--) {\n var item = data[d];\n if (this.placeholder.id === item.id) {\n modifiedData.splice(d, 1);\n }\n }\n return modifiedData;\n };\n return HidePlaceholder;\n });\n S2.define('select2/dropdown/infiniteScroll', ['jquery'], function ($) {\n function InfiniteScroll(decorated, $element, options, dataAdapter) {\n this.lastParams = {};\n decorated.call(this, $element, options, dataAdapter);\n this.$loadingMore = this.createLoadingMore();\n this.loading = false;\n }\n InfiniteScroll.prototype.append = function (decorated, data) {\n this.$loadingMore.remove();\n this.loading = false;\n decorated.call(this, data);\n if (this.showLoadingMore(data)) {\n this.$results.append(this.$loadingMore);\n this.loadMoreIfNeeded();\n }\n };\n InfiniteScroll.prototype.bind = function (decorated, container, $container) {\n var self = this;\n decorated.call(this, container, $container);\n container.on('query', function (params) {\n self.lastParams = params;\n self.loading = true;\n });\n container.on('query:append', function (params) {\n self.lastParams = params;\n self.loading = true;\n });\n this.$results.on('scroll', this.loadMoreIfNeeded.bind(this));\n };\n InfiniteScroll.prototype.loadMoreIfNeeded = function () {\n var isLoadMoreVisible = $.contains(document.documentElement, this.$loadingMore[0]);\n if (this.loading || !isLoadMoreVisible) {\n return;\n }\n var currentOffset = this.$results.offset().top + this.$results.outerHeight(false);\n var loadingMoreOffset = this.$loadingMore.offset().top + this.$loadingMore.outerHeight(false);\n if (currentOffset + 50 >= loadingMoreOffset) {\n this.loadMore();\n }\n };\n InfiniteScroll.prototype.loadMore = function () {\n this.loading = true;\n var params = $.extend({}, {\n page: 1\n }, this.lastParams);\n params.page++;\n this.trigger('query:append', params);\n };\n InfiniteScroll.prototype.showLoadingMore = function (_, data) {\n return data.pagination && data.pagination.more;\n };\n InfiniteScroll.prototype.createLoadingMore = function () {\n var $option = $('<li ' + 'class=\"select2-results__option select2-results__option--load-more\"' + 'role=\"option\" aria-disabled=\"true\"></li>');\n var message = this.options.get('translations').get('loadingMore');\n $option.html(message(this.lastParams));\n return $option;\n };\n return InfiniteScroll;\n });\n S2.define('select2/dropdown/attachBody', ['jquery', '../utils'], function ($, Utils) {\n function AttachBody(decorated, $element, options) {\n this.$dropdownParent = $(options.get('dropdownParent') || document.body);\n decorated.call(this, $element, options);\n }\n AttachBody.prototype.bind = function (decorated, container, $container) {\n var self = this;\n decorated.call(this, container, $container);\n container.on('open', function () {\n self._showDropdown();\n self._attachPositioningHandler(container);\n\n // Must bind after the results handlers to ensure correct sizing\n self._bindContainerResultHandlers(container);\n });\n container.on('close', function () {\n self._hideDropdown();\n self._detachPositioningHandler(container);\n });\n this.$dropdownContainer.on('mousedown', function (evt) {\n evt.stopPropagation();\n });\n };\n AttachBody.prototype.destroy = function (decorated) {\n decorated.call(this);\n this.$dropdownContainer.remove();\n };\n AttachBody.prototype.position = function (decorated, $dropdown, $container) {\n // Clone all of the container classes\n $dropdown.attr('class', $container.attr('class'));\n $dropdown[0].classList.remove('select2');\n $dropdown[0].classList.add('select2-container--open');\n $dropdown.css({\n position: 'absolute',\n top: -999999\n });\n this.$container = $container;\n };\n AttachBody.prototype.render = function (decorated) {\n var $container = $('<span></span>');\n var $dropdown = decorated.call(this);\n $container.append($dropdown);\n this.$dropdownContainer = $container;\n return $container;\n };\n AttachBody.prototype._hideDropdown = function (decorated) {\n this.$dropdownContainer.detach();\n };\n AttachBody.prototype._bindContainerResultHandlers = function (decorated, container) {\n // These should only be bound once\n if (this._containerResultsHandlersBound) {\n return;\n }\n var self = this;\n container.on('results:all', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n container.on('results:append', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n container.on('results:message', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n container.on('select', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n container.on('unselect', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n this._containerResultsHandlersBound = true;\n };\n AttachBody.prototype._attachPositioningHandler = function (decorated, container) {\n var self = this;\n var scrollEvent = 'scroll.select2.' + container.id;\n var resizeEvent = 'resize.select2.' + container.id;\n var orientationEvent = 'orientationchange.select2.' + container.id;\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\n $watchers.each(function () {\n Utils.StoreData(this, 'select2-scroll-position', {\n x: $(this).scrollLeft(),\n y: $(this).scrollTop()\n });\n });\n $watchers.on(scrollEvent, function (ev) {\n var position = Utils.GetData(this, 'select2-scroll-position');\n $(this).scrollTop(position.y);\n });\n $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent, function (e) {\n self._positionDropdown();\n self._resizeDropdown();\n });\n };\n AttachBody.prototype._detachPositioningHandler = function (decorated, container) {\n var scrollEvent = 'scroll.select2.' + container.id;\n var resizeEvent = 'resize.select2.' + container.id;\n var orientationEvent = 'orientationchange.select2.' + container.id;\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\n $watchers.off(scrollEvent);\n $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\n };\n AttachBody.prototype._positionDropdown = function () {\n var $window = $(window);\n var isCurrentlyAbove = this.$dropdown[0].classList.contains('select2-dropdown--above');\n var isCurrentlyBelow = this.$dropdown[0].classList.contains('select2-dropdown--below');\n var newDirection = null;\n var offset = this.$container.offset();\n offset.bottom = offset.top + this.$container.outerHeight(false);\n var container = {\n height: this.$container.outerHeight(false)\n };\n container.top = offset.top;\n container.bottom = offset.top + container.height;\n var dropdown = {\n height: this.$dropdown.outerHeight(false)\n };\n var viewport = {\n top: $window.scrollTop(),\n bottom: $window.scrollTop() + $window.height()\n };\n var enoughRoomAbove = viewport.top < offset.top - dropdown.height;\n var enoughRoomBelow = viewport.bottom > offset.bottom + dropdown.height;\n var css = {\n left: offset.left,\n top: container.bottom\n };\n\n // Determine what the parent element is to use for calculating the offset\n var $offsetParent = this.$dropdownParent;\n\n // For statically positioned elements, we need to get the element\n // that is determining the offset\n if ($offsetParent.css('position') === 'static') {\n $offsetParent = $offsetParent.offsetParent();\n }\n var parentOffset = {\n top: 0,\n left: 0\n };\n if ($.contains(document.body, $offsetParent[0]) || $offsetParent[0].isConnected) {\n parentOffset = $offsetParent.offset();\n }\n css.top -= parentOffset.top;\n css.left -= parentOffset.left;\n if (!isCurrentlyAbove && !isCurrentlyBelow) {\n newDirection = 'below';\n }\n if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\n newDirection = 'above';\n } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\n newDirection = 'below';\n }\n if (newDirection == 'above' || isCurrentlyAbove && newDirection !== 'below') {\n css.top = container.top - parentOffset.top - dropdown.height;\n }\n if (newDirection != null) {\n this.$dropdown[0].classList.remove('select2-dropdown--below');\n this.$dropdown[0].classList.remove('select2-dropdown--above');\n this.$dropdown[0].classList.add('select2-dropdown--' + newDirection);\n this.$container[0].classList.remove('select2-container--below');\n this.$container[0].classList.remove('select2-container--above');\n this.$container[0].classList.add('select2-container--' + newDirection);\n }\n this.$dropdownContainer.css(css);\n };\n AttachBody.prototype._resizeDropdown = function () {\n var css = {\n width: this.$container.outerWidth(false) + 'px'\n };\n if (this.options.get('dropdownAutoWidth')) {\n css.minWidth = css.width;\n css.position = 'relative';\n css.width = 'auto';\n }\n this.$dropdown.css(css);\n };\n AttachBody.prototype._showDropdown = function (decorated) {\n this.$dropdownContainer.appendTo(this.$dropdownParent);\n this._positionDropdown();\n this._resizeDropdown();\n };\n return AttachBody;\n });\n S2.define('select2/dropdown/minimumResultsForSearch', [], function () {\n function countResults(data) {\n var count = 0;\n for (var d = 0; d < data.length; d++) {\n var item = data[d];\n if (item.children) {\n count += countResults(item.children);\n } else {\n count++;\n }\n }\n return count;\n }\n function MinimumResultsForSearch(decorated, $element, options, dataAdapter) {\n this.minimumResultsForSearch = options.get('minimumResultsForSearch');\n if (this.minimumResultsForSearch < 0) {\n this.minimumResultsForSearch = Infinity;\n }\n decorated.call(this, $element, options, dataAdapter);\n }\n MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\n if (countResults(params.data.results) < this.minimumResultsForSearch) {\n return false;\n }\n return decorated.call(this, params);\n };\n return MinimumResultsForSearch;\n });\n S2.define('select2/dropdown/selectOnClose', ['../utils'], function (Utils) {\n function SelectOnClose() {}\n SelectOnClose.prototype.bind = function (decorated, container, $container) {\n var self = this;\n decorated.call(this, container, $container);\n container.on('close', function (params) {\n self._handleSelectOnClose(params);\n });\n };\n SelectOnClose.prototype._handleSelectOnClose = function (_, params) {\n if (params && params.originalSelect2Event != null) {\n var event = params.originalSelect2Event;\n\n // Don't select an item if the close event was triggered from a select or\n // unselect event\n if (event._type === 'select' || event._type === 'unselect') {\n return;\n }\n }\n var $highlightedResults = this.getHighlightedResults();\n\n // Only select highlighted results\n if ($highlightedResults.length < 1) {\n return;\n }\n var data = Utils.GetData($highlightedResults[0], 'data');\n\n // Don't re-select already selected resulte\n if (data.element != null && data.element.selected || data.element == null && data.selected) {\n return;\n }\n this.trigger('select', {\n data: data\n });\n };\n return SelectOnClose;\n });\n S2.define('select2/dropdown/closeOnSelect', [], function () {\n function CloseOnSelect() {}\n CloseOnSelect.prototype.bind = function (decorated, container, $container) {\n var self = this;\n decorated.call(this, container, $container);\n container.on('select', function (evt) {\n self._selectTriggered(evt);\n });\n container.on('unselect', function (evt) {\n self._selectTriggered(evt);\n });\n };\n CloseOnSelect.prototype._selectTriggered = function (_, evt) {\n var originalEvent = evt.originalEvent;\n\n // Don't close if the control key is being held\n if (originalEvent && (originalEvent.ctrlKey || originalEvent.metaKey)) {\n return;\n }\n this.trigger('close', {\n originalEvent: originalEvent,\n originalSelect2Event: evt\n });\n };\n return CloseOnSelect;\n });\n S2.define('select2/dropdown/dropdownCss', ['../utils'], function (Utils) {\n function DropdownCSS() {}\n DropdownCSS.prototype.render = function (decorated) {\n var $dropdown = decorated.call(this);\n var dropdownCssClass = this.options.get('dropdownCssClass') || '';\n if (dropdownCssClass.indexOf(':all:') !== -1) {\n dropdownCssClass = dropdownCssClass.replace(':all:', '');\n Utils.copyNonInternalCssClasses($dropdown[0], this.$element[0]);\n }\n $dropdown.addClass(dropdownCssClass);\n return $dropdown;\n };\n return DropdownCSS;\n });\n S2.define('select2/dropdown/tagsSearchHighlight', ['../utils'], function (Utils) {\n function TagsSearchHighlight() {}\n TagsSearchHighlight.prototype.highlightFirstItem = function (decorated) {\n var $options = this.$results.find('.select2-results__option--selectable' + ':not(.select2-results__option--selected)');\n if ($options.length > 0) {\n var $firstOption = $options.first();\n var data = Utils.GetData($firstOption[0], 'data');\n var firstElement = data.element;\n if (firstElement && firstElement.getAttribute) {\n if (firstElement.getAttribute('data-select2-tag') === 'true') {\n $firstOption.trigger('mouseenter');\n return;\n }\n }\n }\n decorated.call(this);\n };\n return TagsSearchHighlight;\n });\n S2.define('select2/i18n/en', [], function () {\n // English\n return {\n errorLoading: function () {\n return 'The results could not be loaded.';\n },\n inputTooLong: function (args) {\n var overChars = args.input.length - args.maximum;\n var message = 'Please delete ' + overChars + ' character';\n if (overChars != 1) {\n message += 's';\n }\n return message;\n },\n inputTooShort: function (args) {\n var remainingChars = args.minimum - args.input.length;\n var message = 'Please enter ' + remainingChars + ' or more characters';\n return message;\n },\n loadingMore: function () {\n return 'Loading more results…';\n },\n maximumSelected: function (args) {\n var message = 'You can only select ' + args.maximum + ' item';\n if (args.maximum != 1) {\n message += 's';\n }\n return message;\n },\n noResults: function () {\n return 'No results found';\n },\n searching: function () {\n return 'Searching…';\n },\n removeAllItems: function () {\n return 'Remove all items';\n },\n removeItem: function () {\n return 'Remove item';\n },\n search: function () {\n return 'Search';\n }\n };\n });\n S2.define('select2/defaults', ['jquery', './results', './selection/single', './selection/multiple', './selection/placeholder', './selection/allowClear', './selection/search', './selection/selectionCss', './selection/eventRelay', './utils', './translation', './diacritics', './data/select', './data/array', './data/ajax', './data/tags', './data/tokenizer', './data/minimumInputLength', './data/maximumInputLength', './data/maximumSelectionLength', './dropdown', './dropdown/search', './dropdown/hidePlaceholder', './dropdown/infiniteScroll', './dropdown/attachBody', './dropdown/minimumResultsForSearch', './dropdown/selectOnClose', './dropdown/closeOnSelect', './dropdown/dropdownCss', './dropdown/tagsSearchHighlight', './i18n/en'], function ($, ResultsList, SingleSelection, MultipleSelection, Placeholder, AllowClear, SelectionSearch, SelectionCSS, EventRelay, Utils, Translation, DIACRITICS, SelectData, ArrayData, AjaxData, Tags, Tokenizer, MinimumInputLength, MaximumInputLength, MaximumSelectionLength, Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll, AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect, DropdownCSS, TagsSearchHighlight, EnglishTranslation) {\n function Defaults() {\n this.reset();\n }\n Defaults.prototype.apply = function (options) {\n options = $.extend(true, {}, this.defaults, options);\n if (options.dataAdapter == null) {\n if (options.ajax != null) {\n options.dataAdapter = AjaxData;\n } else if (options.data != null) {\n options.dataAdapter = ArrayData;\n } else {\n options.dataAdapter = SelectData;\n }\n if (options.minimumInputLength > 0) {\n options.dataAdapter = Utils.Decorate(options.dataAdapter, MinimumInputLength);\n }\n if (options.maximumInputLength > 0) {\n options.dataAdapter = Utils.Decorate(options.dataAdapter, MaximumInputLength);\n }\n if (options.maximumSelectionLength > 0) {\n options.dataAdapter = Utils.Decorate(options.dataAdapter, MaximumSelectionLength);\n }\n if (options.tags) {\n options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\n }\n if (options.tokenSeparators != null || options.tokenizer != null) {\n options.dataAdapter = Utils.Decorate(options.dataAdapter, Tokenizer);\n }\n }\n if (options.resultsAdapter == null) {\n options.resultsAdapter = ResultsList;\n if (options.ajax != null) {\n options.resultsAdapter = Utils.Decorate(options.resultsAdapter, InfiniteScroll);\n }\n if (options.placeholder != null) {\n options.resultsAdapter = Utils.Decorate(options.resultsAdapter, HidePlaceholder);\n }\n if (options.selectOnClose) {\n options.resultsAdapter = Utils.Decorate(options.resultsAdapter, SelectOnClose);\n }\n if (options.tags) {\n options.resultsAdapter = Utils.Decorate(options.resultsAdapter, TagsSearchHighlight);\n }\n }\n if (options.dropdownAdapter == null) {\n if (options.multiple) {\n options.dropdownAdapter = Dropdown;\n } else {\n var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);\n options.dropdownAdapter = SearchableDropdown;\n }\n if (options.minimumResultsForSearch !== 0) {\n options.dropdownAdapter = Utils.Decorate(options.dropdownAdapter, MinimumResultsForSearch);\n }\n if (options.closeOnSelect) {\n options.dropdownAdapter = Utils.Decorate(options.dropdownAdapter, CloseOnSelect);\n }\n if (options.dropdownCssClass != null) {\n options.dropdownAdapter = Utils.Decorate(options.dropdownAdapter, DropdownCSS);\n }\n options.dropdownAdapter = Utils.Decorate(options.dropdownAdapter, AttachBody);\n }\n if (options.selectionAdapter == null) {\n if (options.multiple) {\n options.selectionAdapter = MultipleSelection;\n } else {\n options.selectionAdapter = SingleSelection;\n }\n\n // Add the placeholder mixin if a placeholder was specified\n if (options.placeholder != null) {\n options.selectionAdapter = Utils.Decorate(options.selectionAdapter, Placeholder);\n }\n if (options.allowClear) {\n options.selectionAdapter = Utils.Decorate(options.selectionAdapter, AllowClear);\n }\n if (options.multiple) {\n options.selectionAdapter = Utils.Decorate(options.selectionAdapter, SelectionSearch);\n }\n if (options.selectionCssClass != null) {\n options.selectionAdapter = Utils.Decorate(options.selectionAdapter, SelectionCSS);\n }\n options.selectionAdapter = Utils.Decorate(options.selectionAdapter, EventRelay);\n }\n\n // If the defaults were not previously applied from an element, it is\n // possible for the language option to have not been resolved\n options.language = this._resolveLanguage(options.language);\n\n // Always fall back to English since it will always be complete\n options.language.push('en');\n var uniqueLanguages = [];\n for (var l = 0; l < options.language.length; l++) {\n var language = options.language[l];\n if (uniqueLanguages.indexOf(language) === -1) {\n uniqueLanguages.push(language);\n }\n }\n options.language = uniqueLanguages;\n options.translations = this._processTranslations(options.language, options.debug);\n return options;\n };\n Defaults.prototype.reset = function () {\n function stripDiacritics(text) {\n // Used 'uni range + named function' from http://jsperf.com/diacritics/18\n function match(a) {\n return DIACRITICS[a] || a;\n }\n return text.replace(/[^\\u0000-\\u007E]/g, match);\n }\n function matcher(params, data) {\n // Always return the object if there is nothing to compare\n if (params.term == null || params.term.trim() === '') {\n return data;\n }\n\n // Do a recursive check for options with children\n if (data.children && data.children.length > 0) {\n // Clone the data object if there are children\n // This is required as we modify the object to remove any non-matches\n var match = $.extend(true, {}, data);\n\n // Check each child of the option\n for (var c = data.children.length - 1; c >= 0; c--) {\n var child = data.children[c];\n var matches = matcher(params, child);\n\n // If there wasn't a match, remove the object in the array\n if (matches == null) {\n match.children.splice(c, 1);\n }\n }\n\n // If any children matched, return the new object\n if (match.children.length > 0) {\n return match;\n }\n\n // If there were no matching children, check just the plain object\n return matcher(params, match);\n }\n var original = stripDiacritics(data.text).toUpperCase();\n var term = stripDiacritics(params.term).toUpperCase();\n\n // Check if the text contains the term\n if (original.indexOf(term) > -1) {\n return data;\n }\n\n // If it doesn't contain the term, don't return anything\n return null;\n }\n this.defaults = {\n amdLanguageBase: './i18n/',\n autocomplete: 'off',\n closeOnSelect: true,\n debug: false,\n dropdownAutoWidth: false,\n escapeMarkup: Utils.escapeMarkup,\n language: {},\n matcher: matcher,\n minimumInputLength: 0,\n maximumInputLength: 0,\n maximumSelectionLength: 0,\n minimumResultsForSearch: 0,\n selectOnClose: false,\n scrollAfterSelect: false,\n sorter: function (data) {\n return data;\n },\n templateResult: function (result) {\n return result.text;\n },\n templateSelection: function (selection) {\n return selection.text;\n },\n theme: 'default',\n width: 'resolve'\n };\n };\n Defaults.prototype.applyFromElement = function (options, $element) {\n var optionLanguage = options.language;\n var defaultLanguage = this.defaults.language;\n var elementLanguage = $element.prop('lang');\n var parentLanguage = $element.closest('[lang]').prop('lang');\n var languages = Array.prototype.concat.call(this._resolveLanguage(elementLanguage), this._resolveLanguage(optionLanguage), this._resolveLanguage(defaultLanguage), this._resolveLanguage(parentLanguage));\n options.language = languages;\n return options;\n };\n Defaults.prototype._resolveLanguage = function (language) {\n if (!language) {\n return [];\n }\n if ($.isEmptyObject(language)) {\n return [];\n }\n if ($.isPlainObject(language)) {\n return [language];\n }\n var languages;\n if (!Array.isArray(language)) {\n languages = [language];\n } else {\n languages = language;\n }\n var resolvedLanguages = [];\n for (var l = 0; l < languages.length; l++) {\n resolvedLanguages.push(languages[l]);\n if (typeof languages[l] === 'string' && languages[l].indexOf('-') > 0) {\n // Extract the region information if it is included\n var languageParts = languages[l].split('-');\n var baseLanguage = languageParts[0];\n resolvedLanguages.push(baseLanguage);\n }\n }\n return resolvedLanguages;\n };\n Defaults.prototype._processTranslations = function (languages, debug) {\n var translations = new Translation();\n for (var l = 0; l < languages.length; l++) {\n var languageData = new Translation();\n var language = languages[l];\n if (typeof language === 'string') {\n try {\n // Try to load it with the original name\n languageData = Translation.loadPath(language);\n } catch (e) {\n try {\n // If we couldn't load it, check if it wasn't the full path\n language = this.defaults.amdLanguageBase + language;\n languageData = Translation.loadPath(language);\n } catch (ex) {\n // The translation could not be loaded at all. Sometimes this is\n // because of a configuration problem, other times this can be\n // because of how Select2 helps load all possible translation files\n if (debug && window.console && console.warn) {\n console.warn('Select2: The language file for \"' + language + '\" could ' + 'not be automatically loaded. A fallback will be used instead.');\n }\n }\n }\n } else if ($.isPlainObject(language)) {\n languageData = new Translation(language);\n } else {\n languageData = language;\n }\n translations.extend(languageData);\n }\n return translations;\n };\n Defaults.prototype.set = function (key, value) {\n var camelKey = $.camelCase(key);\n var data = {};\n data[camelKey] = value;\n var convertedData = Utils._convertData(data);\n $.extend(true, this.defaults, convertedData);\n };\n var defaults = new Defaults();\n return defaults;\n });\n S2.define('select2/options', ['jquery', './defaults', './utils'], function ($, Defaults, Utils) {\n function Options(options, $element) {\n this.options = options;\n if ($element != null) {\n this.fromElement($element);\n }\n if ($element != null) {\n this.options = Defaults.applyFromElement(this.options, $element);\n }\n this.options = Defaults.apply(this.options);\n }\n Options.prototype.fromElement = function ($e) {\n var excludedData = ['select2'];\n if (this.options.multiple == null) {\n this.options.multiple = $e.prop('multiple');\n }\n if (this.options.disabled == null) {\n this.options.disabled = $e.prop('disabled');\n }\n if (this.options.autocomplete == null && $e.prop('autocomplete')) {\n this.options.autocomplete = $e.prop('autocomplete');\n }\n if (this.options.dir == null) {\n if ($e.prop('dir')) {\n this.options.dir = $e.prop('dir');\n } else if ($e.closest('[dir]').prop('dir')) {\n this.options.dir = $e.closest('[dir]').prop('dir');\n } else {\n this.options.dir = 'ltr';\n }\n }\n $e.prop('disabled', this.options.disabled);\n $e.prop('multiple', this.options.multiple);\n if (Utils.GetData($e[0], 'select2Tags')) {\n if (this.options.debug && window.console && console.warn) {\n console.warn('Select2: The `data-select2-tags` attribute has been changed to ' + 'use the `data-data` and `data-tags=\"true\"` attributes and will be ' + 'removed in future versions of Select2.');\n }\n Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags'));\n Utils.StoreData($e[0], 'tags', true);\n }\n if (Utils.GetData($e[0], 'ajaxUrl')) {\n if (this.options.debug && window.console && console.warn) {\n console.warn('Select2: The `data-ajax-url` attribute has been changed to ' + '`data-ajax--url` and support for the old attribute will be removed' + ' in future versions of Select2.');\n }\n $e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl'));\n Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl'));\n }\n var dataset = {};\n function upperCaseLetter(_, letter) {\n return letter.toUpperCase();\n }\n\n // Pre-load all of the attributes which are prefixed with `data-`\n for (var attr = 0; attr < $e[0].attributes.length; attr++) {\n var attributeName = $e[0].attributes[attr].name;\n var prefix = 'data-';\n if (attributeName.substr(0, prefix.length) == prefix) {\n // Get the contents of the attribute after `data-`\n var dataName = attributeName.substring(prefix.length);\n\n // Get the data contents from the consistent source\n // This is more than likely the jQuery data helper\n var dataValue = Utils.GetData($e[0], dataName);\n\n // camelCase the attribute name to match the spec\n var camelDataName = dataName.replace(/-([a-z])/g, upperCaseLetter);\n\n // Store the data attribute contents into the dataset since\n dataset[camelDataName] = dataValue;\n }\n }\n\n // Prefer the element's `dataset` attribute if it exists\n // jQuery 1.x does not correctly handle data attributes with multiple dashes\n if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {\n dataset = $.extend(true, {}, $e[0].dataset, dataset);\n }\n\n // Prefer our internal data cache if it exists\n var data = $.extend(true, {}, Utils.GetData($e[0]), dataset);\n data = Utils._convertData(data);\n for (var key in data) {\n if (excludedData.indexOf(key) > -1) {\n continue;\n }\n if ($.isPlainObject(this.options[key])) {\n $.extend(this.options[key], data[key]);\n } else {\n this.options[key] = data[key];\n }\n }\n return this;\n };\n Options.prototype.get = function (key) {\n return this.options[key];\n };\n Options.prototype.set = function (key, val) {\n this.options[key] = val;\n };\n return Options;\n });\n S2.define('select2/core', ['jquery', './options', './utils', './keys'], function ($, Options, Utils, KEYS) {\n var Select2 = function ($element, options) {\n if (Utils.GetData($element[0], 'select2') != null) {\n Utils.GetData($element[0], 'select2').destroy();\n }\n this.$element = $element;\n this.id = this._generateId($element);\n options = options || {};\n this.options = new Options(options, $element);\n Select2.__super__.constructor.call(this);\n\n // Set up the tabindex\n\n var tabindex = $element.attr('tabindex') || 0;\n Utils.StoreData($element[0], 'old-tabindex', tabindex);\n $element.attr('tabindex', '-1');\n\n // Set up containers and adapters\n\n var DataAdapter = this.options.get('dataAdapter');\n this.dataAdapter = new DataAdapter($element, this.options);\n var $container = this.render();\n this._placeContainer($container);\n var SelectionAdapter = this.options.get('selectionAdapter');\n this.selection = new SelectionAdapter($element, this.options);\n this.$selection = this.selection.render();\n this.selection.position(this.$selection, $container);\n var DropdownAdapter = this.options.get('dropdownAdapter');\n this.dropdown = new DropdownAdapter($element, this.options);\n this.$dropdown = this.dropdown.render();\n this.dropdown.position(this.$dropdown, $container);\n var ResultsAdapter = this.options.get('resultsAdapter');\n this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\n this.$results = this.results.render();\n this.results.position(this.$results, this.$dropdown);\n\n // Bind events\n\n var self = this;\n\n // Bind the container to all of the adapters\n this._bindAdapters();\n\n // Register any DOM event handlers\n this._registerDomEvents();\n\n // Register any internal event handlers\n this._registerDataEvents();\n this._registerSelectionEvents();\n this._registerDropdownEvents();\n this._registerResultsEvents();\n this._registerEvents();\n\n // Set the initial state\n this.dataAdapter.current(function (initialData) {\n self.trigger('selection:update', {\n data: initialData\n });\n });\n\n // Hide the original select\n $element[0].classList.add('select2-hidden-accessible');\n $element.attr('aria-hidden', 'true');\n\n // Synchronize any monitored attributes\n this._syncAttributes();\n Utils.StoreData($element[0], 'select2', this);\n\n // Ensure backwards compatibility with $element.data('select2').\n $element.data('select2', this);\n };\n Utils.Extend(Select2, Utils.Observable);\n Select2.prototype._generateId = function ($element) {\n var id = '';\n if ($element.attr('id') != null) {\n id = $element.attr('id');\n } else if ($element.attr('name') != null) {\n id = $element.attr('name') + '-' + Utils.generateChars(2);\n } else {\n id = Utils.generateChars(4);\n }\n id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n id = 'select2-' + id;\n return id;\n };\n Select2.prototype._placeContainer = function ($container) {\n $container.insertAfter(this.$element);\n var width = this._resolveWidth(this.$element, this.options.get('width'));\n if (width != null) {\n $container.css('width', width);\n }\n };\n Select2.prototype._resolveWidth = function ($element, method) {\n var WIDTH = /^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;\n if (method == 'resolve') {\n var styleWidth = this._resolveWidth($element, 'style');\n if (styleWidth != null) {\n return styleWidth;\n }\n return this._resolveWidth($element, 'element');\n }\n if (method == 'element') {\n var elementWidth = $element.outerWidth(false);\n if (elementWidth <= 0) {\n return 'auto';\n }\n return elementWidth + 'px';\n }\n if (method == 'style') {\n var style = $element.attr('style');\n if (typeof style !== 'string') {\n return null;\n }\n var attrs = style.split(';');\n for (var i = 0, l = attrs.length; i < l; i = i + 1) {\n var attr = attrs[i].replace(/\\s/g, '');\n var matches = attr.match(WIDTH);\n if (matches !== null && matches.length >= 1) {\n return matches[1];\n }\n }\n return null;\n }\n if (method == 'computedstyle') {\n var computedStyle = window.getComputedStyle($element[0]);\n return computedStyle.width;\n }\n return method;\n };\n Select2.prototype._bindAdapters = function () {\n this.dataAdapter.bind(this, this.$container);\n this.selection.bind(this, this.$container);\n this.dropdown.bind(this, this.$container);\n this.results.bind(this, this.$container);\n };\n Select2.prototype._registerDomEvents = function () {\n var self = this;\n this.$element.on('change.select2', function () {\n self.dataAdapter.current(function (data) {\n self.trigger('selection:update', {\n data: data\n });\n });\n });\n this.$element.on('focus.select2', function (evt) {\n self.trigger('focus', evt);\n });\n this._syncA = Utils.bind(this._syncAttributes, this);\n this._syncS = Utils.bind(this._syncSubtree, this);\n this._observer = new window.MutationObserver(function (mutations) {\n self._syncA();\n self._syncS(mutations);\n });\n this._observer.observe(this.$element[0], {\n attributes: true,\n childList: true,\n subtree: false\n });\n };\n Select2.prototype._registerDataEvents = function () {\n var self = this;\n this.dataAdapter.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n Select2.prototype._registerSelectionEvents = function () {\n var self = this;\n var nonRelayEvents = ['toggle', 'focus'];\n this.selection.on('toggle', function () {\n self.toggleDropdown();\n });\n this.selection.on('focus', function (params) {\n self.focus(params);\n });\n this.selection.on('*', function (name, params) {\n if (nonRelayEvents.indexOf(name) !== -1) {\n return;\n }\n self.trigger(name, params);\n });\n };\n Select2.prototype._registerDropdownEvents = function () {\n var self = this;\n this.dropdown.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n Select2.prototype._registerResultsEvents = function () {\n var self = this;\n this.results.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n Select2.prototype._registerEvents = function () {\n var self = this;\n this.on('open', function () {\n self.$container[0].classList.add('select2-container--open');\n });\n this.on('close', function () {\n self.$container[0].classList.remove('select2-container--open');\n });\n this.on('enable', function () {\n self.$container[0].classList.remove('select2-container--disabled');\n });\n this.on('disable', function () {\n self.$container[0].classList.add('select2-container--disabled');\n });\n this.on('blur', function () {\n self.$container[0].classList.remove('select2-container--focus');\n });\n this.on('query', function (params) {\n if (!self.isOpen()) {\n self.trigger('open', {});\n }\n this.dataAdapter.query(params, function (data) {\n self.trigger('results:all', {\n data: data,\n query: params\n });\n });\n });\n this.on('query:append', function (params) {\n this.dataAdapter.query(params, function (data) {\n self.trigger('results:append', {\n data: data,\n query: params\n });\n });\n });\n this.on('keypress', function (evt) {\n var key = evt.which;\n if (self.isOpen()) {\n if (key === KEYS.ESC || key === KEYS.UP && evt.altKey) {\n self.close(evt);\n evt.preventDefault();\n } else if (key === KEYS.ENTER || key === KEYS.TAB) {\n self.trigger('results:select', {});\n evt.preventDefault();\n } else if (key === KEYS.SPACE && evt.ctrlKey) {\n self.trigger('results:toggle', {});\n evt.preventDefault();\n } else if (key === KEYS.UP) {\n self.trigger('results:previous', {});\n evt.preventDefault();\n } else if (key === KEYS.DOWN) {\n self.trigger('results:next', {});\n evt.preventDefault();\n }\n } else {\n if (key === KEYS.ENTER || key === KEYS.SPACE || key === KEYS.DOWN && evt.altKey) {\n self.open();\n evt.preventDefault();\n }\n }\n });\n };\n Select2.prototype._syncAttributes = function () {\n this.options.set('disabled', this.$element.prop('disabled'));\n if (this.isDisabled()) {\n if (this.isOpen()) {\n this.close();\n }\n this.trigger('disable', {});\n } else {\n this.trigger('enable', {});\n }\n };\n Select2.prototype._isChangeMutation = function (mutations) {\n var self = this;\n if (mutations.addedNodes && mutations.addedNodes.length > 0) {\n for (var n = 0; n < mutations.addedNodes.length; n++) {\n var node = mutations.addedNodes[n];\n if (node.selected) {\n return true;\n }\n }\n } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\n return true;\n } else if (Array.isArray(mutations)) {\n return mutations.some(function (mutation) {\n return self._isChangeMutation(mutation);\n });\n }\n return false;\n };\n Select2.prototype._syncSubtree = function (mutations) {\n var changed = this._isChangeMutation(mutations);\n var self = this;\n\n // Only re-pull the data if we think there is a change\n if (changed) {\n this.dataAdapter.current(function (currentData) {\n self.trigger('selection:update', {\n data: currentData\n });\n });\n }\n };\n\n /**\n * Override the trigger method to automatically trigger pre-events when\n * there are events that can be prevented.\n */\n Select2.prototype.trigger = function (name, args) {\n var actualTrigger = Select2.__super__.trigger;\n var preTriggerMap = {\n 'open': 'opening',\n 'close': 'closing',\n 'select': 'selecting',\n 'unselect': 'unselecting',\n 'clear': 'clearing'\n };\n if (args === undefined) {\n args = {};\n }\n if (name in preTriggerMap) {\n var preTriggerName = preTriggerMap[name];\n var preTriggerArgs = {\n prevented: false,\n name: name,\n args: args\n };\n actualTrigger.call(this, preTriggerName, preTriggerArgs);\n if (preTriggerArgs.prevented) {\n args.prevented = true;\n return;\n }\n }\n actualTrigger.call(this, name, args);\n };\n Select2.prototype.toggleDropdown = function () {\n if (this.isDisabled()) {\n return;\n }\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n };\n Select2.prototype.open = function () {\n if (this.isOpen()) {\n return;\n }\n if (this.isDisabled()) {\n return;\n }\n this.trigger('query', {});\n };\n Select2.prototype.close = function (evt) {\n if (!this.isOpen()) {\n return;\n }\n this.trigger('close', {\n originalEvent: evt\n });\n };\n\n /**\n * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n * object.\n *\n * @return {true} if the instance is not disabled.\n * @return {false} if the instance is disabled.\n */\n Select2.prototype.isEnabled = function () {\n return !this.isDisabled();\n };\n\n /**\n * Helper method to abstract the \"disabled\" state of this object.\n *\n * @return {true} if the disabled option is true.\n * @return {false} if the disabled option is false.\n */\n Select2.prototype.isDisabled = function () {\n return this.options.get('disabled');\n };\n Select2.prototype.isOpen = function () {\n return this.$container[0].classList.contains('select2-container--open');\n };\n Select2.prototype.hasFocus = function () {\n return this.$container[0].classList.contains('select2-container--focus');\n };\n Select2.prototype.focus = function (data) {\n // No need to re-trigger focus events if we are already focused\n if (this.hasFocus()) {\n return;\n }\n this.$container[0].classList.add('select2-container--focus');\n this.trigger('focus', {});\n };\n Select2.prototype.enable = function (args) {\n if (this.options.get('debug') && window.console && console.warn) {\n console.warn('Select2: The `select2(\"enable\")` method has been deprecated and will' + ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' + ' instead.');\n }\n if (args == null || args.length === 0) {\n args = [true];\n }\n var disabled = !args[0];\n this.$element.prop('disabled', disabled);\n };\n Select2.prototype.data = function () {\n if (this.options.get('debug') && arguments.length > 0 && window.console && console.warn) {\n console.warn('Select2: Data can no longer be set using `select2(\"data\")`. You ' + 'should consider setting the value instead using `$element.val()`.');\n }\n var data = [];\n this.dataAdapter.current(function (currentData) {\n data = currentData;\n });\n return data;\n };\n Select2.prototype.val = function (args) {\n if (this.options.get('debug') && window.console && console.warn) {\n console.warn('Select2: The `select2(\"val\")` method has been deprecated and will be' + ' removed in later Select2 versions. Use $element.val() instead.');\n }\n if (args == null || args.length === 0) {\n return this.$element.val();\n }\n var newVal = args[0];\n if (Array.isArray(newVal)) {\n newVal = newVal.map(function (obj) {\n return obj.toString();\n });\n }\n this.$element.val(newVal).trigger('input').trigger('change');\n };\n Select2.prototype.destroy = function () {\n Utils.RemoveData(this.$container[0]);\n this.$container.remove();\n this._observer.disconnect();\n this._observer = null;\n this._syncA = null;\n this._syncS = null;\n this.$element.off('.select2');\n this.$element.attr('tabindex', Utils.GetData(this.$element[0], 'old-tabindex'));\n this.$element[0].classList.remove('select2-hidden-accessible');\n this.$element.attr('aria-hidden', 'false');\n Utils.RemoveData(this.$element[0]);\n this.$element.removeData('select2');\n this.dataAdapter.destroy();\n this.selection.destroy();\n this.dropdown.destroy();\n this.results.destroy();\n this.dataAdapter = null;\n this.selection = null;\n this.dropdown = null;\n this.results = null;\n };\n Select2.prototype.render = function () {\n var $container = $('<span class=\"select2 select2-container\">' + '<span class=\"selection\"></span>' + '<span class=\"dropdown-wrapper\" aria-hidden=\"true\"></span>' + '</span>');\n $container.attr('dir', this.options.get('dir'));\n this.$container = $container;\n this.$container[0].classList.add('select2-container--' + this.options.get('theme'));\n Utils.StoreData($container[0], 'element', this.$element);\n return $container;\n };\n return Select2;\n });\n S2.define('jquery-mousewheel', ['jquery'], function ($) {\n // Used to shim jQuery.mousewheel for non-full builds.\n return $;\n });\n S2.define('jquery.select2', ['jquery', 'jquery-mousewheel', './select2/core', './select2/defaults', './select2/utils'], function ($, _, Select2, Defaults, Utils) {\n if ($.fn.select2 == null) {\n // All methods that should return the element\n var thisMethods = ['open', 'close', 'destroy'];\n $.fn.select2 = function (options) {\n options = options || {};\n if (typeof options === 'object') {\n this.each(function () {\n var instanceOptions = $.extend(true, {}, options);\n var instance = new Select2($(this), instanceOptions);\n });\n return this;\n } else if (typeof options === 'string') {\n var ret;\n var args = Array.prototype.slice.call(arguments, 1);\n this.each(function () {\n var instance = Utils.GetData(this, 'select2');\n if (instance == null && window.console && console.error) {\n console.error('The select2(\\'' + options + '\\') method was called on an ' + 'element that is not using Select2.');\n }\n ret = instance[options].apply(instance, args);\n });\n\n // Check if we should be returning `this`\n if (thisMethods.indexOf(options) > -1) {\n return this;\n }\n return ret;\n } else {\n throw new Error('Invalid arguments for Select2: ' + options);\n }\n };\n }\n if ($.fn.select2.defaults == null) {\n $.fn.select2.defaults = Defaults;\n }\n return Select2;\n });\n\n // Return the AMD loader configuration so it can be used outside of this file\n return {\n define: S2.define,\n require: S2.require\n };\n }();\n\n // Autoload the jQuery bindings\n // We know that all of the modules exist above this, so we're safe\n var select2 = S2.require('jquery.select2');\n\n // Hold the AMD module references on the jQuery function that was just loaded\n // This allows Select2 to use the internal loader outside of this file, such\n // as in the language files.\n jQuery.fn.select2.amd = S2;\n\n // Return the Select2 instance for anyone who is importing it.\n return select2;\n});","!function (t, e) {\n \"object\" == typeof exports && \"object\" == typeof module ? module.exports = e() : \"function\" == typeof define && define.amd ? define([], e) : \"object\" == typeof exports ? exports.swal = e() : t.swal = e();\n}(this, function () {\n return function (t) {\n function e(o) {\n if (n[o]) return n[o].exports;\n var r = n[o] = {\n i: o,\n l: !1,\n exports: {}\n };\n return t[o].call(r.exports, r, r.exports, e), r.l = !0, r.exports;\n }\n var n = {};\n return e.m = t, e.c = n, e.d = function (t, n, o) {\n e.o(t, n) || Object.defineProperty(t, n, {\n configurable: !1,\n enumerable: !0,\n get: o\n });\n }, e.n = function (t) {\n var n = t && t.__esModule ? function () {\n return t.default;\n } : function () {\n return t;\n };\n return e.d(n, \"a\", n), n;\n }, e.o = function (t, e) {\n return Object.prototype.hasOwnProperty.call(t, e);\n }, e.p = \"\", e(e.s = 8);\n }([function (t, e, n) {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n var o = \"swal-button\";\n e.CLASS_NAMES = {\n MODAL: \"swal-modal\",\n OVERLAY: \"swal-overlay\",\n SHOW_MODAL: \"swal-overlay--show-modal\",\n MODAL_TITLE: \"swal-title\",\n MODAL_TEXT: \"swal-text\",\n ICON: \"swal-icon\",\n ICON_CUSTOM: \"swal-icon--custom\",\n CONTENT: \"swal-content\",\n FOOTER: \"swal-footer\",\n BUTTON_CONTAINER: \"swal-button-container\",\n BUTTON: o,\n CONFIRM_BUTTON: o + \"--confirm\",\n CANCEL_BUTTON: o + \"--cancel\",\n DANGER_BUTTON: o + \"--danger\",\n BUTTON_LOADING: o + \"--loading\",\n BUTTON_LOADER: o + \"__loader\"\n }, e.default = e.CLASS_NAMES;\n }, function (t, e, n) {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n }), e.getNode = function (t) {\n var e = \".\" + t;\n return document.querySelector(e);\n }, e.stringToNode = function (t) {\n var e = document.createElement(\"div\");\n return e.innerHTML = t.trim(), e.firstChild;\n }, e.insertAfter = function (t, e) {\n var n = e.nextSibling;\n e.parentNode.insertBefore(t, n);\n }, e.removeNode = function (t) {\n t.parentElement.removeChild(t);\n }, e.throwErr = function (t) {\n throw t = t.replace(/ +(?= )/g, \"\"), \"SweetAlert: \" + (t = t.trim());\n }, e.isPlainObject = function (t) {\n if (\"[object Object]\" !== Object.prototype.toString.call(t)) return !1;\n var e = Object.getPrototypeOf(t);\n return null === e || e === Object.prototype;\n }, e.ordinalSuffixOf = function (t) {\n var e = t % 10,\n n = t % 100;\n return 1 === e && 11 !== n ? t + \"st\" : 2 === e && 12 !== n ? t + \"nd\" : 3 === e && 13 !== n ? t + \"rd\" : t + \"th\";\n };\n }, function (t, e, n) {\n \"use strict\";\n\n function o(t) {\n for (var n in t) e.hasOwnProperty(n) || (e[n] = t[n]);\n }\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n }), o(n(25));\n var r = n(26);\n e.overlayMarkup = r.default, o(n(27)), o(n(28)), o(n(29));\n var i = n(0),\n a = i.default.MODAL_TITLE,\n s = i.default.MODAL_TEXT,\n c = i.default.ICON,\n l = i.default.FOOTER;\n e.iconMarkup = '\\n <div class=\"' + c + '\"></div>', e.titleMarkup = '\\n <div class=\"' + a + '\"></div>\\n', e.textMarkup = '\\n <div class=\"' + s + '\"></div>', e.footerMarkup = '\\n <div class=\"' + l + '\"></div>\\n';\n }, function (t, e, n) {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n var o = n(1);\n e.CONFIRM_KEY = \"confirm\", e.CANCEL_KEY = \"cancel\";\n var r = {\n visible: !0,\n text: null,\n value: null,\n className: \"\",\n closeModal: !0\n },\n i = Object.assign({}, r, {\n visible: !1,\n text: \"Cancel\",\n value: null\n }),\n a = Object.assign({}, r, {\n text: \"OK\",\n value: !0\n });\n e.defaultButtonList = {\n cancel: i,\n confirm: a\n };\n var s = function (t) {\n switch (t) {\n case e.CONFIRM_KEY:\n return a;\n case e.CANCEL_KEY:\n return i;\n default:\n var n = t.charAt(0).toUpperCase() + t.slice(1);\n return Object.assign({}, r, {\n text: n,\n value: t\n });\n }\n },\n c = function (t, e) {\n var n = s(t);\n return !0 === e ? Object.assign({}, n, {\n visible: !0\n }) : \"string\" == typeof e ? Object.assign({}, n, {\n visible: !0,\n text: e\n }) : o.isPlainObject(e) ? Object.assign({\n visible: !0\n }, n, e) : Object.assign({}, n, {\n visible: !1\n });\n },\n l = function (t) {\n for (var e = {}, n = 0, o = Object.keys(t); n < o.length; n++) {\n var r = o[n],\n a = t[r],\n s = c(r, a);\n e[r] = s;\n }\n return e.cancel || (e.cancel = i), e;\n },\n u = function (t) {\n var n = {};\n switch (t.length) {\n case 1:\n n[e.CANCEL_KEY] = Object.assign({}, i, {\n visible: !1\n });\n break;\n case 2:\n n[e.CANCEL_KEY] = c(e.CANCEL_KEY, t[0]), n[e.CONFIRM_KEY] = c(e.CONFIRM_KEY, t[1]);\n break;\n default:\n o.throwErr(\"Invalid number of 'buttons' in array (\" + t.length + \").\\n If you want more than 2 buttons, you need to use an object!\");\n }\n return n;\n };\n e.getButtonListOpts = function (t) {\n var n = e.defaultButtonList;\n return \"string\" == typeof t ? n[e.CONFIRM_KEY] = c(e.CONFIRM_KEY, t) : Array.isArray(t) ? n = u(t) : o.isPlainObject(t) ? n = l(t) : !0 === t ? n = u([!0, !0]) : !1 === t ? n = u([!1, !1]) : void 0 === t && (n = e.defaultButtonList), n;\n };\n }, function (t, e, n) {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n var o = n(1),\n r = n(2),\n i = n(0),\n a = i.default.MODAL,\n s = i.default.OVERLAY,\n c = n(30),\n l = n(31),\n u = n(32),\n f = n(33);\n e.injectElIntoModal = function (t) {\n var e = o.getNode(a),\n n = o.stringToNode(t);\n return e.appendChild(n), n;\n };\n var d = function (t) {\n t.className = a, t.textContent = \"\";\n },\n p = function (t, e) {\n d(t);\n var n = e.className;\n n && t.classList.add(n);\n };\n e.initModalContent = function (t) {\n var e = o.getNode(a);\n p(e, t), c.default(t.icon), l.initTitle(t.title), l.initText(t.text), f.default(t.content), u.default(t.buttons, t.dangerMode);\n };\n var m = function () {\n var t = o.getNode(s),\n e = o.stringToNode(r.modalMarkup);\n t.appendChild(e);\n };\n e.default = m;\n }, function (t, e, n) {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n var o = n(3),\n r = {\n isOpen: !1,\n promise: null,\n actions: {},\n timer: null\n },\n i = Object.assign({}, r);\n e.resetState = function () {\n i = Object.assign({}, r);\n }, e.setActionValue = function (t) {\n if (\"string\" == typeof t) return a(o.CONFIRM_KEY, t);\n for (var e in t) a(e, t[e]);\n };\n var a = function (t, e) {\n i.actions[t] || (i.actions[t] = {}), Object.assign(i.actions[t], {\n value: e\n });\n };\n e.setActionOptionsFor = function (t, e) {\n var n = (void 0 === e ? {} : e).closeModal,\n o = void 0 === n || n;\n Object.assign(i.actions[t], {\n closeModal: o\n });\n }, e.default = i;\n }, function (t, e, n) {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n var o = n(1),\n r = n(3),\n i = n(0),\n a = i.default.OVERLAY,\n s = i.default.SHOW_MODAL,\n c = i.default.BUTTON,\n l = i.default.BUTTON_LOADING,\n u = n(5);\n e.openModal = function () {\n o.getNode(a).classList.add(s), u.default.isOpen = !0;\n };\n var f = function () {\n o.getNode(a).classList.remove(s), u.default.isOpen = !1;\n };\n e.onAction = function (t) {\n void 0 === t && (t = r.CANCEL_KEY);\n var e = u.default.actions[t],\n n = e.value;\n if (!1 === e.closeModal) {\n var i = c + \"--\" + t;\n o.getNode(i).classList.add(l);\n } else f();\n u.default.promise.resolve(n);\n }, e.getState = function () {\n var t = Object.assign({}, u.default);\n return delete t.promise, delete t.timer, t;\n }, e.stopLoading = function () {\n for (var t = document.querySelectorAll(\".\" + c), e = 0; e < t.length; e++) {\n t[e].classList.remove(l);\n }\n };\n }, function (t, e) {\n var n;\n n = function () {\n return this;\n }();\n try {\n n = n || Function(\"return this\")() || (0, eval)(\"this\");\n } catch (t) {\n \"object\" == typeof window && (n = window);\n }\n t.exports = n;\n }, function (t, e, n) {\n (function (e) {\n t.exports = e.sweetAlert = n(9);\n }).call(e, n(7));\n }, function (t, e, n) {\n (function (e) {\n t.exports = e.swal = n(10);\n }).call(e, n(7));\n }, function (t, e, n) {\n \"undefined\" != typeof window && n(11), n(16);\n var o = n(23).default;\n t.exports = o;\n }, function (t, e, n) {\n var o = n(12);\n \"string\" == typeof o && (o = [[t.i, o, \"\"]]);\n var r = {\n insertAt: \"top\"\n };\n r.transform = void 0;\n n(14)(o, r);\n o.locals && (t.exports = o.locals);\n }, function (t, e, n) {\n e = t.exports = n(13)(void 0), e.push([t.i, '.swal-icon--error{border-color:#f27474;-webkit-animation:animateErrorIcon .5s;animation:animateErrorIcon .5s}.swal-icon--error__x-mark{position:relative;display:block;-webkit-animation:animateXMark .5s;animation:animateXMark .5s}.swal-icon--error__line{position:absolute;height:5px;width:47px;background-color:#f27474;display:block;top:37px;border-radius:2px}.swal-icon--error__line--left{-webkit-transform:rotate(45deg);transform:rotate(45deg);left:17px}.swal-icon--error__line--right{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);right:16px}@-webkit-keyframes animateErrorIcon{0%{-webkit-transform:rotateX(100deg);transform:rotateX(100deg);opacity:0}to{-webkit-transform:rotateX(0deg);transform:rotateX(0deg);opacity:1}}@keyframes animateErrorIcon{0%{-webkit-transform:rotateX(100deg);transform:rotateX(100deg);opacity:0}to{-webkit-transform:rotateX(0deg);transform:rotateX(0deg);opacity:1}}@-webkit-keyframes animateXMark{0%{-webkit-transform:scale(.4);transform:scale(.4);margin-top:26px;opacity:0}50%{-webkit-transform:scale(.4);transform:scale(.4);margin-top:26px;opacity:0}80%{-webkit-transform:scale(1.15);transform:scale(1.15);margin-top:-6px}to{-webkit-transform:scale(1);transform:scale(1);margin-top:0;opacity:1}}@keyframes animateXMark{0%{-webkit-transform:scale(.4);transform:scale(.4);margin-top:26px;opacity:0}50%{-webkit-transform:scale(.4);transform:scale(.4);margin-top:26px;opacity:0}80%{-webkit-transform:scale(1.15);transform:scale(1.15);margin-top:-6px}to{-webkit-transform:scale(1);transform:scale(1);margin-top:0;opacity:1}}.swal-icon--warning{border-color:#f8bb86;-webkit-animation:pulseWarning .75s infinite alternate;animation:pulseWarning .75s infinite alternate}.swal-icon--warning__body{width:5px;height:47px;top:10px;border-radius:2px;margin-left:-2px}.swal-icon--warning__body,.swal-icon--warning__dot{position:absolute;left:50%;background-color:#f8bb86}.swal-icon--warning__dot{width:7px;height:7px;border-radius:50%;margin-left:-4px;bottom:-11px}@-webkit-keyframes pulseWarning{0%{border-color:#f8d486}to{border-color:#f8bb86}}@keyframes pulseWarning{0%{border-color:#f8d486}to{border-color:#f8bb86}}.swal-icon--success{border-color:#a5dc86}.swal-icon--success:after,.swal-icon--success:before{content:\"\";border-radius:50%;position:absolute;width:60px;height:120px;background:#fff;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.swal-icon--success:before{border-radius:120px 0 0 120px;top:-7px;left:-33px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:60px 60px;transform-origin:60px 60px}.swal-icon--success:after{border-radius:0 120px 120px 0;top:-11px;left:30px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:0 60px;transform-origin:0 60px;-webkit-animation:rotatePlaceholder 4.25s ease-in;animation:rotatePlaceholder 4.25s ease-in}.swal-icon--success__ring{width:80px;height:80px;border:4px solid hsla(98,55%,69%,.2);border-radius:50%;box-sizing:content-box;position:absolute;left:-4px;top:-4px;z-index:2}.swal-icon--success__hide-corners{width:5px;height:90px;background-color:#fff;padding:1px;position:absolute;left:28px;top:8px;z-index:1;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.swal-icon--success__line{height:5px;background-color:#a5dc86;display:block;border-radius:2px;position:absolute;z-index:2}.swal-icon--success__line--tip{width:25px;left:14px;top:46px;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-animation:animateSuccessTip .75s;animation:animateSuccessTip .75s}.swal-icon--success__line--long{width:47px;right:8px;top:38px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-animation:animateSuccessLong .75s;animation:animateSuccessLong .75s}@-webkit-keyframes rotatePlaceholder{0%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}5%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}12%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}to{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}}@keyframes rotatePlaceholder{0%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}5%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}12%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}to{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}}@-webkit-keyframes animateSuccessTip{0%{width:0;left:1px;top:19px}54%{width:0;left:1px;top:19px}70%{width:50px;left:-8px;top:37px}84%{width:17px;left:21px;top:48px}to{width:25px;left:14px;top:45px}}@keyframes animateSuccessTip{0%{width:0;left:1px;top:19px}54%{width:0;left:1px;top:19px}70%{width:50px;left:-8px;top:37px}84%{width:17px;left:21px;top:48px}to{width:25px;left:14px;top:45px}}@-webkit-keyframes animateSuccessLong{0%{width:0;right:46px;top:54px}65%{width:0;right:46px;top:54px}84%{width:55px;right:0;top:35px}to{width:47px;right:8px;top:38px}}@keyframes animateSuccessLong{0%{width:0;right:46px;top:54px}65%{width:0;right:46px;top:54px}84%{width:55px;right:0;top:35px}to{width:47px;right:8px;top:38px}}.swal-icon--info{border-color:#c9dae1}.swal-icon--info:before{width:5px;height:29px;bottom:17px;border-radius:2px;margin-left:-2px}.swal-icon--info:after,.swal-icon--info:before{content:\"\";position:absolute;left:50%;background-color:#c9dae1}.swal-icon--info:after{width:7px;height:7px;border-radius:50%;margin-left:-3px;top:19px}.swal-icon{width:80px;height:80px;border-width:4px;border-style:solid;border-radius:50%;padding:0;position:relative;box-sizing:content-box;margin:20px auto}.swal-icon:first-child{margin-top:32px}.swal-icon--custom{width:auto;height:auto;max-width:100%;border:none;border-radius:0}.swal-icon img{max-width:100%;max-height:100%}.swal-title{color:rgba(0,0,0,.65);font-weight:600;text-transform:none;position:relative;display:block;padding:13px 16px;font-size:27px;line-height:normal;text-align:center;margin-bottom:0}.swal-title:first-child{margin-top:26px}.swal-title:not(:first-child){padding-bottom:0}.swal-title:not(:last-child){margin-bottom:13px}.swal-text{font-size:16px;position:relative;float:none;line-height:normal;vertical-align:top;text-align:left;display:inline-block;margin:0;padding:0 10px;font-weight:400;color:rgba(0,0,0,.64);max-width:calc(100% - 20px);overflow-wrap:break-word;box-sizing:border-box}.swal-text:first-child{margin-top:45px}.swal-text:last-child{margin-bottom:45px}.swal-footer{text-align:right;padding-top:13px;margin-top:13px;padding:13px 16px;border-radius:inherit;border-top-left-radius:0;border-top-right-radius:0}.swal-button-container{margin:5px;display:inline-block;position:relative}.swal-button{background-color:#7cd1f9;color:#fff;border:none;box-shadow:none;border-radius:5px;font-weight:600;font-size:14px;padding:10px 24px;margin:0;cursor:pointer}.swal-button:not([disabled]):hover{background-color:#78cbf2}.swal-button:active{background-color:#70bce0}.swal-button:focus{outline:none;box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(43,114,165,.29)}.swal-button[disabled]{opacity:.5;cursor:default}.swal-button::-moz-focus-inner{border:0}.swal-button--cancel{color:#555;background-color:#efefef}.swal-button--cancel:not([disabled]):hover{background-color:#e8e8e8}.swal-button--cancel:active{background-color:#d7d7d7}.swal-button--cancel:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(116,136,150,.29)}.swal-button--danger{background-color:#e64942}.swal-button--danger:not([disabled]):hover{background-color:#df4740}.swal-button--danger:active{background-color:#cf423b}.swal-button--danger:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(165,43,43,.29)}.swal-content{padding:0 20px;margin-top:20px;font-size:medium}.swal-content:last-child{margin-bottom:20px}.swal-content__input,.swal-content__textarea{-webkit-appearance:none;background-color:#fff;border:none;font-size:14px;display:block;box-sizing:border-box;width:100%;border:1px solid rgba(0,0,0,.14);padding:10px 13px;border-radius:2px;transition:border-color .2s}.swal-content__input:focus,.swal-content__textarea:focus{outline:none;border-color:#6db8ff}.swal-content__textarea{resize:vertical}.swal-button--loading{color:transparent}.swal-button--loading~.swal-button__loader{opacity:1}.swal-button__loader{position:absolute;height:auto;width:43px;z-index:2;left:50%;top:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);text-align:center;pointer-events:none;opacity:0}.swal-button__loader div{display:inline-block;float:none;vertical-align:baseline;width:9px;height:9px;padding:0;border:none;margin:2px;opacity:.4;border-radius:7px;background-color:hsla(0,0%,100%,.9);transition:background .2s;-webkit-animation:swal-loading-anim 1s infinite;animation:swal-loading-anim 1s infinite}.swal-button__loader div:nth-child(3n+2){-webkit-animation-delay:.15s;animation-delay:.15s}.swal-button__loader div:nth-child(3n+3){-webkit-animation-delay:.3s;animation-delay:.3s}@-webkit-keyframes swal-loading-anim{0%{opacity:.4}20%{opacity:.4}50%{opacity:1}to{opacity:.4}}@keyframes swal-loading-anim{0%{opacity:.4}20%{opacity:.4}50%{opacity:1}to{opacity:.4}}.swal-overlay{position:fixed;top:0;bottom:0;left:0;right:0;text-align:center;font-size:0;overflow-y:auto;background-color:rgba(0,0,0,.4);z-index:10000;pointer-events:none;opacity:0;transition:opacity .3s}.swal-overlay:before{content:\" \";display:inline-block;vertical-align:middle;height:100%}.swal-overlay--show-modal{opacity:1;pointer-events:auto}.swal-overlay--show-modal .swal-modal{opacity:1;pointer-events:auto;box-sizing:border-box;-webkit-animation:showSweetAlert .3s;animation:showSweetAlert .3s;will-change:transform}.swal-modal{width:478px;opacity:0;pointer-events:none;background-color:#fff;text-align:center;border-radius:5px;position:static;margin:20px auto;display:inline-block;vertical-align:middle;-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 50%;transform-origin:50% 50%;z-index:10001;transition:opacity .2s,-webkit-transform .3s;transition:transform .3s,opacity .2s;transition:transform .3s,opacity .2s,-webkit-transform .3s}@media (max-width:500px){.swal-modal{width:calc(100% - 20px)}}@-webkit-keyframes showSweetAlert{0%{-webkit-transform:scale(1);transform:scale(1)}1%{-webkit-transform:scale(.5);transform:scale(.5)}45%{-webkit-transform:scale(1.05);transform:scale(1.05)}80%{-webkit-transform:scale(.95);transform:scale(.95)}to{-webkit-transform:scale(1);transform:scale(1)}}@keyframes showSweetAlert{0%{-webkit-transform:scale(1);transform:scale(1)}1%{-webkit-transform:scale(.5);transform:scale(.5)}45%{-webkit-transform:scale(1.05);transform:scale(1.05)}80%{-webkit-transform:scale(.95);transform:scale(.95)}to{-webkit-transform:scale(1);transform:scale(1)}}', \"\"]);\n }, function (t, e) {\n function n(t, e) {\n var n = t[1] || \"\",\n r = t[3];\n if (!r) return n;\n if (e && \"function\" == typeof btoa) {\n var i = o(r);\n return [n].concat(r.sources.map(function (t) {\n return \"/*# sourceURL=\" + r.sourceRoot + t + \" */\";\n })).concat([i]).join(\"\\n\");\n }\n return [n].join(\"\\n\");\n }\n function o(t) {\n return \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(t)))) + \" */\";\n }\n t.exports = function (t) {\n var e = [];\n return e.toString = function () {\n return this.map(function (e) {\n var o = n(e, t);\n return e[2] ? \"@media \" + e[2] + \"{\" + o + \"}\" : o;\n }).join(\"\");\n }, e.i = function (t, n) {\n \"string\" == typeof t && (t = [[null, t, \"\"]]);\n for (var o = {}, r = 0; r < this.length; r++) {\n var i = this[r][0];\n \"number\" == typeof i && (o[i] = !0);\n }\n for (r = 0; r < t.length; r++) {\n var a = t[r];\n \"number\" == typeof a[0] && o[a[0]] || (n && !a[2] ? a[2] = n : n && (a[2] = \"(\" + a[2] + \") and (\" + n + \")\"), e.push(a));\n }\n }, e;\n };\n }, function (t, e, n) {\n function o(t, e) {\n for (var n = 0; n < t.length; n++) {\n var o = t[n],\n r = m[o.id];\n if (r) {\n r.refs++;\n for (var i = 0; i < r.parts.length; i++) r.parts[i](o.parts[i]);\n for (; i < o.parts.length; i++) r.parts.push(u(o.parts[i], e));\n } else {\n for (var a = [], i = 0; i < o.parts.length; i++) a.push(u(o.parts[i], e));\n m[o.id] = {\n id: o.id,\n refs: 1,\n parts: a\n };\n }\n }\n }\n function r(t, e) {\n for (var n = [], o = {}, r = 0; r < t.length; r++) {\n var i = t[r],\n a = e.base ? i[0] + e.base : i[0],\n s = i[1],\n c = i[2],\n l = i[3],\n u = {\n css: s,\n media: c,\n sourceMap: l\n };\n o[a] ? o[a].parts.push(u) : n.push(o[a] = {\n id: a,\n parts: [u]\n });\n }\n return n;\n }\n function i(t, e) {\n var n = v(t.insertInto);\n if (!n) throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.\");\n var o = w[w.length - 1];\n if (\"top\" === t.insertAt) o ? o.nextSibling ? n.insertBefore(e, o.nextSibling) : n.appendChild(e) : n.insertBefore(e, n.firstChild), w.push(e);else {\n if (\"bottom\" !== t.insertAt) throw new Error(\"Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.\");\n n.appendChild(e);\n }\n }\n function a(t) {\n if (null === t.parentNode) return !1;\n t.parentNode.removeChild(t);\n var e = w.indexOf(t);\n e >= 0 && w.splice(e, 1);\n }\n function s(t) {\n var e = document.createElement(\"style\");\n return t.attrs.type = \"text/css\", l(e, t.attrs), i(t, e), e;\n }\n function c(t) {\n var e = document.createElement(\"link\");\n return t.attrs.type = \"text/css\", t.attrs.rel = \"stylesheet\", l(e, t.attrs), i(t, e), e;\n }\n function l(t, e) {\n Object.keys(e).forEach(function (n) {\n t.setAttribute(n, e[n]);\n });\n }\n function u(t, e) {\n var n, o, r, i;\n if (e.transform && t.css) {\n if (!(i = e.transform(t.css))) return function () {};\n t.css = i;\n }\n if (e.singleton) {\n var l = h++;\n n = g || (g = s(e)), o = f.bind(null, n, l, !1), r = f.bind(null, n, l, !0);\n } else t.sourceMap && \"function\" == typeof URL && \"function\" == typeof URL.createObjectURL && \"function\" == typeof URL.revokeObjectURL && \"function\" == typeof Blob && \"function\" == typeof btoa ? (n = c(e), o = p.bind(null, n, e), r = function () {\n a(n), n.href && URL.revokeObjectURL(n.href);\n }) : (n = s(e), o = d.bind(null, n), r = function () {\n a(n);\n });\n return o(t), function (e) {\n if (e) {\n if (e.css === t.css && e.media === t.media && e.sourceMap === t.sourceMap) return;\n o(t = e);\n } else r();\n };\n }\n function f(t, e, n, o) {\n var r = n ? \"\" : o.css;\n if (t.styleSheet) t.styleSheet.cssText = x(e, r);else {\n var i = document.createTextNode(r),\n a = t.childNodes;\n a[e] && t.removeChild(a[e]), a.length ? t.insertBefore(i, a[e]) : t.appendChild(i);\n }\n }\n function d(t, e) {\n var n = e.css,\n o = e.media;\n if (o && t.setAttribute(\"media\", o), t.styleSheet) t.styleSheet.cssText = n;else {\n for (; t.firstChild;) t.removeChild(t.firstChild);\n t.appendChild(document.createTextNode(n));\n }\n }\n function p(t, e, n) {\n var o = n.css,\n r = n.sourceMap,\n i = void 0 === e.convertToAbsoluteUrls && r;\n (e.convertToAbsoluteUrls || i) && (o = y(o)), r && (o += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(r)))) + \" */\");\n var a = new Blob([o], {\n type: \"text/css\"\n }),\n s = t.href;\n t.href = URL.createObjectURL(a), s && URL.revokeObjectURL(s);\n }\n var m = {},\n b = function (t) {\n var e;\n return function () {\n return void 0 === e && (e = t.apply(this, arguments)), e;\n };\n }(function () {\n return window && document && document.all && !window.atob;\n }),\n v = function (t) {\n var e = {};\n return function (n) {\n return void 0 === e[n] && (e[n] = t.call(this, n)), e[n];\n };\n }(function (t) {\n return document.querySelector(t);\n }),\n g = null,\n h = 0,\n w = [],\n y = n(15);\n t.exports = function (t, e) {\n if (\"undefined\" != typeof DEBUG && DEBUG && \"object\" != typeof document) throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n e = e || {}, e.attrs = \"object\" == typeof e.attrs ? e.attrs : {}, e.singleton || (e.singleton = b()), e.insertInto || (e.insertInto = \"head\"), e.insertAt || (e.insertAt = \"bottom\");\n var n = r(t, e);\n return o(n, e), function (t) {\n for (var i = [], a = 0; a < n.length; a++) {\n var s = n[a],\n c = m[s.id];\n c.refs--, i.push(c);\n }\n if (t) {\n o(r(t, e), e);\n }\n for (var a = 0; a < i.length; a++) {\n var c = i[a];\n if (0 === c.refs) {\n for (var l = 0; l < c.parts.length; l++) c.parts[l]();\n delete m[c.id];\n }\n }\n };\n };\n var x = function () {\n var t = [];\n return function (e, n) {\n return t[e] = n, t.filter(Boolean).join(\"\\n\");\n };\n }();\n }, function (t, e) {\n t.exports = function (t) {\n var e = \"undefined\" != typeof window && window.location;\n if (!e) throw new Error(\"fixUrls requires window.location\");\n if (!t || \"string\" != typeof t) return t;\n var n = e.protocol + \"//\" + e.host,\n o = n + e.pathname.replace(/\\/[^\\/]*$/, \"/\");\n return t.replace(/url\\s*\\(((?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)\\)/gi, function (t, e) {\n var r = e.trim().replace(/^\"(.*)\"$/, function (t, e) {\n return e;\n }).replace(/^'(.*)'$/, function (t, e) {\n return e;\n });\n if (/^(#|data:|http:\\/\\/|https:\\/\\/|file:\\/\\/\\/)/i.test(r)) return t;\n var i;\n return i = 0 === r.indexOf(\"//\") ? r : 0 === r.indexOf(\"/\") ? n + r : o + r.replace(/^\\.\\//, \"\"), \"url(\" + JSON.stringify(i) + \")\";\n });\n };\n }, function (t, e, n) {\n var o = n(17);\n \"undefined\" == typeof window || window.Promise || (window.Promise = o), n(21), String.prototype.includes || (String.prototype.includes = function (t, e) {\n \"use strict\";\n\n return \"number\" != typeof e && (e = 0), !(e + t.length > this.length) && -1 !== this.indexOf(t, e);\n }), Array.prototype.includes || Object.defineProperty(Array.prototype, \"includes\", {\n value: function (t, e) {\n if (null == this) throw new TypeError('\"this\" is null or not defined');\n var n = Object(this),\n o = n.length >>> 0;\n if (0 === o) return !1;\n for (var r = 0 | e, i = Math.max(r >= 0 ? r : o - Math.abs(r), 0); i < o;) {\n if (function (t, e) {\n return t === e || \"number\" == typeof t && \"number\" == typeof e && isNaN(t) && isNaN(e);\n }(n[i], t)) return !0;\n i++;\n }\n return !1;\n }\n }), \"undefined\" != typeof window && function (t) {\n t.forEach(function (t) {\n t.hasOwnProperty(\"remove\") || Object.defineProperty(t, \"remove\", {\n configurable: !0,\n enumerable: !0,\n writable: !0,\n value: function () {\n this.parentNode.removeChild(this);\n }\n });\n });\n }([Element.prototype, CharacterData.prototype, DocumentType.prototype]);\n }, function (t, e, n) {\n (function (e) {\n !function (n) {\n function o() {}\n function r(t, e) {\n return function () {\n t.apply(e, arguments);\n };\n }\n function i(t) {\n if (\"object\" != typeof this) throw new TypeError(\"Promises must be constructed via new\");\n if (\"function\" != typeof t) throw new TypeError(\"not a function\");\n this._state = 0, this._handled = !1, this._value = void 0, this._deferreds = [], f(t, this);\n }\n function a(t, e) {\n for (; 3 === t._state;) t = t._value;\n if (0 === t._state) return void t._deferreds.push(e);\n t._handled = !0, i._immediateFn(function () {\n var n = 1 === t._state ? e.onFulfilled : e.onRejected;\n if (null === n) return void (1 === t._state ? s : c)(e.promise, t._value);\n var o;\n try {\n o = n(t._value);\n } catch (t) {\n return void c(e.promise, t);\n }\n s(e.promise, o);\n });\n }\n function s(t, e) {\n try {\n if (e === t) throw new TypeError(\"A promise cannot be resolved with itself.\");\n if (e && (\"object\" == typeof e || \"function\" == typeof e)) {\n var n = e.then;\n if (e instanceof i) return t._state = 3, t._value = e, void l(t);\n if (\"function\" == typeof n) return void f(r(n, e), t);\n }\n t._state = 1, t._value = e, l(t);\n } catch (e) {\n c(t, e);\n }\n }\n function c(t, e) {\n t._state = 2, t._value = e, l(t);\n }\n function l(t) {\n 2 === t._state && 0 === t._deferreds.length && i._immediateFn(function () {\n t._handled || i._unhandledRejectionFn(t._value);\n });\n for (var e = 0, n = t._deferreds.length; e < n; e++) a(t, t._deferreds[e]);\n t._deferreds = null;\n }\n function u(t, e, n) {\n this.onFulfilled = \"function\" == typeof t ? t : null, this.onRejected = \"function\" == typeof e ? e : null, this.promise = n;\n }\n function f(t, e) {\n var n = !1;\n try {\n t(function (t) {\n n || (n = !0, s(e, t));\n }, function (t) {\n n || (n = !0, c(e, t));\n });\n } catch (t) {\n if (n) return;\n n = !0, c(e, t);\n }\n }\n var d = setTimeout;\n i.prototype.catch = function (t) {\n return this.then(null, t);\n }, i.prototype.then = function (t, e) {\n var n = new this.constructor(o);\n return a(this, new u(t, e, n)), n;\n }, i.all = function (t) {\n var e = Array.prototype.slice.call(t);\n return new i(function (t, n) {\n function o(i, a) {\n try {\n if (a && (\"object\" == typeof a || \"function\" == typeof a)) {\n var s = a.then;\n if (\"function\" == typeof s) return void s.call(a, function (t) {\n o(i, t);\n }, n);\n }\n e[i] = a, 0 == --r && t(e);\n } catch (t) {\n n(t);\n }\n }\n if (0 === e.length) return t([]);\n for (var r = e.length, i = 0; i < e.length; i++) o(i, e[i]);\n });\n }, i.resolve = function (t) {\n return t && \"object\" == typeof t && t.constructor === i ? t : new i(function (e) {\n e(t);\n });\n }, i.reject = function (t) {\n return new i(function (e, n) {\n n(t);\n });\n }, i.race = function (t) {\n return new i(function (e, n) {\n for (var o = 0, r = t.length; o < r; o++) t[o].then(e, n);\n });\n }, i._immediateFn = \"function\" == typeof e && function (t) {\n e(t);\n } || function (t) {\n d(t, 0);\n }, i._unhandledRejectionFn = function (t) {\n \"undefined\" != typeof console && console && console.warn(\"Possible Unhandled Promise Rejection:\", t);\n }, i._setImmediateFn = function (t) {\n i._immediateFn = t;\n }, i._setUnhandledRejectionFn = function (t) {\n i._unhandledRejectionFn = t;\n }, void 0 !== t && t.exports ? t.exports = i : n.Promise || (n.Promise = i);\n }(this);\n }).call(e, n(18).setImmediate);\n }, function (t, e, n) {\n function o(t, e) {\n this._id = t, this._clearFn = e;\n }\n var r = Function.prototype.apply;\n e.setTimeout = function () {\n return new o(r.call(setTimeout, window, arguments), clearTimeout);\n }, e.setInterval = function () {\n return new o(r.call(setInterval, window, arguments), clearInterval);\n }, e.clearTimeout = e.clearInterval = function (t) {\n t && t.close();\n }, o.prototype.unref = o.prototype.ref = function () {}, o.prototype.close = function () {\n this._clearFn.call(window, this._id);\n }, e.enroll = function (t, e) {\n clearTimeout(t._idleTimeoutId), t._idleTimeout = e;\n }, e.unenroll = function (t) {\n clearTimeout(t._idleTimeoutId), t._idleTimeout = -1;\n }, e._unrefActive = e.active = function (t) {\n clearTimeout(t._idleTimeoutId);\n var e = t._idleTimeout;\n e >= 0 && (t._idleTimeoutId = setTimeout(function () {\n t._onTimeout && t._onTimeout();\n }, e));\n }, n(19), e.setImmediate = setImmediate, e.clearImmediate = clearImmediate;\n }, function (t, e, n) {\n (function (t, e) {\n !function (t, n) {\n \"use strict\";\n\n function o(t) {\n \"function\" != typeof t && (t = new Function(\"\" + t));\n for (var e = new Array(arguments.length - 1), n = 0; n < e.length; n++) e[n] = arguments[n + 1];\n var o = {\n callback: t,\n args: e\n };\n return l[c] = o, s(c), c++;\n }\n function r(t) {\n delete l[t];\n }\n function i(t) {\n var e = t.callback,\n o = t.args;\n switch (o.length) {\n case 0:\n e();\n break;\n case 1:\n e(o[0]);\n break;\n case 2:\n e(o[0], o[1]);\n break;\n case 3:\n e(o[0], o[1], o[2]);\n break;\n default:\n e.apply(n, o);\n }\n }\n function a(t) {\n if (u) setTimeout(a, 0, t);else {\n var e = l[t];\n if (e) {\n u = !0;\n try {\n i(e);\n } finally {\n r(t), u = !1;\n }\n }\n }\n }\n if (!t.setImmediate) {\n var s,\n c = 1,\n l = {},\n u = !1,\n f = t.document,\n d = Object.getPrototypeOf && Object.getPrototypeOf(t);\n d = d && d.setTimeout ? d : t, \"[object process]\" === {}.toString.call(t.process) ? function () {\n s = function (t) {\n e.nextTick(function () {\n a(t);\n });\n };\n }() : function () {\n if (t.postMessage && !t.importScripts) {\n var e = !0,\n n = t.onmessage;\n return t.onmessage = function () {\n e = !1;\n }, t.postMessage(\"\", \"*\"), t.onmessage = n, e;\n }\n }() ? function () {\n var e = \"setImmediate$\" + Math.random() + \"$\",\n n = function (n) {\n n.source === t && \"string\" == typeof n.data && 0 === n.data.indexOf(e) && a(+n.data.slice(e.length));\n };\n t.addEventListener ? t.addEventListener(\"message\", n, !1) : t.attachEvent(\"onmessage\", n), s = function (n) {\n t.postMessage(e + n, \"*\");\n };\n }() : t.MessageChannel ? function () {\n var t = new MessageChannel();\n t.port1.onmessage = function (t) {\n a(t.data);\n }, s = function (e) {\n t.port2.postMessage(e);\n };\n }() : f && \"onreadystatechange\" in f.createElement(\"script\") ? function () {\n var t = f.documentElement;\n s = function (e) {\n var n = f.createElement(\"script\");\n n.onreadystatechange = function () {\n a(e), n.onreadystatechange = null, t.removeChild(n), n = null;\n }, t.appendChild(n);\n };\n }() : function () {\n s = function (t) {\n setTimeout(a, 0, t);\n };\n }(), d.setImmediate = o, d.clearImmediate = r;\n }\n }(\"undefined\" == typeof self ? void 0 === t ? this : t : self);\n }).call(e, n(7), n(20));\n }, function (t, e) {\n function n() {\n throw new Error(\"setTimeout has not been defined\");\n }\n function o() {\n throw new Error(\"clearTimeout has not been defined\");\n }\n function r(t) {\n if (u === setTimeout) return setTimeout(t, 0);\n if ((u === n || !u) && setTimeout) return u = setTimeout, setTimeout(t, 0);\n try {\n return u(t, 0);\n } catch (e) {\n try {\n return u.call(null, t, 0);\n } catch (e) {\n return u.call(this, t, 0);\n }\n }\n }\n function i(t) {\n if (f === clearTimeout) return clearTimeout(t);\n if ((f === o || !f) && clearTimeout) return f = clearTimeout, clearTimeout(t);\n try {\n return f(t);\n } catch (e) {\n try {\n return f.call(null, t);\n } catch (e) {\n return f.call(this, t);\n }\n }\n }\n function a() {\n b && p && (b = !1, p.length ? m = p.concat(m) : v = -1, m.length && s());\n }\n function s() {\n if (!b) {\n var t = r(a);\n b = !0;\n for (var e = m.length; e;) {\n for (p = m, m = []; ++v < e;) p && p[v].run();\n v = -1, e = m.length;\n }\n p = null, b = !1, i(t);\n }\n }\n function c(t, e) {\n this.fun = t, this.array = e;\n }\n function l() {}\n var u,\n f,\n d = t.exports = {};\n !function () {\n try {\n u = \"function\" == typeof setTimeout ? setTimeout : n;\n } catch (t) {\n u = n;\n }\n try {\n f = \"function\" == typeof clearTimeout ? clearTimeout : o;\n } catch (t) {\n f = o;\n }\n }();\n var p,\n m = [],\n b = !1,\n v = -1;\n d.nextTick = function (t) {\n var e = new Array(arguments.length - 1);\n if (arguments.length > 1) for (var n = 1; n < arguments.length; n++) e[n - 1] = arguments[n];\n m.push(new c(t, e)), 1 !== m.length || b || r(s);\n }, c.prototype.run = function () {\n this.fun.apply(null, this.array);\n }, d.title = \"browser\", d.browser = !0, d.env = {}, d.argv = [], d.version = \"\", d.versions = {}, d.on = l, d.addListener = l, d.once = l, d.off = l, d.removeListener = l, d.removeAllListeners = l, d.emit = l, d.prependListener = l, d.prependOnceListener = l, d.listeners = function (t) {\n return [];\n }, d.binding = function (t) {\n throw new Error(\"process.binding is not supported\");\n }, d.cwd = function () {\n return \"/\";\n }, d.chdir = function (t) {\n throw new Error(\"process.chdir is not supported\");\n }, d.umask = function () {\n return 0;\n };\n }, function (t, e, n) {\n \"use strict\";\n\n n(22).polyfill();\n }, function (t, e, n) {\n \"use strict\";\n\n function o(t, e) {\n if (void 0 === t || null === t) throw new TypeError(\"Cannot convert first argument to object\");\n for (var n = Object(t), o = 1; o < arguments.length; o++) {\n var r = arguments[o];\n if (void 0 !== r && null !== r) for (var i = Object.keys(Object(r)), a = 0, s = i.length; a < s; a++) {\n var c = i[a],\n l = Object.getOwnPropertyDescriptor(r, c);\n void 0 !== l && l.enumerable && (n[c] = r[c]);\n }\n }\n return n;\n }\n function r() {\n Object.assign || Object.defineProperty(Object, \"assign\", {\n enumerable: !1,\n configurable: !0,\n writable: !0,\n value: o\n });\n }\n t.exports = {\n assign: o,\n polyfill: r\n };\n }, function (t, e, n) {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n var o = n(24),\n r = n(6),\n i = n(5),\n a = n(36),\n s = function () {\n for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];\n if (\"undefined\" != typeof window) {\n var n = a.getOpts.apply(void 0, t);\n return new Promise(function (t, e) {\n i.default.promise = {\n resolve: t,\n reject: e\n }, o.default(n), setTimeout(function () {\n r.openModal();\n });\n });\n }\n };\n s.close = r.onAction, s.getState = r.getState, s.setActionValue = i.setActionValue, s.stopLoading = r.stopLoading, s.setDefaults = a.setDefaults, e.default = s;\n }, function (t, e, n) {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n var o = n(1),\n r = n(0),\n i = r.default.MODAL,\n a = n(4),\n s = n(34),\n c = n(35),\n l = n(1);\n e.init = function (t) {\n o.getNode(i) || (document.body || l.throwErr(\"You can only use SweetAlert AFTER the DOM has loaded!\"), s.default(), a.default()), a.initModalContent(t), c.default(t);\n }, e.default = e.init;\n }, function (t, e, n) {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n var o = n(0),\n r = o.default.MODAL;\n e.modalMarkup = '\\n <div class=\"' + r + '\" role=\"dialog\" aria-modal=\"true\"></div>', e.default = e.modalMarkup;\n }, function (t, e, n) {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n var o = n(0),\n r = o.default.OVERLAY,\n i = '<div \\n class=\"' + r + '\"\\n tabIndex=\"-1\">\\n </div>';\n e.default = i;\n }, function (t, e, n) {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n var o = n(0),\n r = o.default.ICON;\n e.errorIconMarkup = function () {\n var t = r + \"--error\",\n e = t + \"__line\";\n return '\\n <div class=\"' + t + '__x-mark\">\\n <span class=\"' + e + \" \" + e + '--left\"></span>\\n <span class=\"' + e + \" \" + e + '--right\"></span>\\n </div>\\n ';\n }, e.warningIconMarkup = function () {\n var t = r + \"--warning\";\n return '\\n <span class=\"' + t + '__body\">\\n <span class=\"' + t + '__dot\"></span>\\n </span>\\n ';\n }, e.successIconMarkup = function () {\n var t = r + \"--success\";\n return '\\n <span class=\"' + t + \"__line \" + t + '__line--long\"></span>\\n <span class=\"' + t + \"__line \" + t + '__line--tip\"></span>\\n\\n <div class=\"' + t + '__ring\"></div>\\n <div class=\"' + t + '__hide-corners\"></div>\\n ';\n };\n }, function (t, e, n) {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n var o = n(0),\n r = o.default.CONTENT;\n e.contentMarkup = '\\n <div class=\"' + r + '\">\\n\\n </div>\\n';\n }, function (t, e, n) {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n var o = n(0),\n r = o.default.BUTTON_CONTAINER,\n i = o.default.BUTTON,\n a = o.default.BUTTON_LOADER;\n e.buttonMarkup = '\\n <div class=\"' + r + '\">\\n\\n <button\\n class=\"' + i + '\"\\n ></button>\\n\\n <div class=\"' + a + '\">\\n <div></div>\\n <div></div>\\n <div></div>\\n </div>\\n\\n </div>\\n';\n }, function (t, e, n) {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n var o = n(4),\n r = n(2),\n i = n(0),\n a = i.default.ICON,\n s = i.default.ICON_CUSTOM,\n c = [\"error\", \"warning\", \"success\", \"info\"],\n l = {\n error: r.errorIconMarkup(),\n warning: r.warningIconMarkup(),\n success: r.successIconMarkup()\n },\n u = function (t, e) {\n var n = a + \"--\" + t;\n e.classList.add(n);\n var o = l[t];\n o && (e.innerHTML = o);\n },\n f = function (t, e) {\n e.classList.add(s);\n var n = document.createElement(\"img\");\n n.src = t, e.appendChild(n);\n },\n d = function (t) {\n if (t) {\n var e = o.injectElIntoModal(r.iconMarkup);\n c.includes(t) ? u(t, e) : f(t, e);\n }\n };\n e.default = d;\n }, function (t, e, n) {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n var o = n(2),\n r = n(4),\n i = function (t) {\n navigator.userAgent.includes(\"AppleWebKit\") && (t.style.display = \"none\", t.offsetHeight, t.style.display = \"\");\n };\n e.initTitle = function (t) {\n if (t) {\n var e = r.injectElIntoModal(o.titleMarkup);\n e.textContent = t, i(e);\n }\n }, e.initText = function (t) {\n if (t) {\n var e = document.createDocumentFragment();\n t.split(\"\\n\").forEach(function (t, n, o) {\n e.appendChild(document.createTextNode(t)), n < o.length - 1 && e.appendChild(document.createElement(\"br\"));\n });\n var n = r.injectElIntoModal(o.textMarkup);\n n.appendChild(e), i(n);\n }\n };\n }, function (t, e, n) {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n var o = n(1),\n r = n(4),\n i = n(0),\n a = i.default.BUTTON,\n s = i.default.DANGER_BUTTON,\n c = n(3),\n l = n(2),\n u = n(6),\n f = n(5),\n d = function (t, e, n) {\n var r = e.text,\n i = e.value,\n d = e.className,\n p = e.closeModal,\n m = o.stringToNode(l.buttonMarkup),\n b = m.querySelector(\".\" + a),\n v = a + \"--\" + t;\n if (b.classList.add(v), d) {\n (Array.isArray(d) ? d : d.split(\" \")).filter(function (t) {\n return t.length > 0;\n }).forEach(function (t) {\n b.classList.add(t);\n });\n }\n n && t === c.CONFIRM_KEY && b.classList.add(s), b.textContent = r;\n var g = {};\n return g[t] = i, f.setActionValue(g), f.setActionOptionsFor(t, {\n closeModal: p\n }), b.addEventListener(\"click\", function () {\n return u.onAction(t);\n }), m;\n },\n p = function (t, e) {\n var n = r.injectElIntoModal(l.footerMarkup);\n for (var o in t) {\n var i = t[o],\n a = d(o, i, e);\n i.visible && n.appendChild(a);\n }\n 0 === n.children.length && n.remove();\n };\n e.default = p;\n }, function (t, e, n) {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n var o = n(3),\n r = n(4),\n i = n(2),\n a = n(5),\n s = n(6),\n c = n(0),\n l = c.default.CONTENT,\n u = function (t) {\n t.addEventListener(\"input\", function (t) {\n var e = t.target,\n n = e.value;\n a.setActionValue(n);\n }), t.addEventListener(\"keyup\", function (t) {\n if (\"Enter\" === t.key) return s.onAction(o.CONFIRM_KEY);\n }), setTimeout(function () {\n t.focus(), a.setActionValue(\"\");\n }, 0);\n },\n f = function (t, e, n) {\n var o = document.createElement(e),\n r = l + \"__\" + e;\n o.classList.add(r);\n for (var i in n) {\n var a = n[i];\n o[i] = a;\n }\n \"input\" === e && u(o), t.appendChild(o);\n },\n d = function (t) {\n if (t) {\n var e = r.injectElIntoModal(i.contentMarkup),\n n = t.element,\n o = t.attributes;\n \"string\" == typeof n ? f(e, n, o) : e.appendChild(n);\n }\n };\n e.default = d;\n }, function (t, e, n) {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n var o = n(1),\n r = n(2),\n i = function () {\n var t = o.stringToNode(r.overlayMarkup);\n document.body.appendChild(t);\n };\n e.default = i;\n }, function (t, e, n) {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n var o = n(5),\n r = n(6),\n i = n(1),\n a = n(3),\n s = n(0),\n c = s.default.MODAL,\n l = s.default.BUTTON,\n u = s.default.OVERLAY,\n f = function (t) {\n t.preventDefault(), v();\n },\n d = function (t) {\n t.preventDefault(), g();\n },\n p = function (t) {\n if (o.default.isOpen) switch (t.key) {\n case \"Escape\":\n return r.onAction(a.CANCEL_KEY);\n }\n },\n m = function (t) {\n if (o.default.isOpen) switch (t.key) {\n case \"Tab\":\n return f(t);\n }\n },\n b = function (t) {\n if (o.default.isOpen) return \"Tab\" === t.key && t.shiftKey ? d(t) : void 0;\n },\n v = function () {\n var t = i.getNode(l);\n t && (t.tabIndex = 0, t.focus());\n },\n g = function () {\n var t = i.getNode(c),\n e = t.querySelectorAll(\".\" + l),\n n = e.length - 1,\n o = e[n];\n o && o.focus();\n },\n h = function (t) {\n t[t.length - 1].addEventListener(\"keydown\", m);\n },\n w = function (t) {\n t[0].addEventListener(\"keydown\", b);\n },\n y = function () {\n var t = i.getNode(c),\n e = t.querySelectorAll(\".\" + l);\n e.length && (h(e), w(e));\n },\n x = function (t) {\n if (i.getNode(u) === t.target) return r.onAction(a.CANCEL_KEY);\n },\n _ = function (t) {\n var e = i.getNode(u);\n e.removeEventListener(\"click\", x), t && e.addEventListener(\"click\", x);\n },\n k = function (t) {\n o.default.timer && clearTimeout(o.default.timer), t && (o.default.timer = window.setTimeout(function () {\n return r.onAction(a.CANCEL_KEY);\n }, t));\n },\n O = function (t) {\n t.closeOnEsc ? document.addEventListener(\"keyup\", p) : document.removeEventListener(\"keyup\", p), t.dangerMode ? v() : g(), y(), _(t.closeOnClickOutside), k(t.timer);\n };\n e.default = O;\n }, function (t, e, n) {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n var o = n(1),\n r = n(3),\n i = n(37),\n a = n(38),\n s = {\n title: null,\n text: null,\n icon: null,\n buttons: r.defaultButtonList,\n content: null,\n className: null,\n closeOnClickOutside: !0,\n closeOnEsc: !0,\n dangerMode: !1,\n timer: null\n },\n c = Object.assign({}, s);\n e.setDefaults = function (t) {\n c = Object.assign({}, s, t);\n };\n var l = function (t) {\n var e = t && t.button,\n n = t && t.buttons;\n return void 0 !== e && void 0 !== n && o.throwErr(\"Cannot set both 'button' and 'buttons' options!\"), void 0 !== e ? {\n confirm: e\n } : n;\n },\n u = function (t) {\n return o.ordinalSuffixOf(t + 1);\n },\n f = function (t, e) {\n o.throwErr(u(e) + \" argument ('\" + t + \"') is invalid\");\n },\n d = function (t, e) {\n var n = t + 1,\n r = e[n];\n o.isPlainObject(r) || void 0 === r || o.throwErr(\"Expected \" + u(n) + \" argument ('\" + r + \"') to be a plain object\");\n },\n p = function (t, e) {\n var n = t + 1,\n r = e[n];\n void 0 !== r && o.throwErr(\"Unexpected \" + u(n) + \" argument (\" + r + \")\");\n },\n m = function (t, e, n, r) {\n var i = typeof e,\n a = \"string\" === i,\n s = e instanceof Element;\n if (a) {\n if (0 === n) return {\n text: e\n };\n if (1 === n) return {\n text: e,\n title: r[0]\n };\n if (2 === n) return d(n, r), {\n icon: e\n };\n f(e, n);\n } else {\n if (s && 0 === n) return d(n, r), {\n content: e\n };\n if (o.isPlainObject(e)) return p(n, r), e;\n f(e, n);\n }\n };\n e.getOpts = function () {\n for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];\n var n = {};\n t.forEach(function (e, o) {\n var r = m(0, e, o, t);\n Object.assign(n, r);\n });\n var o = l(n);\n n.buttons = r.getButtonListOpts(o), delete n.button, n.content = i.getContentOpts(n.content);\n var u = Object.assign({}, s, c, n);\n return Object.keys(u).forEach(function (t) {\n a.DEPRECATED_OPTS[t] && a.logDeprecation(t);\n }), u;\n };\n }, function (t, e, n) {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n var o = n(1),\n r = {\n element: \"input\",\n attributes: {\n placeholder: \"\"\n }\n };\n e.getContentOpts = function (t) {\n var e = {};\n return o.isPlainObject(t) ? Object.assign(e, t) : t instanceof Element ? {\n element: t\n } : \"input\" === t ? r : null;\n };\n }, function (t, e, n) {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n }), e.logDeprecation = function (t) {\n var n = e.DEPRECATED_OPTS[t],\n o = n.onlyRename,\n r = n.replacement,\n i = n.subOption,\n a = n.link,\n s = o ? \"renamed\" : \"deprecated\",\n c = 'SweetAlert warning: \"' + t + '\" option has been ' + s + \".\";\n if (r) {\n c += \" Please use\" + (i ? ' \"' + i + '\" in ' : \" \") + '\"' + r + '\" instead.';\n }\n var l = \"https://sweetalert.js.org\";\n c += a ? \" More details: \" + l + a : \" More details: \" + l + \"/guides/#upgrading-from-1x\", console.warn(c);\n }, e.DEPRECATED_OPTS = {\n type: {\n replacement: \"icon\",\n link: \"/docs/#icon\"\n },\n imageUrl: {\n replacement: \"icon\",\n link: \"/docs/#icon\"\n },\n customClass: {\n replacement: \"className\",\n onlyRename: !0,\n link: \"/docs/#classname\"\n },\n imageSize: {},\n showCancelButton: {\n replacement: \"buttons\",\n link: \"/docs/#buttons\"\n },\n showConfirmButton: {\n replacement: \"button\",\n link: \"/docs/#button\"\n },\n confirmButtonText: {\n replacement: \"button\",\n link: \"/docs/#button\"\n },\n confirmButtonColor: {},\n cancelButtonText: {\n replacement: \"buttons\",\n link: \"/docs/#buttons\"\n },\n closeOnConfirm: {\n replacement: \"button\",\n subOption: \"closeModal\",\n link: \"/docs/#button\"\n },\n closeOnCancel: {\n replacement: \"buttons\",\n subOption: \"closeModal\",\n link: \"/docs/#buttons\"\n },\n showLoaderOnConfirm: {\n replacement: \"buttons\"\n },\n animation: {},\n inputType: {\n replacement: \"content\",\n link: \"/docs/#content\"\n },\n inputValue: {\n replacement: \"content\",\n link: \"/docs/#content\"\n },\n inputPlaceholder: {\n replacement: \"content\",\n link: \"/docs/#content\"\n },\n html: {\n replacement: \"content\",\n link: \"/docs/#content\"\n },\n allowEscapeKey: {\n replacement: \"closeOnEsc\",\n onlyRename: !0,\n link: \"/docs/#closeonesc\"\n },\n allowClickOutside: {\n replacement: \"closeOnClickOutside\",\n onlyRename: !0,\n link: \"/docs/#closeonclickoutside\"\n }\n };\n }]);\n});","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = {\n callback: callback,\n args: args\n };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n function installNextTickImplementation() {\n registerImmediate = function (handle) {\n process.nextTick(function () {\n runIfPresent(handle);\n });\n };\n }\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function () {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function (event) {\n if (event.source === global && typeof event.data === \"string\" && event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n registerImmediate = function (handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function (event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n registerImmediate = function (handle) {\n channel.port2.postMessage(handle);\n };\n }\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function (handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n function installSetTimeoutImplementation() {\n registerImmediate = function (handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n})(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self);","/**\n * jquery.detectSwipe v2.1.3\n * jQuery Plugin to obtain touch gestures from iPhone, iPod Touch, iPad and Android\n * http://github.com/marcandre/detect_swipe\n * Based on touchwipe by Andreas Waltl, netCU Internetagentur (http://www.netcu.de)\n */\n\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(['jquery'], factory);\n } else if (typeof exports === 'object') {\n // Node/CommonJS\n module.exports = factory(require('jquery'));\n } else {\n // Browser globals\n factory(jQuery);\n }\n}(function($) {\n\n $.detectSwipe = {\n version: '2.1.2',\n enabled: 'ontouchstart' in document.documentElement,\n preventDefault: true,\n threshold: 20\n };\n\n var startX,\n startY,\n isMoving = false;\n\n function onTouchEnd() {\n this.removeEventListener('touchmove', onTouchMove);\n this.removeEventListener('touchend', onTouchEnd);\n isMoving = false;\n }\n\n function onTouchMove(e) {\n if ($.detectSwipe.preventDefault) { e.preventDefault(); }\n if(isMoving) {\n var x = e.touches[0].pageX;\n var y = e.touches[0].pageY;\n var dx = startX - x;\n var dy = startY - y;\n var dir;\n var ratio = window.devicePixelRatio || 1;\n if(Math.abs(dx) * ratio >= $.detectSwipe.threshold) {\n dir = dx > 0 ? 'left' : 'right'\n }\n else if(Math.abs(dy) * ratio >= $.detectSwipe.threshold) {\n dir = dy > 0 ? 'up' : 'down'\n }\n if(dir) {\n onTouchEnd.call(this);\n $(this).trigger('swipe', dir).trigger('swipe' + dir);\n }\n }\n }\n\n function onTouchStart(e) {\n if (e.touches.length == 1) {\n startX = e.touches[0].pageX;\n startY = e.touches[0].pageY;\n isMoving = true;\n this.addEventListener('touchmove', onTouchMove, false);\n this.addEventListener('touchend', onTouchEnd, false);\n }\n }\n\n function setup() {\n this.addEventListener && this.addEventListener('touchstart', onTouchStart, false);\n }\n\n function teardown() {\n this.removeEventListener('touchstart', onTouchStart);\n }\n\n $.event.special.swipe = { setup: setup };\n\n $.each(['left', 'up', 'down', 'right'], function () {\n $.event.special['swipe' + this] = { setup: function(){\n $(this).on('swipe', $.noop);\n } };\n });\n}));\n","/**\n * Featherlight - ultra slim jQuery lightbox\n * Version 1.7.14 - http://noelboss.github.io/featherlight/\n *\n * Copyright 2019, Noël Raoul Bossart (http://www.noelboss.com)\n * MIT Licensed.\n**/\n!function(a){\"function\"==typeof define&&define.amd?define([\"jquery\"],a):\"object\"==typeof module&&module.exports?module.exports=function(b,c){return void 0===c&&(c=\"undefined\"!=typeof window?require(\"jquery\"):require(\"jquery\")(b)),a(c),c}:a(jQuery)}(function(a){\"use strict\";function b(a,c){if(!(this instanceof b)){var d=new b(a,c);return d.open(),d}this.id=b.id++,this.setup(a,c),this.chainCallbacks(b._callbackChain)}function c(a,b){var c={};for(var d in a)d in b&&(c[d]=a[d],delete a[d]);return c}function d(a,b){var c={},d=new RegExp(\"^\"+b+\"([A-Z])(.*)\");for(var e in a){var f=e.match(d);if(f){var g=(f[1]+f[2].replace(/([A-Z])/g,\"-$1\")).toLowerCase();c[g]=a[e]}}return c}if(\"undefined\"==typeof a)return void(\"console\"in window&&window.console.info(\"Too much lightness, Featherlight needs jQuery.\"));if(a.fn.jquery.match(/-ajax/))return void(\"console\"in window&&window.console.info(\"Featherlight needs regular jQuery, not the slim version.\"));var e=[],f=function(b){return e=a.grep(e,function(a){return a!==b&&a.$instance.closest(\"body\").length>0})},g={allow:1,allowfullscreen:1,frameborder:1,height:1,longdesc:1,marginheight:1,marginwidth:1,mozallowfullscreen:1,name:1,referrerpolicy:1,sandbox:1,scrolling:1,src:1,srcdoc:1,style:1,webkitallowfullscreen:1,width:1},h={keyup:\"onKeyUp\",resize:\"onResize\"},i=function(c){a.each(b.opened().reverse(),function(){return c.isDefaultPrevented()||!1!==this[h[c.type]](c)?void 0:(c.preventDefault(),c.stopPropagation(),!1)})},j=function(c){if(c!==b._globalHandlerInstalled){b._globalHandlerInstalled=c;var d=a.map(h,function(a,c){return c+\".\"+b.prototype.namespace}).join(\" \");a(window)[c?\"on\":\"off\"](d,i)}};b.prototype={constructor:b,namespace:\"featherlight\",targetAttr:\"data-featherlight\",variant:null,resetCss:!1,background:null,openTrigger:\"click\",closeTrigger:\"click\",filter:null,root:\"body\",openSpeed:250,closeSpeed:250,closeOnClick:\"background\",closeOnEsc:!0,closeIcon:\"✕\",loading:\"\",persist:!1,otherClose:null,beforeOpen:a.noop,beforeContent:a.noop,beforeClose:a.noop,afterOpen:a.noop,afterContent:a.noop,afterClose:a.noop,onKeyUp:a.noop,onResize:a.noop,type:null,contentFilters:[\"jquery\",\"image\",\"html\",\"ajax\",\"iframe\",\"text\"],setup:function(b,c){\"object\"!=typeof b||b instanceof a!=!1||c||(c=b,b=void 0);var d=a.extend(this,c,{target:b}),e=d.resetCss?d.namespace+\"-reset\":d.namespace,f=a(d.background||['<div class=\"'+e+\"-loading \"+e+'\">','<div class=\"'+e+'-content\">','<button class=\"'+e+\"-close-icon \"+d.namespace+'-close\" aria-label=\"Close\">',d.closeIcon,\"</button>\",'<div class=\"'+d.namespace+'-inner\">'+d.loading+\"</div>\",\"</div>\",\"</div>\"].join(\"\")),g=\".\"+d.namespace+\"-close\"+(d.otherClose?\",\"+d.otherClose:\"\");return d.$instance=f.clone().addClass(d.variant),d.$instance.on(d.closeTrigger+\".\"+d.namespace,function(b){if(!b.isDefaultPrevented()){var c=a(b.target);(\"background\"===d.closeOnClick&&c.is(\".\"+d.namespace)||\"anywhere\"===d.closeOnClick||c.closest(g).length)&&(d.close(b),b.preventDefault())}}),this},getContent:function(){if(this.persist!==!1&&this.$content)return this.$content;var b=this,c=this.constructor.contentFilters,d=function(a){return b.$currentTarget&&b.$currentTarget.attr(a)},e=d(b.targetAttr),f=b.target||e||\"\",g=c[b.type];if(!g&&f in c&&(g=c[f],f=b.target&&e),f=f||d(\"href\")||\"\",!g)for(var h in c)b[h]&&(g=c[h],f=b[h]);if(!g){var i=f;if(f=null,a.each(b.contentFilters,function(){return g=c[this],g.test&&(f=g.test(i)),!f&&g.regex&&i.match&&i.match(g.regex)&&(f=i),!f}),!f)return\"console\"in window&&window.console.error(\"Featherlight: no content filter found \"+(i?' for \"'+i+'\"':\" (no target specified)\")),!1}return g.process.call(b,f)},setContent:function(b){return this.$instance.removeClass(this.namespace+\"-loading\"),this.$instance.toggleClass(this.namespace+\"-iframe\",b.is(\"iframe\")),this.$instance.find(\".\"+this.namespace+\"-inner\").not(b).slice(1).remove().end().replaceWith(a.contains(this.$instance[0],b[0])?\"\":b),this.$content=b.addClass(this.namespace+\"-inner\"),this},open:function(b){var c=this;if(c.$instance.hide().appendTo(c.root),!(b&&b.isDefaultPrevented()||c.beforeOpen(b)===!1)){b&&b.preventDefault();var d=c.getContent();if(d)return e.push(c),j(!0),c.$instance.fadeIn(c.openSpeed),c.beforeContent(b),a.when(d).always(function(a){a&&(c.setContent(a),c.afterContent(b))}).then(c.$instance.promise()).done(function(){c.afterOpen(b)})}return c.$instance.detach(),a.Deferred().reject().promise()},close:function(b){var c=this,d=a.Deferred();return c.beforeClose(b)===!1?d.reject():(0===f(c).length&&j(!1),c.$instance.fadeOut(c.closeSpeed,function(){c.$instance.detach(),c.afterClose(b),d.resolve()})),d.promise()},resize:function(a,b){if(a&&b){this.$content.css(\"width\",\"\").css(\"height\",\"\");var c=Math.max(a/(this.$content.parent().width()-1),b/(this.$content.parent().height()-1));c>1&&(c=b/Math.floor(b/c),this.$content.css(\"width\",\"\"+a/c+\"px\").css(\"height\",\"\"+b/c+\"px\"))}},chainCallbacks:function(b){for(var c in b)this[c]=a.proxy(b[c],this,a.proxy(this[c],this))}},a.extend(b,{id:0,autoBind:\"[data-featherlight]\",defaults:b.prototype,contentFilters:{jquery:{regex:/^[#.]\\w/,test:function(b){return b instanceof a&&b},process:function(b){return this.persist!==!1?a(b):a(b).clone(!0)}},image:{regex:/\\.(png|jpg|jpeg|gif|tiff?|bmp|svg)(\\?\\S*)?$/i,process:function(b){var c=this,d=a.Deferred(),e=new Image,f=a('<img src=\"'+b+'\" alt=\"\" class=\"'+c.namespace+'-image\" />');return e.onload=function(){f.naturalWidth=e.width,f.naturalHeight=e.height,d.resolve(f)},e.onerror=function(){d.reject(f)},e.src=b,d.promise()}},html:{regex:/^\\s*<[\\w!][^<]*>/,process:function(b){return a(b)}},ajax:{regex:/./,process:function(b){var c=a.Deferred(),d=a(\"<div></div>\").load(b,function(a,b){\"error\"!==b&&c.resolve(d.contents()),c.reject()});return c.promise()}},iframe:{process:function(b){var e=new a.Deferred,f=a(\"<iframe/>\"),h=d(this,\"iframe\"),i=c(h,g);return f.hide().attr(\"src\",b).attr(i).css(h).on(\"load\",function(){e.resolve(f.show())}).appendTo(this.$instance.find(\".\"+this.namespace+\"-content\")),e.promise()}},text:{process:function(b){return a(\"<div>\",{text:b})}}},functionAttributes:[\"beforeOpen\",\"afterOpen\",\"beforeContent\",\"afterContent\",\"beforeClose\",\"afterClose\"],readElementConfig:function(b,c){var d=this,e=new RegExp(\"^data-\"+c+\"-(.*)\"),f={};return b&&b.attributes&&a.each(b.attributes,function(){var b=this.name.match(e);if(b){var c=this.value,g=a.camelCase(b[1]);if(a.inArray(g,d.functionAttributes)>=0)c=new Function(c);else try{c=JSON.parse(c)}catch(h){}f[g]=c}}),f},extend:function(b,c){var d=function(){this.constructor=b};return d.prototype=this.prototype,b.prototype=new d,b.__super__=this.prototype,a.extend(b,this,c),b.defaults=b.prototype,b},attach:function(b,c,d){var e=this;\"object\"!=typeof c||c instanceof a!=!1||d||(d=c,c=void 0),d=a.extend({},d);var f,g=d.namespace||e.defaults.namespace,h=a.extend({},e.defaults,e.readElementConfig(b[0],g),d),i=function(g){var i=a(g.currentTarget),j=a.extend({$source:b,$currentTarget:i},e.readElementConfig(b[0],h.namespace),e.readElementConfig(g.currentTarget,h.namespace),d),k=f||i.data(\"featherlight-persisted\")||new e(c,j);\"shared\"===k.persist?f=k:k.persist!==!1&&i.data(\"featherlight-persisted\",k),j.$currentTarget.blur&&j.$currentTarget.blur(),k.open(g)};return b.on(h.openTrigger+\".\"+h.namespace,h.filter,i),{filter:h.filter,handler:i}},current:function(){var a=this.opened();return a[a.length-1]||null},opened:function(){var b=this;return f(),a.grep(e,function(a){return a instanceof b})},close:function(a){var b=this.current();return b?b.close(a):void 0},_onReady:function(){var b=this;if(b.autoBind){var c=a(b.autoBind);c.each(function(){b.attach(a(this))}),a(document).on(\"click\",b.autoBind,function(d){if(!d.isDefaultPrevented()){var e=a(d.currentTarget),f=c.length;if(c=c.add(e),f!==c.length){var g=b.attach(e);(!g.filter||a(d.target).parentsUntil(e,g.filter).length>0)&&g.handler(d)}}})}},_callbackChain:{onKeyUp:function(b,c){return 27===c.keyCode?(this.closeOnEsc&&a.featherlight.close(c),!1):b(c)},beforeOpen:function(b,c){return a(document.documentElement).addClass(\"with-featherlight\"),this._previouslyActive=document.activeElement,this._$previouslyTabbable=a(\"a, input, select, textarea, iframe, button, iframe, [contentEditable=true]\").not(\"[tabindex]\").not(this.$instance.find(\"button\")),this._$previouslyWithTabIndex=a(\"[tabindex]\").not('[tabindex=\"-1\"]'),this._previousWithTabIndices=this._$previouslyWithTabIndex.map(function(b,c){return a(c).attr(\"tabindex\")}),this._$previouslyWithTabIndex.add(this._$previouslyTabbable).attr(\"tabindex\",-1),document.activeElement.blur&&document.activeElement.blur(),b(c)},afterClose:function(c,d){var e=c(d),f=this;return this._$previouslyTabbable.removeAttr(\"tabindex\"),this._$previouslyWithTabIndex.each(function(b,c){a(c).attr(\"tabindex\",f._previousWithTabIndices[b])}),this._previouslyActive.focus(),0===b.opened().length&&a(document.documentElement).removeClass(\"with-featherlight\"),e},onResize:function(a,b){return this.resize(this.$content.naturalWidth,this.$content.naturalHeight),a(b)},afterContent:function(a,b){var c=a(b);return this.$instance.find(\"[autofocus]:not([disabled])\").focus(),this.onResize(b),c}}}),a.featherlight=b,a.fn.featherlight=function(a,c){return b.attach(this,a,c),this},a(document).ready(function(){b._onReady()})});\n","/**\n * Featherlight Gallery – an extension for the ultra slim jQuery lightbox\n * Version 1.7.14 - http://noelboss.github.io/featherlight/\n *\n * Copyright 2019, Noël Raoul Bossart (http://www.noelboss.com)\n * MIT Licensed.\n**/!function(a){\"function\"==typeof define&&define.amd?define([\"jquery\"],a):\"object\"==typeof module&&module.exports?module.exports=function(b,c){return void 0===c&&(c=\"undefined\"!=typeof window?require(\"jquery\"):require(\"jquery\")(b)),a(c),c}:a(jQuery)}(function(a){\"use strict\";function b(c,d){if(!(this instanceof b)){var e=new b(a.extend({$source:c,$currentTarget:c.first()},d));return e.open(),e}a.featherlight.apply(this,arguments),this.chainCallbacks(h)}var c=function(a){window.console&&window.console.warn&&window.console.warn(\"FeatherlightGallery: \"+a)};if(\"undefined\"==typeof a)return c(\"Too much lightness, Featherlight needs jQuery.\");if(!a.featherlight)return c(\"Load the featherlight plugin before the gallery plugin\");var d=\"ontouchstart\"in window||window.DocumentTouch&&document instanceof DocumentTouch,e=a.event&&a.event.special.swipeleft&&a,f=window.Hammer&&function(a){var b=new window.Hammer.Manager(a[0]);return b.add(new window.Hammer.Swipe),b},g=d&&(e||f);d&&!g&&c(\"No compatible swipe library detected; one must be included before featherlightGallery for swipe motions to navigate the galleries.\");var h={afterClose:function(a,b){var c=this;return c.$instance.off(\"next.\"+c.namespace+\" previous.\"+c.namespace),c._swiper&&(c._swiper.off(\"swipeleft\",c._swipeleft).off(\"swiperight\",c._swiperight),c._swiper=null),a(b)},beforeOpen:function(a,b){var c=this;return c.$instance.on(\"next.\"+c.namespace+\" previous.\"+c.namespace,function(a){var b=\"next\"===a.type?1:-1;c.navigateTo(c.currentNavigation()+b)}),g&&(c._swiper=g(c.$instance).on(\"swipeleft\",c._swipeleft=function(){c.$instance.trigger(\"next\")}).on(\"swiperight\",c._swiperight=function(){c.$instance.trigger(\"previous\")}),c.$instance.addClass(this.namespace+\"-swipe-aware\",g)),c.$instance.find(\".\"+c.namespace+\"-content\").append(c.createNavigation(\"previous\")).append(c.createNavigation(\"next\")),a(b)},beforeContent:function(a,b){var c=this.currentNavigation(),d=this.slides().length;return this.$instance.toggleClass(this.namespace+\"-first-slide\",0===c).toggleClass(this.namespace+\"-last-slide\",c===d-1),a(b)},onKeyUp:function(a,b){var c={37:\"previous\",39:\"next\"}[b.keyCode];return c?(this.$instance.trigger(c),!1):a(b)}};a.featherlight.extend(b,{autoBind:\"[data-featherlight-gallery]\"}),a.extend(b.prototype,{previousIcon:\"◀\",nextIcon:\"▶\",galleryFadeIn:100,galleryFadeOut:300,slides:function(){return this.filter?this.$source.find(this.filter):this.$source},images:function(){return c(\"images is deprecated, please use slides instead\"),this.slides()},currentNavigation:function(){return this.slides().index(this.$currentTarget)},navigateTo:function(b){var c=this,d=c.slides(),e=d.length,f=c.$instance.find(\".\"+c.namespace+\"-inner\");return b=(b%e+e)%e,this.$instance.addClass(this.namespace+\"-loading\"),c.$currentTarget=d.eq(b),c.beforeContent(),a.when(c.getContent(),f.fadeTo(c.galleryFadeOut,.2)).always(function(a){c.setContent(a),c.afterContent(),a.fadeTo(c.galleryFadeIn,1)})},createNavigation:function(b){var c=this;return a('<span title=\"'+b+'\" class=\"'+this.namespace+\"-\"+b+'\"><span>'+this[b+\"Icon\"]+\"</span></span>\").click(function(d){a(this).trigger(b+\".\"+c.namespace),d.preventDefault()})}}),a.featherlightGallery=b,a.fn.featherlightGallery=function(a){return b.attach(this,a),this},a(document).ready(function(){b._onReady()})});\n","/**\n * jQuery Bar Rating Plugin v1.2.1\n *\n * http://github.com/antennaio/jquery-bar-rating\n *\n * Copyright (c) 2012-2016 Kazik Pietruszewski\n *\n * This plugin is available under the MIT license.\n * http://www.opensource.org/licenses/mit-license.php\n */\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD\n define(['jquery'], factory);\n } else if (typeof module === 'object' && module.exports) {\n // Node/CommonJS\n module.exports = factory(require('jquery'));\n } else {\n // browser globals\n factory(jQuery);\n }\n}(function ($) {\n\n var BarRating = (function() {\n\n function BarRating() {\n var self = this;\n\n // wrap element in a wrapper div\n var wrapElement = function() {\n var classes = ['br-wrapper'];\n\n if (self.options.theme !== '') {\n classes.push('br-theme-' + self.options.theme);\n }\n\n self.$elem.wrap($('<div />', {\n 'class': classes.join(' ')\n }));\n };\n\n // unwrap element\n var unwrapElement = function() {\n self.$elem.unwrap();\n };\n\n // find option by value\n var findOption = function(value) {\n if ($.isNumeric(value)) {\n value = Math.floor(value);\n }\n\n return $('option[value=\"' + value + '\"]', self.$elem);\n };\n\n // find initial option\n var findInitialOption = function() {\n var initialRating = self.options.initialRating;\n\n if (!initialRating) {\n return $('option:selected', self.$elem);\n }\n\n return findOption(initialRating);\n };\n\n // get data\n var getData = function(key) {\n var data = self.$elem.data('barrating');\n\n if (typeof key !== 'undefined') {\n return data[key];\n }\n\n return data;\n };\n\n // set data\n var setData = function(key, value) {\n if (value !== null && typeof value === 'object') {\n self.$elem.data('barrating', value);\n } else {\n self.$elem.data('barrating')[key] = value;\n }\n };\n\n // save data on element\n var saveDataOnElement = function() {\n var $opt = findInitialOption();\n\n var value = $opt.val();\n var text = $opt.data('html') ? $opt.data('html') : $opt.text();\n\n setData(null, {\n userOptions: self.options,\n\n // initial rating based on the OPTION value\n ratingValue: value,\n ratingText: text,\n\n // rating will be restored by calling clear method\n originalRatingValue: value,\n originalRatingText: text,\n\n // read-only state\n readOnly: self.options.readonly,\n\n // did the user already select a rating?\n ratingMade: false\n });\n };\n\n // remove data on element\n var removeDataOnElement = function() {\n self.$elem.removeData('barrating');\n };\n\n // return current rating text\n var ratingText = function() {\n return getData('ratingText');\n };\n\n // return current rating value\n var ratingValue = function() {\n return getData('ratingValue');\n };\n\n // build widget and return jQuery element\n var buildWidget = function() {\n var $w = $('<div />', { 'class': 'br-widget' });\n\n // create A elements that will replace OPTIONs\n self.$elem.find('option').each(function() {\n var val, text, html, $a;\n\n val = $(this).val();\n\n // create ratings - but only if val is defined\n if (val) {\n text = $(this).text();\n html = $(this).data('html');\n if (html) { text = html; }\n\n $a = $('<a />', {\n 'href': '#',\n 'data-rating-value': val,\n 'data-rating-text': text,\n 'html': (self.options.showValues) ? text : ''\n });\n\n $w.append($a);\n }\n\n });\n\n // append .br-current-rating div to the widget\n if (self.options.showSelectedRating) {\n $w.append($('<div />', { 'text': '', 'class': 'br-current-rating' }));\n }\n\n // additional classes for the widget\n if (self.options.reverse) {\n $w.addClass('br-reverse');\n }\n\n if (self.options.readonly) {\n $w.addClass('br-readonly');\n }\n\n return $w;\n };\n\n // return a jQuery function name depending on the 'reverse' setting\n var nextAllorPreviousAll = function() {\n if (getData('userOptions').reverse) {\n return 'nextAll';\n } else {\n return 'prevAll';\n }\n };\n\n // set the value of the select field\n var setSelectFieldValue = function(value) {\n // change selected option\n findOption(value).prop('selected', true);\n\n self.$elem.change();\n };\n\n // reset select field\n var resetSelectField = function() {\n $('option', self.$elem).prop('selected', function() {\n return this.defaultSelected;\n });\n\n self.$elem.change();\n };\n\n // display the currently selected rating\n var showSelectedRating = function(text) {\n // text undefined?\n text = text ? text : ratingText();\n\n // update .br-current-rating div\n if (self.options.showSelectedRating) {\n self.$elem.parent().find('.br-current-rating').text(text);\n }\n };\n\n // return rounded fraction of a value (14.4 -> 40, 0.99 -> 90)\n var fraction = function(value) {\n return Math.round(((Math.floor(value * 10) / 10) % 1) * 100);\n };\n\n // remove all classes from elements\n var resetStyle = function() {\n // remove all classes starting with br-*\n self.$widget.find('a').removeClass(function(index, classes) {\n return (classes.match(/(^|\\s)br-\\S+/g) || []).join(' ');\n });\n };\n\n // apply style by setting classes on elements\n var applyStyle = function() {\n var $a = self.$widget.find('a[data-rating-value=\"' + ratingValue() + '\"]');\n var initialRating = getData('userOptions').initialRating;\n var baseValue = $.isNumeric(ratingValue()) ? ratingValue() : 0;\n var f = fraction(initialRating);\n var $all, $fractional;\n\n resetStyle();\n\n // add classes\n $a.addClass('br-selected br-current')[nextAllorPreviousAll()]()\n .addClass('br-selected');\n\n if (!getData('ratingMade') && $.isNumeric(initialRating)) {\n if ((initialRating <= baseValue) || !f) {\n return;\n }\n\n $all = self.$widget.find('a');\n\n $fractional = ($a.length) ?\n $a[(getData('userOptions').reverse) ? 'prev' : 'next']() :\n $all[(getData('userOptions').reverse) ? 'last' : 'first']();\n\n $fractional.addClass('br-fractional');\n $fractional.addClass('br-fractional-' + f);\n }\n };\n\n // check if the element is deselectable?\n var isDeselectable = function($element) {\n if (!self.options.deselectable) {\n return false;\n }\n\n if (self.$elem.find('option:first').val()) {\n // empty option not found\n return false;\n }\n\n return (ratingValue() == $element.attr('data-rating-value'));\n };\n\n // handle click events\n var attachClickHandler = function($elements) {\n $elements.on('click.barrating', function(event) {\n var $a = $(this),\n options = getData('userOptions'),\n value,\n text;\n\n event.preventDefault();\n\n value = $a.attr('data-rating-value');\n text = $a.attr('data-rating-text');\n\n // is current and deselectable?\n if (isDeselectable($a)) {\n value = '';\n text = '';\n }\n\n // remember selected rating\n setData('ratingValue', value);\n setData('ratingText', text);\n setData('ratingMade', true);\n\n setSelectFieldValue(value);\n showSelectedRating(text);\n\n applyStyle();\n\n // onSelect callback\n options.onSelect.call(\n self,\n ratingValue(),\n ratingText(),\n event\n );\n\n return false;\n });\n };\n\n // handle mouseenter events\n var attachMouseEnterHandler = function($elements) {\n $elements.on('mouseenter.barrating', function() {\n var $a = $(this);\n\n resetStyle();\n\n $a.addClass('br-active')[nextAllorPreviousAll()]()\n .addClass('br-active');\n\n showSelectedRating($a.attr('data-rating-text'));\n });\n };\n\n // handle mouseleave events\n var attachMouseLeaveHandler = function($elements) {\n self.$widget.on('mouseleave.barrating blur.barrating', function() {\n showSelectedRating();\n applyStyle();\n });\n };\n\n // somewhat primitive way to remove 300ms click delay on touch devices\n // for a more advanced solution consider setting `fastClicks` option to false\n // and using a library such as fastclick (https://github.com/ftlabs/fastclick)\n var fastClicks = function($elements) {\n $elements.on('touchstart.barrating', function(event) {\n event.preventDefault();\n event.stopPropagation();\n\n $(this).click();\n });\n };\n\n // disable clicks\n var disableClicks = function($elements) {\n $elements.on('click.barrating', function(event) {\n event.preventDefault();\n });\n };\n\n var attachHandlers = function($elements) {\n // attach click event handler\n attachClickHandler($elements);\n\n if (self.options.hoverState) {\n // attach mouseenter event handler\n attachMouseEnterHandler($elements);\n\n // attach mouseleave event handler\n attachMouseLeaveHandler($elements);\n }\n };\n\n var detachHandlers = function($elements) {\n // remove event handlers in the \".barrating\" namespace\n $elements.off('.barrating');\n };\n\n var setupHandlers = function(readonly) {\n var $elements = self.$widget.find('a');\n\n if (fastClicks) {\n fastClicks($elements);\n }\n\n if (readonly) {\n detachHandlers($elements);\n disableClicks($elements);\n } else {\n attachHandlers($elements);\n }\n };\n\n this.show = function() {\n // run only once\n if (getData()) return;\n\n // wrap element\n wrapElement();\n\n // save data\n saveDataOnElement();\n\n // build & append widget to the DOM\n self.$widget = buildWidget();\n self.$widget.insertAfter(self.$elem);\n\n applyStyle();\n\n showSelectedRating();\n\n setupHandlers(self.options.readonly);\n\n // hide the select field\n self.$elem.hide();\n };\n\n this.readonly = function(state) {\n if (typeof state !== 'boolean' || getData('readOnly') == state) return;\n\n setupHandlers(state);\n setData('readOnly', state);\n self.$widget.toggleClass('br-readonly');\n };\n\n this.set = function(value) {\n var options = getData('userOptions');\n\n if (!self.$elem.find('option[value=\"' + value + '\"]').val()) return;\n\n // set data\n setData('ratingValue', value);\n setData('ratingText', self.$elem.find('option[value=\"' + value + '\"]').text());\n setData('ratingMade', true);\n\n setSelectFieldValue(ratingValue());\n showSelectedRating(ratingText());\n\n applyStyle();\n\n // onSelect callback\n if (!options.silent) {\n options.onSelect.call(\n this,\n ratingValue(),\n ratingText()\n );\n }\n };\n\n this.clear = function() {\n var options = getData('userOptions');\n\n // restore original data\n setData('ratingValue', getData('originalRatingValue'));\n setData('ratingText', getData('originalRatingText'));\n setData('ratingMade', false);\n\n resetSelectField();\n showSelectedRating(ratingText());\n\n applyStyle();\n\n // onClear callback\n options.onClear.call(\n this,\n ratingValue(),\n ratingText()\n );\n };\n\n this.destroy = function() {\n var value = ratingValue();\n var text = ratingText();\n var options = getData('userOptions');\n\n // detach handlers\n detachHandlers(self.$widget.find('a'));\n\n // remove widget\n self.$widget.remove();\n\n // remove data\n removeDataOnElement();\n\n // unwrap the element\n unwrapElement();\n\n // show the element\n self.$elem.show();\n\n // onDestroy callback\n options.onDestroy.call(\n this,\n value,\n text\n );\n };\n }\n\n BarRating.prototype.init = function (options, elem) {\n this.$elem = $(elem);\n this.options = $.extend({}, $.fn.barrating.defaults, options);\n\n return this.options;\n };\n\n return BarRating;\n })();\n\n $.fn.barrating = function (method, options) {\n return this.each(function () {\n var plugin = new BarRating();\n\n // plugin works with select fields\n if (!$(this).is('select')) {\n $.error('Sorry, this plugin only works with select fields.');\n }\n\n // method supplied\n if (plugin.hasOwnProperty(method)) {\n plugin.init(options, this);\n if (method === 'show') {\n return plugin.show(options);\n } else {\n // plugin exists?\n if (plugin.$elem.data('barrating')) {\n plugin.$widget = $(this).next('.br-widget');\n return plugin[method](options);\n }\n }\n\n // no method supplied or only options supplied\n } else if (typeof method === 'object' || !method) {\n options = method;\n plugin.init(options, this);\n return plugin.show();\n\n } else {\n $.error('Method ' + method + ' does not exist on jQuery.barrating');\n }\n });\n };\n\n $.fn.barrating.defaults = {\n theme:'',\n initialRating:null, // initial rating\n showValues:false, // display rating values on the bars?\n showSelectedRating:true, // append a div with a rating to the widget?\n deselectable:true, // allow to deselect ratings\n reverse:false, // reverse the rating?\n readonly:false, // make the rating ready-only?\n fastClicks:true, // remove 300ms click delay on touch devices?\n hoverState:true, // change state on hover?\n silent:false, // supress callbacks when controlling ratings programatically\n onSelect:function (value, text, event) {\n }, // callback fired when a rating is selected\n onClear:function (value, text) {\n }, // callback fired when a rating is cleared\n onDestroy:function (value, text) {\n } // callback fired when a widget is destroyed\n };\n\n $.fn.barrating.BarRating = BarRating;\n\n}));"],"sourceRoot":""}